我用的是python3.6,ubuntu18.04,caffe使用的cpu版本
1.安装依赖包
后记:这里一定要注意先把apt-get源和pip的源更换成国内源,防止网络问题下载失败。
另外,即使修改了国内源,也要检查在每条sudo apt-get命令执行完后,是否有下载安装失败的提示。
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev #这里可能出错,不要紧先这么做
sudo apt-get install python3-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install python3-opencv
2.下载caffe
git clone git://github.com/BVLC/caffe.git
3.修改caffe下文件Makefile.config
cd caffe //切换到caffe所在文件夹
cp Makefile.config.example Makefile.config //备份Makefile.config文件
gedit Makefile.config //编辑Makefile.config文件
/***修改 Makefile.config***/
/*
1. 去掉CPU_ONLY :=1的注释
2. 注释掉CUDA有关的行:
#CUDA_DIR := /usr/local/cuda
#CUDA_DIR := /usr
#CUDA_ARCH := ....
#TEST_GPUID := 0
3. 去掉WITH_PYTHON_LAYER := 1的注释
4. 修改这一行:
修改原因 :在安装hdf5的使用使用的是 sudo apt-get libhdf5-serial-dev
# 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
/usr/lib/x86_64-linux-gnu/hdf5/serial
*/
在Makefile.config文件中, 除了教程中要注释的CUDA相关的行,另外
我取消注释了
CPU_ONLY :=1
OPENCV_VERSION :=3
并且做了如下改动:
注释掉了2.7的include路径
# PYTHON_INCLUDE :=/usr/include/python2.7\
转而使用了python3.6
PYTHON_LIBRARIES := boost_python3 python3.6m
PYTHON_INCLUDE :=/usr/include/python3.6m \
# /usr/lib/python3.6/dist-packages/numpy/core/include
4.修改caffe下文件Makefile
gedit Makefile
/*
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
后面加入 opencv_imgcodecs
找到
LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
更改最后两项为:
LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
修改原因 :在安装hdf5的使用使用的是 sudo apt-get libhdf5-serial-dev
*/
如果出现找不到:hdf5_serial_h1,则不需要修改LIBRARIES, 保持原样就行了
5.编译caffe
//遇到错误时,需要重新编译,则先make clean
make all
Make test
make runtest
6.安装pycaffe
6.1安装
后记:这里一定要注意先把apt-get源和pip的源更换成国内源,防止网络问题下载失败。
另外,即使修改了国内源,也要检查在每条sudo apt-get命令执行完后,是否有下载安装失败的提示。
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0.
安装以上依赖库
cd caffe/python
for req in $(cat requirements.txt); do pip install $req; done
或者
sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
sudo apt-get install protobuf-c-compiler protobuf-compiler
6.2添加 PYTHONPATH
sudo gedit /etc/profile
export PYTHONPATH=$PYTHONPATH:/home/XXX/caffe/python:$PYTHONPATH # xxx为用户名
使上述更改生效
source /etc/profile
6.3编译
cd ~/caffe
make pycaffe
6.4测试
python3
import caffe
//按ctrl+d可退出python
7.问题汇总:
若测试时没有找到caffe模块,那么需要把caffe/python添加到系统路径中去,如下:
import sys #引入sys模块
sys.path #显示当前系统包含的路径信息
sys.path.append("/home/xxx/caffe/python") #将你下载的caffe文件夹内的python添加到系统路径
#sys.path.insert(0, "/home/xxx/caffe/python") 也是可以的

若遇到 fatal error: boost/shared_ptr.hpp: 没有那个文件或目录,出现该错误的原因是少了依赖,所以执行:
sudo apt-get install --no-install-recommends libboost-all-dev
若遇到:如果在安装过程中出现无法定位软件包问题则执行:
sudo apt-get update
若出现找不到:hdf5_serial_h1,则不需要在 ( 4.修改caffe下文件Makefile)小节中修改 LIBRARIES, 保持原样就行了
若编译失败,可以尝试删除caffe然后从第1步重来,或者删除你修改的Makefile.config文件,重新修改
- 另外,由于之前安装opencv3.4.10了导致和libopencv-dev的版本是3.2所以产生了冲突,导致caffe编译失败,这里只需要先把opencv3.4卸载掉,先安装caffe即可