微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

caffe+ubuntu

转自:http://blog.csdn.net/shiorioxy/article/details/52652831

Caffe + Ubuntu 16.04 + CUDA 8 新手安装配置指南
http://blog.csdn.net/shiorioxy/article/details/52682108
(更新所有软件到最新版)

特别说明:
0. Caffe 官网地址:http://caffe.berkeleyvision.org/
1. 本文为作者亲自实验完成,但仅限用于学术交流使用,使用本指南造成的任何不良后果由使用者自行承担,与本文作者无关,谢谢!为保证及时更新,转载请标明出处,谢谢!
2. 本文使用2016年9月27日下载的caffe-master版本,运行平台为:Ubuntu 15.04/16.04,CUDA7.5/8,cuDNN v5.1,Intel Parallel Studio XE Cluster 2016,OpenCV3.1.0,Matlab 2014a/2016a
3. 为了方便大家使用,我提供一个百度云盘,用于分享部分安装过程中需要用到的软件包和链接地址(所有软件包仅供学术交流使用,请大家尽量去官网下载,Matlab 百度禁止分享,抱歉欠奉。)。百度云盘链接:http://pan.baidu.com/s/1qX1uFHa密码:wysa
4. 最后更新时间:2016年9月27日。

版本说明:
关于 GCC 和 G++ 版本问题 
   Matlab 2014a gcc/g++ 4.7.x,Matlab 2016a gcc/g++ 4.9.x
   Ubuntu 15.04 gcc/g++ 4.9.x,Ubuntu 16.04 gcc/g++ 5.4.x
   原则上Matlab需要和Ubuntu版本一致,由于CUDA 8只支持16.04,而且需要GCC 5.4.x 进行编译,而CUDA 7.5不支持 Ubuntu 16.04 因此Matlab会有一些奇葩,有时按照降级(或强制安装)的方法可以正常使用,有时却会报错,怀疑和显卡驱动有关。
   因此,为了避免麻烦,建议:
   1. 不使用Matlab,可以考虑Ubutnu16.04 + CUDA8
   2. 使用Matlab,考虑Ubuntu15.04 + CUDA7.5 + Matlab X(GCC/G++根据Matlab版本自行匹配)
   下面仍然以Ubuntu 15.04 + CUDA 7.5 + Matlab 2014a 为例.

本文主要包含5个部分,包括
- 第一部分Linux安装
- 第二部分 nVidia CUDA Toolkit的安装(*.deb方法
- 第三部分 Matlab 的安装
- 第四部分 Caffe-Master的安装和测试

第一部分 Linux安装

我的分区设置如下:
\ 根分区: 100G,
Swap交换分区:128G(等于内存大小) ,小于16G的内存,就设置成内存的1.5-2倍
boot分区:200M
Home分区:剩余的空间,多多益善
PS:解决启动分区错误

装双系统需要先安装Windows 再安装Ubuntu。如果遇到启动分区表损坏,需要还原Windows分区:

 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
$ sudo gedit etc/default/grub 设置:GRUB_DEFAULT = 2 $ sudo update-grub

第二部分:nVidia CUDA Toolkit的安装(*.deb方法

1. 安装 CUDA Toolkit

官方下载地址:https://developer.nvidia.com/cuda-toolkit

  
  
  • 1
  • 2
  • 3
  • $ sudo dpkg -i cuda-repo-ubuntu1504-75-local_7.518_amd64 $ sudo apt-get update $ sudo apt-get install -y cuda

    2. 安装 nVidia cuDNN library (cudnn-7.5-linux-x64-v5.1)

    官方下载地址:https://developer.nvidia.com/cudnn

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    $ tar zxvf cudnn7.5-linux-x64-v5.1.tgz $ cd cuda $ sudo cp include/cudnn.h /usr/local/include $ sudo cp lib64/libcudnn.* /usr/local/lib $ sudo ln -sf /usr/local/lib/libcudnn.so.5.1.3 /usr/.5 $ sudo ln -sf /usr/.5 /usr/.so $ sudo ldconfig -v

    (可选)3. 处理ubuntu 16.04 GCC版本过高,编译Caffe-master报错问题

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
    • 1
    • 2
    • 3
    • 4
    • 5
    $ sudo gedit /usr/local/cuda/include/host_config.h 搜索: #error -- unsupported GNU version! gcc versions later than 5.3 are not supported! 修改为: //#-- unsupported GNU version! gcc versions later than 5.3 are not supported!

    第三部分 Matlab安装和调试(以Matlab 2014a为例)

    1.下载
    由于该软件为商业软件,请大家自行寻找,安装学习,并确保不使用做商业目的,下载24小时删除……
    2.预准备
    将Mathworks.Matlab.R2014a.Unix.iso - 右键 - 使用磁盘映像挂载器打开”,进入装载的虚拟光盘,拷贝全部文件至home/Matlab 文件夹(PS:取名不要有空格)

    复制Crack/install.jar至 home/Matlab/Java/jar/ 并覆盖源文件

      
      
  • 1
  • 2
  • 3
  • $ sudo cp install.jar /home/Matlab/java/jar/ $ chmod a+x Matlab -R $ sudo ./install

    选项:不使用Internet安装
    序列号: 12345-67890-12345-67890
    认路径:/usr/local/MATLAB/R2014a
    勾选从认启动路径创建符号链接(实现在任意位置运行matlab启动程序)
    激活文件:license_405329_R2014a.lic
    拷贝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64

      
      
  • 1
    • 1
    $ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/

    5.解决编译器gcc/g++版本问题。
    因为Ubuntu 15.04的gcc/g++版本是4.9.2,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla调用mex文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。
    A. 降级安装gcc/g++版本为4.7.x

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    $ sudo apt-get install -y gcc-4.7 g++-4.7 $ cd /usr/bin $ sudo mv gcc gcc-4.9.sudo ln -s gcc-4.7 gcc $ sudo mv g++ g++-sudo ln -s g++-4.7 g++

    B. 暴力引用新版本GLIBCXX_3.4.20

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • $ sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.20 $ cd /usr/local/MATLAB/R2014a/sys/os/glnxa64 $ sudo mv libstdc++.6 libstdc++.6.backup $ sudo ln -s libstdc++.20 libstdc++.6 $ sudo ldconfig -v

    通过命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已经成功包含了GLIBCXX_3.4.21,如果已经存在,基本上就成功了。

    第四部分 Caffe-Master的安装和测试

    一. 安装BLAS
    这里可以选择(ATLAS,MKL或者OpenBLAS),我这里使用MKL,因为它最快。首先下载并安装英特尔® 数学内核库 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下载链接是:https://software.intel.com/en-us/qualify-for-free-software/student, 使用学生身份(邮件 + 学校)下载Student版,填好各种信息,可以直接下载,同时会给你一个邮件告知序列号。下载完之后,要把文件解压到home文件夹(注意任何一级文件夹不能包含空格,否则安装会失败)

    $ tar zxvf parallel_studio_xe_2016.tar.gz (如果你是直接拷贝压缩文件过来的)
    $ chmod a+x parallel_studio_xe_2016 -R
    $ sh install_GUI.sh

    PS: 安装的时候,建议使用root权限安装,过程中会要求输入Linux的root口令。(设置方法:命令行:$ sudo passwd)

    二. MKL与CUDA的环境设置
    1.新建intel_mkl.conf, 并编辑之:

      
      
  • 1
  • 2
  • 3
  • $ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf /opt/intel/lib/intel64 /opt/intel/mkl/lib/intel64

    2.新建cuda.conf,并编辑之:

    .d/cuda.conf
    /usr/local/cuda/lib64
    /lib

    3.完成lib文件链接操作,执行:

      
      
  • 1
  • $ sudo ldconfig -v

    三.安装OpenCV 3.1.0
    1.下载并编译OpenCV(官网原版OpenCV:http://opencv.org/), 或者使用我提供的修改版的安装包(前面的百度云下载)(下面的安装方式使用该包完成,安装包修改了dependencies.sh文件增加了OpenCV 3.0.0的安装文件
    2.切换到文件保存的文件夹,然后安装依赖项和OpenCV:

      
      
  • 1
  • 2
    • 1
    • 2
    $ sudo sh Ubuntu/dependencies.sh $ sudo sh Ubuntu/3.0/opencv3_0_0.sh

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

    四、安装其他依赖项
    1.Google Logging Library(glog),下载地址:https://code.google.com/p/google-glog/,然后解压安装:

      
      
  • 1
  • 2
  • 3
  • 4
    • 1
    • 2
    • 3
    • 4
    $ tar zxvf glog-0.3.3.tar.gz $ ./configure $ make $ sudo make install

    如果没有权限就chmod a+x glog-0.3.3 -R,或者索性 chmod 777 glog-0.3.3 -R,装完之后,这个文件夹就可以kill了。

    2.其他依赖项,确保都成功

    $ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler protobuf-c-compiler protobuf-compiler 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

    五、安装Caffe并测试
    1.切换到Caffe-master的文件夹,生成Makefile.config配置文件,执行:

      
      
  • 1
  • $ cp Makefile.config.example Makefile.config

    4.配置Makefile.config文件(仅列出修改部分)
    a. 启用CUDNN,去掉”#”

      
      
  • 1
  • USE_CUDNN := 1

    b. 配置一些引用文件增加部分主要是解决新版本下,HDF5的路径问题)

      
      
  • 1
  • 2
  • INCLUDE_Dirs := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include LIBRARY_Dirs := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

    c. 启用Intel Parallel Studio XE 2016

      
      
  • 1
  • BLAS := mkl

    d. 配置路径,实现caffe对Python和Matlab接口的支持

      
      
  • 1
  • 2
  • PYTHON_LIB := /usr/local/lib MATLAB_DIR := /usr/local/MATLAB/R2014a

    c. 启用OpenCV 3.0,去掉”#”

      
      
  • 1
  • OPENCV_VERSION =3

    6.编译caffe-master!!!”-j16”是使用cpu的多核进行编译,可以极大地加速编译的速度,建议使用。

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • $ make all -j16 $ make test -j16 $ make runtest -j16 $ make pycaffe -j16 $ make matcaffe -j16

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

      
      
  • 1
  • $ sh data/mnist/get_mnist.sh

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

      
      
  • 1
  • $ sh examples/mnist/create_mnist.sh

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

    3.训练mnist

    $ sh examples/mnist/train_lenet.sh

    至此,Caffe安装的所有步骤完结,下面是一组简单的数据对比,实验来源于MNIST数据集,主要是考察一下不同系统下cpu和GPU的性能。可以看到明显的差别了,虽然MNIST数据集很简单,相信复杂得数据集,差别会更大,Ubuntu+GPU是唯一的选择了。

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    测试平台1:i7-4770K/16G/GTX 770/CUDA 6.5 MNIST Windows8.1 on cpu620s MNIST Windows8on GPU:190s MNIST Ubuntu 14.04 270s MNIST Ubuntu 160s MNIST Ubuntu on GPU with cuDNN:30s Cifar10_full on GPU wihtout cuDNN:73m45s = 4428s (Iteration 70000) Cifar10_full 20m7s = 1207s (Iteration 70000
      
      
  • 1
  • 2
  • 测试平台2:技嘉P35X v3,i7-4720HQ@2.6G/16G/NVidia GTX 980 8G MNIST Ubuntu 15.04 33s
    3:Dell 7910,E5 2623v3 3.0G *2 /128G/ NVidia Titan X 12G
    MNIST Ubuntu 23s (真是逆天啊!)
    对比测试12*E5-2620(12cpus)/128G/Tesla K20M/CUDA5.5/CentOS 6.4
    MNIST CentOS 6.4 294s
    对比测试2:Tesla K40M/CUDA6.5/ubuntu 14.04
    MNIST 30s
    对比测试3:GTX 660/CUDA649s

    对比试验1是一个不太公平的测试,毕竟性能差很大,很可能不单单是由Tesla K20s 和GTX 770带来的,也可能是因为CentOS或者是CUDA5.5(without cuDNN)的影响,但总体上的结论和Caffe官网的 reference performance numbers 一致,对于普通用户:GTX的性价比高很多。对比试验2展现了Tesla K40的强大性能,相信对于复杂图像,它应该有更强劲的表现。(感谢香港城市大学 Ph.D Jingjing、南京理工大学 Ph.D JinLu、华中科技大学 MS LiuMaolin 提供的测试环境和测试数据。)

    原文地址:https://www.jb51.cc/ubuntu/355761.html

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐