实验了很多次,终于吃透了Anaconda3下编译Caffe的全部过程。
安装纯净的Ubuntu14.04,安装显卡驱动、cuda以及cudnn并配置好系统环境变量,这里不进行详述。
使用
bash Anaconda3-4.2.0-Linux-x86_64.sh
命令安装Anaconda3,这里假定安装目录为/home/xx/anaconda3
,安装结束的时候会问是否将Anaconda3目录加入环境变量,选择是。打开终端,安装依赖库
$ 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支持,后期编译会报错。之后,添加符号链接
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
编译并安装Protobuf3
进入任意目录,然后依次执行以下命令即可,完成之后系统及python都会完成protobuf3.0.0的安装。
$ 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
编译并安装openCV3
同样进入任意目录,在终端内依次执行以下命令即可。
$ 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
编译caffe
$ git clone https://github.com/BVLC/caffe.git $ cd caffe $ cp Makefile.config.example Makefile.config
然后更改Makefile.config文件内容,改变地方主要有以下几点:
去掉
USE_CUDNN := 1
前面#去掉
OPENCV_VERSION := 3
前面#用#注释掉原始的python目录,改为以下内容(假定anaconda3安装在
/home/xx/anaconda3
下面)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 \
将
PYTHON_LIB
改为PYTHON_LIB := $(ANACONDA_HOME)/lib
去掉
WITH_PYTHON_LAYER := 1
前面#随后开始编译
$ make all -j4 $ make runtest -j4 $ make test -j4 $ make pycaffe
在Anaconda3内安装其他依赖库(注意:在编译后再安装依赖库)
$ conda install scikit-image hdf5 h5py $ conda install -c menpo opencv3=3.1.0
将caffe目录下的python目录添加至环境变量,在~/.bashrc下添加一行,注意更改为你的实际目录。
export PYTHONPATH="/home/xx/caffe/python:$PYTHONPATH"
在终端内启动python,输入
import caffe
命令进行测试,如果没有报错说明已经编译安装成功了。enjoy!
2017.1.4更新
在第4步中,其实是可以不用编译python版的protobuf,直接使用pip install protobuf
命令安装即可。