6.Ubuntu16.04配置caffe(GPU)详细教程

caffe配置过程

       caffe是目前服务器配置过程中遇到问题最多的一个环节,caffe配置失败在重新配置caffe之前可能要经历重装系统、安装NVIDIA显卡驱动、下载安装CUDA、安装cudnn、安装OpenCV这几个必要的过程,期间每个过程都可能出现问题,静下心来耐心解决,根据错误提示去百度或者谷歌你基本都能找到解决的办法。

谷歌(*)小工具 链接:https://pan.baidu.com/s/1vAsNx9vk0ZZyXql7hJLg3w 密码:o1a6

安装caffe

        a、安装相关依赖包

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 文件内容:

      (1)应用 cudnn

将
#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配置成功。

6.Ubuntu16.04配置caffe(GPU)详细教程

安装 pycaffe notebook 接口环境(可选,编写和执行python代码会使用pycharm)

        在上一步成功安装 caffe 之后,就可以通过 caffe 去做训练数据集或者预测各种相关的事了,只不过需要在命令行下通过 caffe 命令进行操作,而这一步 pycaffe 的安装以及 notebook 环境配置只是为了更方便的去使用 caffe ,实际上大多数都是通过 python 来操作 caffe 的,而 notebook 使用浏览器作为界面,可以更方便的编写和执行 python 代码。

        首先编译 pycaffe :

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 时出现的错误:

        错误1:

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

        成功界面如下:

6.Ubuntu16.04配置caffe(GPU)详细教程

        ok,最后一步,配置notebook环境

        首先要安装python接口依赖库,在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。

        在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。

首先进入 caffe/python 目录下,执行安装代码:

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, 没有安装成功的,会继续安装。

        然后安装 jupyter :

sudo pip install jupyter

        安装完成后运行 notebook :

jupyter notebook
或
ipython notebook

        就会在浏览器中打开notebook, 点击右上角的New-python2, 就可以新建一个网页一样的文件,扩展名为ipynb。在这个网页上,我们就可以像在命令行下面一样运行python代码了。输入代码后,按shift+enter运行,更多的快捷键,可点击上方的help-Keyboard shortcuts查看,或者先按esc退出编辑状态,再按h键查看。

6.Ubuntu16.04配置caffe(GPU)详细教程

参考文章:https://blog.****.net/QLULIBIN/article/details/80722788

                  https://blog.****.net/yhaolpz/article/details/71375762

第一篇参考文章这个里边修改 caffe 目录下的 Makefile 文件有问题,少了空格,导致安装出错,第二篇参考文章已经改正。

6.Ubuntu16.04配置caffe(GPU)详细教程

附:在浏览器中打开notebook,退出编辑“ctrl+c”然后按"y"就退出编辑状态了~~~~