简介
Caffe 在 Ubuntu 在的安装流程.
- 操作系统: Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-57-generic x86_64)
- 显卡驱动: NVIDIA-Linux-x86_64-352.79
- CUDA版本: cuda-7.5
安装 Caffe 的依赖包
Boost
sudo apt-get install --no-install-recommends libboost-all-dev
IO 库
安装和数据读取相关的库:
- hdf5
- protobuf
- lmdb
- leveldb : 依赖 snappy
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install liblmdb-dev libsnappy-dev libleveldb-dev
sudo apt-get install libhdf5-serial-dev
glog 和 gfalg
sudo apt-get install libgflags-dev libgoogle-glog-dev
atlas
sudo apt-get install libatlas-base-dev
opencv
sudo apt-get install libopencv-dev
安装显卡驱动
我们使用的显卡驱动版本为 NVIDIA-Linux-x86_64-352.79.
不同的显卡依赖不同版本的驱动,但是总体的相同
禁用 nouveau
在 /etc/modprobe.d/ 目录下创建一个黑名单文件 blacklist-nouveau.conf
cd /etc/modprobe.d/
touch blacklist-nouveau.conf
sudo vim blacklist-nouveau.conf
将 nouveau 写入黑名单中:
# in file blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
重新编译内核, 使得禁用生效, 并重启电脑
sudo update-initramfs -u
一般情况下, 会在禁用之后, 重启电脑会发现屏幕的分辨率变差, 这个也说明了我们禁用成功.
从 runfile 安装
显卡驱动的安装方式有很多种, 其中一种是从官网下载对应的 runfile 文件手动进行安装. 根据我的显卡, 我下载了 NVIDIA-Linux-x86_64-352.79.run
在安装之前, 首先通过 tty 进入系统(例如 Ctr + Shift + F1) 来关闭 ligtdm
sudo service lightdm stop
然后运行 runfile 进行安装
sudo sh /path/to/NVIDIA-Linux-x86_64-352.79.run
安装完成显卡驱动并重启, 会看到屏幕的分辨率恢复正常
安装 CUDA 和 cuDNN
CUDA 的安装包自带了显卡驱动, 可以跳过该步骤, 自己安装显卡驱动. 下载对应版本的 CUDA 和 cuDNN. cuDNN 提供了对神经网络实现的加速.
这里, 依然采用 runfile 来安装 CUDA
sudo sh /path/to/cuda_7.5.18_linux.run
在安装的过程中选择了下面的选项:
- 未安装自带的显卡驱动
- /usr/local/cuda/链接到/usr/local/cuda-7.5/
当安装完 CUDA 之后, 需要将 CUDA 库添加到系统路径(/etc/profile)或者用户路径( .bashrc)下.
以用户路径为例, 在文件 ~/.bashrc 中添加两行:
export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
通过重启终端使得更改生效或者利用命令 source .bashrc 来使得更改生效.
cuDNN
解压下载的 cuDNN 之后会有两个子文件夹 cuda/include 和 cuda/lib64.
将这两个文件夹的内容拷贝到系统目录中:
cd /path/to/cuda
sudo cp include/cudnn.h /usr/local/include
sudo cp lib64/* /usr/local/lib
完成拷贝之后,可以选择保持原来 lib 文件的链接关系:
cd /usr/local/lib
sudo ln -sf libcudnn.so.5.0.5 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig
安装 Python 包
Fortran Compiler
安装 gfortran 编译器, 目的是为了安装 scipy.
sudo apt-get install gfortran
python pip
如果没有 pip 那么安装 pip:
sudo apt-get install python-pip
Python 的依赖包
Caffe 的依赖包在文件 /caffe/python/requirements.txt 中列出:
- Cython>=0.19.2
- numpy>=1.7.1
- scipy>=0.13.2
- scikit-image>=0.9.3
- matplotlib>=1.3.1
- ipython>=3.0.0
- h5py>=2.2.0
- leveldb>=0.191
- networkx>=1.8.1
- nose>=1.3.0
- pandas>=0.12.0
- python-dateutil>=1.4,<2
- protobuf>=2.5.0
- python-gflags>=2.0
- pyyaml>=3.10
- Pillow>=2.3.0
- six>=1.1.0
安装的时候可以通过镜像来提高下载的速度 -i http://pypi.douban.com/simple
for req in $(cat requirements.txt); do sudo pip install $req ; done
所有的 package 将会被安装在 /usr/local/lib/python2.7/dist-packages/
OpenCV-3.0
OpenCV-3.0 是一个可选择安装的项目, 首先下载 OpenCV-3.0 并解压. 我们这里通过手动安装 OpenCV-3.0.
cd /path/to/opencv
mkdir release
cd ./release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
安装
make
sudo make install
可能遇到的问题: cmake 时可能会卡在了 IPPICV: Download: 的过程中. 解决方案: 检查 CMakeDownloadLog.txt, 手动下载所需的文件到对应的位置, 然后编译.
pycaffe
编译了 pycaffe, 并将 caffe 加到 python 的搜索路径中. 当然, 也可以在每一次使用 Python 时手动指定 sys.insert(0,'/path/to/caffe').
export PYTHONPATH=$HOME/caffe/python:$PYTHONPATH
编译caffe可能遇到的问题:
.build_release/tools/caffe: error while loading shared libraries:
libopencv_core.so.3.0: cannot open shared object file:
No such file or directory
解决方案:
sudo ldconfig
Anaconda
手动安装 Python 的依赖包是很繁琐的, 而且在以后的使用中, 也将要安装更多的依赖包. 一个简答的解决方案就是安装 Python distribution. 其中一个也是 Caffe 推荐的是 Anaconda
我们同样需要安装依赖的 package (有些预装,有些没有预装).
for req in $(cat requirements.txt); do pip install $req; done
编译并测试
首先从 Caffe 的 Makefile.config.example 拷贝一份 Makefile.config. 修改里面的变量, 进行编译.
make install -j32
make test -j32
make pycaffe
make runtest
-jxx 是多线程编译的意思, 根据自身的硬件选择编译时需要的核心数.
make runtest 会运行 Caffe 中所有的测试代码. 所有的测试代码都通过, 那么真正地意味着 Caffe 的成功安装并兼容了当前的电脑硬件.