Ubuntu 16.04安装caffe(GPU)靠谱教程 Ubuntu 16.04+cuda8.0+cudnn7.0+opencv3.1.0caffe

本文是第一次在Ubuntu 16.04上安装Caffe(GPU)的过程。主要参考了以下链接:
https://blog.csdn.net/a_z666666/article/details/72853346
https://blog.csdn.net/yhaolpz/article/details/71375762
https://blog.csdn.net/yggaoeecs/article/details/79163789
https://blog.csdn.net/DumpDoctorWang/article/details/82317235
http://www.cnblogs.com/go-better/p/7161006.html

一、安装依赖包

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

二、cuda8.0

1.安装驱动

英伟达驱动查询与下载官网https://www.nvidia.cn/Download/index.aspx?lang=cn

Ubuntu 16.04的自带的驱动支持CUDA 8.0 和CUDA 9.0;Ubuntu 18.04自带的驱动支持CUDA 9.0和CUDA 9.1。
Ubuntu 16.04也可以安装CUDA 9.1,不过需要更新驱动,可参考其他博客。不过不建议在Ubuntu 16.04上安装CUDA 9.1。
OpenCV2.4.13仅支持CUDA 8.0;OpenCV 3.2.0仅支持CUDA8.0;OpenCV 3.4.2支持CUDA 9.1、CUDA 9.0、CUDA 8.0。
所以如果你使用Ubuntu16.04,那么安装CUDA 8.0的时候OpenCV版本可以随意选;如果安装的是CUDA 9.0,那么OpenCV得选3.4.0以上了(2.4.*和3.2.*不行,3.3.*没有测试过)。如果你使用Ubuntu 18.04,那么必须安装CUDA 9.1,OpenCV得选3.4.0以上了(2.4.*和3.2.*不行,3.3.*没有测试过)。
在这里插入图片描述

2.cuda下载

https://developer.nvidia.com/cuda-toolkit-archive

三、cudnn7.0

四、OpenCV3.1.0

OpenCV:https://github.com/opencv/opencv/releases
OpenCV contrib: https://github.com/opencv/opencv_contrib/releases
首先肯定是先安装依赖了,官方列出了一些:

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

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

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

在你喜欢的地方建立一个工作目录,随便什么名字,就在home目录下面建立了一个opencv的目录

mkdir opencv 

进入这个工作目录(opencv)然后用git克隆官方的项目(下载接受会需要一点时间,等待)

cd opencv
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

克隆好了之后,你就会看见你的工作目录(opencv)下面有了两个项目的文件夹opencv了。
进入到你下载的那个opencv文件夹,这时候建立一个build的文件夹,用来接收cmake之后的文件。
命令行进入已解压的文件夹 opencv-3.1.0 目录下,执行:

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TIFF=ON ..

这里要解释一下,后面是一个空格加上两个点,不要搞错了。
运行之后,下图表示cmake完成了。

在这里插入图片描述
安装OpenCv 3.1的过程中要在编译(make -j16)时下载ippicv_linux_20151201,由于网络的原因,这个文件经常会下载失败。
在确保MD5是808b791a6eac9ed78d32a7666804320e的情况下:
在OpenCV源代码的根目录下创建目录:
opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e
将下载后的ippicv文件拷进去。

编译:

make -j16 

make -j $(nproc)

-j16表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。 编译安装,输入make -j $(nproc) (这是多进程make的命令,$(nproc)就是进程数,当然也可以直接指定),这会花很长时间

可能出现问题:

这里写图片描述

在这里插入图片描述
这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图:
在这里插入图片描述
其中, #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 是我们修改的。
编译成功后安装(必须加sudo,否则安装的是2.4.9版本):

sudo make install #安装

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

pkg-config --modversion opencv

五、安装caffe

1.首先在你要安装的路径下 clone :

git clone https://github.com/BVLC/caffe.git

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :

cp Makefile.config.example Makefile.config

然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:

gedit Makefile.config

2.修改 Makefile.config 文件内容:

①应用 cudnn

将
#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

3.然后修改 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

4.然后修改 /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!

OK 。

5.开始编译了,在 caffe 目录下执行 :

make all -j16
make test -j16 
sudo make runtest -j16

这是如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。
在make runtest时可能会出现的问题:

①问题一:

在这里插入图片描述
解决方法:
在这里插入图片描述

②问题二:

在这里插入图片描述
解决方法:
在这里插入图片描述

③问题三及解决方法:

在这里插入图片描述

如果运行之后出现下图,说明caffe配置成功。

六、编译Python接口

具体参考:
https://blog.csdn.net/qq_38784979/article/details/82811907

七、测试

能训练了,打印训练参数网络结束后却提示:已放弃,核心已转存

这时候只需要在./examples/mnist/train_lenet.sh前加个sudo就解决问题了

caffe训练途中停止之后继续训练

如果我们在训练途中停电或者有了其他的情况,可以通过之前保存的状态恢复数据,使用的时候直接添加–snapshot参数即可,如:

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --snapshot=models/bvlc_reference_caffenet/caffenet_train_iter_10000.solverstate

这时候运行会从snapshot开始继续运行

python opencv 添加文字 cv2.putText 各参数详解

cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)
各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细

猜你喜欢

转载自blog.csdn.net/qq_38784979/article/details/88371078