在试用了大量的安装教程后,总结了一套深度学习的caffe环境搭建教程,本质上是将论坛里三位朋友的教程融合自己的理解加以使用,个人经验之谈,实测可用。

本文包括以下内容;

1.win7下linux双系统的安装

2.GPU驱动安装(最简方法)

3.cuda8.0+opencv3.1+caffe的安装


话不多说,我们现在开始。

一、安装linux双系统 

(参考网址https://jingyan.baidu.com/article/c275f6bacc3326e33c756743.html)

       安装步骤见以上网址。之前需进行磁盘分割,WIN7系统下右键计算机—>管理—>磁盘管理,在磁盘管理界面下方选择一块磁盘右键点击格式化(格式化之前记得现将该硬盘内的资料备份),格式化后右键点击磁盘选择删除卷,出现一块未分配磁盘区域,即磁盘分割完成。

两点建议:①建议使用一整块固态硬盘的磁盘区域进行Ubuntu系统的安装  ②建议磁盘分割区域在100G以上


在下文所有安装过程之前,打开ubuntu命令窗口安装如下依赖项,命令行依次执行:

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


二、GPU驱动安装(最简方法)


安装之前先卸载已经存在的驱动版本:

sudo apt-get remove--purge nvidia*

直接在Ubuntu系统设置,软件和更新里面,选择中国的服务器源(实测清华的源速度较快)reload之后,点击附加驱动选项,在Nvidia Corporation选择专有驱动,然后点击应用更改,下载安装完之后重启。 重启系统后在命令行输入sudo nvidia-smi 进行验证,若出现下图所示GPU执行列表,则驱动安装成功。

矿卡gpuz参数鉴别_opencv3.1


三、cuda8.0+opencv3.1+caffe的安装

     重点来了,下面进行深度学习库的安装。

1.安装cuda8.0

(1)cuda下载

打开如下官网链接下载cuda8.0,按照下图依次选择所需cuda文件版本进行下载,系统默认下载路径为 /home/username/Downloads

https://developer.nvidia.com/cuda-80-download-archive

矿卡gpuz参数鉴别_caffe_02

(2)cuda安装

下载完成后把文件移动至根目录后执行如下命令:

sudo sh cuda_8.0.44_linux.run

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia361驱动时,一定要选择否:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?

因为前面我们已经安装了GPU,所以这里不要选择安装。否则会出现安装错误。其余的都直接默认或者选择是即可。

(3)环境变量配置

命令行输入以下命令,打开~/.bashrc文件:sudo gedit ~/.bashrc

将以下内容写入到~/.bashrc尾部并保存:



export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}



(4)测试cuda样例


依次在命令行输入如下命令:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery   #由自己电脑目录决定
make 
sudo ./deviceQuery


如果显示一些关于GPU的信息,则说明安装成功。

2.配置cuDNN v5.1


cuDNN是GPU加速计算深层神经网络的库。 首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,可能需要注册一个账号才能下载。

矿卡gpuz参数鉴别_caffe_03



下载cuDNN5.1之后移动到根目录下进行解压,cd进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:


sudo cp cudnn.h /usr/local/cuda/include/                          #复制头文件 cd ~/cuda/lib64  sudo cp lib* /usr/local/cuda/lib64/                               #复制动态链接库 cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5                             #删除原有动态文件 sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5                       #生成软连接 sudo ln -s libcudnn.so.5 libcudnn.so                              #生成软连接

3.安装opencv3.1


(1)依赖项安装

cd ~
sudo apt-get install --assume-yes ffmpeg libopencv-dev build-essential cmake git libgtk2.0-dev libgtk-3-dev pkg-config / python-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev /
libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev /
libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev /
libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip libgstreamer1.0-dev / libgstreamer-plugins-base1.0-dev qtbase5-dev


(2)opencv下载

网上教程普遍用的的opencv3.1版本,考虑可能出现的兼容性问题,因此我只使用了opencv3.1版本进行安装,读者可以自行尝试其他的opencv版本。 在命令行依次执行如下命令下载opencv和opencv_contrib:

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip


(3)opencv安装


解压安装包:


unzip opencv.zip
unzip opencv_contrib.zip


创建编译文件夹并配置cmake:


cd ~/opencv-3.1.0/
mkdir build
cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=OFF -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules -D BUILD_EXAMPLES=ON ..


编译opencv:

make -j4
若出现找不到hdf5.h文件导致编译失败的情况,执行以下步骤:
cd ~/opencv-3.1.0/modules/python sudo gedit common.cmake 在该文件最后加上一下两行语句v并保存:
find_package(HDF5)
include_directories(${HDF5_INCLUDE_DIRS}


安装opencv:

sudo make install #耗时较长,半小时左右请耐心等待,安装至100%不报错即安装成功 sudo ldconfig cd ~ rm -rf opencv-3.1.0 opencv.zip rm -rf opencv_contrib-3.1.0 opencv_contrib.zip



4.配置caffe


切换编译器,选择g++ 5.0以上的对应编号:


sudo update-alternatives --config g++ sudo update-alternatives --config gcc


(1)安装依赖库



sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install cmake -y
#General Dependencies
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler -y
sudo apt-get install --no-install-recommends libboost-all-dev -y
# BLAS
sudo apt-get install libatlas-base-dev -y
# Remaining Dependencies sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev -y sudo apt-get install python-dev python-numpy –y sudo apt-get install -y python-pip sudo apt-get install -y python-dev sudo apt-get install -y python-numpy python-scipy


(2)caffe配置及编译

git clone https://github.com/BVLC/caffe.git #从github下载caffe cd caffe cp Makefile.config.example Makefile.config 注意:之前安装过程中可能会发生系统环境变量的更改导致系统基本命令无法执行,重新添加环境变量即可。
sudo gedit Makefile.config                         #打开Makefile.config文件


根据个人情况修改Makefile.config文件: 

a.若使用cudnn,则将#USE_CUDNN := 1 修改为 USE_CUDNN := 1 b.若使用的opencv版本是3的,则将#OPENCV_VERSION := 3 修改为 OPENCV_VERSION := 3 c.若要使用python来编写layer,则将#WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER :=1
d.重要的一项: 将# 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


这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。


修改makefile文件:

将NVCCFLAGS+=-ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) 替换如下:
NVCCFLAGS+=-D_FORCE_INLINES-ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)


编辑/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!


编译caffe:

make -4j all #-j根据自己电脑配置决定
make -4j runtest


如果出现下图,恭喜你,caffe配置成功!

矿卡gpuz参数鉴别_gpu驱动_04



为了更好地使用pycaffe,建议安装;

sudo apt-get install python-numpy python-setuptools python-pip cython python-skimage python-protobuf
make pycaffe
cd python
python
import caffe      #测试安装成功
可以测试一下,输出Alexnet的时间测试结果:
cd ~/caffe
./build/tools/caffe time --gpu 0 --model ./models/bvlc_alexnet/deploy.prototxt




四、MNIST数据集测试


配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:

1.将终端定位到Caffe根目录:cd ~/caffe
2.下载MNIST数据库并解压缩:./data/mnist/get_mnist.sh
3.将其转换成Lmdb数据库格式: ./examples/mnist/create_mnist.sh
4.训练网络:./examples/mnist/train_lenet.sh


训练的时候可以看到损失与精度数值,如下图:


矿卡gpuz参数鉴别_cuda8.0_05



可以看到最终训练精度为0.9914。至此,安装及测试过程到这里就结束了。



参考文献


【1】


【2】


【3】https://www.pyimagesearch.com/2017/09/25/configuring-ubuntu-for-deep-learning-with-python/