ubuntu16.04LTS + CUDA 8.0 + cudnn 5.1 + Caffe 安装

笔者已经安装了TensorFlow环境(GPU版本),显卡驱动、cuda、cudnn的安装教程也可参考:ubuntu16.04LTS + CUDA 8.0 + cudnn 5.1 + TensorFlow 安装(GPU版本)
在此基础上,笔者安装caffe环境,仅供各位参考,如有不当之处请各位指教。

——呵———–caffe只适用python2———呵——–

如果博友安装的是python3版本(安装了anaconda3),可以参考Ubuntu 下同时安装Anaconda2与Anaconda3 安装anaconda2版本,本文使用的是Anaconda2-4.2.0-Linux-x86_64

在此,重复一遍笔者电脑现在的环境状态:
系统:Ubuntu 16.04LTS (英文安装)
显卡:GTX 1080
NVIDIA驱动版本:NVIDIA-Linux-x86_64-390.25
anaconda版本:Anaconda3-4.2.0-Linux-x86_64
cuda版本:cuda_8.0.44_linux
cuddn版本:cudnn-8.0-linux-x64-v5.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

运行完成以上代码后,需要检查安装是否成功,方法为重新运行一次命令,查看是否安装成功,举个栗子:【验证第三条命令是否成功安装libopenblas-dev liblapack-dev libatlas-base-dev 这三个包】
再次运行命令:sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev此时命令运行结果如下截图:
这里写图片描述

若有些包安装失败,请重新执行命令或者问问度娘啦~确认所有依赖包都安装成功后,请看下一步!

第二步 配置环境变量

使用命令sudo gedit ~/.bashrc打开.bashrc文件
在末尾添加以下两行内容:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 

第三步 安装OpenCV3.1

进入OpenCV官网,OpenCV官网链接【点这里进入】,选择3.1.0的版本的源码sources,下载opencv-3.1.0.zip
这里写图片描述

下载完成后,依次运行以下命令进行编译等操作。
①使用命令unzip opencv-3.1.0.zip 解压压缩包
②进入OpenCV文件夹:cd opencv-3.1.0

修改/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp文件,可能会由于opecv3.1与cuda8.0不兼容导致安装失败。
修改如图:(使用命令sudo gedit xxx/graphcuts.cpp可进行修改)
这里写图片描述

③创建文件夹“build”:mkdir build
④进入文件夹“build”中:cd build
⑤修改完成后,输入命令进行编译:[此过程会比较久一些,耐心等待哦]

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local 

make -j8  

编译完成后如下图:
这里写图片描述

⑥编译成功后安装:sudo make install
⑦安装完成后通过输入命令:pkg-config --modversion opencv查看 opencv 版本验证是否安装成功:
这里写图片描述

第四步 安装 caffe

(1)下载caffe源码:git clone https://github.com/BVLC/caffe.git
(2)进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,命令:sudo cp Makefile.config.example Makefile.config
(3)修改 Makefile.config 文件,sudo gedit Makefile.config
①使用cuddn:

#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1

②使用并修改 opencv 版本

#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3

③使用 python 接口

#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1

④修改 python 路径

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       

(4)然后修改 caffe 目录下的 Makefile 文件:

将:(大约在415行)
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将:(大约在181行)
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

(5)修改 /usr/local/cuda/include/host_config.h 文件 :

将(大约在119行)
#error-- unsupported GNU version! gcc versions later than 5 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 5 are not supported!

OK ,可以开始编译了,在 caffe 目录下执行 :make all -j8
编译成功后可运行命令进行测试:make runtest -j8

这里写图片描述
如果显示结果为上、下图所示,则表示 caffe 已经成功安装。
这里写图片描述


此时,导入caffe成功,但是导入cv2失败:
这里写图片描述

根据装了anaconda,和opencv,caffe,但import cv2报错网页上的回答,进行了操作:要把opencv编译出来的cv2.so拷贝到anaconda的lib目录下 。但是又报错如下图:ImportError: libstdc++.so.6: version GLIBCXX_3.4.21’ not found
这里写图片描述
根据错误信息可以粗略知道,没有找到GLBCXX 3.4.21。
输入命令: strings /home/zhiwei/anaconda3/bin/../lib/libstdc++.so.6 | grep GLIBCXX
这里写图片描述
果然是没有GLBCXX 3.4.21
解决:使用命令下载conda install libgcc
再使用命令进行查看是否有“GLBCXX 3.4.21”
这里写图片描述
然后又开始报错:ImportError: dynamic module does not define module export function (PyInit_cv2)
这里写图片描述

装到这里,,我已经筋疲力尽了。。。问过师兄后立马改装anaconda2,装python2 版本。可以参考Ubuntu 下同时安装Anaconda2与Anaconda3 安装anaconda2版本,本文使用的是Anaconda2-4.2.0-Linux-x86_64

参考资料:
https://blog.csdn.net/yhaolpz/article/details/71375762
https://zhuanlan.zhihu.com/p/25709284
https://blog.csdn.net/m0_37407756/article/details/70789271
https://blog.csdn.net/wuzuyu365/article/details/52449574
https://blog.csdn.net/xiaolong2w/article/details/23915171
http://caffe.berkeleyvision.org/

猜你喜欢

转载自blog.csdn.net/zw__chen/article/details/80109439