Ubuntu16.04中Caffe默认使用Python2,可以在*Makefile.conf* 文件中更改为Python3,但是这会出现错误:boost_python3 cannot be found on Ubuntu 16.04。实际上,Python3位于 /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.58.0。
特别注意,安装过程中出现的所有文件路径最好可以手动查找并进行确定,安装失败的大部分原因是文件路径不对,有的人直接找网上现成的安装教程,然后直接复制粘贴,殊不知,环境已经改变了。详细步骤如下。
1、安装依赖
caffe相关依赖:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
# Python
sudo apt-get install python2.7-dev python3.5-dev
OpenCV3相关依赖:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential cmake pkg-config
$ sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libatlas-base-dev gfortran
2、下载相关安装包
OpenCV3.2下载OpenCV3.2下载。下载好后,解压到/home/shine文件夹下并重命名为opencv,其中,shine为我自己的用户名,换成自己的用户名即可。
然后下载和OpenCV版本对应的opencv_contrib解压到/home/shine文件夹下。
Caffe下载Caffe下载,下载好后也解压到解压到/home/shine文件夹下并重命名为caffe,因为本文不喜欢特别复杂的文件名。
3、创建Python虚拟环境
因为Python2和Python3都安装了,为了保持开发环境灯整洁,强烈建议使用虚拟环境。
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ rm get-pip.py
$ sudo pip install virtualenv virtualenvwrapper
$ export WORKON_HOME=$HOME/.virtualenvs
$ source /usr/local/bin/virtualenvwrapper.sh
$ source ~/.bashrc
$ mkvirtualenv cv2 -p python2 # python 2
$ mkvirtualenv cv3 -p python3 # python 3
$ workon cv2
$ pip install numpy
$ cd ~/opencv/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ #注意这里为自己的opencv_cotrib解压安装目录
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv2/bin/python \
-D BUILD_EXAMPLES=OFF .. #一般设置为OFF不会出现编译错误
$ make
$ sudo make install
$ sudo ldconfig
$ workon cv3
$ cd ~/opencv/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ #注意这里为自己的opencv_cotrib解压安装目录
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv3/bin/python \
-D BUILD_EXAMPLES=OFF .. #一般设置为OFF不会出现编译错误
$ make
$ sudo make install
$ sudo ldconfig
后边还会用到virtualenvs目录,一般为~/.virtualenvs.
工作目录切换为:
用户名shine前边出现cv2或者cv3,表示进入了该工作环境,deactivate表示关掉其环境,也可以这样
4、完成OpenCV的安装
Python2.7:
OpenCV模块位于/usr/local/lib/python-2.7/dist-packages/目录,需要自己再去确定。
$ workon cv2
$ cd ~/.virtualenvs/cv2/lib/python2.7/site-packages/
$ ln -s /usr/local/lib/python2.7/dist-packages/cv2.so cv2.so
$ workon cv3
cd ~/.virtualenvs/cv3/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/dist-packages/cv2.so cv2.so
测试安装
$ cd ~
$ workon cv3/cv2 #两个环境选择一个
$ python
>>> import cv2
>>> cv2.__version__
'3.2.0'
5、caffe的配置
首先在终端进入caffe文件夹下,我的caffe路径为/home/shine/caffe.
$ cp Makefile.config.example Makefile.config
$ sudo apt-get install kate
$ kate ./Makefile.config &
出现如下:
将CPU_ONLY := 1,WITH_PYTHON_LAYER := 1和USE_OPENCV := 1前边的#给删掉,将BLAS := atlas改成BLAS := open。
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include \
/usr/lib/python2.7/dist-packages/numpy/core/include \
/home/shine/.virtualenvs/cv2/lib/python2.7/site-packages/numpy/core/include
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
然后运行
$ cd python
$ for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done
编译caffe
$ cd ..
$ kate ./Makefile
将下面的一行
NVCCFLAGS += -ccbin=
(CXX)−Xcompiler−fPIC
(COMMON_FLAGS)
换成
NVCCFLAGS += -D_FORCE_INLINES -ccbin=
(CXX)−Xcompiler−fPIC
(COMMON_FLAGS)
并且
LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system boost_filesystem hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio
然后打开CMakeLists.txt并添加以下语句
最后
$ make all
$ make test
$ make runtest
$ make pycaffe
$ make distribute
然后添加一些binary models
$ cd scripts
$ ./download_model_binary.py ../models/bvlc_alexnet/
$ ./download_model_binary.py ../models/bvlc_googlenet/
$ ./download_model_binary.py ../models$ /bvlc_reference_caffenet/
$ ./download_model_binary.py ../models/bvlc_reference_rcnn_ilsvrc13/
$ ./download_model_binary.py ../models/finetune_flickr_style/
更多模型详见。