小喵的唠叨话:之前小喵也说过,自己主要是学习图像方面的深度学习算法的,深度学习可以理解为神经网络的拓展,是近年来最火的一项技术。小喵学得不好,就不在这里卖弄了。图像中,最常用到的是CNN模型,也就是卷积神经网络(Convolutional Neural Networks)。实现CNN有许多框架,Caffe,MXNet,Tensor Flow,ConvNet等。这次主要教给大家怎么从0开始,配置自己的Caffe环境。
由于是从0开始安装,如果有什么软件是大家已经装好的,就可以自行跳过。小喵的电脑是CentOS7,64位。主要按照下列的软件顺序进行安装:
- GMP
- MPFR
- MPC
- GCC 4.7.4
- CMAKE
- Python
- Boost
- Opencv:Python-Opencv
- Glog
- Gflags:Python-gflags
- Google-apputils
- Protobuf
- Snappy
- LevelDB:Pyhton-leveldb
- Lmdb
- OpenBlas
- CUDA
- cuDNN
- Caffe
第一步,更新系统的 GCC
如果是在个人的PC上进行更新,可能只需要使用 yum
或者 apt-get
等工具。小喵的实验环境是服务器,因此自己并没有root权限,还是需要按部就班的安装。
GCC
依赖 GMP
,MPFR
和 MPC
这三个库,它们主要是提供了一些数值计算等的函数。
Tips: 编译的时候使用make命令的时候,可以加入参数-jn,可以多核一起编译,速度会快很多。
make -j4
则表示4个核一起编译。
1,GMP
GMP
,https://gmplib.org/,一个高精度计算的库。从官网上下载得到安装文件,小喵下载的是6.1.0的版本。解压之后,使用命令:
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
MPFR
,http://www.mpfr.org/,一个浮点数计算的库,该库对 GMP
有依赖,所以要在 GMP
之后安装。下载安装文件,小喵的是3.1.3版本。解压,使用命令。
cd /download/path/to/mpfr/
./configure --prefix=/path/to/install --with-gmp=/path/to/gmp/
make
make install
这里的/path/to/gmp/表示上一步的gmp安装的位置。
3,MPC
MPC
,http://www.multiprecision.org/,一个复数的代数库,依赖 GMP
和 MPFR
。下载安装包,版本1.0.3。解压。
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)。
GCC
,https://gcc.gnu.org/,一个Linux上的强大的编译环境,提供对各种语言:C/C++
,Fortran
,Java
等的编译支持。下载安装程序,这里选择4.7.4版本(不要选择更高的版本,低版本的GCC不一定能编译)。
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目录分别加入 PATH
和 LD_LIBRARY_PATH
。source一下后,使用 gcc --version
,你会发现gcc的版本已经变成4.7.4了。
5,CMAKE
CMAKE
,https://cmake.org/,是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。版本3.4.1。解压。
cd /download/path/to/cmake/
./configure --prefix=/path/to/install/
make
make install
6,Python
Python
,https://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
这个库,否则不能正确调用 OpenCV
。Anaconda
已经集成了,所以我们这里不用再次安装。
7,Boost
Boost
,http://www.boost.org/,又称 C++准标准库
。传言,如果希望自己的库可以进入C++标准库,那么可以让它成为Boost的一部分,久而久之,Boost中的精华就会融进C++标准库。如果比较关注C++标准库的发展,重看每次更新的部分,应该大多都能看到Boost的身影。Boost中提供了很多强大又稳定的库,包括智能指针,各种算法库等等。这些在Caffe中都有用到。
这里下载1.58.0版本,Caffe对最新的1.60.0并不完全兼容。
cd /download/path/to/boost/
./bootstrap.sh --prefix=/path/to/install/
./b2 install
加入环境后,则完成安装。
8,OpenCV
OpenCV
,http://opencv.org/,一个开源的图像处理相关的库,不仅能够进行图像的各种处理(缩放,翻转,模糊等等),还内置了许多的机器学习的算法(比如 AdaBoost
的人脸检测)。图像处理必备库。这里下载版本2.4.11(小喵试了2.4.9和2.4.11两个版本,都可以正确安装)。3.0或以上的版本安装可能会有问题。
OpenCV
的安装需要使用 cmake
工具来完成 configure
工作。请确保之前的 cmake
已经安装,并加入到 PATH
。
cd /download/path/to/opencv/
mkdir build # 创建一个临时目录
cd build
ccmake .. # 这里使用ccmake,比cmake界面更友好
刚进入的时候,显示 EMPTY CACHE
,根据提示,按 c
,进行 configure
之后便可以看到配置界面,有许多的变量和其对应的值。我们主要检查以下几项 PYTHON_NUMPY_INCLUDE_DIR
, PYTHON_PACKAGES_PATH
, SPHINX_BUILD
如果之前的步骤都完成的话,这几项参数应该可以从系统中直接读取,如果发现没有读取,可能是没有加入环境变量或者安装错误。检查结束后,修改 CMAKE_INSTALL_PREFIX
的值,改成自己期望安装的位置。
在界面中,可以看到几个类似 BUILD_PNG
, BUILD_JPEG
的参数,它们是图像处理的相关的库。如果系统中之前没有安装过这些库,而你需要 OpenCV
能够处理这些类型的文件,就把这些变量设成 ON
,这样就会把这些库一起编译。
界面中有类似 WITH_PNG
,WITH_JPEG
的变量,如果选成 ON
,则 OpenCV
会安装对这些类型图片的支持。 Warning: 小喵在安装的时候就犯了一个错误,把 WITH_PNG
设成了 ON
,但是把 BUILD_PNG
设成了 OFF
,导致编译的时候找不到 libpng
的一些.so文件。所以如果大家需要对特殊类型图片的支持,要记得把前后都设成 ON
。
最后根据提示进行操作,就会生成对于的 Makefile
文件,则可进行下面的步骤:
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
glog
,google-log
,https://github.com/google/glog,是google做的一项开源的项目,是一个C++的记录日志的工具。Caffe
中有用到。可以下载源码,然后自己编译(貌似必须再装三个google的软件才可以),小喵安装的时候直接下载了release版本的程序 https://github.com/google/glog/releases。解压,执行:
cd /download/path/to/glog/
./configure --prefix=/path/to/install/
make
make install
加入lib目录。安装完成。
10,gflags
gflags
,https://github.com/gflags/gflags,貌似是一个处理命令行的C++工具,Caffe需要用到。该工具的安装也需要cmake。解压后执行:
cd /download/path/to/gflags/
mkdir build
cd build
ccmake ..
# 设置安装路径CMAKE_INSTALL_PREFIX
# 把BUILD_SHARED_LIBS设成ON
make
make install
把lib目录加入 LD_LIBRARY_PATH
,则完成安装。使用 Python
调 Caffe
的时候,也会用到这个库,所以需要给 Python
也安装对于的库。这里可以用源码安装,也可以使用 pip
这个工具。
pip install python-gflags
11,google-apputils
下载源码安装,或者使用 pip
安装
pip install google-apputils
12,Protobuf
Protobuf
,https://github.com/google/protobuf,又是一个google出品的软件。可以通过简单的方式定义各种语言下数据结构。Caffe中有用到。
下载realse版本的程序来安装,https://developers.google.com/protocol-buffers/docs/downloads。解压,执行:
cd /download/path/to/protobuf/
./configure --prefix=/path/to/install/
make
make install
增加python的支持:
pip install protobuf
13,Snappy
Snappy
,https://github.com/google/snappy。可以通过源码安装,也可以下载release版本,https://github.com/google/snappy/releases/。
cd /download/path/to/snappy/
./configure --prefix=/path/to/install/
make
make install
14,leveldb
leveldb
,https://github.com/google/leveldb,一个轻量级的数据库。直接下载源码,解压。
cd /download/path/to/leveldb/
make
之后直接生成了库文件。建议把生成的库文件和include文件夹都放置到合适的目录,并将库所在的目录加入 LD_LIBRARY_PATH
。
pip install leveldb
增加python的支持。
15,LMDB
LMDB
,https://github.com/glycerine/liblmdb,也是一个轻量级的数据库。解压之后,修改里面的 Makefile
文件的 prefix
为需要安装的位置。
make
make install
16,OpenBlas
OpenBlas
,http://www.openblas.net/,一个代数库,同为代数库的还有 MKL
,ATLAS
。解压,执行:
make
make install PREFIX=/path/to/install/
完成安装。
17,CUDA
CUDA
,https://developer.nvidia.com/cuda-downloads,GPU支持。小喵下载的是 cuda_7.0.28_linux.run
这个版本的安装程序。官网说明的安装过程需要用root执行:
sudo sh cuda_7.0.28_linux.run
但事实上,不需要 sudo
也可以执行安装。非root的话,可能不能进行显卡驱动的安装,我这里已经有了驱动,所以不需要root安装。
另外驱动和cuda的版本必须一致,不然后出现cuda不能启动的错误。直接:
sh cuda_7.0.28_linux.run
之后根据提示安装即可。
18,CUDNN
cuDNN
,https://developer.nvidia.com/cudnn,是CUDA的加速程序。解压之后貌似就算成功。CUDA7.0建议使用CuDNN v3。
19,CAFFE
Caffe
,http://caffe.berkeleyvision.org/,卷积神经网络的训练框架。在 github
上下载源码,https://github.com/BVLC/caffe。修改 Makefile.json
文件, 这里需要修改很多地方,需要自对照着修改。最后需要执行:
make
make pycaffe
# 如果需要验证是否安装成功,使用下面的命令
# make test
则完成安装!
以上便是整套Caffe环境的安装教程。如果有任何错误,请大家指正。
转载请注明出处。