Caffe 安装手册
一
二 Caffe 安装
安装流程,主要参考ouxinyu的文章。
http://ouxinyu.github.io/Blogs/20140723001.html
http://caffe.berkeleyvision.org/installation.html
主要包括显卡安装,数学库安装,boost安装,caffe库安装 python安装等。
2.1显卡驱动
1 修改文件
# sudo gedit /etc/modprobe.d/blacklist.conf
# 增加一行 :blacklist nouveau
2 修改文件
# sudo gedit /etc/default/grub
末尾写入:rdblacklist=nouveau
option nouveau.modeset=0
3 更新使1,2有效
Sudo update -initramfs -u
4 进入tty命令界面,ctrl alt f1-f6 关闭X界面
Sudo systemctl stop lightdm
5 第一次安装cuda
Sh cuda7.0.0_28.run
6 重启系统
7 重复4,5再装cuda
8 开启X界面
Sudo systemctl start lightdm
9 基本的依赖库
安装一些必要的库文件,譬如:OpenGL (e.g., Mesa), GLU, GLUT, and X11 (including Xi, Xmu, and GLX).
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
10.环境设置
$ export PATH=/usr/local/cuda-7.0/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
PS:如果出现安装失败,重启系统,重新安装一遍基本都可以解决,实在不行就卸载原来的驱动再安装一遍。
a. 卸载现有驱动
$ sudo nvidia-installer --uninstall
b. 重装CUDA Toolkit
$ sudo sh cuda_6_64.run
2.2 数学库
Openblas安装:
在 github上下载,并安装,如下:
$mkdir openblas
$cd openblas
然后下载git库
$git clone https://github.com/xianyi/OpenBLAS.git
$cd OpenBLAS
然后编译
$make
这个编译是很帅的,是多线程编译。编译好之后安装之
$sudo make install
装的位置是:
/opt/OpenBLAS
将这个位置和标准位置联系在一起使用下面的动作:
注意各人可能有各自不同的提示。接着根据这个来设定系统。
$sudo update-alternatives --install \
/usr/lib/libblas.so \
libblas.so /lib/libopenblas.so 37
$sudo update-alternatives --install \
/usr/lib/libblas.so.3gf \
libblas.so.3gf /lib/libopenblas.so.0 37
然后依次打开设定,就可以看到刚才按装的两个包了。
$sudo update-alternatives --config libblas.so
$sudo update-alternatives --config libblas.so.3gf
这里解释一下update-alternatives --install的用法。后面跟四个参数:
--install <link> <name> <path> <priority>
link是包的快捷方式,系统提供给其他程序去索用,像是地图上邮局的地址,固定不变——至于邮局里哪个邮递员在上班,寄信的人没有必要知道。
name是包的名称。path是我们要安装的包的地址,这个根据make install显示出来的结果设定。priority是在自动模式里调用这个包的优先级。如果想要删除,可以使用命令
$ sudo update-alternatives --remove libblas.so \
/lib/libopenblas.so
$ sudo update-alternatives --remove libblas.so.3gf \
/lib/libopenblas.so.0
参考文献:
http://blog.sina.com.cn/s/blog_6d09848701018smp.html
1 libatlas-dev:可以通过sudo apt-get install libatlas-dev完成。
2.3 Opencv
1. 下载并编译OpenCV(官网原版OpenCV:http://opencv.org/), 或者使用本站提供的修改版的安装包 Install-OpenCV-master (下面的安装方式使用该包完成,安装包修改了dependencies.sh文件并增加了OpenCV 3.0.0的安装文件,同时保留了原来的2.3x和2.4x版)
2. 切换到文件保存的文件夹,然后安装依赖项:
$ sudo sh Ubuntu/dependencies.sh
3. 切换目录Ubuntu\3.0\安装OpenCV 3.0.0rc1:
$ sudo sh opencv3_0_0-rc1.sh
2.4 Glog安装
1. Google Logging Library(glog),下载地址: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.5 其他包安装
$ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
$ sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
如果安装过程中出现错误,E: Sub-process /usr/bin/dpkg returned an error code (1),可能是因为sudo apt-get install出现到意外,不用着急,可以试试这个解决办法:
$ cd /var/lib/dpkg
$ sudo mv info info.bak
$ sudo mkdir info
$ sudo apt-get --reinstall install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
2.6 安装cuDNN
该改版本caffe-master默认支持cudnn-6.5-linux-x64-v2,使用cudnn-6.5-linux-R1会报错,安装前请去先官网下载最新的cuDNN。
$ sudo cp cudnn.h /usr/local/include
$ sudo cp libcudnn.so /usr/local/lib
$ sudo cp libcudnn.so.6.5 /usr/local/lib
$ sudo cp libcudnn.so.6.5.48 /usr/local/lib
b. 链接cuDNN的库文件
$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5.48 /usr/local/lib/libcudnn.so.6.5
$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5 /usr/local/lib/libcudnn.so
$ sudo ldconfig -v
2.7 Boost安装
在其他安装中已有。
2.8Caffe库安装
1下载caffe库,解压
$ cp Makefile.config.example Makefile.config
2配置Makefile.config文件(仅列出修改部分)
a. 启用CUDNN,去掉"#"(目前caffe-master仍然只支持R1版本)
USE_CUDNN := 1
b. 启用GPU,添加注释"#"
# CPU_ONLY := 1
c. 配置一些引用文件(增加部分主要是解决新版本下,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
这里根据需要再加入其他库。
d. 启用Intel Parallel Studio XE 2015 Professional Edition for C++ Linux
BLAS := mkl
e. 配置路径,实现caffe对Python和Matlab接口的支持
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2014a
F. 对openblas的支持
INCLUDE_DIRS +=/opt/OpenBLAS/include
3. 配置Makefile文件(实现对OpenCV 3.x的支持)
查找“Derive include and lib directories”一节,修改“LIBRARIES +=”的最后一行,增加opencv_imgcodecs
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
4. 编译caffe-master!!!"-j8"是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。
$ make all -j8
$ make test -j8
$ make runtest -j8
5.测试
使用MNIST数据集进行测试
Caffe默认情况会安装在$CAFFE_ROOT,就是解压到那个目录,例如:$ home/vis/caffe-master,所以下面的工作,默认已经切换到了该工作目录。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples /mnist.html
1. 数据预处理
$ sh data/mnist/get_mnist.sh
2. 重建lmdb文件。Caffe支持三种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,根据自己需要选择不同输入吧。
$ sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集
3. 训练mnist
$ sh examples/mnist/train_lenet.sh
6. caffe 训练测试自己的数据集
下面准备数据集和训练的过程参照imagenet的过程:可参考 http://drubiano.github.io/2014/06/18/caffe-custom-data.html
1. 将数据集分为train和validate, 分别写到train.txt和val.txt中。 格式每一行文件名+ 空格 + label (label 是从0开始, 并连续)
00001.jpg 0
00002.jpg 1
00004.jpg 1
00003.jpg 2
2. 将准备好的两个txt, 放到caffe_root/data/myfile/ (caffe_root是caffe的根目录, myfile自己命名)。
3. 进入caffe_root/examples/imagenet/ 目录中, 修改create_imagenet.sh
DATA=data/myfile
TRAIN_DATA_ROOT=/img_full_dir1 (img_full_dir1 存放训练图片的目录)
VAL_DATA_ROOT=/img_full_dir2 (img_full_dir2 存放测试图片的目录)
在caffe_root 下执行 ./examples/imagenet/create_imagenet.sh , 可以在examples/imagenet 目录下找到, ilsvrc12_train_lmdb ilsvrc12_val_lmdb两个目录
4. 在caffe_root 下执行 ./examples/imagenet/make_imagenet_mean.sh , 结果保存在data/ilsvrc12/imagenet_mean.binaryproto
5. 修改models/bvlc_reference_caffenet 下的solver.prototxt和 train_val.prototxt, 如果不修改网络的结构, 只需修改图片的大小crop_size <imagewidth。
6. 在caffe_root 下执行 ./examples/imagenet/train_caffenet.sh, 进行训练,训练好的模型放在models/bvlc_reference_caffenet
Reference:http://blog.csdn.net/sllin2012/article/details/46438663
注:
1.添加可执行文件路径方法:
用export 命令
如:
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/cuda-7.0/bin"
即将/usr/local/cuda-7.0/bin添加到路径中.
2.加载库(.so文件)方法
方法1:
1)在 /etc/ld.so.conf.d 下新建一个XXX.conf文件;
2)将搜索路径一行一个加入该文件即可;
3)完成lib文件的链接操作;
如:
1)新建文件openblas.conf
sudo gedit /etc/ld.so.conf.d/openblas.conf
2)在文件中加入库路径:
/home/openblas/OpenBLAS
3) 完成lib文件的链接操作,执行:
sudo ldconfig -v
附件A
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值