环境前提:
系统:ubuntu16.04
GPU: nvidia GeForce GTX 960
CUDA: 8.0
下面的安装步骤之前需要配置GPU的驱动和安装CUDA,这两个步骤在另一篇博文已经总结过,参见此链接。
1. 安装配置cuDNN
官网上也有的介绍,参见cuDNN Installation Guide
此处选用的是dep文件安装,根据自己的配置从下载地址选择下载包。其它环境或是文件类型在上面的链接也可以找到安装方式。
本文选用以下三个:
cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb)
cuDNN v7.0.5 Developer Library for Ubuntu16.04 (Deb)
cuDNN v7.0.5 Code Samples and User Guide for Ubuntu16.04 (Deb)
最后一个包内存放了验证代码。进入安装包所在路径,执行以下代码即可安装完毕。将之前下载的三个安装包名依次替换到后面。
$ sudo dpkg -i libcudnn7_7.0.5.15-1+cuda8.0_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.0.5.15-1+cuda8.0_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.0.5.15-1+cuda8.0_amd64.deb
运行以下代码验证安装。
$ cp -r /usr/src/cudnn_samples_v7/ $HOME最后出现Test passed!则安装成功。
$ cd $HOME/cudnn_samples_v7/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN
2. 安装OpenCV
安装依赖库,很多经验都像集成了血和泪一样列举了很多依赖项,下面的依赖项有可能不是全部必须的,但是为了防止后续出错,都安装了。
$ sudo apt-get install libprotobuf-dev$ sudo apt-get install libatlas-base-dev更新
$ sudo apt-get install libleveldb-dev
$ sudo apt-get install libsnappy-dev
$ sudo apt-get install libopencv-dev
$ sudo apt-get install libhdf5-serial-dev
$ sudo apt-get install protobuf-compiler
$ sudo apt-get install --no-install-recommends
$ sudo apt-get install libboost-all-dev
$ sudo apt-get install libgflags-dev
$ sudo apt-get install libgoogle-glog-dev
$ sudo apt-get install liblmdb-dev
$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
$ sudo apt-get install cmake
$ sudo apt-get update$ sudo apt-get upgradeOpenCV 下载驿站(百度云盘下载,同步更新) - CSDN博客
官网Linus的版本不知道为什么不见了,可到上面的链接下载所需的安装包。
进入caffe所在的文件夹,注意cmake后面后个点,它们之间有空格。
$ cd /home/karin/caffe$ cmake .结束之后make,这个过程有点久
$ sudo make或是以四线程或者八线程的方式加速,用以下其中一句替换上面的语句
$ sudo make -j4$ sudo make -j8完成之后
$ sudo make install至此编译过程结束
下面对环境进行配置
配置OpenCV的库路径
$ sudo gedit /etc/ld.so.conf.d/opencv.conf打开可能是空白,加入下面的路径
/usr/local/lib保存退出,执行下面语句使配置生效
$ sudo ldconfig打开bash.bashrc文件
$ sudo gedit /etc/bash.bashrc末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH保存退出,之后
$ source ~/.bashrc更新数据库
$ sudo updatedb配置完成
测试
创建opencv.cpp,同一文件夹下放置一张test.jpg
#include <iostream> #include <opencv2/opencv.hpp>编译:
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("test.jpg");
imshow("srcIMage",srcImage);
waitKey(0);
return 0;
}
$ g++ `pkg-config opencv --cflags` opencv.cpp -o opencv `pkg-config opencv --libs`运行:
./opencv
正确的结果应该是显示图片。
过程中出现的错误:
[OpenCV3.*与CUDA8.0不兼容],解决方案如下:
修改opencv目录下opencv/modules/cudalegacy/src/graphcuts.cpp
if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
修改为
if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000)
[找不到一个库]
有一个库无法下载,暂时来看并不影响正常使用,去到库调用文件将其调用删除。
/usr/local/lib/pkgconfig
找到该库添加语句,删除。
3. 配置Caffe
Caffe下载地址
首先下载Caffe,然后找到下载的caffe-master.zip,解压到/home,重新命名为caffe。
以下大部分摘取自超详细配置Caffe(gpu版本+ubuntu16.04)考虑各种问题 - CSDN博客。里面有其它的配置情况可供参考。
将Makefile.config.example的内容复制到Makefile.config
$ sudo cp Makefile.config.example Makefile.config打开配置文件
$ sudo gedit Makefile.configa.若使用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. 下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib修改为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/seriale. 将:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
替换为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
a.
将(大概409行):
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
b.
将(大概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
- 1
- 2
- 3
编译与测试
$ make all -j16
$ make test -j16
$ make runtest -j16
MNIST数据集测试
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
1.将终端定位到Caffe根目录
cd ~/caffe
2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
4.训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图:
至此全部内容完毕。
参考链接:
超详细配置Caffe(gpu版本+ubuntu16.04)考虑各种问题 - CSDN博客
Ubuntu16.04 安装配置GPU版本Caffe - CSDN博客
Ubuntu16.04 14.04安装配置Caffe(GPU版) - --红尘-- - 博客园
Ubuntu16.04.1安装Caffe(GPU) - 惜祯 - 博客园
OpenCV 下载驿站(百度云盘下载,同步更新) - CSDN博客