到终点了,坚持住!
我的环境是 Ubuntu16.04,opencv3.2,cuda8.0(CPU模式可以不装cuda)
特别注意的是以下是Ubuntu16.04这一特定系统的详细步骤,需要其他系统(Ubuntu14.04)可以参考这里
https:///BVLC/caffe/wiki
注意右侧栏的目录,看有没有适合你的系统的。
还是推荐用Ubuntu16.04,错误少

以下步骤来自于这里,最靠谱的一个方案:
https:///BVLC/caffe/wiki/Ubuntu-16.04-Installation-Guide

1、闭上眼,瞎JB安装一波

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev liblmdb-dev --fix-missing
sudo apt-get install -y python-pip

如果是python2.7的话,装这个


sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy

如果是python3.5的话,装这个


sudo apt-get install -y python3-dev
sudo apt-get install -y python3-numpy python3-scipy

2、文件瞎JB改一改

下面下载并解压caffe,进入目录复制Makefile.config.example为Makefile.config


cp Makefile.config.example Makefile.config

2.1改模式(CPU或者GPU)

打开Makefile.config


如果是CPU模式的话:


把“#CPU_ONLY := 1” 改成“CPU_ONLY := 1”,也就是取消注释


如果是GPU模式的话:


把“#USE_CUDNN := 1” 改成“USE_CUDNN := 1”,也就是取消注释


把“CUDA_DIR := /usr/local/cuda”改成你的cuda路径,如果是cuda8.0的话,改成“/usr/local/cuda-8.0”


2.2改python以及一些库

还是在Makefile.config里面


找到


PYTHON_INCLUDE := /usr/include/python2.7 /usr/lib/python2.7/dist-packages/numpy/core/include

改成


PYTHON_INCLUDE := /usr/include/python2.7 /usr/local/lib/python2.7/dist-packages/numpy/core/include
WITH_PYTHON_LAYER := 1
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

好了,到此为止!


2.3改Makefile

把Makefile文件里的


NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

换成:


NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

2.4改CMakeLists.txt

打开CMakeLists.txt 


随便找个空行,加上这几句


# ---[ Includes
set(${CMAKE_CXX_FLAGS} "-D_FORCE_INLINES ${CMAKE_CXX_FLAGS}")

结束!


3、安装python的依赖库

进入目录里的python路径,安装python的一些包


cd python
for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done

会自动安装


4、编译!

make all -j
make test
make runtest
make pycaffe
make install

应该是没毛病的,我以前这里会碰到很多问题,大多是缺少库文件,你只要把前面让你装的东西安装了,需要改的给改了,就不会有问题。


5、让python也能用caffe!

其实现在就好了,但是python里是找不到caffe的,现在还需要最后一步——添加路径。


gedit ~/.bashrc

随便找个地方加一行


export PYTHONPATH=你刚才解压的caffe的路径/caffe-master/python:$PYTHONPATH

退出,使之生效:


source ~/.bashrc

好了!测试下:


root@zcy:/home# python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
>>>

输入python后,import caffe 如果成功了就对了


完毕!

6、一些错误

1、错误提示fatal error: caffe/proto/caffe.pb.h: No such file or directory

fatal error: caffe/proto/caffe.pb.h: No such file or directory

是丢失问题


解决方法:


用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc

cd caffe/src/caffe/proto/这里,然后输入

protoc --cpp_out=/你的caffe目录/caffe-master/include/caffe/ caffe.proto

就可以在  【/你的caffe目录/caffe-master/include/caffe】这里生成caffe.pb.h和caffe.pb.cc。

之后在
【/你的caffe目录/caffe-master/include/caffe】目录下新建文件夹,命名为proto,然后把编译出来的caffe.pb.h和caffe.pb.cc放进去就可以了

2、错误提示error while loading shared libraries: .1.0.0: cannot open shared object file: No such file or directory

从安装caffe的目录下建立一个软连接到系统路径里:

ln -s /home/Face_Swap_Pro/caffe-master/build/lib/.1.0.0 /usr/lib

以此类推,如果找不到hdf5等也是一样

ln -s /home/Face_Swap_Pro/hdf5-1.8.19/build/bin/libhdf5_cpp.so.12 /usr/lib

qt也是同理,不过这跟caffe没关系了

ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/.5 /usr/lib
ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/.5 /usr/lib
ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/.5 /usr/lib