1、前言
重装系统配置caffe是进入深度学习领域必须经历的过程,可能中间会遇到很多麻烦,但是熟能生巧,不要轻易放弃。本人目前为止重装系统重新配置caffe大概已经有个十几次啦,但是每次都疏于整理,结果每次重装时都要翻看大量博客非常耽误时间,所以这次特此整理出来方便以后查看,也期望为看到这篇博客的你带来些许的帮助。
2、配置过程
重新配置caffe之前一般要经历重装系统、安装NVIDIA显卡驱动、下载安装CUDA、安装cudnn、安装OpenCV这几个必要的过程,期间每个过程都可能出现问题,但是请不要急躁,根据错误提示去百度或者谷歌你基本都能找到解决的办法。
谷歌(翻墙)小工具 链接:https://pan.baidu.com/s/1vAsNx9vk0ZZyXql7hJLg3w 密码:o1a6
ps:在后期实验的过程中我们可能改动了某个配置文件导致配好的环境崩溃掉,在尝试了各种办法都没能解决的情况下重装系统是一个最好的选择,大家不要排斥他,有时候我觉得重装系统是解决问题最快的方式。如果您是新手,也不必担心,你只要记住只要你不对你的电脑动手,随便作,她一般都能挺住,多试几次就会啦,网上的教程很多,这是我之前简单整理的教程。
3、安装NVIDIA显卡驱动
安装显卡驱动最好采用系统适配显卡驱动的方式,简单方便。请参考以下博客内容。
Ubuntu16.04安装NVIDIA(GeForce1080Ti)显卡驱动
4、安装CUDA8.0
目前最新的是CUDA9.2版本,但是如果你和我一样是初学者,且不具备强烈的探索精神,建议使用CUDA8.0+cudnn5.1的方案,因为该方案目前是最为成熟的方案,出现的问题也很容易在博客中找到解决方案。
这里我还是给出配置CUDA9.0的方案,当时整理的还是比较仔细,如果你按照我的方案应该不会遇到什么问题,但是还是不建议配置安装CUDA9.0,因为CUDA9.0相较之前的版本改动很大,所以后续配置安装其他东西的时候你会遇到很多麻烦。
Ubuntu 16.04 上安装 CUDA 9.0 详细教程
5、安装 cudnn
cudnn是GPU加速计算深层神经网络的库。
6、安装 opencv3.1
7、安装caffe
a、 安装相关依赖包
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
b、在我们要安装的路径下 clone ,一般默认会安装在home文件加下,文件夹名称为caffe。
git clone https://github.com/BVLC/caffe.git
进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :
cd caffe sudo cp Makefile.config.example Makefile.config
复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:
sudo gedit Makefile.config
修改 Makefile.config 文件内容:
(1)应用 cudnn
将 #USE_CUDNN := 1 修改成: USE_CUDNN := 1
(2)应用 opencv 且版本是3的
将 #OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
(3)使用python来编写layer
将 #WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER := 1
(4)实现caffe对Python和Matlab接口的支持(可不修改)
PYTHON_LIB := /usr/lib MATLAB_DIR := /usr/local/MATLAB/R2015b #注意:将Matlab修改成对应的版本
(5)修改 python 路径(重要)
#Whatever else you find you need goes here. 下面的 INCLUDE_DIRS:= $(PYTHON_INCLUDE) /usr/local/include LIBRARY_DIRS:= $(PYTHON_LIB) /usr/local/lib /usr/lib 修改为: 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
注:如果使用的是CUDA版本是8.0,从CUDA 8.0开始compute capability 2.0和2.1被弃用了,所以可以将-gencode arch=compute_20,code=sm_20 和-gencode arch=compute_20,code=sm_21这两行删除。如下
# For CUDA < 6.0, comment the *_50 lines for compatibility. CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=sm_50 \ -gencode arch=compute_50,code=compute_50
这里贴出我的Makefile.config文件 方便大家参考
然后修改 caffe 目录下的 Makefile 文件:
将: NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) 替换为: NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) 将: 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
这里贴出我的Makefile文件 方便大家参考
然后修改 /usr/local/cuda/include/host_config.h 文件 :
将 #error-- unsupported GNU version! gcc versions later than 4.9 are not supported! 改为 //#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
c、接下来开始编译,如果前面的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。
make all -j8 #-j8根据自己电脑配置决定 make test -j8 sudo make runtest -j8 #测试
如果运行之后出现如图所示结果,说明caffe配置成功。
d、安装python接口
首先回到caffe的根目录,然后执行安装代码:
cd ~/caffe sudo apt-get install gfortran cd ./python for req in $(cat requirements.txt); do pip install $req; done
安装完成以后,再次回到caffe根目录我们可以执行:
cd .. sudo pip install -r python/requirements.txt
编译python接口:
make pycaffe
配置环境变量,以便python调用:
sudo gedit ~/.bashrc
将export PYTHONPATH=/home/caffe/python:$PYTHONPATH添加到文件中
source ~/.bashrc #更新文件
编译 pycaffe 成功后,验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:
python
然后导入 caffe :
>>> import caffe
若不报错则表示 caffe 的 python 接口已正确编译,若出现的错误请根据提示进行处理,由于我安装的比较顺利这里我就不再整理啦。
8、参考博文