Ubuntu14.04+CUDA7.5+Anaconda2-4.0.0+Matlab2014b+Caffe from Scratch

Ubuntu14.04+CUDA7.5+Anaconda2-4.0.0+Matlab2014b+Caffe from Scratch


前言

花了三天时间,从装双系统到安装Caffe并编译成功,其间踩过无数个坑,浏览过几十篇CSDN和博客园还有linux公社上的技术博客,个中酸甜苦辣恐怕只有亲身经历过才能体会。由于博客数过多,在此就不一一罗列了,谨在此向他们致谢!!!

注:本博客适用于支持CUDA的情况,以下所有配置均建立在gpu支持CUDA的前提下。

硬件配置:

笔记本:戴尔游匣7447
显卡:NVIDIA GTX 850M
显存:4G
系统:Win8.1,ubuntu14.04.1 LTS(64位)
内存:8G

  • Ubuntu1404CUDA75Anaconda2-400Matlab2014bCaffe from Scratch
    • 前言
    • 硬件配置
    • win81下安装ubuntu
    • CUDA及cuDNN安装
    • Anaconda和matlab的安装
    • OpenCV安装
    • OpenBLAS安装
    • Caffe编译并测试

win8.1下安装ubuntu

本人笔记本支持UEFI启动,若主板不支持UEFI启动的请自行baidu or google。

前期准备:U盘一个,容量最好不小于2G,FAT32格式,ubuntu14.04.1系统镜像(64位)

1、从硬盘中划出一块区域用于ubuntu
右击“我的电脑”,选择“属性”,单击“磁盘管理”,从剩余空间较多的分区中划分出一部分空间,具体操作右击对应分区,选择“压缩卷”,在弹出的对话框中输入要压缩的空间大小,这里要注意:
压缩出来的分区必须要连续,这样才能合并到一起,但是其实从多个分区中压缩出来的空间是不能合并的,因此当最大的分区剩余的空间都不能满足需要时,只能调整分区大小,可用分区助手调整,然后在最后一块分区中划分尽可能大的分区,然后进行压缩,建议最少能压缩200G,我分配了300G。

2、将U盘内的资料备份,因为在制作系统盘时会被格式化,下载Universal-USB-Installer,搜索引擎一搜就有,就不贴出链接了,请自行下载并安装。安装完毕后插上U盘,打开软件,点击“I Agree”,在步骤1选择ubuntu,步骤2选择系统镜像所在位置并选中之,步骤3选择做系统盘的U盘,选择“createl”,然后等待写入完成。系统盘制作成功后弹出。
在选择系统时也踩了几个坑,本人共试过14.04,14.04.1,14.04.2,14.04.3,14.04.4,15.04六个系统,其中14.04,14.04.2~14.04.4安装完CUDA驱动,重启均黑屏,安装15.04能顺利重启,但是不能上网,所以最终还是选择了14.04.1这个版本,但这应该不是bug,可能是电脑的问题,读者可尝试其他版本。

3、关闭快速启动,具体操作请自行百度。打开设置,选择更新和恢复-恢复-高级启动-立即重启-疑难解答-高级选项-UEFI固件设置-重启,进入BIOS界面,切换到boot选项卡,关闭安全启动(secure boot disabled),保存退出。插上U盘,并按住F12键进入first setup,不同的主板可能有不同的按键,请自行更换按键,若进入失败可重启再试。选择U盘启动,选择Try without installing,进入桌面后双击install ubuntu14.04开始安装。
几点注意:
安装方式务必选择something else,然后将free space自行分区及分配大小。点击”+”新建分区,由于GPT磁盘对主分区个数没有限制,因此在分区时主分区和逻辑分区没有影响,第一个分区选择EFI boot portion,分配100-300M空间,我这里分配了200M,然后创建”/”分区,我分配了大约140G,然后创建“/home”分区,我分配了大约150G,其实我这里分配不是很合理,“/”不用分配那么大,更多的空间应该留给”/home”分区,最后创建交换分区,如果内存不大,建议分配1.5倍的内存大小,需要注意的是,在分配交换空间时,应选择end of space以充分利用空间。创建完成后点击下拉菜单选择刚刚创建的第一个EFI boot portion,千万别搞错了,接下来就没什么需要特别注意的了。安装完成后重启,拔出U盘,这时启动项有四个,第一个是启动ubuntu,第三个是启动win8.1。选择启动ubuntu,,如果能顺利启动,系统安装就算成功了。

CUDA及cuDNN安装

1、在进行后续步骤之前,请先配置网络使系统能够上网。
2、在下载安装包之前,请先确认电脑的显卡是否支持CUDA7.5,若支持请往下看,查看方法为:
在终端(ctrl+alt+T)输入 lspci | grep -i nvidia 查看GPU型号,如果你的GPU型号出现在http://developer.nvidia.com/cuda-gpus列表中,那么恭喜你,请往下看。
3、由于安装包较大,选择离线安装,进入CUDA官网,下载ubuntu14.04对应版本的deb包,注册申请下载cuDNN-7.0 v4,默认下载路径为/home/user/Downloads,其中user为自己创建的用户名,下同。
4、下载完成后,进入安装包所在路径
cd ~/Downloads
进行md5校验,确保下载的安装包完整,确认无误后,依次输入:
sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install cuda
安装包的名称可在输入sudo dpkg -i cuda后按Tab键自动补全。
5、配置环境变量
5.1先使用sudo gedit /etc/profile 打开profile文件,并在末尾添加以下两条路径
export PATH=/usr/local/cuda-7.5/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

保存后退出,终端输入 source /etc/profile加载路径。
5.2 设置动态链接库路径:
先在/etc/ld.so.conf.d/加入文件cuda.conf:
$ sudo gedit /etc/ld.so.conf.d/cuda.conf

在文件内加入以下路径
/usr/local/cuda/lib64
保存后退出,终端输入sudo ldconfig使其立即生效。
重启系统!!!
6、若能成功进入桌面,则离成功不远了,接下来进行一些验证操作。
6.1.安装具有写权限的CUDA Samples
其实Samples已经在/usr/local/cuda-7.5/ 里了,不过权限是只读的,这里所说的安装其实是从以上路径下拷贝一份到具有读写权限的路径下进行编译:
$ cuda-install-samples-7.5.sh /home/user

6.2.验证驱动版本

这里写图片描述

6.3.查看nvcc编译器的版本,验证cudatoolkit是否成功。
$ nvcc -V

编译cuda的示例代码:
$ cd ~/NVIDIA_CUDA-7.5_Samples

$ sudo make

$ cd ~/NVIDIA_CUDA-7.5_Samples/1_Utilities/deviceQuery

$./deviceQuery

Ubuntu14.04+CUDA7.5+Anaconda2-4.0.0+Matlab2014b+Caffe from Scratch_第1张图片

由于本人是双显卡笔记本,因此涉及到切换显卡的问题,可进入/usr/share/applications
双击NVIDIA X Server Settings,通过PRIME Profiles来切换显卡,为方便使用,可复制此图标到桌面上,当然,也可以自己安装一个NVIDIA-prime指示器,命令如下:
$ sudo add-apt-repository ppa:nilarimogard/webupd8

$ sudo apt-get install prime-indicator

重启系统后,在右上方托盘区可见NVIDIA或Intel的图标,点击即可切换。
7 安装cuDNN v4
进入文件下载目录并解压cudnn-7.0-linux-x64-v4.0-prod.tgz:
$ cd ~/Downloads

(zxvf四个字母可交换顺序)
解压后在该文件夹下会生成一个cuda文件夹,进入该文件夹,将头文件cudnn.h加到系统能找到的include文件夹里,将lib库文件加到系统能找到的lib文件夹里:
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include

$ sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64
至此,CUDA和cuDNN安装完毕,为方便使用,还是安装个搜狗中文输入法吧。

Anaconda和matlab的安装

1、进入官网,下载对应的.sh安装文件,我下载的是Anaconda2-4.0.0-Linux-x86_64.sh,终端进入下载文件夹进行安装即可:
$ cd ~/Downloads

$ bash Anaconda2-4.0.0-Linux-x86_64.sh

一直按Enter键输入yes就行了,软件会默认安装在用户目录下。注意在安装的最后会问你要不要将文件添加到环境变量,一定要选yes,默认是no,别手一抖默认过去了,不然还得自己添加。
添加Anaconda Library Path
$ sudo gedit /etc/ld.so.conf

添加/home/user/anaconda2/lib ,保存后退出,使其立即生效:
$ sudo ldconfig

2、安装matlab
现在最新的Caffe只支持到matlab2015a,尽量选新的版本因为下面要安装的OpenBLAS要求gcc版本不能低于4.7,我选了matlab2014b,由于有不同的破解方式,这里就不详述安装过程了。秉着尊重版权的原则,能买正版的就买个正版的吧,破解版仅用于非商业用途,切记切记!
安装完成后,别忘了添加环境变量:
$ sudo gedit /etc/profile

在末尾添加
export PATH=/usr/local/MATLAB/R2014b/bin:$PATH

alias matlab=’nohup matlab -desktop & ’
保存后退出,加载环境变量
$ source /etc/profile
此时如果直接在终端输入matlab或者进入/usr/local/MATLAB/R2014b/bin目录下输入matlab可能会出现matlab:command not found,解决办法:
终端进入/usr/local/bin目录,输入:
sudo ln -s /usr/local/MATLAB/R2014b/bin/matlab matlab,此时再在任意目录输入matlab均可启动matlab,不得不说ubuntu启动matlab的速度秒杀windows。
好了,到此,matlab就安装成功了。

OpenCV安装

采用自动安装
从https://github.com/jayrambhia/Install-OpenCV下载源码包,解压,进入ubuntu文件夹并安装:
$ cd Ubuntu

$ chmod +x *

$ ./opencv_latest.sh

默认安装在原路径下,为了使文件归类,可以在/home目录下新建OpenCV文件夹,然后将源码包解压到该文件夹,目前最新版为2.4.13,安装完成后添加并加载环境变量:
设置动态链接用到的路径
$ sudo gedit /etc/ld.so.conf.d/opnecv.conf

在opnecv.conf里面添加
/usr/local/lib
dir/opencv-2.4.13/build/lib/
#其中dir为你opencv的实际安装路径
再执行
$ sudo ldconfig

最后再添加一个所需到环境变量
$ sudo gedit /etc/bash.bashrc

在末尾添加内容
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

然后source一下
$ source /etc/bash.bashrc

至此,OpenCV安装完成。测试一下是否安装成功:
进入opencv文件夹下的sample/c目录
$ cd samples/c

$ ./build_all.sh
如果正确安装,会进行编译

Ubuntu14.04+CUDA7.5+Anaconda2-4.0.0+Matlab2014b+Caffe from Scratch_第2张图片

$ ./facedetect lena.jpg

Ubuntu14.04+CUDA7.5+Anaconda2-4.0.0+Matlab2014b+Caffe from Scratch_第3张图片

至此,OpenCV安装成功。

OpenBLAS安装

这里也遇到了几个坑,新手建议安装Ablas:
$ sudo apt-get install liblapack-dev

$ sudo apt-get install libatlas-base-dev

$ sudo apt-get install libatlas-dev

也可以安装Intel MKL,不过申请和下载也是个麻烦事,在此重点讲下OpenBLAS安装。
1、从github上下载源码包并解压
$ git clone git://github.com/xianyi/OpenBLAS

此时会在/home目录下生成一个OpenBLAS文件夹,OpenBLAS所有相关的文件都解压在这里。
2、打开文件夹:
$ cd ~/OpenBLAS

3、编译安装
$ make FC=gfortran #如果没有安装gfortran,执行sudo apt-get install gfortran

4、执行以下命令完成安装
$ ln -s /opt/OpenBLAS/lib/libopenblas.so /usr/lib/libblas.so.3

$ ln -s /opt/OpenBLAS/lib/liblapack.so.3 /usr/lib/liblapack.so.3\

5、添加环境变量
5.1 创建动态链接库
$ sudo gedit /etc/ld.so.conf
加入:/opt/OpenBLAS/lib,保存后退出。
加载使其立即生效:
务必要将/include目录添加到环境变量,否则后面编译Caffe会报错说找不到cblas.h文件,但其实在include目录下是有cblas.h文件的。
在终端输入:
CPLUS_INCLUDE_PATH=/home/user/OpenBLAS/include/
Export CPLUS_INCLUDE_PATH
至此,OpenBLAS安装完毕。

Caffe编译并测试

好了,终于进入最后的正题了,话不多说,开干!
首先,下载源码包并解压至/home/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

安装完成后,安装python依赖包,由于Anaconda已经自带很多常用的包,因此不用一个个自己安装,先进入/caffe/python/查看requirement.txt文件,里面罗列了需要的依赖包和版本要求,然后在终端输入conda lilst查看已经安装的包,发现所有要求的包都已经安装好了,只有python-dateutil这个包版本太高不符合要求,去官网https://pypi.python.org/pypi/python-dateutil/下载一个1.5版本的包,解压至annconda2/pkgs,进入目录,执行:
$ python setup.py install

安装完成。
添加环境变量:
$ sudo gedit ~/.bashrc

在末尾添加:
export PYTHONPATH=/home/xm/caffe/python:$PYTHONPATH

export MATLABPATH=/home/xm/caffe/matlab:$MATLABPATH

保存后退出,source一下:
$ source ~/.bashrc

在编译之前,先修改一下Makefile:
$ cd ~/caffe

$ cp Makefile.config.example Makefile.config

打开Makefile.config文件,修改一些配置,主要是是否使用cuDNN,BLAS库,OpenCV,Anaconda的一些路径,还有matlab的路径:修改的内容如下:
USE_CUDNN := 1

CUDA_DIR := /usr/local/cuda

BLAS := open

BLAS_INCLUDE := /opt/OpenBLAS/include
BLAS_LIB := /opt/OpenBLAS/lib

MATLAB_DIR := /usr/local/MATLAB/R2014b

ANACONDA_HOME := $(HOME)/anaconda2

PYTHON_INCLUDE := $(ANACONDA_HOME)/include \

     $(ANACONDA_HOME)/include/python2.7 \

     $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \

PYTHON_LIB := $(ANACONDA_HOME)/lib

WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

注:此处由于编辑器的原因没有列出修改后的完整内容,完整pdf版本已上传到资源

保存之,进入终极编译,先为自己鼓鼓掌,然后祈祷一下不要出错:)
$ make all -j2

$ make test -j2

$ make runtest -j2

其中-j后面的数字是可并发运行的线程数,官网推荐cpu的核数。
编译期间该排排,该补补,其实按照上面的步骤一步步来是没有问题的(坑都被我辛辛苦苦挖土添上了:()。
以上编译无误后,编译python wrapper:
$ make pycaffe

完成后打开python看是否能顺利导入caffe:
$ python
import caffe

如果不报错表明编译成功了,接着编译 matlab wrpper:
$ make matcaffe

好了,大功告成,好兴奋有木有!!!
最后一步,添加环境变量:
$ sudo gedit /etc/profile

在末尾添加:
export CAFFE_HOME=/home/xm/caffe
保存后退出,加载一下:
$ source /etc/profile

可以跑个手写数字识别来体验一下:
$ cd ~/caffe

1、数据预处理
$ sudo sh ./data/mnist/get_mnist.sh

2、重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式
$ sudo sh ./examples/mnist/create_mnist.sh

生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集。
3. 训练mnist
$ sudo sh ./examples/mnist/train_lenet.sh
等待数秒之后会发现迭代了1000次,以及输出的数据等。

你可能感兴趣的:(Caffe,DL-Caffe)