Ubuntu16.04+caffe+Opencv3+Python(CPU ONLY)

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)XcompilerfPIC (COMMON_FLAGS)
换成
NVCCFLAGS += -D_FORCE_INLINES -ccbin= (CXX)XcompilerfPIC (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/

更多模型详见

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值