caffe配置Ubuntu 15.04+CUDA 7.5+MKL+Opencv3.0+CUDNN

折腾了好久才把caffe配置好,期间还用了好几个不同的电脑做实验,下面就详细的记录一下caffe的配置过程,方便以后再进行配置。

主体部分参考的是欧新宇的博客,这个是新一点的配置,还有一个旧一点的Caffe + Ubuntu15.04 + CUDA 7.0 新手安装配置指南。里面的配置步骤很详细,但是还是会出现一些问题,也不知道是不是特例,反正先把问题总结一下,也方便大家参考。本文主要分为以下四个部分,最后一个添加Faster RCNN的准备以后再细述:

o    第一部分 Linux安装

o    第二部分 nVidia CUDA Toolkit的安装(*.deb方法)

o    第三部分 Matlab安装和调试

o    第四部分 Caffe-Master的安装和测试

PS :为了方便大家使用,欧新宇提供一个百度云盘,用于分享部分安装过程中需要用到的软件包和链接地址(所有软件包仅供学术交流使用,请大家尽量去官网下载。)。百度云盘链接 : http://pan.baidu.com/s/1hqCWTF2  密码 : 8qw8

第一部分 Linux安装

首先安装linux,我是先预留500个G的空闲空间,然后直接一路默认设置,安装了Ubuntu Kylin15.04,主要是这个版本是针对国人设计的,会相对友好点。下面是欧新宇的安装过程。

Linux的安装,如果不是Linux粉,只是必须,被迫要用它来作作科研什么的,建议安装成双系统,网上方法很多,这里我就不详细写了,安装还算是傻瓜式的,和windows的过程类似,至于语言,如果觉得难度还不够大的话,完全可以装E文版的,甚至日文,德文~~~,我是装的简体中文版,我总共用分出的500G的空间来安装Ubuntu 14.04,这个版本是最新的版本,有个好处是,可以直接访问Windows8.1NTFS分区,不用做额外的操作,而且支持中文,例如:$ cd /media/yourname/分区名字/文件夹名,当然GUI就更方便了.

我的分区设置如下:

根分区: \ 100G

Swap交换分区:128G,这里设置为何内存一样,据说小于16G的内存,就设置成内存的1.5-2

boot分区:200M

Home分区:剩余的空间,鉴于ImagenetPASCAL VOC之类的大客户,建议500G,至少300G以上。

PS:解决启动分区错误

基本上,重装起来,都会破坏原来的启动分区表,还原Windows分区的一个简单办法:

$ sudo gedit etc/default/grub

设置:GRUB_DEFAULT = 2

$ sudo update-grub

该方法适用于安装双系统后,"看得到Linux,看不到Windows”的情况,反过来的话,请大家自己百度吧。

PS:关于欧新宇的笔记本的特例,仅供类似设备的参考

笔记本配置:技嘉P35X v3[email protected]/16G/NVidiaGTX 980 4G/Intel HD 4600/128G SSD*2 + 2T SATA *2

我的两组硬盘SSDSATA分别做Raid 0,目的是合并逻辑分区,没有考虑冗余备份问题,最后的状态是2个逻辑硬盘块256G SSD + 4TSATA,用的GPA分区,最后导致利用UbuntuGRUB启动界面找不到Windows分区。所以上面的方法失效。不过,可以通过笔记本的F12Bios设置来实现启动分区的选择,并且我用Linux的机会很少,所以也就如此处理了,Linux高手可以自己折腾一下Grub启动。Ubuntu 15.04安装在SATA逻辑分区,SSD分区安装Windows8.1



第二部分:nVidia CUDA Toolkit的安装(*.deb方法)

这步我也是使用欧新宇推荐的方法,就直接粘贴了:

PS:特别推荐*.deb的方法,目前已提供离线版的deb文件,该方法比较简单,不需要切换到tty模式,因此不再提供原来的*.run安装方法,这里以CUDA 7.5为例。

一、CUDA Repository

获取CUDA安装包,安装包请自行去NVidia官网下载。(https://developer.nvidia.com/cuda-downloads

$ sudo dpkg -icuda-repo-ubuntu1504-7-5-local_7.5-18_amd64

$ sudo apt-get update

二、CUDA Toolkit

$ sudo apt-get install -y cuda



第三部分 Matlab安装和调试(以Matlab 2014a为例)

这步我也是使用欧新宇推荐的方法,不过由于我的学校提供了正版的Matlab,所以并不需要破解,下面也就直接粘贴过来吧:

1.下载

由于该软件为商业软件,请大家自行寻找,安装学习,并确保不使用做商业目的,下载24小时删除......

2. 预准备

选择Mathworks.Matlab.R2014a.Unix.iso -右键 -使用磁盘映像挂载器打开,进入装载的虚拟光盘,拷贝全部文件至home/Matlab文件夹(PS:我的原则是能GUIGUI,喜欢CMD的可以参照执行)

复制Crack/install.jar home/Matlab/java/jar/并覆盖源文件

$ sudo cp install.jar/home/Matlab/java/jar/

3. 授权安装文件夹

$ chmod a+x Matlab -R

4. 安装

$ sudo ./install

选项:不使用Internet安装

序列号: 12345-67890-12345-67890

默认路径:/usr/local/MATLAB/R2014a

勾选从默认启动路径创建符号链接(实现在任意位置运行matlab启动程序)

激活文件:license_405329_R2014a.lic

拷贝 libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64

$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/

5.解决编译器gcc/g++版本问题。

因为Ubuntu 15.04gcc/g++版本是4.9.2,而Matlab 2014a2015a)的版本是4.7.x所以在使用matla调用mex文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。

A. 降级安装gcc/g++版本为4.7.x

(a). 下载gcc/g++ 4.7.x

$ sudo apt-get install -y gcc-4.7

$ sudo apt-get install -y g++-4.7

(b). 链接gcc/g++实现降级

$ cd /usr/bin

$ sudo rm gcc

$ sudo ln -s gcc-4.7 gcc

$ sudo rm g++

$ sudo ln -s g++-4.7 g++

B. 暴力引用新版本GLIBCXX_3.4.20

$ sudo cp/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20/usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20libstdc++.so.6.0.20的版本,可能因为系统不同而不同,使用最新的就可以了。)

目录切换到 /usr/local/MATLAB/R2014a/sys/os/glnxa64/,非常重要!

$ sudo mv libstdc++.so.6 libstdc++.so.6.backup(仅仅是备份,可以不备份,直接删除)。

$ sudo ln -s libstdc++.so.6.0.20libstdc++.so.6

$ sudo ldconfig -v

通过命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grepGLIBCXX_”可以看一下,是否已经成功包含了GLIBCXX_3.4.21,如果已经存在,基本上就成功了。

6.编译Matlab用到的caffe文件(见第四部分)


第四部分 Caffe-Master的安装和测试

直到这里,也还没有遇到什么问题,但是接下来就会比较坑爹了。

对于Caffe的安装严格遵照官网的要求来:http://caffe.berkeleyvision.org/installation.html

一、安装BLAS

这里可以选择(ATLASMKL或者OpenBLAS),我这里使用MKL,首先下载并安装英特尔®数学内核库 Linux*MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下载链接是:https://software.intel.com/en-us/intel-education-offerings使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹(或直接把tar.gz文件拷贝到home文件夹,为了节省空间,安装完记得把压缩文件给删除喔~),或者其他的ext4的文件系统中。

很多人说,下载不了,本人于2105118日使用该地址下载最新的2016版本,仍然没有问题,请大家细心操作^_^

接下来是安装过程,先授权,然后安装:

$ tar zxvf parallel_studio_xe_2016.tar.gz(如果你是直接拷贝压缩文件过来的)

$ chmod a+x parallel_studio_xe_2016 -R

$ sh install_GUI.sh

PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linuxroot口令。(设置方法:命令行:$ sudo passwd

我一开始安装的时候用的是parallel_studio_xe_2015,然后会出现以下问题,是有32位的库没有找到,后来装2016版本的时候直接先装好了库,就没有出现类似的问题。

caffe配置Ubuntu 15.04+CUDA 7.5+MKL+Opencv3.0+CUDNN_第1张图片

具体的解决方法就是,打开终端,输入以下命令sudo apt-get install g++-multilib然后再安装就好了,如图:

caffe配置Ubuntu 15.04+CUDA 7.5+MKL+Opencv3.0+CUDNN_第2张图片

caffe配置Ubuntu 15.04+CUDA 7.5+MKL+Opencv3.0+CUDNN_第3张图片

二、MKLCUDA的环境设置

1. 新建intel_mkl.conf并编辑之:

$ sudo gedit/etc/ld.so.conf.d/intel_mkl.conf

/opt/intel/lib/intel64

/opt/intel/mkl/lib/intel64

2. 新建cuda.conf,并编辑之:

$ sudo gedit /etc/ld.so.conf.d/cuda.conf

/usr/local/cuda/lib64

/lib

3. 完成lib文件的链接操作,执行:

$ sudo ldconfig -v

三、安装OpenCV 3.0.0

1. 下载并编译OpenCV(官网原版OpenCVhttp://opencv.org/),或者使用我提供的修改版的安装包 Install-OpenCV-master (下面的安装方式使用该包完成,安装包修改了dependencies.sh文件并增加了OpenCV 3.0.0的安装文件)

2. 切换到文件保存的文件夹,然后安装依赖项:

$ sudo sh Ubuntu/dependencies.sh

3. 切换目录Ubuntu\3.0\安装OpenCV 3.0.0

$ sudo sh opencv3_0_0.sh

保证网络畅通,因为软件需要联网这里时间较长,请耐心等待。。。,

四、安装其他依赖项

1. Google Logging Libraryglog),下载地址:https://code.google.com/p/google-glog/,然后解压安装:

$ tar zxvf glog-0.3.3.tar.gz

$ ./configure

$ make

$ sudo make install

如果没有权限就chmod a+x glog-0.3.3 -R ,或者索性 chmod 777 glog-0.3.3 -R ,装完之后,这个文件夹就可以kill了。

2. 其他依赖项,确保都成功

$ sudo apt-get install -y libprotobuf-devlibleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-devlibgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compilerprotobuf-c-compiler protobuf-compiler

五、安装Caffe并测试

在这里面也会有一个坑,大家先做好心理准备,如果顺利完成的话自然最好。

1. 安装pycaffe必须的一些依赖项:

$ sudo apt-get install -y python-numpypython-scipy python-matplotlib python-sklearn python-skimage python-h5pypython-protobuf python-leveldb python-networkx python-nose python-pandaspython-gflags Cython ipython

2. 安装配置nVidia cuDNN加速Caffe模型运算

a. 安装前请去先官网下载最新的cuDNN (cudnn-70-linux-x64-v3)

$ sudo cp include/cudnn.h/usr/local/include

$ sudo cp lib64/libcudnn.* /usr/local/lib

b. 链接cuDNN的库文件

$ sudo ln -sf/usr/local/lib/libcudnn.so.7.0.64 /usr/local/lib/libcudnn.so.7.0

$ sudo ln -sf/usr/local/lib/libcudnn.so.7.0 /usr/local/lib/libcudnn.so

$ sudo ldconfig -v

3. 切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:

$ cp Makefile.config.example Makefile.config

4. 配置Makefile.config文件(仅列出修改部分)

a. 启用CUDNN,去掉"#"

USE_CUDNN := 1

b. 配置一些引用文件(增加部分主要是解决新版本下,HDF5的路径问题)

INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib/usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

c. 启用Intel Parallel Studio XE 2016

BLAS := mkl

d. 配置路径,实现caffePythonMatlab接口的支持

PYTHON_LIB := /usr/local/lib

MATLAB_DIR := /usr/local/MATLAB/R2014a

c. 启用OpenCV 3.0,去掉"#"

OPENCV_VERSION =3

6. 编译caffe-master!!!"-j8"是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。

$ make all -j8

$ make test -j8

$ make runtest -j8


关键的来了,前两个一般都能通过,最后一个,我一开始经常出错,不管怎么装,都成功不了,如图:

caffe配置Ubuntu 15.04+CUDA 7.5+MKL+Opencv3.0+CUDNN_第4张图片

后来我仔细查看了一下,都是CPU浮点运算出了问题,我一开始用的CPU是I7-3770,我在两台同样配置的电脑下进行配置,都是同样的问题,于是我换到了I7-4790K的电脑上,一下子就配置成功了。

caffe配置Ubuntu 15.04+CUDA 7.5+MKL+Opencv3.0+CUDNN_第5张图片

但是总不能出了问题就换电脑吧,那还怎么科研。于是我想会不会是因为之前我选择了MKL库的问题(我用2015版的时候有问题,2016版的没有尝试),我安装了atlas库,并将MakeFile.config文件中的BLAS := mkl改为BLAS := atlas就好了。

atlas安装也很简单,输入以下命令 sudo apt-get install libatlas-base-dev libatlas-dev libatlas-doc libatlas-test libatlas3-base libatlas3gf-base 等待安装好就行。再次编译的话就可以通过了。


编译PythonMatlab用到的caffe文件

$ make pycaffe -j8

$ make matcaffe -j8

到此caffe就算是配置成功了,具体的使用以后再慢慢琢磨琢磨。

六、使用MNIST数据集进行测试

Caffe默认情况会安装在$CAFFE_ROOT,就是解压到那个目录,例如:$home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html

1. 数据预处理

$ sh data/mnist/get_mnist.sh

2. 重建lmdb文件。Caffe支持多种数据格式输入网络,包括Image(.jpg, .png)leveldblmdbHDF5等,根据自己需要选择不同输入吧。

$ sh examples/mnist/create_mnist.sh

生成mnist-train-lmdb mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集

3. 训练mnist

$ sh examples/mnist/train_lenet.sh

至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下CPUGPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。

测试平台1i7-4770K/16G/GTX 770/CUDA 6.5

MNIST Windows8.1 on CPU620s

MNIST Windows8.1 on GPU190s

MNIST Ubuntu 14.04 on CPU270s

MNIST Ubuntu 14.04 on GPU160s

MNIST Ubuntu 14.04 on GPU with cuDNN30s

Cifar10_full on GPU wihtout cuDNN73m45s = 4428s Iteration 70000

Cifar10_full on GPU with cuDNN20m7s = 1207s Iteration 70000



测试平台2:技嘉P35X v3[email protected]/16G/NVidia GTX 980 8G

MNIST Ubuntu 15.04 on GPU with cuDNN33s



测试平台3Dell 7910E5 2623v3 3.0G *2 /128G/ NVidia Titan X 12G

MNIST Ubuntu 15.04 on GPU with cuDNN23s(真是逆天啊!)



对比测试12*E5-2620(12CPUs)/128G/TeslaK20M/CUDA5.5/CentOS 6.4

MNIST CentOS 6.4 on GPU294s

对比测试2Tesla K40M/CUDA6.5/ubuntu 14.04

MNIST on GPU with cuDNN30s

对比测试3GTX 660/CUDA6.5/ubuntu 14.04

MNIST on GPU with cuDNN49s

对比试验1是一个不太公平的测试,毕竟性能差很大,很可能不单单是由Tesla K20sGTX 770带来的,也可能是因为CentOS或者是CUDA5.5(without cuDNN)的影响,但总体上的结论和Caffe官网的 referenceperformance numbers 一致,对于普通用户:GTX的性价比高很多。对比试验2展现了Tesla K40的强大性能,相信对于复杂图像,它应该有更强劲的表现。(感谢香港城市大学 Ph.D Jingjing、南京理工大学 Ph.D JinLu、华中科技大学 MS LiuMaolin 提供的测试环境和测试数据。)


你可能感兴趣的:(软件配置,Ubuntu15.04,CUDA,7.5,Caffe,Opencv3.0,cudnn)