写在前面:
为什么觉得caffe难装,正常来说,如果你之前没有装过多个cuda和python版本,应该不难.但是我系统里面之前已经装过cuda7,cuda8,现在用的是cuda9.0;装caffe的过程发现cuda7和8的文件夹都还在,经过多次折腾之后,于是立即删除.对于python版本的问题,系统自带的是python2.7,但是我之前装了python 3.6 的anaconda,并且创建了多个envs;在命令行运行python,由于添加了anaconda的路径到系统环境中,所以显示的是anaconda的python环境,还有protoc也是anaconda装的,但是我之前装了tensorflow,对应的protoc版本比较高,但是和caffe要求的protoc版本是不一致的,于是只能在系统自带python2.7装caffe
确定
protoc版本可以运行:
protoc --version
确定protoc哪里有,可以运行:
whereis protoc
一般来说,caffe需要2.6.1版本的
还有一个问题是:opencv,很多人在conda里面是直接装opencv的,这个很方便,但是配置caffe如果运用anaconda里面的opencv,就会使其他的一些依赖相冲突,导致编译caffe过程的莫名错误.
所以,我选择了在系统自带的python2.7基础上装caffe,首先移除了bashrc里面的anaconda路径,达到的效果是运行python,显示的是2.7版本;
然后下载了opencv3.3从新装了一下;
装在成功可以验证opencv3.3的版本:
pkg-config --modversion opencv
另外:opencv也可以利用conda命令安装,但是从git下载之后的是及时更新的,我也是先在conda安装的caffe-gpu,运行自己的程序,发现有些参数或文件找不到,所以重新装的.
上面废话很多,直接跳过来的:总结下就是
#########################################
系统环境:ubuntu16.04
cuda环境:cuda9.0
python版本:ubuntu自带python2.7
opencv:基于系统装的3.3,不是conda里面装的
protoc:系统自带2.6.1
################################################
1.相关依赖安装
:
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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
选择合适的路径下载caffe文件夹:
git clone
https://github.com/weiliu89/caffe.git
进入caffe目录:
git checkout ssd
cp Makefile.config.example Makefile.config
2.修改部分设置如下
:
(1)修改 Makefile.config 文件内容,共5处
++++++++++++++++
USE_CUDNN := 1
OPENCV_VERSION := 3
CUDA_ARCH := #-gencode arch=compute_20,code=sm_20 \
#-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_61,code=sm_61
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := /usr/include/hdf5/serial
LIBRARY_DIRS := /usr/lib/x86_64-linux-gnu/hdf5/serial
++++++++++++++++++
(2)修改
Makefile 文件,共2处
+++++++++++++++++++++
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
+++++++++++++++++++++
3.编译
回到命令行,caffe文件夹下:在make all之前,在命令行执行
export CPLUS_INCLUDE_PATH=/usr/include/python2.7
export LD_LIBRARY_PATH=/home/wy/.conda/envs/caffe/lib
再次执行python 和protoc --version 确保版本符合
make all
(这里每个人具体的情况会有不同的错误,google错误代码,重新make之前记得:sudo make clean)
make py
make test
sudo make runtest
(
可以测试minisit数据集:
)
4.配置环境变量
sudo gedit ~/.bashrc
export PYTHONPATH=../caffe/python:$PYTHONPATH
这里的..代表你的caffe父目录
source ~/.bashrc
测试在python中调用:
python
import caffe
不报错即完成
(我在这一步遇到了matplot版本不适应的问题,是重新安装的,然后发现pip命令也不好使,直接从新装了pip)
5.pycharm运行
在pycharm中调用caffe,选择对应的python版本
import sys
sys.path.append('/home2/software/caffe/python')
import caffe
没有报错,说明成功