大四做毕设的时候涉及到深度学习方向,然后老师建议使用caffe,然后作为小白的我就懵懵懂懂的开始配置起来。结果碰了一鼻子灰,期间总共重装了五次系统,最后才配置成功。对于caffe来说,不同的硬件配置可能会出现不同的结果。因此,我不敢保证我的方法在其他电脑上能配置成功,但在我电脑上是配置成功的。因此我想跟大家分享以下我的经验,希望让更多的新手早点结束配置所带来的痛苦~~~
本机配置:
GPU: GTX 1050Ti
CPU: E3-1231 v3
系统: Ubuntu 14.04 64bit
内存:8G
磁盘:280G
1. 安装nvidia驱动和cuda 8.0
若想要安装gpu版的caffe,首先得安装好nivida驱动和cuda,这个安装过程我在上一个教程已经描述了,请点击这里。若只需要cpu-only模式,则跳过这一步。
2. 安装基础依赖项
sudo apt-get install build-essential
sudo apt-get install cmake git
3. 安装ATLAS或者Intel MKL
我安装的是ATLAS,因为首先它安装要比MKL简单,其次有人在E5-2690v2+GTX780的平台上测试过这三种库,性能相差无几。但你若为了追求更快的速度,可以考虑这个教程安装MKL。
安装ATLAS的命令为:
sudo apt-get install libatlas-base-dev
然后等它自动安装完即可。
4. 安装其他的一些依赖项
sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
复制粘贴太长的命令可以能因为浏览器的原因导致输入了多余的换行符,如果复制粘贴带有换行符的命令进Terminal,会被当做两条命令来执行,一定要注意这一点。
5. 安装opencv
参考文章:
因为国内很多网络打开OpenCV官网速度缓慢,所以我们可直接从GitHub上下载OpenCV 3.1的源代码,请点击这里。
编译opencv
a. 将下载好的opencv-3.1.0.zip放在任意目录下,并在终端执行 unzip opencv-3.1.0.zip 进行解压。b. 创建编译目录进行编译
cd ~/opencv-3.1.0 mkdir bulid cd bulid
根据参考文章作者的说法,如果使用opencv-3.0.0会出现问题: 提示下载ippicv_linux_20141027.tgz(下载地址),然后将下载好的文件在该路径下替换 ~/opencv-3.0.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b,若使用opencv-3.1.0不会出现这个问题。
但我使用的opencv-3.1.0时,出现了这个问题~~~然后用他的那种方法解决了我的问题。
然后执行如下命令:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j8
j后面的数字是计算机的核数。
最后执行
sudo make install
测试opencv(不必要)
由于本人比较懒~~~, 所以我没有测试这一步。
6. 安装google-glog
这步请参考这里。
7. 下载caffe
这里有两种方法下载:
从github上直接下载caffe的最新版,即执行
git clone https://github.com/BVLC/caffe.git
从caffe的工程中下载caffe的历史版本,下载地址。
我采用的是第二种方法。
8.安装python(optional)
在这里我更建议的是安装anaconda,然后将python的默认环境设置成anaconda的环境。
若不使用anaconda, 则需要安装相关依赖项
sudo apt-get install python-dev python-pip
其次转到下载的caffe目录下,再转到python目录下
cd python
执行如下命令:
for req in $(cat requirements.txt); do sudo pip install $req; done
等待其自动安装即可。
9. 安装MATLAB(optional)
安装教程参考这里。
注意:选择不联网安装,输入crack文件夹中的序列号。然后要使用matlab的接口需要在caffe文件夹下修改Makefile.Configuration,将use matlab前的#注释符去掉。
10. 配置cuDNN
cuDNN需要注册Accelerated Computing Developer Program,然后可以免费下载,下载地址。
cuDNN是The NVIDIA CUDA Deep Neural Network library,对于使用NVIDIA显卡进行深度学习加速具有很大的性能提升,非常建议添加。
此外,cuDNN的版本一定要和cuda的版本相对应。期间我有一次cuDNN选的v5.0,最后caffe编译的时候出现错误。试了多次之后,发现cuDNN v5.1适合cuda 8.0。
下载后解压缩,转到该目录下,执行:
sudo cp lib* /usr/local/cuda/lib64/
sudo cp cudnn.h /usr/local/cuda/include/
更新软链接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
注意:根据你下载的cuDNN版本不同,需要对如上命令中的版本进行修改,例如我的cuDNN版本是cuDNN 5.1.5的。
11. 配置caffe-master
将caffe-master.zip这个文件拷贝到主文件夹下,即/home/您的服务器名字文件夹下,提取到此处,解压后终端输入:
cd /home/您的服务器名字/caffe-master
cp ./Makefile.config.example ./Makefile.config
然后执行
sudo gedit Makefile.config
做出如下修改:
11.1. 启用cuDNN,去掉 “#”
USE_CUDNN := 1
11.2. 配置一些引用文件(增加部分主要是解决新版本下,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
11.3. 若你安装的是ATLAS,则跳过这一步;若是MKL,则需执行如下命令
BLAS := mkl
11.4. 配置路径,实现caffe对Python和Matlab接口的支持
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2015b
注意:若使用的是anaconda, 则需要去掉anaconda前面的”#”,另外要注意Python与matlab的路径要输入正确。
11.5. 启用opencv3,去掉”#”
OPENCV_VERSION =3
到此修改完毕,保存并退出。
然后编译caffe-master,终端输入:
cd /home/您的服务器名字/caffe-master
make all -j8
make test -j8
make runtest -j8
之后根据需求编译matcaffe和pycaffe:
make matcaffe -j8
make pycaffe -j8
到此位置,caffe的安装结束了。
12. 测试caffe(MNIST)
注意:下面所有的命令均是在caffe-master的目录下输入的,对于我来说,就是 /home/wyz/caffe-master
获取数据
cd data/mnist sudo sh ./get_mnist.sh
这一步是下载数据的,但有时因为网络原因,会花费较长时间。因此一般都是把mnist数据下载好,再放到该目录下。
重建数据文件,讲mnist重建为能被caffe使用的数据格式
cd ~/caffe-master sudo sh ./examples/mnist/create_mnist.sh
注意:先回到根目录下在进行操作。
训练lenet
sudo sh ./examples/mnist/train_lenet.sh
注意:如果是使用CPU模式的话,需要修改目录下的lenet_solver.prototxt文件,将solver_mode:GPU改为solver_mode:CPU
参考文章