64位Ubuntu 14.04 LTS + Caffe + CUDA 7.5 + Opencv 3.0 安装配置实战

本文主要笔记自己在ubuntu 14.04.4 LTS版本系统上搭建开源深度学习[Deep Learning]框架: Caffe的详细过程。其中主要包含了Nvidia CUDA 7.5、opencv 3.0、cuDNN的安装配置过程及所遇问题的解决方案。

安装的过程中遇到了很多问题,感谢开源社区、感谢Github大神们的分享,学会分享就是很大的善良。


情况说明

在搭建该框架前,本系统已经使用Ubuntu自带的"附件驱动"安装了开源驱动,看过网上的很多教程之后,还是毅然决然地卸载这些开源驱动,换回了自带默认的"Nouveau Display Driver"驱动以供基本显示使用(注意:此时安装的Nvidia推荐驱动还没有完全卸载,即尚未安装GPU)。

这些说明很重要!由于大神的通力劳作,使得现在按照官网安装最新版的Caffe,变得很简单了,下面我们开始一步步的安装吧。


Caffe 安装

根据我们前面的情况说明,我们现在机器上没有GPU,按照官网的Caffe官网安装教程,我们先一步步地进行,之后安装完GPU(CUDA)后再重新编译即可,不用担心。

(1). 安装依赖库(一)

1
2
3
$ 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

(2). 安装BLAS

也可以安装OpenBLAS或者MKL,以加速CPU性能(有GPU的童鞋可以忽略),这里我按照官网装了BLAS,有兴趣的童鞋可以自己研究另外两种,只需在最后编译caffe的时候修改一下配置文件即可。

1
$ sudo apt-get install libatlas-base-dev

(3). Python安装

Ubuntu 14.04 自带Python 2.7 ,无需自行安装。可以自测:$ python,进入python环境后会有版本提示;如果未出现请使用如下命令进行安装:

1
$ sudo apt-get install python

(4). Opencv3.0安装

安装方法详见: ubuntu14.04 LTS系统中Opencv 3.0开发环境的搭建 ,Opencv必须安装,且版本需要大于2.4。—[来自官网说明]

(5). 安装依赖库(二)

1
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

(6). Caffe下载

使用git进行下载,直接从github上下载最新版本,下载前切换至home目录。注:git的使用方法可参看:我的vim配置(.vimrc:git+github管理) ,这篇文章内容进行安装配置。clone后在home中便可以找到Caffe的下载目录了。

1
2
$ cd
$ git clone git://github.com/BVLC/caffe.git

(7). 编译Caffe前准备

  • 修改Makefile文件,最新版的Caffe已经帮我们修改好了,可以跳过;如果使用以前的版本则仍需要修改,这个可以自行Google。

  • 修改caffe/examples/cpp_classification/classification.cpp文件,加入:

1
2
#include <opencv2/imgproc/types_c.h>
#include <opencv2/objdetect/objdetect.hpp>

(8). 编译Caffe

1
2
3
4
5
6
7
8
9
10
11
$ cd ~/caffe
$ cp Makefile.config.example Makefile.config

# 修改Makefile.config文件:如果没有GPU,则去掉CPU_ONLY:= 1的注释
# 如果安装了Opencv3.0,去掉 OPENCV_VERSION := 3的注释

$ make all
# 到这一步可能会出现,缺少cublas_v2.h的错误提示,先不用管,这时以下两步也不需要执行了,这是由于未安装cuda造成的。

$ make test
$ make runtest

Makefile配置图


Nvidia显卡驱动及Cuda 7.5 的安装

如果你的机器还没有装GPU,请直接忽略这一步和cuDNN安装

(1). 验证你的gpu支持是否支持Cuda

打开支持Cuda运算的Gpu列表,只要你的GPU在里面找得到就没问题。

(2). 查看当前使用显卡

在终端输入以下命令,确认当前使用的是独立显卡,如果使用的是集显,则需要在开机时进入BIOS关闭集显。

1
$ lspci | grep -i nvidia

CUDA-显示效果

(3). 确认你的系统是X86架构,可通过下面的命令查询

1
$ uname -m && cat /etc/*release   # 显示X86_64和系统信息即可

CUDA-显示结果

(4). 安装gcc

Ubuntu 14.04已经自带gcc 4.8.5,无需自行下载,检查gcc版本可通过如下方法:

1
$ gcc --version

CUDA-GCC-version

如果发现还没安装gcc,可以执行:$ sudo apt-get install gcc-版本号

(5). 下载Cuda
Cuda可以直接到Nvidia官网下载,下面官网的下载地址,有两种安装方式(.run 和 .deb),这里只介绍后者,因为比较简单易行。 这里选择下载信息如下图:

这里给出我的百度云盘下载地址: 链接:http://pan.baidu.com/s/1c7nR9G 密码:sp7z

CUDA-Nvidia官网

(6). 验证Cuda安装包

1
$ md5sum 你的filename

如果下载没出错,那得到的MD5序列号和上图中是一致的,否则只能重新下载。

(7). 卸载旧版本Nvidia

根据官网介绍,之前安装的版本都会有冲突的嫌疑。卸载命令:

1
$ sudo apt-get --purge remove nvidia*

(8). 安装Cuda

cd切换至cuda安装包所在的目录,执行以下命令:

1
2
3
$ sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda

(9). 添加环境变量

1
2
3
4
5
6
7
$ sudo vim /etc/profile # 在末尾添加(注意自己的Cuda版本):

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

$ source /etc/profile
$ sudo reboot

(10). 安装例程

例程本来在/usr/local/cuda-7.5/samples路径下,但不可写,使用如下命令进行复制:

1
$ cuda-install-samples-7.5.sh ~/cuda

(11). 查看GPU驱动版本、Cuda版本:

正常安装的话,会出现版本信息,如果没出现说明安装出错,官网教程说的很清楚。

1
2
$ cat /proc/driver/nvidia/version
$ nvcc -V

nvidia-version

(12). 编译例程

cd进NVIDIA_CUDA-7.5_Samples中make:

1
2
$ cd ~/cuda/NVIDIA_CUDA-7.5_Samples    
$ make

编译结果在 ~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release中

(13). 执行编译结果,确认安装配置

1
2
$ cd
$ ./cuda/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/deviceQuery

顺利的话如下图所示,若出错可参考此处

CUDA-deviceQuery

(14). bandwidthTest确认

1
$ ./cuda/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release/bandwidthTest

确认结果如下图所示则安装成功 :

CUDA-bandwidthTest


安装cuDNN

(1). 下载cuDNN

可以从英伟达官网下载,一般注册第二天就通过。

注意,建议使用cudnn v3 或 cudnn v2版本,我试验的v5最新版一直报错

这里给出我的百度云盘下载地址:
链接:http://pan.baidu.com/s/1c2p8NcO 密码:em3w

(2). 安装
解压下载好的文件,一般在文件所在的目录会出现一个cuda的新文件夹:

1
2
3
4
5
6
$ tar -xzvf cudnn-7.5-linux-x64-v3.0-rc.tgz
$ cd cudnn/lib64/
$ sudo cp lib* /usr/local/cuda/lib64/
$ cd ..
$ cd include
$ sudo cp cudnn.h /usr/local/cuda/include

(3). 重新编译caffe
在~/caffe/Makefile.config中,去掉 USE_CUDNN := 1的注释,重新加上CPU_ONLY:= 1的注释然后重新编译caffe即可。

1
2
3
4
$ make clean # 第一次编译不用这句,出错时也可使用这句。
$ make all
$ make test
$ make runtest

注意

当进行 make all 操作时,可能会出现如下错误:

CXX/LD -o .build_release/tools/convert_imageset.bin
.build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)’
.build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector >&, std::vector > const&)’

原因就是opencv3.0.0把imread相关函数放到imgcodecs.lib中了,而非原来的imgproc.lib

解决办法:修改Makefile文件(不是Makefile.config):

在位置{ (LIBRARIES += glog gflags protobuf leveldb snappy lmdb boost_system hdf5_hl hdf5 m opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs) }处添加opencv_imgcodecs

修复错误重新执行上述代码,成功后的截图如下所示:

CUDA-runtest


配置pycaffe

(1). 安装依赖库

1
2
3
$ 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

(2). 编译

进入caffe目录,编译pycaffe

1
2
$ cd ~/caffe
$ make pycaffe

(3). 修改环境变量

添加caffe目录下的python地址到$PYTHONPATH

1
2
3
$ sudo gedit /etc/profile # 末尾添加: export PYTHONPATH = caffe目录下的python地址:$PYTHONPATH,用完整路径,不要用~

$ source /etc/profile # 使之生效

(4). 测试

在terminal进入python,import caffe 如果没错说明安装成功,效果如图:

CUDA-import-caffe.png


使用MNIST数据集进行测试

切换至caffe目录下,下面的工作主要是:用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:MNIST数据集在Caffe中的测试 。

  • 数据预处理
1
$ sh data/mnist/get_mnist.sh
  • 重建lmdb/leveldb文件。Caffe支持三种数据格式输入网络,包括Image(.jpg,
    .png等),leveldb,lmdb,根据自己需要选择不同输入吧。
1
$ sh examples/mnist/create_mnist.sh

生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集

  • 训练mnist
1
$ sh examples/mnist/train_lenet.sh

这时你会在终端窗口中看到caffe的训练过程

CUDA-training


使用CIFAR-10数据集进行测试

CIFAR-10数据集: 含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来。包含50000张训练图片,10000张测试图片, 详细参考地址见: The CIFAR-10 dataset

  • 首先切换至caffe目录下: $ cd caffe;
  • 准备数据集( 在caffe目录下执行): $ ./data/cifar10/get_cifar10.sh;
  • 执行: ./examples/cifar10/create_cifar10.sh ## 将图片库转成leveldb格式,并计算均值二进制文件;
  • 模型训练: ./examples/cifar10/train_quick.sh

结果如下图所示:

CUDA-cifar10-caffe


参考文献

(1): http://caffe.berkeleyvision.org/install_apt.html
(2): http://blog.csdn.net/mduanfire/article/details/50931989
(3): http://blog.csdn.net/mduanfire/article/details/50492939
(4): https://developer.nvidia.com/cuda-gpus
(5): https://developer.nvidia.com/cuda-toolkit
(6): http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#running-binaries__valid-results-from-sample-cuda-devicequery-program
(7): https://developer.nvidia.com/cudnnhttp://caffe.berkeleyvision.org/install_apt.html
(8): https://developer.nvidia.com/cudnn
(9): http://blog.csdn.net/u013915633/article/details/49867947
(10): http://www.th7.cn/system/lin/201504/103304.shtml
(11): https://github.com/Zhangjd/graduation-project/issues/1
(12): https://github.com/BVLC/caffe/issues/2348

END

0%