安装caffe(CPU only)
测试运行tensorflow框架的PSPNet网络失败,还是决定转向“科班出生”的caffe框架。于是就踏上了这条不归路,走的弯路很多,因此简单做了一些整理,希望可以给大家一些帮助。
本机配置
- ubuntu16.04.1
- python3.5
- opencv2
安装依赖
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
opencv
sudo apt-get install -y python-opencv
caffe
下载caffe源码,解压缩到~/bin
ps:具体什么位置无所谓,个人习惯
备份Makefile.config.example
cp Makefile.config.example Makefile.config
修改Makefile.config
- 取消line 8的注释
CPU_ONLY := 1
- 注释掉python2.7的相关路径设置
#PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
- 取消python3的注释
PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3.5/dist-packages/numpy/core/include
PYTHON_INCLUDE的第二部分根据情况而定,读者可以搜索dist-packages的具体路径。可能是/usr/local/lib/python3.5/dist-packages/numpy/core/include
- 修改引用文件的路径
# Whatever else you find you need goes here.
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/hdf5/serial
编译测试
make all -j4
make test -j4
make runtest -j4
默认是1核运算,-j4设置为4核运算,加快编译速度,可根据自己的情况设置。
安装caffe的python接口
udo apt-get install -y python-pip
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-numpy python3-scipy
sudo apt-get install gfortran
sudo pip install –r python/requirements.txt
测试
make pycaffe -j4
运行成功后,可进入caffe/python目录,执行python3
命令进入python窗口,输入import caffe
不报错即可。
修改bashrc文件,添加以下语句,设置环境变量vi ~/.bashrc
export PYTHONPATH=/你的caffe路径/python:$PYTHONPATH
设置生效:source ~/.bashrc
此时,在终端(不局限与caffe目录下)使用import caffe
都不报错,即caffe安装成功。
异常情况总结
一. ld cannot find lboost_python3
提示找不到lboost_python3,因此可以通过建立一个软连接指向对应的库文件
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libboost_python-py35.so libboost_python3.so
二. ...anaconda3/lib/libpng16.so.16:对‘inflateValidate@ZLIB_1.2.9’未定义的引用
解决方法:在Makefile.config文件末尾加入语句,就可以找到对应的文件
LINKFLAGS := -Wl,-rpath,$(HOME)/anaconda3/lib
三. warning:libpcre.so.1, needed by ...../anaconda3/lib/libgobject-2.0.so.0, not found
以及后续的/usr/local/lib/libopencv_highgui.so:对‘jpeg_set_quality@LIBJPEG_9.0’未定义的引用
推荐先使用情况二对应的解决方法,理论上可以解决。如果还不行,就一条一条添加软链接。具体方法:win键打开搜索栏,搜索libpcre.so.1,找到其地址,添加软连接到\usr\lib
即可,如
sudo ln -s ~/anaconda3/lib/libpcre.so.1 /usr/lib/
对于其他库文件也类似处理。