与你共享小喵的心得与感悟

0%

从0到1,手把手教你配置Caffe环境

小喵的唠叨话:之前小喵也说过,自己主要是学习图像方面的深度学习算法的,深度学习可以理解为神经网络的拓展,是近年来最火的一项技术。小喵学得不好,就不在这里卖弄了。图像中,最常用到的是CNN模型,也就是卷积神经网络(Convolutional Neural Networks)。实现CNN有许多框架,Caffe,MXNet,Tensor Flow,ConvNet等。这次主要教给大家怎么从0开始,配置自己的Caffe环境。

由于是从0开始安装,如果有什么软件是大家已经装好的,就可以自行跳过。小喵的电脑是CentOS7,64位。主要按照下列的软件顺序进行安装:

  1. GMP
  2. MPFR
  3. MPC
  4. GCC 4.7.4
  5. CMAKE
  6. Python
  7. Boost
  8. Opencv:Python-Opencv
  9. Glog
  10. Gflags:Python-gflags
  11. Google-apputils
  12. Protobuf
  13. Snappy
  14. LevelDB:Pyhton-leveldb
  15. Lmdb
  16. OpenBlas
  17. CUDA
  18. cuDNN
  19. Caffe

第一步,更新系统的 GCC 如果是在个人的PC上进行更新,可能只需要使用 yum 或者 apt-get 等工具。小喵的实验环境是服务器,因此自己并没有root权限,还是需要按部就班的安装。

GCC 依赖 GMPMPFRMPC 这三个库,它们主要是提供了一些数值计算等的函数。

Tips: 编译的时候使用make命令的时候,可以加入参数-jn,可以多核一起编译,速度会快很多。

1
make -j4

则表示4个核一起编译。

1,GMP

GMPhttps://gmplib.org/,一个高精度计算的库。从官网上下载得到安装文件,小喵下载的是6.1.0的版本。解压之后,使用命令:

1
2
3
4
cd /download/path/to/gmp/
./configure --prefix=/path/to/install/
make
make install

完成安装(/path/to/install/表示你希望安装的位置)。注意prefix前面是两个'-'

安装完成之后,修改根目录中的 .bash_profile。将 gmp 安装后的文件夹中的lib的路径加入到 LD_LIBRARY_PATH 中。

注意:之后每步操作都检查安装后的文件夹中,是否有lib目录或lib64目录,如果有,则加入 LD_LIBRARY_PATH 中。(lib64是64位的系统的库,如果两个目录都存在,将lib64加入到 LD_LIBRARY_PATH 就可以)。如果发现有bin目录,则将它加入PATH中,bin目录放置的都是可执行程序,只有加进PATH里面,系统才能够找到(大家都不会希望用ls命令的时候,都写成/bin/ls吧)。配置完后,可以source一下自己的 .bash_profile 文件,确保当前的环境是最新的。

2,MPFR

MPFRhttp://www.mpfr.org/,一个浮点数计算的库,该库对 GMP 有依赖,所以要在 GMP 之后安装。下载安装文件,小喵的是3.1.3版本。解压,使用命令。

1
2
3
4
cd /download/path/to/mpfr/
./configure --prefix=/path/to/install --with-gmp=/path/to/gmp/
make
make install

这里的/path/to/gmp/表示上一步的gmp安装的位置。

3,MPC

MPChttp://www.multiprecision.org/,一个复数的代数库,依赖 GMPMPFR。下载安装包,版本1.0.3。解压。

1
2
3
4
cd /download/path/to/mpc/
./configure --prefix=/path/to/install/ --with-gmp=/path/to/gmp/ --with-mpfr=/path/to/mpfr/
make
make install

/path/to/gmp/,/path/to/mpfr/分别表示gmp和mpfr的安装路径,以下的说明都是这种形式,不再特意强调。

4,GCC

完成上述的三个代数运算库的安装之后,则可以开始GCC的升级工作。小喵的电脑上是CentOS 7,GCC默认版本是4.4。4.4版本的GCC只能编译到4.7版本或以下的GCC,所以如果需要编译更高版本的GCC,则需要先编译较低版本的GCC,再使用新安装的GCC编译更高版本的。另外GCC编译时间较旧,可以考虑多核一起编译(还记得make -j4这个命令了吗?:-D)。

GCChttps://gcc.gnu.org/,一个Linux上的强大的编译环境,提供对各种语言:C/C++FortranJava等的编译支持。下载安装程序,这里选择4.7.4版本(不要选择更高的版本,低版本的GCC不一定能编译)。

1
2
3
4
cd /download/path/to/gcc/
./configure --prefix=/path/to/install/ --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/path/to/gmp/ --with-mpfr=/path/to/mpfr/ --with-mpc=/path/to/mpc/
make
make install

安装完成,不要忘记把bin目录和lib64目录分别加入 PATHLD_LIBRARY_PATH。source一下后,使用 gcc --version,你会发现gcc的版本已经变成4.7.4了。

5,CMAKE

CMAKEhttps://cmake.org/,是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。版本3.4.1。解压。

1
2
3
4
cd /download/path/to/cmake/
./configure --prefix=/path/to/install/
make
make install

6,Python

Pythonhttps://www.python.org/,一种超好用的编程语言,有着胶水语言的美称。不仅语言简洁,相关的工具库也异常丰富。用 Python 可以很快的编写出测试原型,而且 Caffe 本身也提供了 Python 的接口。这里选择2.7.*版本。注意Python2.7.和3.5.并不完全兼容,目前主流的 Python 还是2.7,而且相关库的支持也比较成熟。由于还需要安装许多依赖的计算方面的库,不建议直接从官网下载。推荐下载 Anaconda 这个集成好的 Python环境。https://www.continuum.io/,记住,2.7.*版本。小喵这里安装好的是2.7.10。

下载好之后,直接运行,然后跟个提示就刻轻松安装。

安装完成后,需要在 .bash_profile 中进行基础修改。

假定 ANACONDA_ROOT 表示安装的目录。将 $ANACONDA/bin/ 加入 PATH,将 $ANACONDA/lib/ 加入 LD_LIBRARY_PATH 加入新变量 PYTHONPATH,并 export 出来。export PYTHONPATH=$ANACONDA/lib/python2.7/site-packages,source一下则配置完成。

如果是安装官网的 Python,之后可能需要再安装 Numpy 这个库,否则不能正确调用 OpenCVAnaconda 已经集成了,所以我们这里不用再次安装。

7,Boost

Boosthttp://www.boost.org/,又称 C++准标准库。传言,如果希望自己的库可以进入C++标准库,那么可以让它成为Boost的一部分,久而久之,Boost中的精华就会融进C++标准库。如果比较关注C++标准库的发展,重看每次更新的部分,应该大多都能看到Boost的身影。Boost中提供了很多强大又稳定的库,包括智能指针,各种算法库等等。这些在Caffe中都有用到。

这里下载1.58.0版本,Caffe对最新的1.60.0并不完全兼容。

1
2
3
cd /download/path/to/boost/
./bootstrap.sh --prefix=/path/to/install/
./b2 install

加入环境后,则完成安装。

8,OpenCV

OpenCVhttp://opencv.org/,一个开源的图像处理相关的库,不仅能够进行图像的各种处理(缩放,翻转,模糊等等),还内置了许多的机器学习的算法(比如 AdaBoost 的人脸检测)。图像处理必备库。这里下载版本2.4.11(小喵试了2.4.9和2.4.11两个版本,都可以正确安装)。3.0或以上的版本安装可能会有问题。

OpenCV 的安装需要使用 cmake 工具来完成 configure 工作。请确保之前的 cmake 已经安装,并加入到 PATH

1
2
3
4
cd /download/path/to/opencv/
mkdir build # 创建一个临时目录
cd build
ccmake .. # 这里使用ccmake,比cmake界面更友好

刚进入的时候,显示 EMPTY CACHE,根据提示,按 c,进行 configure 之后便可以看到配置界面,有许多的变量和其对应的值。我们主要检查以下几项 PYTHON_NUMPY_INCLUDE_DIRPYTHON_PACKAGES_PATHSPHINX_BUILD 如果之前的步骤都完成的话,这几项参数应该可以从系统中直接读取,如果发现没有读取,可能是没有加入环境变量或者安装错误。检查结束后,修改 CMAKE_INSTALL_PREFIX 的值,改成自己期望安装的位置。

在界面中,可以看到几个类似 BUILD_PNGBUILD_JPEG 的参数,它们是图像处理的相关的库。如果系统中之前没有安装过这些库,而你需要 OpenCV 能够处理这些类型的文件,就把这些变量设成 ON,这样就会把这些库一起编译。

界面中有类似 WITH_PNGWITH_JPEG 的变量,如果选成 ON,则 OpenCV 会安装对这些类型图片的支持。 Warning: 小喵在安装的时候就犯了一个错误,把 WITH_PNG 设成了 ON,但是把 BUILD_PNG 设成了 OFF,导致编译的时候找不到 libpng 的一些.so文件。所以如果大家需要对特殊类型图片的支持,要记得把前后都设成 ON

最后根据提示进行操作,就会生成对于的 Makefile 文件,则可进行下面的步骤:

1
2
make
make install

记得把bin和lib分别加入到环境变量。至此,OpenCV 也就装完了。

接下来,要让 Python 能够调用 OpenCV。 方法很简单,将 %OPENCV_INSTALL_PATH%/lib/python2.7/site-packages 下的文件(应该只有两个),拷贝到 %ANACONDA_INSTALL_PATH%/lib/python2.7/site-packages 中,即可。

为了保险起见,你可以打开 python,输入 import cv2,看看有没有异常,没有的话,应该就是配置成功。

9,glog

gloggoogle-loghttps://github.com/google/glog,是google做的一项开源的项目,是一个C++的记录日志的工具。Caffe中有用到。可以下载源码,然后自己编译(貌似必须再装三个google的软件才可以),小喵安装的时候直接下载了release版本的程序 https://github.com/google/glog/releases。解压,执行:

1
2
3
4
cd /download/path/to/glog/
./configure --prefix=/path/to/install/
make
make install

加入lib目录。安装完成。

10,gflags

gflagshttps://github.com/gflags/gflags,貌似是一个处理命令行的C++工具,Caffe需要用到。该工具的安装也需要cmake。解压后执行:

1
2
3
4
5
6
7
8
cd /download/path/to/gflags/
mkdir build
cd build
ccmake ..
# 设置安装路径CMAKE_INSTALL_PREFIX
# 把BUILD_SHARED_LIBS设成ON
make
make install

把lib目录加入 LD_LIBRARY_PATH,则完成安装。使用 PythonCaffe 的时候,也会用到这个库,所以需要给 Python 也安装对于的库。这里可以用源码安装,也可以使用 pip 这个工具。

1
pip install python-gflags

11,google-apputils

下载源码安装,或者使用 pip 安装

1
pip install google-apputils

12,Protobuf

Protobufhttps://github.com/google/protobuf,又是一个google出品的软件。可以通过简单的方式定义各种语言下数据结构。Caffe中有用到。

下载realse版本的程序来安装,https://developers.google.com/protocol-buffers/docs/downloads。解压,执行:

1
2
3
4
cd /download/path/to/protobuf/
./configure --prefix=/path/to/install/
make
make install

增加python的支持:

1
pip install protobuf

13,Snappy

Snappyhttps://github.com/google/snappy。可以通过源码安装,也可以下载release版本,https://github.com/google/snappy/releases/

1
2
3
4
cd /download/path/to/snappy/
./configure --prefix=/path/to/install/
make
make install

14,leveldb

leveldbhttps://github.com/google/leveldb,一个轻量级的数据库。直接下载源码,解压。

1
2
cd /download/path/to/leveldb/
make

之后直接生成了库文件。建议把生成的库文件和include文件夹都放置到合适的目录,并将库所在的目录加入 LD_LIBRARY_PATH

1
pip install leveldb

增加python的支持。

15,LMDB

LMDBhttps://github.com/glycerine/liblmdb,也是一个轻量级的数据库。解压之后,修改里面的 Makefile 文件的 prefix 为需要安装的位置。

1
2
make
make install

16,OpenBlas

OpenBlashttp://www.openblas.net/,一个代数库,同为代数库的还有 MKLATLAS。解压,执行:

1
2
make
make install PREFIX=/path/to/install/

完成安装。

17,CUDA

CUDAhttps://developer.nvidia.com/cuda-downloads,GPU支持。小喵下载的是 cuda_7.0.28_linux.run 这个版本的安装程序。官网说明的安装过程需要用root执行:

1
sudo sh cuda_7.0.28_linux.run

但事实上,不需要 sudo 也可以执行安装。非root的话,可能不能进行显卡驱动的安装,我这里已经有了驱动,所以不需要root安装。

另外驱动和cuda的版本必须一致,不然后出现cuda不能启动的错误。直接:

1
sh cuda_7.0.28_linux.run

之后根据提示安装即可。

18,CUDNN

cuDNNhttps://developer.nvidia.com/cudnn,是CUDA的加速程序。解压之后貌似就算成功。CUDA7.0建议使用CuDNN v3。

19,CAFFE

Caffehttp://caffe.berkeleyvision.org/,卷积神经网络的训练框架。在 github 上下载源码,https://github.com/BVLC/caffe。修改 Makefile.json 文件, 这里需要修改很多地方,需要自对照着修改。最后需要执行:

1
2
3
4
make
make pycaffe
# 如果需要验证是否安装成功,使用下面的命令
# make test

则完成安装!

以上便是整套Caffe环境的安装教程。如果有任何错误,请大家指正。

转载请注明出处。

一杯奶茶也是心意~