我的环境是 Ubuntu16.04,opencv3.2,cuda8.0(CPU模式可以不装cuda)
特别注意的是以下是Ubuntu16.04这一特定系统的详细步骤,需要其他系统(Ubuntu14.04)可以参考这里
https://github.com/BVLC/caffe/wiki
注意右侧栏的目录,看有没有适合你的系统的。
还是推荐用Ubuntu16.04,错误少
以下步骤来自于这里,最靠谱的一个方案:
https://github.com/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.configcp 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: libcaffe.so.1.0.0: cannot open shared object file: No such file or directory
从安装caffe的目录下建立一个软连接到系统路径里:
ln -s /home/Face_Swap_Pro/caffe-master/build/lib/libcaffe.so.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/libQt5Widgets.so.5 /usr/lib
ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/libQt5Gui.so.5 /usr/lib
ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/libQt5Core.so.5 /usr/lib