深度学习:Caffe安装记录

本文系转载后整理,添加部分自己的理解,更加清晰,同时也可参看 原文链接

linux(ubuntu14.04)+GPU+cuda6.5+caffe+openCV2.4.9+matlab2014a+python的新手配置(修改版)

特别鸣谢 zhouchao_fight,langb2014,wujieqi01,Dachao_Xu 等好友帮助!!!

 

 

******************************************************************************************************

ubuntu14.04的安装

******************************************************************************************************

1.先下载一个ultraios,无需激活,然后制作u盘启动工具,具体教程请看教程

 

2.制作好u盘启动工具之后。然后就是安装ubuntu14.04,在这之前要先下载好ubuntu14.04,然后找到first boot,然后启动u盘就可以安装系统了,安装分区问题见Swimbird博 客:博文链接

 

3.安装好ubuntu14.04之后,开始配置电脑的校园动态ip账号,直接找到网络的编辑设置里面的ipv4,点击手动,然后输入动态ip,子掩码,和网关,服务器地址就可以进入联网状态了。

******************************************************************************************************

  NVIDIA安装

******************************************************************************************************

准备工作,按照caffe官网要求:网址链接 ,进行配置。首先刚装的系统需要更新

 

$ sudo apt-get update

 

然后

 

$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev

 

因为系统是14.04,所以继续进行第二步操作

 

$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

 

然后安装开发所需要的一些基本包:

$ sudo apt-get install build-essential

 

1.首先在BIOS设置里选择用Intel显卡来显示或作为主要显示设备(开机进入bios设置,找到advanced中的VGA configuration设置,将intel显卡设为primary)。

 

2.将nouveau添加到黑名单,防止它启动

$ cd /etc/modprobe.d
$ sudo gedit nvidia-graphics-drivers.conf

写入:blacklist nouveau
保存并退出: wq!
检查:$ cat nvidia-graphics-drivers.conf
对于:/etc/default/grub,添加到末尾。

$ sudo gedit /etc/default/grub

末尾写入:rdblacklist=nouveau nouveau.modeset=0
保存并退出: wq!
检查:$ cat /etc/default/grub

 

3. 进入Ubuntu, 按 ctrl+alt+F1 进入tty1, 登录tty1后输入如下命令

$ sudo service lightdm stop

 

4.安装NVIDIA ,http://www.geforce.cn/drivers

找到对应NVIDIA的版本(我的是linux340.76.run),进入到NVIDIA的目录下:

$ cd /home/username

然后

$ sudo sh linux340.76.run ,一直确定安装完。

 

5.重新启用桌面的命令为:

 

$ sudo service lightdm start

然后电脑桌面大大改变了,证明安装成功。然后关机进入bios中,更改VGA configuration

为NVIDIA显卡,此时电脑看着就清晰多了,中途如果显示器无信号输入,重启2-3次,基本上GPU显卡驱动已经安装完成。

 

6.在终端输入:

$ cat /proc/driver/nvidia/version

验证驱动安装是否成功。

 

******************************************************************************************************

 CUDA6.5安装

******************************************************************************************************

CUDA 官网已经更新成7.0版本了,6.5版本请 点击下载 。

(注释:下载链接来自博文http://www.cnblogs.com/platero/p/3993877.html)

 

$ sudo chmod +x ./ cuda_6.5.14_linux_64.run

$sudo sh cuda*.run --noexec --target .(.前面有空格)

 

运行上面命令将CUDA6.5解压成下面三个文件

分别为:

CUDA安装包: cuda-linux64-rel-6.5.14-18749181.run

NVIDIA驱动: NVIDIA-Linux-x86_64-340.29.run

SAMPLE包: cuda-samples-linux-6.5.14-18745345.run

(这里就不安装NVIDIA驱动),开始安装CUDA,

 

$ sudo ./cuda-linux64-rel-6.5.14-18749181.run

 

安装完成后需要 cd /etc/profile 中

①添加环境变量

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

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

$source /etc/profile

②添加lib路径

在/etc/ld.so.conf.d/新建文件cuda.conf,并编辑

cd /etc/ld.so.conf.d

 

$ sudo touch cuda.conf 

$ sudo gedit cuda.conf

 

/usr/local/cuda-6.5/lib64

执行下列命令使之立刻生效

$ sudo ldconfig

继续,安装CUDA SAMPLE,安装下列依赖包

 

$sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

 

然后用下述命令安装sample文件

 

$sudo ./cuda-samples-linux-6.5.14-18745345.run

 

完成后编译Sample文件,更若干分钟后

 

$ cd /usr/local/cuda-6.5/samples

$ sudo make

 

 编译完成后, 进入 samples/bin/x86_64/linux/release

 

$ sudo ./deviceQuery 

 

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

./deviceQuery Starting...

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

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 750 Ti"
 CUDA Driver Version / Runtime Version          6.5 / 6.5
 CUDA Capability Major/Minor version number:    5.0
 Total amount of global memory:                 2048 MBytes (2147155968 bytes)
 ( 5) Multiprocessors, (128) CUDA Cores/MP:     640 CUDA Cores
 GPU Clock rate:                                1084 MHz (1.08 GHz)
 Memory Clock rate:                             2700 Mhz
 Memory Bus Width:                              128-bit
 L2 Cache Size:                                 2097152 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 1 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 Bus ID / PCI location ID:           1 / 0
 Compute Mode:
    < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForceGTX 750 Ti
Result = PASS

 

*****************************************************************************************************

  安装BLAS

*****************************************************************************************************

 

按照官网介绍的安装blas

 

$sudo apt-get install libatlas-base-dev

安装一下依赖库

$ 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模型中的配置文件:Makefile.config
把配置对应部分更改成我下面对应的内容就行了,blas其他的地方就默然就行了,不用动
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib

)

******************************************************************************************************

 OpenCV2.4.9安装

******************************************************************************************************

然后是安装OpenCV:

Github上的脚本:脚本下载

下载该脚本,进入Ubuntu/2.4 目录, 运行下面语句给所有shell脚本加上可执行权限

chmod +x *.sh

然后运行下面语句安装最新版本:

$ sudo ./opencv2_4_9.sh

网上有些教程说会报错,但是我安装没有出现错误

(若中途出现问题的如下

opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51):error: a storage class is not allowed in an explicit specialization

解决方法:http://code.opencv.org/issues/3814  下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件, 重新build)。

测试opencv如下:新建一个.cpp文件和一个abc.jpg图片放到一个文件夹中。

建一个DisplayImage.cpp:
    #include <cv.h>   
    #include <highgui.h>   
    #include <iostream>   
    using namespace cv;  
    using namespace std;  
    int main(int argc,char **argv)  
    {  
        Mat image;  
        image = imread(argv[1],1);  
      
        if(argc != 2 || !image.data)  
        {  
            cout << "No image data\n";  
            return -1;  
        }  
      
        namedWindow("Display Image",CV_WINDOW_AUTOSIZE);  
        imshow("Display Image",image);  
        waitKey(0);  
        return 0;  
    }  
命令行:

$g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs`

(这个命令中的单引号不是平常的单引号,而是键盘上tab键上面那个符号,直接复制粘贴过去就OK)

 

$./DisplayImage abc.jpg

但是你会发现出错了,坑爹,配置过程是如此艰难,我们来看看解决方案:

如果遇到这个错误,参考http://www.foreverlee.net/

   /usr/bin/ld: cannot find -lcufft

   /usr/bin/ld: cannot find -lnpps

   /usr/bin/ld: cannot find -lnppi

   /usr/bin/ld: cannot find -lnppc

   /usr/bin/ld: cannot find -lcudart

编译命令改为

$ g++ -L /usr/local/cuda/lib64/ DisplayImage.cpp -o DisplayImage `pkg-config --cflags --libs opencv`
$./DisplayImage abc.jpg
 

然后可以显示出图片,应该是成功了。

 

******************************************************************************************************

 Python的安装

******************************************************************************************************

 

本部分是参考博文:http://ouxinyu.github.io/Blogs/20140723001.html

不安装也行,系统本来就自带 python嘛

1. 安装IDE运行环境

选择一个适合你的IDE运行环境,我是用的是Spyder,因为它内置了 iPython 环境,Caffe有不少的程序是基于 iPython 环境完成的。安装方法很简单,直接在Ubuntu软件中心搜索“spyder”即可安装。

2. iPython NoteBook 安装

另外一个比较推荐的方法是使用iPyhthon NoteBook(基于浏览器的Python IDE),特别是适合需要用Python做教程的老师们,可以直接导出.py, .ipynb, html格式,安装步骤如下:

$ sudo apt-get install -y ipython-notebook pandoc

启动(自动打开浏览器):

$ ipython nootbook

一个简单的使用iPython NoteBook生成的html的例子:examples_notebook.html  example_notebook.ipynb

 

******************************************************************************************************

 Matlab2014a安装(matlab2015同样适应)

******************************************************************************************************

接着前面的工作,就是安装MATLAB:

(一)下载MATLAB Linux安装包,并解压

(二)可执行权限: sudo chmod +x mount_matlab2014a
                                  ./mount_matlab2014a
(三)挂在镜像,cd进入,执行安装: sudo ./install

(四)然后安装步骤和Windows下相同

(五)完成激活后验证是否安装成功: sudo /usr/local/MATLAB/R2014a/bin/matlab

(六)添加应用和图标到启动菜单中: sudo gedit /usr/share/applications/Matlab.desktop, 把下载目录中Matlab.desktop

内容如下:

 [Desktop Entry]
 Name=Matlab
 GenericName=Matlab R2014a
 Comment=Matlab R2014a: The Language of the Techinical Computing
 Exec=../matLab/bin/matlab -desktop //-desktop前面有空格   

 Icon=../matLab/icons/Matlab.png
 StartupNotify=true
 Terminal=false
 Type=Application
 Categories=Development;

文件中的内容拷贝进去即可修改桌面启动菜单权限,显示home文件夹下的隐藏文件: Ctrl + h,然后修改MATLAB在桌面快捷键权限:

$ sudo chmod 777 -R ./.matlab

在面板Development 中找到matlab 图标,然后添加到桌面,最后运行

unmount_matlab2014a将镜像ISO卸载掉。

 

******************************************************************************************************

 caffe的安装

 

******************************************************************************************************

现在安装和用mnist测试一下caffe,

先下载caffe,点击下载

1. 安装pycaffe必须的一些依赖项:

 

$ sudo apt-get install -y 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 -y protobuf-c-compiler protobuf-compiler

 

2.切换到Caffe的文件夹,生成Makefile.config配置文件,执行:
 

$ cp Makefile.config.example Makefile.config

 

4. 配置Makefile.config文件(红字部分为主要针对修改部分)

a. 启用GPU,添加注释"#"

# CPU_ONLY := 1

b. 配置一些引用文件(增加部分主要是解决新版本下,HDF5的路径问题,没有hdf5文件就不用更改)

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. 配置路径,实现caffe对Python和Matlab接口的支持

PYTHON_LIB := /usr/local/lib

MATLAB_DIR := /usr/local/MATLAB/R2014a (替换成自己的路劲)

5. 配置Makefile文件(实现对OpenCV 2.x的支持)

查找“Derive include and lib directories”一节,在“LIBRARIES +=”所在语句后添加以下命令opencv_imgcodecs opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

6. 编译caffe

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

$ make all -j8

$ make test -j8

$ make runtest -j8

编译Python和Matlab用到的caffe文件

$ make pycaffe -j8

$ make matcaffe -j8

 

然后在编译matlab是会遇到错误,由于matlab版本不同而支持的编译器版本不同,所以会出现问题。

Matlab 2014a(2015a)的版本是支持版本4.7.x所以在使用matlab调用mex文件的时候,基本上都会报错,根据报错信息,考虑如下两步解决方案。

 

1. 降级安装gcc/g++版本为4.7.x

(1). 下载gcc/g++ 4.7.x

$ sudo apt-get install -y gcc-4.7

$ sudo apt-get install -y g++-4.7

(2). 链接gcc/g++实现降级

$ cd /usr/bin

$ sudo rm gcc

$ sudo ln -s gcc-4.7 gcc

$ sudo rm g++

$ sudo ln -s g++-4.7 g++

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

$ sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20 (libstdc++.so.6.0.20的版本,可能因为系统不同而不同,使用最新的就可以了。)

目录切换到 /usr/local/MATLAB/R2014a/sys/os/glnxa64/ ,非常重要!

$ sudo mv libstdc++.so.6 libstdc++.so.6.backup (仅仅是备份,可以不操作)。

$ sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6

$ sudo ldconfig -v

 

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

接下来就是测试。

 

******************************************************************************************************

 mnist测试

 

******************************************************************************************************
如果网速不行可以到http://yann.lecun.com/exdb/mnist/手动下载4个数据包。

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格式的数据集

(这里可能会报错,主要是create_mnist.sh里面的路径需要修改,找到路径配置前面加上自己的安装路径就可以进行测试了)

默认是下面三行,自己注释掉,更改为自己的路径

: '
EXAMPLE=examples/mnist
DATA=data/mnist
BUILD=build/examples/mnist
'

# 下面就是我自己的路径

EXAMPLE=/home/li/caffe/examples/mnist
DATA=/home/li/caffe/data/mnist
BUILD=/home/li/caffe/build/examples/mnist

 

然后重试命令语句:

$ sh examples/mnist/create_mnist.sh
 

3. 训练mnist

$ sh examples/mnist/train_lenet.sh

会报错,因为这里也要修改相应的路径问题。找到下面三个文件进行相应修改

 

trian_lenet.sh

#!/usr/bin/env sh
#先注释掉
: '
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
'

#修改为自己的绝对路径

/home/li/caffe/build/tools/caffe train --solver=/home/li/caffe/examples/mnist/lenet_solver.prototxt

 

lenet_solver.prototxt
里面的路径相应修改为绝对路径

lenet_train_test.prototxt
里面的路径相应修改为绝对路径


重试命令

$ sh examples/mnist/train_lenet.sh

 

到此,所有的教程就结束了~~~~~~

 

新打开一个终端,输入 nvidia-smi,还可以查看GPU使用情况~~~~(zhouchao_fight教我的)

(如果进不了linux开机界面只剩下壁纸和鼠标,一定要记住将系统设置所有的电脑更新都关掉,然后个人建议最好不要安装mkl,安装后出现了很多错误,解决起来很烦【卸载nvidia再安装起来】或者可以安装一下其他的另外两个库)

===============================================================

参考链接
1.http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html
2.https://developer.nvidia.com/cuda-downloads

3.  http://caffe.berkeleyvision.org/

4.  http://94it.net/a/jingxuanboke/2014/0831/395722_4.html

5.  http://94it.net/a/jingxuanboke/2015/0118/451320.html

6.   http://www.cnblogs.com/platero/p/3993877.html

文章中的方法感谢热心的网友:

 http://blog.csdn.net/u010089908/article/details/43538677

===============================================================

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微风❤水墨

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值