Ubuntu16.04安装caffe非常细致教程(历经两周的血泪史)

博客原文:https://blog.csdn.net/qq_40265629/article/details/81086092

 

 

我这两周安装了很多次caffe,一直都是按照网上的教程,资料很多,但是说的感觉都不太全面,对于我这一个首次接触Ubuntu系统的小白而言,每一步操作都是感觉如临深渊。所以想写一篇教程,避免大家重蹈我的覆辙。以下,就开始进入正题:

想要安装caffe跑深度学习的人注意了,这里面包括好几步,请一步一步来,个人感觉一蹴而就容易出问题,首先就是安装nvidia驱动,我看网上很多例程说是可以和cuda一起安装,但是一旦出了问题就不知道在哪里了,而且很容易出错!!!血和泪的教训啊!!!所以还是一步步来。

网上有很多安装NVIDIA驱动的教程,90%都说用下载.run文件,然后安装,然而我安装后使用nvidia-smi命令出现的却没有正在运行时的线程(这个问题我之前没有足够的重视,造成最后出现很多问题),而且ppa安装方式确实简单,还安全。建议大家使用这种方式。

1、PPA安装NVIDIA驱动

(1)禁用nouveau

sudo gedit /etc/modprobe.d/blacklist.conf
 
 

在最后另起一行添加如下


 
 
  1. blacklist vga16fb
  2. blacklist nouveau
  3. blacklist rivafb
  4. blacklist rivatv
  5. blacklist nvidiafb

进行更新保存

sudo update-initramfs -u
 
 

接下来关机重启之后,在终端输入

lsmod | grep nouveau
 
 

若没有输出,则证明关闭nouveau成功!

(2)PPA安装NVIDIA驱动

 

添加Graphic Drivers PPA


 
 
  1. sudo add-apt-repository ppa:graphics-drivers/ppa
  2. sudo apt- get update

查找合适的版本

ubuntu-drivers devices

 
 

其中一个driver后面加上了recommend字样,记住该版本,这个版本就是你要安装的NVIDIA驱动版本

确定版本之后,接下来就进入到正式安装了!!!

在进入安装之前,建议没设置root密码的设置一下,因为一会儿用得到,很简单,在终端输入

sudo passwd
 
 

接下来设置的root密码


 
 
  1. 输入新的UNIX密码:
  2. 重新输入新的UNIX密码:
  3. passwd:已成功更新密码

设置完成后,按Ctrl+Alt+F1进入终端模式

输入你的账号密码后,获取你的root权限,输入su,之后输入你设置的root密码后,即获得root权限(若不获取,之后可能会出现权限问题)

接着,输入以下命令关闭图形界面

sudo service lightdm stop

 
 

安装driver,后面的数字修改为相应的版本号。

sudo apt-get install nvidia-396
 
 

等待一段时间之后(需要一会儿),之后直接重启

sudo reboot
 
 

验证是否成功

sudo nvidia-smi

 
 

注意Processes一栏,若出现如图所示的线程信息,则成功,否则就有问题了!!!

(3)配置环境变量

使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc
 
 

打开后在文件最后加入以下两行内容,然后保存退出:


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

2、安装CUDA(最好是cuda8.0+cudnn5.1)
由于现在官网下载都是最新版的,而大多数用的都是cuda8.0版本,所以这里分享给你们百度云链接:

https://pan.baidu.com/s/1mkEPRYPWpwLS6sNtE1Gn8A 密码:8fw8

(1)安装cuda

下载完成后开始安装cuda,在终端里执行命令


 
 
  1. sudo chmod 777 cuda_8 .0 .61_375 .26_linux .run
  2. sudo sh cuda_8 .0 .61_375 .26_linux .run --no-opengl-libs

注意,这里的cuda后面的数字是我安装的版本号,我的百度云链接的cuda版本也是这个。还有要注意的就是,建议大家把软件包都放在根目录下,以便于安装,若直接放在下载文件下,终端输入中文识别有问题。

下面安装时要注意:执行后会有一系列提示让你确认,但是注意,在accept之后,第二步就是问你是否安装nvidia375驱动,这个时候输入n。

剩下的选择则都输入“y”确认安装或确认默认路径安装,开始安装,安装完成后最好还是重启一下,输入命令

reboot
 
 

重新登陆后,打开终端,配置cuda环境变量,打开~/.bashrc文件


 
 
  1. export PATH= /usr/local /cuda-8.0/bin${ PATH:+ :${PATH}}
  2. export LD_LIBRARY_PATH= /usr/local /cuda8.0/lib64${ LD_LIBRARY_PATH:+ :${LD_LIBRARY_PATH}}

(2)测试cuda是否安装正确

在终端输入命令:


 
 
  1. cd /usr/ local/cuda-8.0/samples/1_Utilities/deviceQuery
  2. sudo make
  3. sudo ./deviceQuery

若显示这样的内容,则证明你的cuda安装成功了!!


 
 
  1. ./deviceQuery Starting...
  2. CUDA Device Query (Runtime API) version (CUDART static linking)
  3. Detected 1 CUDA Capable device(s)
  4. Device 0: "GeForce GT 740M"
  5. CUDA Driver Version / Runtime Version 8.0 / 8.0
  6. CUDA Capability Major/Minor version number: 3.5
  7. Total amount of global memory: 2004 MBytes (2100953088 bytes)
  8. ( 2) Multiprocessors, (192) CUDA Cores/MP: 384 CUDA Cores
  9. GPU Max Clock rate: 1032 MHz (1.03 GHz)
  10. Memory Clock rate: 800 Mhz
  11. Memory Bus Width: 64-bit
  12. L2 Cache Size: 524288 bytes
  13. Maximum Texture Dimension Size (x,y,z) 1D=( 65536), 2D=( 65536, 65536), 3D=( 4096, 4096, 4096)
  14. Maximum Layered 1D Texture Size, ( num) layers 1D=( 16384), 2048 layers
  15. Maximum Layered 2D Texture Size, ( num) layers 2D=( 16384, 16384), 2048 layers
  16. Total amount of constant memory: 65536 bytes
  17. Total amount of shared memory per block: 49152 bytes
  18. Total number of registers available per block: 65536
  19. Warp size: 32
  20. Maximum number of threads per multiprocessor: 2048
  21. Maximum number of threads per block: 1024
  22. Max dimension size of a thread block (x,y,z): ( 1024, 1024, 64)
  23. Max dimension size of a grid size (x,y,z): ( 2147483647, 65535, 65535)
  24. Maximum memory pitch: 2147483647 bytes
  25. Texture alignment: 512 bytes
  26. Concurrent copy and kernel execution: Yes with 1 copy engine(s)
  27. Run time limit on kernels: No
  28. Integrated GPU sharing Host Memory: No
  29. Support host page- locked memory mapping: Yes
  30. Alignment requirement for Surfaces: Yes
  31. Device has ECC support: Disabled
  32. Device supports Unified Addressing (UVA): Yes
  33. Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
  34. Compute Mode:
  35. < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
  36. deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GT 740M
  37. Result = PASS

3、安装cudnn

这就要求你事先对自己的电脑有所了解了,尤其是显卡,你可以通过https://developer.nvidia.com/cuda-gpus查询自己电脑的计算能力,大于3的,装cudnn才有意义。

cudnn需要去官网下载,而去官网下载还需要注册,很麻烦,我就把我的百度云链接发出来,供大家下载

链接:https://pan.baidu.com/s/1O7vvWEAvAHbHVCQOboav5A 密码:f20o

下载cuDNN5.1之后进行解压,XXX是你自己的注册账号。

sudo tar -zxvf /home/XXX/cudnn-8.0-linux-x64-v5.1.tgz -C /home/XXX
 
 

解压之后,你会在跟目录下看见cuda文件夹,在终端执行命令


 
 
  1. cd cuda; sudo cp lib64/lib* /usr/ local/cuda/lib64/;
  2. sudo cp include/cudnn.h /usr/ local/cuda/include/
  3. 更新软连接: cd /usr/ local/cuda/lib64/
  4. sudo chmod +r libcudnn.so.5.1.10
  5. sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
  6. sudo ln -sf libcudnn.so.5 libcudnn.so
  7. sudo ldconfig

注意,请到自己解压后的lib64文件夹看这个文件libcudnn.so.5.0.5 ,电脑配置不同后面的数字型号不同,进行相应的修改,否则会报错。

安装完成后可用 nvcc -V 命令验证是否安装成功,若出现以下信息则表示安装成功:


 
 
  1. nvcc: NVIDIA ( R) Cuda compiler driver
  2. Copyright ( c) 2005 -2016 NVIDIA Corporation
  3. Built on Tue_Jan_10_13 :22 :03_CST_2018
  4. Cuda compilation tools, release 8 .0, V8 .0 .61

4、安装opencv3.1.0

首先是下载opencv3.1.0安装包,进入官网: http://opencv.org/releases.html,选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip

安装opencv需要的一些库,这个是都需要安装的,能安装的尽量都安装上。


 
 
  1. sudo apt-get install build-essential
  2. sudo apt- get install cmake git libgtk2 .0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  3. sudo apt- get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394 -22-dev
  4. sudo apt- get install --assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
  5. sudo apt- get install ffmpeg libopencv-dev libgtk -3-dev python-numpy python3-numpy libdc1394 -22 libdc1394 -22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1 .0-dev libgstreamer-plugins-base1 .0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev

将安装包放在根目录下,进行解压

unzip opencv-3.1.0.zip
 
 

解压后,由于opencv3与cuda的兼容问题,所以需要修改一下,修改 /opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp 文件内容,修改成如图

再执行命令


 
 
  1. cd opencv-3.1.0
  2. mkdir build
  3. cd build
  4. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/ local ..
  5. sudo make -j4

编译成功后进行安装

sudo make install
 
 

安装完成后通过查看 opencv 版本验证是否安装成功:

pkg-config --modversion opencv
 
 

5、安装caffe

终于可以安装caffe了,使用Git直接下载Caffe非常简单,或者去https://github.com/BVLC/caffe下载。由于我习惯去github上找代码,所以就直接去下载的源码。

将caffe-master放在根目录下,解压

unzip caffe-master.zip
 
 

将解压后的文件夹的名字改为caffe,因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config


 
 
  1. cd caffe
  2. sudo cp Makefile .config .example Makefile .config

打开Makefile.config文件

sudo gedit Makefile.config
 
 

在打开的文件中修改如下

a.若使用cudnn,则 将

#USE_CUDNN := 1 
 
 

修改成: 

USE_CUDNN := 1 
 
 

b.若使用的opencv版本是3的,则 将

#OPENCV_VERSION := 3 
 
 

修改为: 

OPENCV_VERSION := 3 
 
 

c.若要使用python来编写layer,则 将

#WITH_PYTHON_LAYER := 1 
 
 

修改为

WITH_PYTHON_LAYER := 1 
 
 

d.重要的一项 : 
将 # Whatever else you find you need goes here. 下面的


 
 
  1. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/ include
  2. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改为


 
 
  1. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/ include /usr/ include/hdf5/serial
  2. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

若你用的是anaconda,则还需要修改


 
 
  1. # NOTE: this is required only if you will compile the python interface.
  2. # We need to be able to find Python.h and numpy/arrayobject.h.
  3. #PYTHON_INCLUDE := /usr/include/python2.7 \
  4. #/usr/lib/python2.7/dist-packages/numpy/core/include
  5. # Anaconda Python distribution is quite popular. Include path:
  6. # Verify anaconda location, sometimes it's in root.
  7. ANACONDA_HOME := $(HOME)/anaconda
  8. PYTHON_INCLUDE := $(ANACONDA_HOME)/ include \
  9. $(ANACONDA_HOME)/ include/python2. 7 \
  10. $(ANACONDA_HOME)/lib/python2. 7/site-packages/numpy/core/ include

修改makefile文件


 
 
  1. NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
  2. 替换为:
  3. NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

 
 
  1. LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
  2. 改为:
  3. LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

编辑/usr/local/cuda/include/host_config.h 将其中的第115行注释掉:

也许你打开后的文件显示只读,这时你就在此文件夹打开终端,执行命令将其改为可写

chomd a+w 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!
 
 

接下来就是编译测试了!!!

在caffe文件夹下,执行命令

sudo make all -j4
 
 

这是如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。我之前子啊这里出现很多错误,也遇到很多问题,有的看别人的教程能解决,有的解决不了的就只能系统重装!

如果没有问题,那么执行

sudo make runtest -j8
 
 

这会经历一段时间,测试很多项是否正确,如果都没有问题,那么就会出现如图所示的画面

大功告成!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值