深度学习笔记(1)------linux Ubuntu 14.04+Anaconda2+opencv 3.2.0+caffe-master配置

前言

之前偷懒,计划用Matlab训练模型,后来正式写论文时发现别人的模型都是caffe训练的,还是老老实实回来学习正经的训练模型的方法。
工欲善其事必先利其器!废话不多说,我们先看如何配置环境

1. Anaconda2 配置

刚开始用Python训练模型时没有经验,import caffe时出现了各种缺失,安装这些包的时候又有各种问题,最后还是妥协用Anoconda吧,它集成了Python常用的科学计算的包,推荐安装!
可以点击这里下载最新的Linux版本的Anaconda2,下载完成后会得到一个这样的文件

这里写图片描述

接下来用命令行来安装

sudo sh Anaconda2-5.0.0-Linux-x86_64.sh

之后一直点Enter读完license,输入yes同意,接下来选择安装路径

这里写图片描述

系统默认的安装路径是/root/anaconda2,如果想放在别的地方就输入相应的路径,我自己放到了/usr/local/anaconda下。

接下来的一个选项是把Anoconda下的python加入环境变量,直接输入yes,在.bashrc中就会加入这个环境变量。我自己用的是zsh,所以我还需要自己手动设置一下环境变量(注意:这一步不是每个人都做的,看自己的shell是那个)

vim ~/.zshrc

在最后一行加入

export PATH="/usr/local/anaconda/bin:$PATH"

:wq保存后在命令行输入

source ~/.zshrc

立即变更配置
命令行输入python,出现以下界面

这里写图片描述

就大功告成了!

2.opencv3.2.0

opencv可以在这里很多地方下载到,对应的contribute模块可以在这里下载到,下载完成后解压可以得到这样两个文件


这里写图片描述

把contrib 复制到opencv-3.2.0中,接下来就是编译opencv,先用命令行进入opencv目录,再建一个build的文件夹,进入build后设置一些编译选项,再编译就可以了,具体代码为

cd opencv-3.2.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.2.0 \
      -D PYTHON_INCLUDE_DIR=/usr/local/anaconda/include/python2.7/ \
      -D PYTHON_INCLUDE_DIR2=/usr/local/anaconda/include/python2.7 \
      -D PYTHON_LIBRARY=/usr/local/anaconda/lib/libpython2.7.so \
      -D PYTHON_PACKAGES_PATH=/usr/local/anaconda/lib/python2.7/site-packages \
      -D BUILD_EXAMPLES=ON \
      -D BUILD_NEW_PYTHON_SUPPORT=ON \
      -D PYTHON2_LIBRARY=/usr/local/anaconda/lib/libpython2.7.so \
      -D BUILD_opencv_python3=OFF \
      -D BUILD_opencv_python2=ON \
      -D WITH_LAPACK=OFF \
      -D OPENCV_EXTRA_MODULES_PATH=../contrib/modules/ ..

主要,这里的lib和path路径都是我自己的anaconda目录。如果是其他的目录要做相应的修改
设置好之后输入

sudo make -j24

这里的数字也要根据电脑的性能来填写,我们的服务器最多支持24线程,所以就j24,要是4线程就j4,编译大概要30-45分钟,完成之后就是这个样子:


这里写图片描述

编译完成之后

sudo make install

这个很快就完成了,直接安装完,从命令行进入python环境可能import cv2 可能出现无法导入的情况,如下:
这里写图片描述
这时的解决方法是把usr/local/opencv-3.2.0/lib/python2.7/dist-package中的cv2.so复制到usr/local/anaconda/lib/python2.7/site-packages/ 如下图,是这两个cv2.so

这里写图片描述

这时候再进入python环境import cv2
这里写图片描述
我们看到可以成功导入了,警告不用去管他!
进一步测试一下opencv中的例子是否能用,输入

cd /usr/local/opencv-3.2.0/samples/python
python asift.py

我们试一下cv中的sift特征匹配,如果得到如下:

这里写图片描述

则匹配成功!

3.caffe-master

由于我是在服务器上直接跑程序,因此我的caffe-master在配置之前的配置是:
cuda 8.0+OpenBLAS+CuDNN
这三个安装的过程简单,下载好后直接解压就可以,这里不再赘述,要注意的是,CuDNN装好后要重装一下显卡驱动。直接步入正题caffe-master的安装。进入caffe-master的目录,复制Make.config.example Makefile.config

cp Makefile.config.example Makefile.config

编辑Makefile.config
1. 第5行:USE_CUDNN=1 表示使用CUDNN
2. 第13行:取消注释 USE_LMDB,设置USE_LMDB=1
3. 第21行:取消注释 OPENCV_VERSION=3
4. 第28行:指定cuda的位置 /usr/local/cuda (这个以自己的位置为准)
5. 第36行:先看自己显卡的计算能力,是几就保留到几,我自己服务器的显卡是6.1的计算能力,所以全部保留,如果是2.0的话,只留2.0那行

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61

6.第50行 BLAS:=OPEN
7.第73行与第68行留一个,我们用的是anaconda中的python,所以值留73行,这里换成自己anaconda的位置

PYTHON_INCLUDE:=/usr/local/anaconda

8.同样的,第83行与第84行,也留一个,我们留第84行,

PYTHON_LIB:=$(ANACONDA_HOME)/lib

如果需要matlab,相同的道理把matlab的路径设置好,所有的设置好之后,命令行输入

sudo make all -j24
sudo make test -j24
sudo make runtest

如果出现以下的画面,说明测试成功

这里写图片描述

最后,我们编译一下caffe的python接口,检查一下环境变量中是否有caffe中的python

vim ~/.zshrc

bash下是

vim ~/.bashrc

看是否有

export PYTHONPATH=/usr/local/caffe-master/python:$PYTHONPATH

没有的话就加入这个环境变量
在caffe-master下输入

sudo make pycaffe

最后!!!!!!随便打开一个终端进入python环境,输入

import caffe

如果import没有错误:


这里写图片描述

则环境配置至大功告成!!!!!

4. 编译和runtest可能出现的问题

4.1 无法输出 lmdb

因为我用的是Anaconda, 出现这个问题的
原因:lmdb包无法正常安装
解决方法:在环境变量配置正确的情况下,点击这里下载新的lmdb
或者输入

conda install -c conda-forge python-lmdb 

4.2

/usr/include/boost/python/detail/wrap_python_hpp:50:23
原因:在改Makefile.config文件时,把74和75关于anaconda的路径说明的两行注释掉了
解决方法:取消注释

4.3

/usr/bin/ld: cannot find -lcblas
/usr/bin/ld: cannot find -latlas
原因:缺少对应的依赖库
解决方法:sudo apt-get install libatlas-base-dev

4.4

/usr/local/lib/libopencv_imgcodecs.so 对….为定义的引用
原因:没有设置管理员权限直接编译
解决方法:sudo make -j24

4.5

出现有关cudnn的问题,这时一定要保证你自己的cudnn版本与lib中的一致,比如,我的cudnn是cudnn7.0,lib的文件在/usr/local/cudnn7.0/lib64,这里有三个文件分别是:libcudnn.so libcudnn.so.4 和libcudnn.4.0.7
在/usr/lib里边 关于libcudnn的文件也必须是这三个,如果不是的话,就用/usr/local/cudnn7.0/lib64替换掉/usr/lib

4.6

runtest 可能出现

Warning! HDF5 library version mismatched error
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is **linked.
Data corruption or segmentation faults may occur if the application continues.

原因:Anaconda中的HDF5版本与系统lib中的HDF5版本不一致
解决方法:把Anaconda中的所有关于HDF5的文件复制到系统lib中!
我自己的是把/usr/local/anaconda/lib中所有HDF5的文件复制到了
/usr/lib/x86_64-linux-gnu/中,如下

这里写图片描述

我这里截图偷了懒。注意, 是要全部复制哦!!!!

4.7 cudnn.h:952:27

In file included from ./include/caffe/util/cudnn.hpp:5:0,
                 from ./include/caffe/util/device_alternate.hpp:40,
                 from ./include/caffe/common.hpp:19,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/data_transformer.hpp:6,
                 from src/caffe/layers/window_data_layer.cpp:15:
/usr/local/cuda/include/cudnn.h:952:27: note: declared here
 cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(
                           ^
make: *** [.build_release/src/caffe/layers/window_data_layer.o] 错误
~                                                                  

错误原因:posenet的caffe版本太低,里边的cudnn的函数不能兼容最新的cudnn
解决方法:如下
感谢这里给出的解决方法,亲测可行
1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.
2. 将./include/caffe/layers里的,所有以cudnn开头的文件,例如cudnn_conv_layer.hpp。 都替换成最新版的caffe里的相应的同名文件。
3.将./src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。
都替换成最新版的caffe里的相应的同名文件。

4.8 Check failed: status == CUDNN_STATUS_SUCCESS(4 VS. 0)

原因:显卡上在运行别的程序
解决方法:再等等,或者关闭GPU上运行的一些程序!

4.9 KeyError: “Couldn’t find field google.proto.FileOptions”

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值