自己安装Caffe的过程中,参考了很多资料,但由于版本或者其他原因,安装过程中总是遇到这样或者那样的问题,因此留做记录,方便之后查看,也希望对遇到相似麻烦的朋友们提供帮助。

   下面我们开始安装吧:

  硬件自然不用说了,一个好的显卡(Nvida TiTan 系列),i7的处理器,8G以上的RAM。

 

1. 安装部分支持库

sudo apt-get install build-essential
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 
sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

2. 下载NVIDIA显卡驱动 和 CUDA

  a. 显卡驱动下载

  http://www.nvidia.cn/Download/index.aspx?lang=cn 选择对应型号和系统下载(CUDA向下兼容,可以下载最新的driver)

  Linux下run文件点下载键直接打开网页,可点击右键另存为即可。

  b. CUDA下载

  https://developer.nvidia.com/cuda-downloads 选择对应系统下载

  可以下载CUDA 7.0或者 7.5

3. 安装NVIDIA显卡驱动和CUDA

  首先进入tty,输入用户名和密码。

  关闭图形界面: 

sudo stop lightdm

  安装驱动:(更改驱动名称)

sudo chmod -R 777 NVIDIA-Linux-x86_64-352.21.run          
sudo sh NVIDIA-Linux-x86_64-352.21.run

  安装CUDA:

sudo chmod -R 777 cuda_7.0.28_linux.run
sudo ./cuda_7.0.28_linux.run

  安装过程都默认路径就好。CUDA7会提示安装完了Driver、Toolkit和Samples。

    备注1:如果之前你单独安装了驱动,安装CUDA时,驱动安装部分可以跳过。

    备注2:安装Samples可能会提示 缺少一些库,simple 也可之后编译测试。 

  打开图形界面

sudo start lightdm

4. 如果安装驱动不成功,很可能会进入黑屏模式,不要着急重装系统,进入tty重新装一遍驱动即可。(驱动安装成功,本步可略过)

  如果进入不了tty (ctrl+Alt+F1~F6),只是黑屏,则:

sudo sed -i -e 's/#GRUB_TERMINAL/GRUB_TERMINAL/g' /etc/default/grub
sudo update-grub
sudo reboot

  如果重启机子之后就进入不了桌面,在登陆界面循环,但是可以进入tty,一般是内核引导或者驱动安装的问题。则进入tty

lsmod | grep nouveau

  创建文件,不会用vi的可以用gedit

sudo gedit /etc/modprobe.d/nvidia-graphics-drivers.conf

  写入  blacklist nouveau, 退出保存(wq)

  修改grub:

sudo gedit /etc/default/grub

   末尾写入 

rdblacklist=nouveau nouveau.modeset=0

 

5. 安装配置Nvidia cuDNN-v4 (也可下载v5版本,链接库文件时注意改名)

  a. 去官网下载最新的cuDNN (cudnn-70-linux-x64-v4)。

https://developer.nvidia.com/cudnn 下载,需要先注册为developer,审核通过就可以下载,大概审个两天就可以。这个主要是针对Deep Learning框架设计的NVIDIA CUDA的GPU计算加速方案。不安装这个也可以跑caffe。

  b. 添加头文件和库文件

sudo cp include/cudnn.h /usr/local/include
sudo cp lib64/libcudnn.* /usr/local/lib

  c. 链接cuDNN的库文件

sudo ln -sf /usr/local/lib/libcudnn.so.4.0.7 /usr/local/lib/libcudnn.so.4
sudo ln -sf /usr/local/lib/libcudnn.so.4 /usr/local/lib/libcudnn.so
sudo ldconfig -v

 

6. 设置CUDA的环境变量 

  安装完成后需要在/etc/profile中添加环境变量

sudo gedit /etc/profile 

  在文件最后添加:

PATH=/usr/local/cuda/bin:$PATH
export PATH

  保存后, 执行下列命令, 使环境变量立即生效

source /etc/profile

  同时需要添加lib库路径: 在 /etc/ld.so.conf.d/加入文件cuda.conf,

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

  添加内容:

/usr/local/cuda/lib64

  保存后,执行下列命令使之立刻生效:

sudo ldconfig

 

7. 安装测试CUDA simples  

cd /usr/local/cuda/samples
sudo make all -j8

  其中-jx中x的数字代表几个线程同时编译,可以加快速度,x可以根据CPU核的个数决定。

 

可能遇到的问题:/usr/bin/ld: cannot find -lGL

原因:1. 缺少libGL库文件;2. link的问题。

方案:

1, 如果是缺少libGL库文件,可以先搜寻库文件安装包

apt-cache search libGL-dev
sudo apt-get install libGL-dev

2, 先寻找link文件(.so),再根据寻找结果定位  

locate libGL.so

  显示结果如下:

/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so.346.46
/usr/lib/x86_64-linux-gnu/mesa/libGL.so

  链接文件:

sudo rm /usr/lib/x86_64-linux-gnu/libGL.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.46 /usr/lib/x86_64-linux-gnu/libGL.so

  其他问题解决方案类似。

 

  编译完成后进入samples/bin/x86_64/linux/release, 运行deviceQuery

cd ./bin/x86_64/linux/release
./deviceQuery

  如果出现显卡信息, 则驱动及显卡安装成功。  

8. 安装Intel MKL或Atlas

  如果没有Intel MKL, 可以用下列命令安装免费的atlas(我在安装过程中,使用MKL时,与caffe不兼容,于是直接使用了atlas!!!!)

sudo apt-get install libatlas-base-dev

 

当然使用Intel MKL会快一些,我在caffe社区也反映了兼容问题,现在已经解决。安装Intel MKL过程如下:

  a. 下载Intel MKL

  Intel MKL可以申请学生账号下载免费intelMKL   

  b. 解压安装包,下面有一个install_GUI.sh文件, 执行该文件sudo run intall_GUI.sh, 会出现图形安装界面,按说明安装即可。

  c. 安装完成后需要添加library路径, 创建/etc/ld.so.conf.d/intel_mkl.conf文件

sudo vi /etc/ld.so.conf.d/intel_mkl.conf

  在文件中添加内容: 

/opt/intel/lib
/opt/intel/mkl/lib/intel64

  注意把路径替换成自己的安装路径

sudo ldconfig

  

9. OpenCV的下载安装

  a. 下载OpenCV(建议2.4 系列,3系列差别比较大)

  在https://github.com/bearpaw/Install-OpenCV 下载到本地。opencv版本2.4.10.

  b. 安装OpenCV

sudo sh ./opencv_2_4_10.sh

  脚本会自动安装依赖项,下载安装包,编译并安装OpenCV。

 

10. 安装Caffe所需要的Python环境

  a. 直接用系统自带的python就行了,可以通过以下命令查看python版本

python --version

 确定使用的是anaconda提供的python环境,安装

which python
which pip
apt-get install python-pip

  在用户自己的`~/.bashrc` 中添加library path

LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

 

11. 安装matlab  

  下载matlab后,安装过程按照安装包里的要求做就可以了。(R2014a)

sudo ./install

  备注1:安装完之后需要添加桌面图标,不然每次都需要到/usr/local/MATLAB/R2014a/bin中去 sudo ./matlab

  备注2:不要直接去软件中心下载matlab-support,尝试过,一直在installing,没有成功。

  备注3:MATLAB R2013a安装包,遇到过一堆乱七八糟其他问题,比如撞到83%说某个库不是exe什么的,最后换了个安装包和版本,一切顺利。

  备注4: ubuntu和mac下,对matlab进行激活时,输入用户名和密码,总是显示连接不到服务器,我们需要将防火墙(farewall)关掉。输入“sudo ufw disable”,然后进行激活,激活完成,"sudo ufw enable" 重启防火墙即可!

 

12. 其他依赖项安装

  a. 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 

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

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler protobuf-c-compiler protobuf-compiler

  

13. 编译Caffe(终于到了激动人心的一刻)

  进入caffe根目录, 首先复制一份`Makefile.config`, 然后修改里面的内容,主要需要修改的参数包括

  • CPU_ONLY 是否只使用CPU模式,没有GPU没安装CUDA的同学可以打开这个选项
  • BLAS (使用intel mkl还是atlas),建议使用atlas,方便又快捷
  • MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径, 如我的路径为/usr/local/MATLAB/R2014a (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)
  • DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序

完成设置后, 开始编译

make all -j8
make test
make runtest

  如果需要matlab wrapper

make matcaffe

  如果需要python wrapper

make pycaffe

  备注:如果有多个caffe包,一定要输出每一个的python路径。例如有caffe1和caffe2:

export PYTHONPATH=your_caffe_path/caffe1/python:$PYTHONPATH
export PYTHONPATH=your_caffe_path/caffe2/python:$PYTHONPATH

  

14. 使用MNIST数据集进行测试

  Caffe默认情况会安装在$CAFFE_ROOT,就是解压到那个目录,例如:$ home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。

 

  下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html

  a. 数据预处理

sh data/mnist/get_mnist.sh

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

sh examples/mnist/create_mnist.sh

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

  c. 训练mnist

sh examples/mnist/train_lenet.sh

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