您的位置:首页 > Web前端

ubuntu14.04安装caffe+cuda7.5+cudnn5.0+opencv3.0(亲测有效)

2017-08-01 10:33 267 查看

ubuntu14.04安装caffe+cuda7.5+cudnn5.0+opencv3.0

此博客为原始博客,可以转载,但是转载请注明出处。

先介绍一下本人电脑配置:笔记本双显卡,N卡是gtx1060(因为双显卡的问题黑屏无数次,文章后续有解决方案)

本文步骤如下:

- ①安装显卡驱动

- ②安装CUDA7.5

- ③安装opencv3.0

- ④安装cudnn5.0

- ⑤安装caffe

注意:不同电脑可能遇到的bug也不一样,我的配置流程不一定100%成功,但是适用大部分电脑,因为我的笔记本已经踩了很多坑。文章中基本没有废话,需要修改的地方都需要修改


①显卡驱动安装

对于笔记本具有双显卡的情况(intel集显+NVIDIA独显)安装显卡驱动是一件很坑的事情,或者你在安装CUDA后重启黑屏,罪魁祸首之一也是双显卡的问题。为此,已经付出了黑屏无数次的代价,最终还是找到了解决方案。

首先安装显卡驱动:

在系统设置里找到附加驱动,里面加载完毕后会有推荐的nvidia显卡驱动版本。例如我这里推荐的是367版本,那么我们就安装这个版本的驱动。

$ sudo apt-get install nvidia-367


在安装完驱动之后,我重启了电脑,发现电脑黑屏,无法进入图形界面,之后试了好多方法,无论如何就是一安装完显卡驱动重启就黑屏,最后的解决方法是:

先启动命令界面,按ctrl+alt+f1,进入之后先关闭lightdm,然后选择intel显卡进行显示,最后重启lightdm(lightdm是管理图形界面的),具体命令是

$ sudo service lightdm stop
$ sudo prime-select intel
$ sudo service lightdm restart


执行完上述命令之后,就可以进入图形界面了,成功的解决了黑屏问题(花了好几天时间才解决的)。进入图形界面后,再次打开命令行,将显卡切换到nvidia显卡,因为我们毕竟要使用nvidia显卡来安装cuda,具体命令为

$ sudo prime-select nvidia


但是,不幸的是,如果你出现上述安装完驱动就黑屏的问题,那么在你关机第二次开机时还是会黑屏,因为你关机之前已经切换到了nvidia显卡,所以这时候你用的还是nvidia显卡启动的(切记不要用intel显卡启动电脑,要么之后系统检测不到nvidia显卡,对于我的电脑是这样的)。这个时候,意味着你每次开机都要执行上述4条命令的过程,虽然有些麻烦,但是确能解决问题,多输几条命令吧。

当然如果你用的台式或者你的笔记本没有这种BUG,就不用做这些操作了。但如果你在安装CUDA重启后黑屏,也可以参考这些操作,我认为是有效的。

②CUDA 7.5安装

一、首先,安装一些依赖项:

$ 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 libatlas-base-dev
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


二、之后下载cuda的.run文件,不要用deb文件,因为在上一步我们已经安装了显卡驱动。如果使用deb文件安装,则在安装cuda的时候会自动再安一次显卡驱动,可能会把当前的版本替换成其他版本了。所以去下载.run文件安装。

下载链接:https://developer.nvidia.com/cuda-75-downloads-archive

按照下图选择:



下载好后我们开始安装:

进入下载好文件的目录,执行:

$ sudo sh cuda_7.5.18_linux.run


然后按空格阅读有关信息,最后会让你选择你要安装的项目,注意!!这里除了driver驱动之外都选择yes,路径回车默认就可以,driver一定要选no,否则跟安装deb文件没什么区别了。

三、等待安装完毕后,添加环境变量:

$ gedit .bashrc


然后在打开的文档末尾添加3行(注意路径是否匹配):

export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH


然后生效:

source .bashrc


最后重启电脑,输入命令:

$ env


检查环境变量是否含有cuda

五、检查

在整个安装过程,包括后面的所以安装过程,都要确保在使用nvidia显卡,检查方法是命令行输入:

$ nvidia-smi


如果出现很多信息则证明nvidia正在运转,如果出现smi找不到之类的错误信息,证明还是没有选择到nvidia显卡,具体操作上面已经说过了(启动电脑用n卡启动,虽然会黑屏,但若用Intel显卡启动就会出现smi找不到)

检查 CUDA Toolkit是否安装成功,命令行输入:

$ nvcc -V #会输出CUD
4000
A的版本信息


六、编译cuda例程

首先安装gcc,命令行输入:

$ sudo apt-get install gcc


然后切换到例子存放的路径,默认路径是

~/NVIDIA_CUDA-7.5_Samples(即 /home/xxx/NVIDIA_CUDA-7.5_Samples, xxx是你自己的用户名)

命令行输入:

$ make


然后慢慢等待吧,这个过程很长,几十分钟。编译完成后进入~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release,命令行输入

$ ./deviceQuery


出现下图情况,证明CUDA安装成功



③opencv 3.0安装

一、安装依赖库,以及搭建环境:

$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev


二、下载 opencv3.0

$ wget https://github.com/Itseez/opencv/archive/3.0.0-alpha.zip -O opencv-3.0.0-alpha.zip
$ unzip opencv-3.0.0-alpha.zip


三、安装opencv

进入opencv-3.0.0-alpha目录,创建release目录

$ mkdir release


进入release目录,命令行输入:

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
$ sudo make
$ sudo make install
$ sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig


其中在sudo make编译的时候会出现error: a storage class is not allowed in an explicit specialization问题,这个错误应该是在NCVPixelOperations.hpp 这个文件里出的错,所以找到NCVPixelOperations.hpp 这个文件,它在opencv-3.0.0-alpha\modules\cudalegacy\src\cuda\里,然后打开这个文件进行编辑,将所有的inline之前的static去掉,即把static inline变成inline。问题解决,继续make编译。之后可能还会出现error: a storage class is not allowed in an explicit specialization,解决方法是但凡看见这个错误,就找到出错的这个文件,然后打开文件进行编辑,把文件里的static去掉,这个是我自己摸索出来的,虽然不知道为啥,但是能够解决问题。

整个make过程也很漫长,慢慢等待

安装完成后,进行测试opencv,测试这里就不具体说明,可以参考博客http://www.tuicool.com/articles/nYJrYra,博客的下半部分有说明测试的流程和代码。

④cudnn 5.0安装

这个不安装也可以,只要在之后的caffe配置文件中把cudnn注释掉就可以了。

下载cudnn:https://developer.nvidia.com/cudnn,需要注册一下账号

然后命令输入:

$ sudo tar xvf cudnn-7.5-linux-x64-v5.0-ga.tgz
$ cd cuda/include
$ sudo cp *.h /usr/local/include/
$ ../lib64
$ sudo cp lib* /usr/local/lib/
$ cd /usr/local/lib
$ sudo chmod +r libcudnn.so.5.0.5
$ sudo ln -sf libcudnn.so.5.0.5 libcudnn.so.5
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig


(libcudnn.so.5.0.5这些文件的版本与你下载的文件版本对应好,按目录找到对应文件看一下版本对不对就行了)

⑤caffe 安装

一、下载caffe

$  cd ~
$ git clone git://github.com/BVLC/caffe.git


然后进入caffe目录,打开Makefile,在181行和191行后面添加opencv_imgcodecs(必须要改)

最后打开caffe/examples/cpp_classification/classification.cpp文件,加入:

#include <opencv2/imgproc/types_c.h>
#include <opencv2/objdetect/objdetect_c.h>


二、编译caffe

$ cd ~/caffe
$ cp Makefile.config.example Makefile.config


打开Makefile.config,去掉USE_CUDNN := 1注释

接着命令行输入:

$ make all
$ make test
$ make runtest


在make all时如果出现错误:nvcc fatal : Unsupported gpu architecture ‘compute_60’,解决方法是打开Makefile.config,把-gencode arch=compute_60,code=sm_60 \ 这一行注释掉,即把第42行注释掉。

在执行runtest可能出错:CURAND出错,status == CURAND_STATUS_SUCCESS (201 vs. 0) CURAND_STATUS_LAUNCH_FAILURE,一个生成随机数的程序出错。原因是CUDA版本不支持6.x框架的显卡,但不影响后续工作,忽略即可。所以runtest没有成功也不影响

三、配置pycaffe

安装依赖库:

$ sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
$ sudo apt-get install protobuf-c-compiler protobuf-compiler


然后编译:

$ cd ~/caffe
$ make pycaffe


添加~/caffe/Python到$PYTHONPATH:

$ sudo gedit /etc/profile
# 打开文件后,在末尾添加: export PYTHONPATH=/home/xxx/caffe/python:$PYTHONPATH$ source 注意把xxx替换成你的名称
$ /etc/profile


测试:

$ python
$ >>>import caffe


如果结果如下图:



即没有任何错误信息,证明caffe安装成功

至此GPU版本的caffe安装全部完成,如果中间出现一些文章中没有的bug也很正常,大家网上搜一下应该都是可以解决的。若文章中有错误的地方,还请网友帮忙指出从而进行修改。

另外CUDA和CUDNN版本与我安装的不一致也没有关系,整体都步骤都是相同的,只要把其中关于版本的一些命令修改成你的版本就可以了。

最后,我的第二篇文章会有在caffe框架上安装faster rcnn的流程,请有需要的童鞋参考我的第二篇文章

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  caffe cuda opencv