Ubuntu14.04+cuda8.0+Anaconda3下编译caffe

踩了很多坑,终于在Ubuntu14.04+cuda8.0+Anaconda3环境下成功编译Caffe。

  1. 安装纯净的Ubuntu14.04,安装显卡驱动、cuda以及cudnn并配置好系统环境变量,这里不进行详述。

  2. 使用bash Anaconda3-4.2.0-Linux-x86_64.sh命令安装Anaconda3,这里假定安装目录为/home/xx/anaconda3,安装结束的时候会问是否将Anaconda3目录加入环境变量,选择

  3. 打开终端,安装依赖库

    1
    $ sudo apt-get install libboost1.55-all-dev libleveldb-dev libsnappy-dev liblmdb-dev libhdf5-serial-dev libgoogle-glog-dev libgflags-dev

    注意,安装libboost1.55-all-dev,Ubuntu14.04默认安装的是1.54版本;另外不要apt-get安装libprotobuf-dev,因为apt-get安装的是2.x版本,不支持python3;这里也不安装libopencv-dev,同样是因为apt-get安装的版本没有附带TIFF支持,后期编译会报错。

    之后,添加符号链接

    1
    sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py34.so.1.55.0 /usr/lib/x86_64-linux-gnu/libboost_python3.so
  4. 编译并安装Protobuf3

    进入任意目录,然后依次执行以下命令即可,完成之后系统及python都会完成protobuf3.0.0的安装。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ mkdir protobuf && cd protobuf
    $ mkdir cpp && cd cpp
    $ wget https://github.com/google/protobuf/releases/download/v3.0.0/protobuf-cpp-3.0.0.tar.gz
    $ tar xvf protobuf-cpp-3.0.0.tar.gz && cd protobuf-3.0.0
    $ ./configure && make
    $ make check
    $ sudo make install
    $ sudo ldconfig
    $ cd ../..
    $ mkdir python && cd python
    $ wget https://github.com/google/protobuf/releases/download/v3.0.0/protobuf-python-3.0.0.tar.gz
    $ tar xvf protobuf-python-3.0.0.tar.gz && cd protobuf-3.0.0/python/
    $ python setup.py build
    $ python setup.py test
    $ python setup.py install
  5. 编译并安装openCV3

    同样进入任意目录,在终端内依次执行以下命令即可。

    1
    2
    3
    4
    5
    6
    $ git clone https://github.com/opencv/opencv.git
    $ cd opencv
    $ mkdir build && cd build
    $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D BUILD_TIFF=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_EIGEN=ON -D WITH_CUDA=ON -D WITH_CUBLAS=ON ..
    $ make -j4
    $ sudo make install
  6. 编译caffe

    1
    2
    3
    $ git clone https://github.com/BVLC/caffe.git
    $ cd caffe
    $ cp Makefile.config.example Makefile.config

    然后更改Makefile.config文件内容,改变地方主要有以下几点:

    1. 去掉USE_CUDNN := 1前面#

    2. 去掉OPENCV_VERSION := 3前面#

    3. 用#注释掉原始的python目录,改为以下内容(假定anaconda3安装在/home/xx/anaconda3下面)

      1
      2
      3
      4
      5
      ANACONDA_HOME := $(HOME)/anaconda3
      PYTHON_LIBRARIES := boost_python3 python3.5m
      PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
      $(ANACONDA_HOME)/include/python3.5m \
      $(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include \
    4. PYTHON_LIB改为PYTHON_LIB := $(ANACONDA_HOME)/lib

    5. 去掉WITH_PYTHON_LAYER := 1前面#

    6. 随后开始编译

      1
      2
      3
      4
      $ make all -j4
      $ make runtest -j4
      $ make test -j4
      $ make pycaffe
  7. 在Anaconda3内安装其他依赖库

    1
    2
    $ conda install scikit-image hdf5 h5py
    $ conda install -c menpo opencv3=3.1.0
  8. 将caffe目录下的python目录添加至环境变量,在~/.bashrc下添加一行,注意更改为你的实际目录。

    export PYTHONPATH="/home/xx/caffe/python:$PYTHONPATH"

  9. 在终端内启动python,输入import caffe命令进行测试,如果没有报错说明已经编译安装成功了。

    enjoy!