码迷,mamicode.com
首页 > 系统相关 > 详细

Caffe系统搭建 —— Ubuntu14.04 + CUDA7.0 + opencv3.0

时间:2015-09-18 13:45:31      阅读:859      评论:0      收藏:0      [点我收藏+]

标签:

  从Hinton在science上发表深度学习训练开创新的文章以来,深度学习火了整整有3年多,而且随着新的硬件和算法的提出,深度学习正在应用于越来越多的领域,发挥其算法的优势。

  实验室并没有赶上第一波深度学习热,但是让人高兴的是最近终于配了一台超级电脑,虽说和谷歌、百度几百个上千个GPU跑算法的设备不能比,但是好歹终于有了搭建自己的深度学习平台,想想还很是兴奋。最近这几天忙着搭建深度学习平台,把现在最火的Caffe框架代码跑通,从最初对ubuntu的菜鸟到现在顺利搭建起深度学习平台,中间走了很多弯路,现在把自己从系统安装到最后测试中遇到的问题及关键步骤记录下来,加深对caffe理解的同时,也方便自己后续安装时重新查找资料,浪费时间和精力。

机器配置:

GPU:NVIDIA GTX980 TI

硬盘:128G SSD +  2T 机械硬盘

CPU:i7(8核)

 

软件版本

Ubuntu 14.04

CUDA 7.0

 

本文的框架如下:

  • 第一部分:Ubuntu系统的安装;
  • 第二部分:CUDA 7.0的安装;
  • 第三部分:安装cuDNN
  • 第四部分:安装Intel MKL 或Atlas
  • 第五部分:安装opencv
  • 第六部分:安装Caffe所需要的Python环境
  • 第七部分:安装python依赖项
  • 第八部分:编译Caffe
  • 第九部分:使用MNIST数据集进行测试 

 

第一部分:Ubuntu14.04安装

1.1     从ubuntu官网或者其它镜像网站下载Ubuntu 14.04(正常情况下,镜像文件名字叫ubuntu-14.04.3-desktop-amd64.iso,1G左右);

1.2  使用nero或者ultraISO 将该镜像文件刻录到DVD。注意在刻录ISO文件时,选择“刻录镜像文件到光盘”这个选项,该选项刻录的光盘选择光驱启动时,可以直接进行光盘安装;

1.3  从光盘启动后,会出现14.04这样一个画面,接下来就是满屏字母文字,可主要参考Ubuntu安装方法  ,设置略有不同。

  1.3.1. 这时候只是建立了Ubuntu14.04的引导项,需要使用桌面的安装图标进行安装->选择语言,配置caffe时最好选用English,因为Ubuntu对中文支持并不是特别好,使用过程中选择英文会方便很多。  

  (安装时可以选用中文,安装好之后可以在设置中将语言更改为英文,不过最好刚开始时就选择英文)

  1.3.2.   安装类型:其它选项

  1.3.3.   接下来需要设置分区,首先设置交换空间大小,与电脑内存差不多或为电脑内存的两倍

    分区设置时

     swap    交换分区,主要用于休眠时系统文件,一般设置内存大小,6G足够

     /、    Ubuntu根目录,10G;

     /boot、  Ubuntu内核目录,网上一般建议100M,个人建议硬盘空间够的话1G左右,因为系统内核虽然不大,但是更新占空间还是挺大,至少300M

     /home  剩余所有空间,鉴于Imagenet,PASCAL VOC之类的大客户,建议500G,至少300G以上

    这3个分区均为ext4文件系统,注意linux系统的1G对应1000M。

  1.3.4.  接下来就是设置地区、键盘布局,接着就是用户名和密码,参照网上其它教程。

安装过程中遇到问题时,请善用百度和谷歌,推荐使用谷歌镜像  对遇到的问题进行及时搜索。

现在我们已经安装好了Ubuntu(64bit),接下来就进行CUDA7.0安装。

 

第二部分:CUDA 7.0

 在安装好Ubuntu(64bit)系统之后,在配置Caffe环境之前,请先连上互联网。这部分可参见:Linux使用mentohust连接锐捷校园网教程

2.1 安装显卡驱动

在安装cuda之前需要安装好显卡驱动, 显卡驱动可以在官网上根据自己系统下载,显卡驱动下载地址

下载之后,安装时需要切换到命令行模式。使用快捷键 ¨ctrl+alt+F1¨(TTF1),F1-F6分别对应(TTF1-TTF6)模式,如果不能切换到该模式下,建议Ubuntu安全模式下使用命令行安装N显卡驱动

也可以在终端中使用命令行关闭当前X桌面:

sudo stop lightdm

安装时的命令:

  2.1.1 通过网络安装

  输入下列命令添加驱动源  

  sudo add-apt-repository ppa:xorg-edgers/ppa
  sudo apt-get update

  安装GTX 980 ti显卡驱动

sudo apt-get install <driver>

  2.1.2 通过本地安装

  我现在的980驱动为NVIDIA-Linux-x86_64-352.41.run,切换到驱动所在目录,关闭lightdm,使用命令行安装驱动。  

  sudo ./NVIDIA-Linux-x86_64-352.41.run

  一路默认yes,同意,nvidia显卡就可以安装好了。这时候可以使用ctrl+alt+F1试试命令行模式是否可以切换。

 

2.2 .安装CUDA7.0

2.2.1 安装Caffe所需依赖包

sudo apt-get install build-essential  # basic requirement  
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler #required by caffe

 

2.2.2 安装CUDA7.0

  安装CUDA有两种方法,

  离线.run安装:从官网下载对应版本的.run安装包安装。

  在离线.deb安装:deb安装分离线和在线,我都尝试过都安装成功了,官网下载地址

deb在线安装:切换到下载的deb所在目录,执行下边的命令
    sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb  
    sudo apt-get update  
    sudo apt-get install cuda  

然后重启电脑。

Tips:如果安装不成功,卸载多试几次。

 

 

2.2.3 设置环境变量:

(设置环境变量时,首先确定好cuda安装路径和位置)

在/etc/profile中添加CUDA环境变量
sudo gedit /etc/profile

添加内容:

PATH=/usr/local/cuda/bin:$PATH  
export PATH

保存后, 执行下列命令, 使环境变量立即生效

source /etc/profile

同时需要添加lib库路径: 在 /etc/ld.so.conf.d/加入文件 cuda.conf, 内容如下

/usr/local/cuda/lib64 

保存后,执行下列命令使之立刻生效

sudo ldconfig

 

2.2.3 安装CUDA SAMPLE

进入/usr/local/cuda/samples, 执行下列命令来build samples

sudo make all -j8

全部编译完成后, 进入 samples/bin/x86_64/linux/release, 运行deviceQuery

./deviceQuery 

如果出现显卡信息, 则驱动及显卡安装成功:

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 980 Ti"
  CUDA Driver Version / Runtime Version          7.5 / 7.0
  CUDA Capability Major/Minor version number:    5.2
  Total amount of global memory:                 6136 MBytes (6433828864 bytes)
  (22) Multiprocessors, (128) CUDA Cores/MP:     2816 CUDA Cores
  GPU Max Clock rate:                            1076 MHz (1.08 GHz)
  Memory Clock rate:                             3505 Mhz
  Memory Bus Width:                              384-bit
  L2 Cache Size:                                 3145728 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.0, NumDevs = 1, Device0 = GeForce GTX 980 Ti
Result = PASS

*注:我安装时CUDA Driver Version和CUDA Runtime Version不同,不过暂时不影响,安装时候两个版本最好一样。

  如果没有这些信息,那肯定是安装不成功,可以逐步排除一下原因!

 

第三部分:安装cuDNN

下载cudnn-6.5-linux-x64-v2.tgz,官网申请不到,网上自己找下载地址

tar -zxvf cudnn-6.5-linux-x64-v2.tgz  
cd cudnn-6.5-linux-x64-v2  
sudo cp lib* /usr/local/cuda/lib64/  
sudo cp cudnn.h /usr/local/cuda/include/

*注意:在安装时先查看一下/usr/local/路径下cuda文件夹的名称,7.0安装之后名称默认为cuda-7.0,最好将文件夹名称改为cuda,方便后续操作。

 更新软连接:

cd /usr/local/cuda/lib64/  
sudo rm -rf libcudnn.so libcudnn.so.6.5  
sudo ln -s libcudnn.so.6.5.48 libcudnn.so.6.5  
sudo ln -s libcudnn.so.6.5 libcudnn.so 

 

第四部分:安装Intel MKL 或Atlas

Atlas安装命令(caffe默认也是atlas):

sudo apt-get install libatlas-base-dev

 

第五部分:安装opencv3.0

1)下载并编译OpenCV(官网原版OpenCV:http://opencv.org/), 或者使用本站提供的修改版的安装包 Install-OpenCV-master (下面的安装方式使用该包完成,安装包修改了dependencies.sh文件并增加了OpenCV 3.0.0的安装文件,同时保留了原来的2.3x和2.4x版)
2)进入目录 Install-OpenCV/Ubuntu/3.0
3)执行脚本
切换到文件所在文件夹,然后安装依赖项
sudo sh Ubuntu/dependencies.sh

切换目录Ubuntu\3.0\安装OpenCV 3.0.0rc1:

sudo sh opencv3_0_0-rc1.sh

保证网络畅通,因为软件需要联网这里时间较长,请耐心等待。

 

 

第六部分:安装Caffe所需要的Python环境

按caffe官网的推荐使用Anaconda
切换到文件所在目录,执行:
bash Anaconda-2.3.0-Linux-x86_64.sh

 

第七部分:安装python依赖库

Caffe下载 ,进入caffe-master文件夹的python目录,执行如下命令:

for req in $(cat requirements.txt); do pip install $req; done 

下载安装所需依赖包。

 

第八部分:编译Caffe

安装Caffe依赖项:

 

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

 

 

进入caffe-master目录,复制一份Makefile.config.examples

cp Makefile.config.example Makefile.config

修改其中的一些路径,如果前边和我说的一致,都选默认路径的话,那么配置文件见博客Caffe配置

在配置好Makefile.config之后,需要对Makefile进行修改(实现对OpenCV 3.x的支持)

查找“Derive include and lib directories”一节,修改“LIBRARIES +=”的最后一行,增加opencv_imgcodecs

opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

保存,退出。

 

"-j8"是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。

cd caffe-master  #打开caffe所在文件夹
cp Makefile.config.example Makefile.config  #change setting in Makefile.config
mkdir build
cd build
cmake ..
make all -j8  #在build文件夹下进行编译cd ..make test -j8 
make runtest -j8  #使用CPU多核同时进行编译
 
编译Python和Matlab用到的caffe文件(如果安装了Matlab)
make pycaffe -j8
make matcaffe -j8

 

第九部分:使用MNIST数据集进行测试

Caffe默认情况会安装在$CAFFE_ROOT,就是解压到那个目录,例如:$ home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正 常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples /mnist.html

1. 数据预处理

sh data/mnist/get_mnist.sh

 

2. 重建lmdb文件。Caffe支持三种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,根据自己需要选择不同输入吧。

sh examples/mnist/create_mnist.sh

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

 

sh examples/mnist/train_lenet.sh

至此,Caffe安装的所有步骤完结。

后续继续更新。

 

参考博客:

2015.08.17 Ubuntu 14.04+cuda 7.0+caffe安装配置

Caffe + Ubuntu 15.04 + CUDA 7.0 新手安装配置指南

 Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明

 

 

附录:

 在编译caffe代码时,之前的各种错误会显现出来,这时候会出现各种各样的问题:

问题1:

Error: make all make test
.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&)

原因:caffe代码中并没有build文件夹,需要新建build文件夹之后再进行编译:

cd caffe-master  #打开caffe所在文件夹
cp Makefile.config.example Makefile.config  #change setting in Makefile.config
mkdir build
cd build
cmake ..
make all -j8  #在build文件夹下进行编译
cd ..
make test -j8
make runtest -j8  #使用CPU多核同时进行编译

 

问题2:

CMake Error at cuda_compile_generated_lrn_layer.cu.o.cmake:206 (message)

在成功安装cuda之后,由于路径设置问题,或者路径冲突会产生以下错误,解决方法:

1.在caffe文件夹下,通过下面该命令查看配置路径:

sudo find / -name nvcc

2.通过下面命令查看是否cuda路径冲突:

$PATH

如果显示结果有两个cuda环境变量,那么需要移除旧的路径,更新PATH。

3.重新设置cuda环境变量

在/etc/profile中添加CUDA环境变量  

PATH=/usr/local/cuda/bin:$PATH  
export PATH

然后注销或重启(因为注销或重启之后PATH会从 ~/.bash_profile文件中重新读取)

 

问题3:cuDNN使用

安装cudnn-6.5-linux-x64-v2.tgz之后,并在Makefile.config中设置

USE_CUDNN := 1

打开CUDNN加速,但是在使用命令

make test -j8

对test进行编译时出现问题,至今未解决。

 

 

Linux一些常用命令记录及解释:

1.程序安装

  本地安装 命令格式  

  sudo dpkg -i softname.deb

  其中dpkg为Debian Package的缩写,dpkg常用命令有: -i 安装 ;-r 卸载

  dpkg命令是一个底层的安装工具,apt是dpkg上层工具,用于从远程获取软件包以及处理复杂的软件包之间的关系。

  apt常用的用法,apt-get后面接install 或remove对软件进行安装和卸载

  apt-get install <package>

 

2.设置系统root密码

  如果使用光盘安装Ubuntu,按照安装向导来进行帐号、分区等设置,而在这个安装向导程序中没有提示进行root密码的设置,所以在 Ubuntu安装好后需要手动设置root密码。而如果是跳过安装向导,点击桌面上的Install图标来进行安装的话,在安装过程中则会提示设置 root密码。当然,如果需要修改root密码也可以使用以下方法:打开终端,在终端中输入命令:

sudo passwd root

接下来,按照提示一步步设置系统的root密码。

[sudo] password for jjxiaoyan:
输入新的 UNIX 口令:
重新输入新的 UNIX 口令:
passwd:已成功更新密码
口令:

 

3.删除文件夹和文件

在ubuntu里面有些文件夹通过右键方式无法删除,这时候就需要使用命令来进行删除。

删除文件:

cd /usr/local/src      #打开文件所在位置
sudo rm ./file-name  #删除文件

删除文件夹:

cd /usr/local/src
sudo rm -r ./folder-name

 3. 使用命令更改文件或文件夹名

sudo mv 旧文件名 新文件名

 

Caffe系统搭建 —— Ubuntu14.04 + CUDA7.0 + opencv3.0

标签:

原文地址:http://www.cnblogs.com/empty16/p/4793404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!