1. Caffe 是什么
Caffe 全称 Convolutional Architecture for Fast Feature Embedding,是一种常用的深度学习框架,主要应用在视频、图像处理方面的应用上。得益于RCNN框架的影响力,当前主流的目标检测模型 ( 例如 Faster-RCNN 和 SSD ) 的作者源码都是基于 Caffe 编写的。
2. Centos7 安装 Caffe
虽然网上已经有很多相关的安装教程,但是大多数都是基于 Ubantu 系统的,而且网上的教程在安装过程中往往会报出各种莫名其妙的 bug。经过笔者多次血泪实践,发现大多数错误都是因为未能正确安装 boost 和 protouf 工具包。假设 Centos7 已经正确安装 Nvidia GPU 驱动程序和 CUDA9+CUDNN7的加速包,按照如下教程即可正确编译 Caffe 的 Python3.6 接口。如果电脑没有安装 GPU 驱动,请先参照 Nvidia 官网安装教程 正确安装 GPU。
# 安装依赖包
$ yum clean all && yum makecache && yum install -y epel-release-7-11.noarch
$ yum -y install zlib-devel openssl-devel bzip2-devel expat-devel
$ yum -y install gdbm-devel readline-devel sqlite-devel
$ yum -y install wget git make unzip libSM libXrender libXext
# 安装 Python3.6
$ cd /home && wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
$ tar -xvf Python-3.6.6.tgz && cd Python-3.6.6
$ ./configure --prefix=$PYINSTALL && make -j32 && make install
$ ln -s $PYINSTALL/bin/python3 $PYINSTALL/bin/python
$ cd /home && rm -rf Python-3.6.6.tgz Python-3.6.6
# 安装 scikit-image
$ pip3 install numpy scikit-image -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# 安装 caffe 依赖包
$ yum -y install leveldb-devel snappy-devel opencv-devel hdf5-devel
$ yum -y install gflags-devel glog-devel lmdb-devel openblas-devel python36-devel
# 编译 boost 修复 libboost_python3.so 无法连接的错误
$ cd /home && wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz
$ tar -xvf boost_1_67_0.tar.gz
$ cd boost_1_67_0 && ./bootstrap.sh --with-toolset=gcc
$ ./b2 cflags='-fPIC' cxxflags='-fPIC' include=/usr/include/python3.6m && ./b2 install
$ ln -s /usr/local/lib/libboost_python36.so /usr/lib64/libboost_python3.so
$ echo /usr/local/lib >> /etc/ld.so.conf.d/caffe.conf && ldconfig
$ cd /home && rm -rf boost_1_67_0.tar.gz boost_1_67_0
# 安装 protobuf
$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> /root/.bashrc
$ source ~/.bashrc
$ cd /home && wget https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-cpp-3.5.1.zip
$ unzip protobuf-cpp-3.5.1.zip
$ cd protobuf-3.5.1 && ./configure && make -j32 && make install
$ cd /home && rm -rf protobuf-cpp-3.5.1.zip protobuf-3.5.1
$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-python-3.5.1.zip
$ unzip protobuf-python-3.5.1.zip
$ cd protobuf-3.5.1/python && python setup.py build && python setup.py install
$ cd /home && rm -rf protobuf-python-3.5.1.zip protobuf-3.5.1
安装 caffe, 需要修改配置文件 Makefile.config
# 安装 caffe
$ cd /home && git clone https://github.com/bvlc/caffe.git
# 将 caffe/Makefile.config.example 文件复制到 /home 路径下,命名为 Makefile.config 并进行修改
# 第05行改为 USE_CUDNN := 1
# 第11行改为 USE_OPENCV := 1
# 第39行改为 CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
# 第51行改为 BLAS := open
# 第55行改为 BLAS_INCLUDE := /usr/include/openblas
# 第56行改为 BLAS_LIB := /usr/lib64
$ cp Makefile.config caffe/Makefile.config && rm -f Makefile.config
$ cd caffe && make -j32 && make pycaffe -j32
$ cp -r python/caffe /usr/local/python3/lib/python3.6/site-packages
$ cp .build_release/lib/* /usr/lib64
在 python
命令窗口中执行 import caffe
查看 caffe 的 python 接口是否编译成功。
# 验证 caffe 是否安装成功
>>> import caffe