我用的是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-compilersudo apt-get install --no-install-recommends libboost-all-dev #这里可能出错,不要紧先这么做sudo apt-get install python3-devsudo apt-get install libatlas-base-devsudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-devsudo apt-get install python3-opencv
2.下载caffe
git clone git:///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 := 03. 去掉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 :=1OPENCV_VERSION :=3
并且做了如下改动:
注释掉了2.7的include路径
# PYTHON_INCLUDE :=/usr/include/python2.7\
转而使用了python3.6
PYTHON_LIBRARIES := boost_python3 python3.6mPYTHON_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 cleanmake allMake testmake runtest
6.安装pycaffe
6.1安装
后记:这里一定要注意先把apt-get源和pip的源更换成国内源,防止网络问题下载失败。
另外,即使修改了国内源,也要检查在每条sudo apt-get命令执行完后,是否有下载安装失败的提示。
Cython>=0.19.2numpy>=1.7.1scipy>=0.13.2scikit-image>=0.9.3matplotlib>=1.3.1ipython>=3.0.0h5py>=2.2.0leveldb>=0.191networkx>=1.8.1nose>=1.3.0pandas>=0.12.0python-dateutil>=1.4,<2protobuf>=2.5.0python-gflags>=2.0pyyaml>=3.10Pillow>=2.3.0six>=1.1.0.安装以上依赖库cd caffe/pythonfor 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 ipythonsudo apt-get install protobuf-c-compiler protobuf-compiler
6.2添加 PYTHONPATH
sudo gedit /etc/profileexport PYTHONPATH=$PYTHONPATH:/home/XXX/caffe/python:$PYTHONPATH # xxx为用户名使上述更改生效source /etc/profile
6.3编译
cd ~/caffemake pycaffe
6.4测试
python3import 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即可