转载自http://blog.csdn.net/langb2014/article/details/44516701
本人是一名新手,无论是学习linux还是学习caffe都是个无名小卒。因为安装了很多次都没成功,也没有配置成功caffe,所以此次安装成功做个记录,方便以后再次使用。言归正传,
******************************************************************************************************
ubuntu14.04的安装
******************************************************************************************************
1.先下载一个ultraios,无需激活,然后制作u盘启动工具,具体教程请看百度经验教程
http://jingyan.baidu.com/article/d169e186800f02436711d87b.html
2.制作好u盘启动工具之后。然后就是安装ubuntu14.04,在这之前要先下载好ubuntu14.04,然后找到first boot,然后启动u盘就可以安装系统了
,安装分区问题见Swimbird博 客:http://blog.sina.com.cn/s/blog_5f0a505101017ruf.html
3.安装好ubuntu14.04之后,开始配置电脑的校园动态ip账号,直接找到网络的编辑设置里面的ipv4,点击手动,然后输入动态ip,子掩码,和网关,服务器地
址就可以进入联网状态了。
******************************************************************************************************
NVIDIA安装
******************************************************************************************************
然后是一些准备工作,按照caffe的官网http://caffe.berkeleyvision.org/install_apt.html
进行配置,首先刚装的系统需要
$ 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安装
******************************************************************************************************
$ sudo chmod +x ./ cuda_6.5.14_linux_64.run
将CUDA6.5解压成三个文件($sudo sh cuda*.run --noexec --target .)(.前面有空格)
分别为:
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
安装完成后需要在/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
*****************************************************************************************************
选择性安装MKL或BLAS
*****************************************************************************************************
接着继续,安装Intel MKL ,到intel网站申请一个mkl账号:https://software.intel.com/en-us/qualify-for-free-software/student
mkl的具体下载和介绍:http://blog.csdn.net/gengshenghong/article/details/7011939
$sudo dpkg --add-architecture i386
$sudo apt-get update
$sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
$sudo ./adb
其中我安装会有些东西安装不了,应该没事。
解压安装包,下面有一个install_GUI.sh文件, 执行该文件,会出现图形安装界面,根据说明一步一步执行即可。注意: 安装完成后需要添加library路径
$sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
在文件中添加内容/opt/intel/lib
/opt/intel/mkl/lib/intel64
注意把路径替换成自己的安装路径。 编辑完后执行$ sudo ldconfig
==============================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
******************************************************************************************************
OpenCV2.4.9安装
******************************************************************************************************
然后是安装OpenCV:
Github上的脚本:https://github.com/jayrambhia/Install-OpenCV
下载该脚本,进入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键上面那个符号)
$./DisplayImage abc.jpg
但是你会发现出错了,坑爹,配置过程是如此艰难,我们来看看解决方案:
$ 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
1. 安装IDE运行环境
选择一个适合你的IDE运行环境,我是用的是Spyder,因为它内置了 iPython 环境,Caffe有不少的程序是基于 iPython 环境完成的。安装方法很简单,直接在Ubuntu软件中心搜索“spyder”即可安装。
2. iPython NoteBook 安装
另外一个比较推荐的方法是使用iPyhthon NoteBook(基于浏览器的Python IDE),特别是适合需要用Python做教程的老师们,可以直接导出.py, .ipynb, html格式,安装步骤如下:
启动(自动打开浏览器):
$ ipython nootbook
一个简单的使用iPython NoteBook生成的html的例子:examples_notebook.html example_notebook.ipynb
接着前面的工作,就是安装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卸载掉。
现在安装和用mnist测试一下caffe,
1. 安装pycaffe必须的一些依赖项:
4. 配置Makefile.config文件(仅列出修改部分)
a. 启用GPU,添加注释"#"
# CPU_ONLY := 1
b. 配置一些引用文件(增加部分主要是解决新版本下,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. 如果使用MKL的时候改为:
BLAS := mkl
d. 配置路径,实现caffe对Python和Matlab接口的支持
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2014a
最新版的caffe报错:building caffe: failed to see hdf5.h
解决:
sudo apt-get installlibhdf5-dev
然后配置文件中修改一下,
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
5. 配置Makefile文件(实现对OpenCV 2.x的支持)
查找“Derive include and lib directories”一节,修改“LIBRARIES +=”的最后一行,增加opencv_imgcodecs
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
(1). change the Makefile :
add "opencv_imagecodecs" to the last of LIBRARIES += opencv_core opencv_highgui opencv_imgproc;
(2). remove the files in build :
rm -rf ./build/*
(3). make all -j8
6. 编译caffe
(-j8)是使用CPU的多核进行编译,可以极大地加速编译的速度,建议使用。
编译Python和Matlab用到的caffe文件
1. 降级安装gcc/g++版本为4.7.x
(1). 下载gcc/g++ 4.7.x
(2). 链接gcc/g++实现降级
2. 暴力引用新版本GLIBCXX_3.4.20
通过命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下,是否已经成功包含了GLIBCXX_3.4.20,如果已经存在,基本上就成功了。
接下来就是测试。
如果网速不行可以到 http://yann.lecun.com/exdb/mnist/ 下载4个数据包。
1. 数据预处理
2. 重建lmdb文件。Caffe支持三种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,根据自己需要选择不同输入吧。
生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集
3. 训练mnist
(如果进不了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
文章中的方法感谢热心的网友:
suxuanq http://blog.csdn.net/u010089908/article/details/43538677
===============================================================