caffe安装:ubuntu16.04 + opencv2.4 + python 2.7+ CUDA 8.0 RC + CuDNN 5.0
官方教程:http://caffe.berkeleyvision.org/install_apt.html
主要参考教程: https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide
其他参考:http://blog.csdn.net/hjimce/article/details/51999566
——————————————————————————————————————————————————————
参考官网的教程,先安装不支持GPU版本的, 编译成功后再安装CUDA,增加GPU功能。
http://www.cnblogs.com/balmy/p/5752589.html
这是在github项目下面的教程, 根据自己的机子修改了部分内容(修改的地方其实并不多,细心注意下就好)。
环境为 ubuntu16.04 + opencv2.4 + python2.7
再来增加GPU的支持,先下载安装CUDA 8.0
CUDA安装:官方dec文件安装:
1. sudo dpkg -i cuda-repo-ubuntu1604-8-0-rc_8.0.27-1_amd64-deb
2. sudo apt-get update
3. sudo apt-get install cuda
安装完后检查:
nvidia-smi
(自己的本机显卡驱动为nvidia 361)
下载CuDNN(https://developer.nvidia.com/cudnn),选择5.0版本(和cuda 8.0匹配),
解压后将 /lib64 目录下的文件拷贝到 /usr/lib/x86_64-linux-gnu/
将 /include 目录下的文件拷贝到 /usr/include/
重启电脑,执行 export 检查环境变量。
重新编译caffe:
进入caffe-master目录下,修改 Makefile.config, 根据里面的注释来修改,注释掉CPU_ONLY = 1,其他选项根据自己的情况来修改。
编译前先执行 make clean
然后依次执行:
make all
make test
make runtest
make pycaffe
make distribute
可在后面增加 -j $(($(nproc) + 1)),来使用多个处理器编译。
编译过程会出现gcc版本错误,显示版本太高了(5.4),打开/usr/local/cuda/include/host_config.h
注释掉: error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
在cuda和opencv编译的时候也会报gcc版本太高的错误(主要是cuda引起的,如果opencv不用cuda就没这个错误):
解决:
安装gcc-4.9,g++-4.9
sudo apt-get install gcc-4.9
sudo apt-get install g++-4.9
安装了gcc-4.9,g++4.9,但是用gcc -v查看版本还是显示的5.4,需要改变版本的优先级用下面的命令解决了:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
这步完成后再去编译caffe,又需要将gcc的版本换成5以上,否则会遇到protobuf的错误(在这里纠结了很久,还以为是protobuf的问题,跑去卸载了protobuf,重新github上下载,自己编译,但是结果还是有问题)
最终就是讲gcc版本换成5以上,再在 /usr/local/cuda/include/host_config.h 这个文件中注释掉: error -- unsupported GNU version! gcc versions later than 5.3 are not supported! 问题就解决了。
———————————————————————————————————————————————————————
(备份的,还没写完)opencv 3.1的还没有测试
OpenCV 3.1 + ubuntu 16.04
https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-OpenCV-3.1-Installation-Guide
遇到过的坑:
在不用cuda的情况下,编译caffe报错:
Makefile:616:recipe for target '.build_release/tools/convert_imageset.bin' failed
make:*** [.build_release/tools/convert_imageset.bin] Error 1
可能的原因:采用apt-get 安装的protobuf版本比较久旧,所以先卸载原来的protobuf,下载最新的重新编译安装
sudo apt-get autoremove libprotobuf-dev protobuf-compiler
从github上下载protobuf
打开protobuf文件目录进行编译安装,过程如下:
sh autogen.sh
生产configure文件,这步可能会遇到错误:
configure.ac:64: error:possibly undefined macro: AC_PROG_LIBTOOL
输入命令:sudo apt-get install libtool
再次运行:sh autogen.sh
还是报错。原因是没有gmock文件,而gmock的下载地址被墙了。
解决:手动下载gmock,再根据autogen.sh里面的代码运行:
unzip -q gmock-1.7.0.zip
rm gmock-1.7.0.zip
mv gmock-1.7.0 gmock
再次运行sh autogen.sh,应该可以成功。
对protobuf进行编译,按照顺序,依次输入:
./configure
make -j8
make check
sudo make install
sudo ldconfig
默认安装到 /usr/local
完成安装
protobuf配置环境变量
打开profile文件:sudo kate /etc/profile
添加: export PATH=$PATH:/usr/local/protobuf/bin
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/<
保存退出后输入命令:source /etc/profile
配置动态链接库:
打开配置文件ld.so.conf:sudo kate /etc/ld.so.conf
添加: /usr/local/protobuf/lib
更新配置: sudo su
ldconfig
再试试重新编译caffe
然而还是错误的。
真正的原因是gcc的版本之前被降到了4.9,需要回到5.0,上面已经介绍过了。