caffe配置过程
caffe是目前服务器配置过程中遇到问题最多的一个环节,caffe配置失败在重新配置caffe之前可能要经历重装系统、安装NVIDIA显卡驱动、下载安装CUDA、安装cudnn、安装OpenCV这几个必要的过程,期间每个过程都可能出现问题,静下心来耐心解决,根据错误提示去百度或者谷歌你基本都能找到解决的办法。
谷歌(翻墙)小工具 链接:https://pan.baidu.com/s/1vAsNx9vk0ZZyXql7hJLg3w 密码:o1a6
安装caffe
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
b、在我们要安装的路径下 clone ,一般默认会安装在home文件加下,文件夹名称为caffe。
git clone https://github.com/BVLC/caffe.git
进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :
cd caffe
sudo cp Makefile.config.example Makefile.config
复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:
sudo gedit Makefile.config
修改 Makefile.config 文件内容:
将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
(2)应用 opencv 且版本是3的
将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
(3)使用python接口来编写layer
将
#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
(4)实现caffe对Python和Matlab接口的支持(可不修改)
PYTHON_LIB := /usr/lib
MATLAB_DIR := /usr/local/MATLAB/R2015b #注意:将Matlab修改成对应的版本
(5)修改 python 路径(重要)
#Whatever else you find you need goes here. 下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
注:如果使用的是CUDA版本是8.0,从CUDA 8.0开始compute capability 2.0和2.1被弃用了,所以可以将-gencode arch=compute_20,code=sm_20 和-gencode arch=compute_20,code=sm_21这两行删除。如下:
# For CUDA < 6.0, comment the *_50 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_50,code=compute_50
然后修改 caffe 目录下的 Makefile 文件:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
然后修改 /usr/local/cuda/include/host_config.h 文件 :
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
c、接下来开始编译,如果前面的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。
make all -j8 #-j8根据自己电脑配置决定
#编译成功后可运行测试:
sudo make runtest -j8 #测试
如果运行之后出现如图所示结果,说明caffe配置成功。
安装 pycaffe notebook 接口环境(可选,编写和执行python代码会使用pycharm)
在上一步成功安装 caffe 之后,就可以通过 caffe 去做训练数据集或者预测各种相关的事了,只不过需要在命令行下通过 caffe 命令进行操作,而这一步 pycaffe 的安装以及 notebook 环境配置只是为了更方便的去使用 caffe ,实际上大多数都是通过 python 来操作 caffe 的,而 notebook 使用浏览器作为界面,可以更方便的编写和执行 python 代码。
cd caffe
sudo make pycaffe -j8
以下是我编译 pycaffe 时出现的错误,也可能会有别的其他错误:
python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录
解决方法:
sudo apt-get install python-numpy
编译 pycaffe 成功后,验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:
python
然后导入 caffe :
>>> import caffe
若不报错则表示 caffe 的 python 接口已正确编译,但是应该不会那么顺利,以下是我导入 caffe 时出现的错误:
File "<stdin>", line 1, in <module> ImportError: No module named caffe
sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc
source ~/.bashrc
错误2:
ImportError: No module named skimage.io
pip install -U scikit-image #若没有安装pip: sudo apt install python-pip
成功界面如下:
首先要安装python接口依赖库,在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。
在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。
sudo apt-get install gfortran
for req in $(cat requirements.txt); do sudo pip install $req; done
安装完成以后执行:
sudo pip install -r requirements.txt
就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。
sudo pip install jupyter
安装完成后运行 notebook :
jupyter notebook
或
ipython notebook
就会在浏览器中打开notebook, 点击右上角的New-python2, 就可以新建一个网页一样的文件,扩展名为ipynb。在这个网页上,我们就可以像在命令行下面一样运行python代码了。输入代码后,按shift+enter运行,更多的快捷键,可点击上方的help-Keyboard shortcuts查看,或者先按esc退出编辑状态,再按h键查看。
参考文章:https://blog.csdn.net/QLULIBIN/article/details/80722788
https://blog.csdn.net/yhaolpz/article/details/71375762
第一篇参考文章这个里边修改 caffe 目录下的 Makefile 文件有问题,少了空格,导致安装出错,第二篇参考文章已经改正。
附:在浏览器中打开notebook,退出编辑“ctrl+c”然后按"y"就退出编辑状态了~~~~