由于课题换成了关于分类的方向,所以跟着世界最火的潮流走,咱们只能做DML。伯克利的 caffe可能是比较流行的框架之一,它运算速度快,可以使用Python,matlab进行使用,更可以使用CUDA进行运算(当然这也是它难以安装的内容之一)。
先看caffe的主页的介绍,当然不翻墙不让看:https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p
国内墙了google,只好使用百度查,十分感谢下列或者转发,或者是原创的几位博主。
http://www.haodaima.NET/art/2823705
http://www.cnblogs.com/platero/p/3993877.html
http://www.tuicool.com/articles/EzANjy7
http://94it.Net/a/jingxuanboke/2015/0321/492734.html
http://blog.csdn.net/liuxiabing150/article/details/42503389
http://blog.csdn.net/kuaitoukid/article/details/40395617
当然,我可能运气比较背,或者是我的Linux用的不熟,或者make命令问题,或者包问题,楼上各位的问题我基本都碰到了,另外他们没碰到的问题我也碰到了(比如qt包没有,比如OpenCV的安装脚本不适合我的,反正是各种不适应啊 ),终于在一周左右的时间内解决了各种问题,成功运行了caffe的mnist例程。
当然routine的内容我能用别人的还是复用了,当然他们没遇到的错误,只好我自己来写,本来是个懒人,但是这次不记录还是说不过去了。原谅我当时没有记录出错的代码给大家搜索,因为当时心情真的不佳啊,呵呵。
我的基本步骤也按照以下几个步骤:
第一部分 Linux安装
第二部分 nVidia驱动和CUDA Toolkit的安装和调试
第三部分 MKL的安装
第四部分 Opencv的安装
第五部分 Caffe的安装和测试
第六部分 Python安装和调试
第七部分 Matlab安装和调试
第一部分 Linux安装
这个就不多讲了,找个u盘,找个ubuntu14.04的iso,找到winiso工具把iso烧制到u盘上,在你windows下划分一个不低于80G的区,删除了这个分区,看别人的教程装吧,这个没有什么特别的。
第二部分 nVidia驱动和CUDA Toolkit的安装和调试
首先你想用cuda必须有一块独显,而且必须是nvidia家的,不然就跳过这个步骤,当然我的是,so to be continue
2.1 安装build-essentials
sudo apt-get install build-essential 2.2 删除默认显示驱动
1. 将nouveau添加到黑名单,防止它启动
上面那条是nVidia官方提供的命令,不知道为什么在我这里会提示dracut是不存在的命令,也许是版本问题,或者少了什么包,不过无所谓,第二条命令也可以搞定,应该是一样的功能。 2.3 安装cuda,因为这个.run文件包含了驱动,所以我们可以不用分开安装了,直接大锅炒。
1. 首先在BIOS设置里选择用Intel显卡来显示或作为主要显示设备
然后【点击此链接】 下载CUDA 6.5.
2. 进入Ubuntu, 按 ctrl+alt+F1 进入tty, 登录tty后输入如下命令
sudo service lightdm stop
该命令会关闭lightdm。如果你使用 gdm或者其他的desktop manager, 请在安装NVIDIA驱动前关闭他。
3. 在纯命令行里边运行你下载的cuda6.5的run文件。
或者需要你用 sudo chmod +x这个文件,从而获得运行权限。
然后就是一路的 空格 到 100% yes 路径 yes之类,这个文件包含以下三个需要安装的内容:
1 CUDA安装包:
2 NVIDIA驱动:
3 SAMPLE包:
安装完以后在你个人的环境里设置
sudo gedit /home/yuername/.ba*
默认安装路径的话,就加入:
PATH=/usr/local/cuda-6.5/bin:$PATH export PATH 保存后更新链接 sudo ldconfig 而后保存你cuda的设置
在 /etc/ld.so.conf.d/加入文件 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 libglu1-mesa-dev
然后用下述命令安装sample文件
sudo ./cuda-samples-linux-6.5.14-18745345.run
完成后编译Sample文件, 整个过程大概10分钟左右
cd /usr/local/cuda-6.5/samples sudo make
全部编译完成后, 进入 samples/bin/x86_64/linux/release, sudo下运行deviceQuery
sudo ./deviceQuery
如果出现下列显卡信息, 则驱动及显卡安装成功:
./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "GeForce GTX 670" CUDA Driver Version / Runtime Version 6.5 / 6.5 CUDA Capability Major/Minor version number: 3.0 Total amount of global memory: 4095 MBytes (4294246400 bytes) ( 7) Multiprocessors, (192) CUDA Cores/MP: 1344 CUDA Cores GPU Clock rate: 1098 MHz (1.10 GHz) Memory Clock rate: 3105 Mhz Memory Bus Width: 256-bit L2 Cache Size: 524288 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 = GeForce GTX 610 Result = PASS
还有呢
2.4 cuda补全安装计划
装好所谓的cuda安装包以后,在终端输入
nvcc -V
楼上有人写过这个问题,说一杯咖啡在手就搞定,可是我……
发现居然没装成功,为什么?包的依赖关系形成了死锁,我擦,擦,擦啊!
一堆乱搜后发现这个博客
http://blog.csdn.net/wishchin/article/details/44833635
解决了这类的问题
先安装一个aptitude, 即在终端输入:
sudo apt-get install aptitude安装完之后,使用此工具安装nvidia-cuda-toolkit可用。即在终端输入:
sudo aptitude install nvidia-cuda-toolkit
卸载了依赖的包,把剩余的东西安装上去了。
第三部分 MKL的安装
首先下载并安装英特尔® 数学内核库 Linux* 版MKL,下载链接是:https://software.intel.com/en-us/intel-education-offerings,不收费的只好下载Student版的,先申请,然后会立马收到一个邮件(里面有安装序列号),打开照着下载就行了。
(如果没有可以安装OpenBLAS代替)解压安装包,下面有一个install_GUI.sh文件, 执行该文件,会出现图形安装界面,根据说明一步一步执行即可。
注意: 安装完成后需要添加library路径
sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
在文件中添加内容
/opt/intel/lib /opt/intel/mkl/lib/intel64
注意把路径替换成自己的安装路径。 编辑完后执行(这里我手贱了一次,改了默认的地址,怎么都链接不到,不知道为何,老实点还是按照默认的来吧,所以把你的ubuntu的/目录设置大一点空间为好)
sudo ldconfig
第四部分 Opencv的安装
这个尽量不要手动安装, Github上有人已经写好了完整的安装脚本:https://github.com/jayrambhia/Install-OpenCV
下载该脚本,进入Ubuntu/2.4 目录, 给所有shell脚本加上可执行权限
chmod +x *.sh
然后安装最新版本 (当前为2.4.9)
sudo ./opencv2_4_9.sh
脚本会自动安装依赖项,下载安装包,编译并安装OpenCV。整个过程大概20小时左右。
NO,NO,NO
所以我先换到windows下载了opencv2.9的文件包,拉到了github的下载的make文件的目录下然后注释了他的这几行脚本
#wget -O OpenCV-2.4.9.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download
#echo "Installing OpenCV 2.4.9"
#unzip opencv-2.4.9.zip
注意,中途可能会报错1
找不到qt!!!!
这个问题根本就没人说,我擦呀……仔细看他的make脚本有 with_qt=on
没qt,好吧下载qt去!这里我下了完整的qt包
下载地址如下:
http://www.qt.io/download-open-source/
安装之后记得设置qt的环境
sudo gedit /etc/ld.so.conf.d/qt5.conf
在文件中添加内容
/opt/Qt5.4.1/5.4/gcc_64/lib
保存后继续
sudo ldconfig 然后编译又遇见了错误2
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。我看到作者也给出了这个修改意见。
第五部分 Caffe的安装和测试
1.首先安装依赖项Ubuntu14.04用户执行
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
其他版本用户参考官方说明:http://caffe.berkeleyvision.org/installation.html
2.google的依赖
$ ./ configure
$ sudo make install
3.然后 从github上下载好caffe库: https://github.com/BVLC/caffe ,解压
然后进入目录
sudo cp makefile.config.example makefile.config修改
CUDA_DIR := /usr/local/cuda-6.5(你自己的目录)
BLAS := mkl
然后make all
发现错误 make: protoc:命令未找到
make: *** [.build_release/src/caffe/proto/caffe.pb.h] 错误 127
那就下载protobuf吧,在github下载,解压 https://github.com/google/protobuf :
运行
- <code><span style="font-family:宋体; font-size:14px"><span class="variable">$ </span>.<span class="regexp">/autogen.sh</span></span></code>
然后他又依赖与gtest 我擦了又是google的东西……下载要科学 csdn上居然有人上传了,不错!
再次运行,提示错误
./autogen.sh: 40: ./autogen.sh: autoreconf: not found
原因是没安装 automake 工具
运行命令安装:sudo apt-get install autoconf automake libtool
再一次./autogen.sh,成功!然后依次运行以下命令
$ ./configure
$ make
$ make check
$ make install
然后继续make all./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: 没有那个文件或目录。
安装gflags
这里继续安装gflags: https://github.com/schuhschuh/gflags/archive/master.zip 下载。解压
cd gflags-master
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make
sudo make install
按好之后,接着make all
继续错误,没有安装lmdb
安装lmdb
接着make,提示错误lmdb没装
Git clone git://gitorious.org/mdb/mdb.git
cd mdb/libraries/liblmdb
make && make install
之后继续make all
等待了15分钟左右之后,激动人心的场面出现了,done了……之后你 继续
make test
make runtest
等done了之后,继续下载测试mnist数据集合
1. 数据预处理
sudo sh ./data/mnist/get_mnist.sh
2. 重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式
sudo sh ./examples/mnist/create_mnist.sh
3. 训练mnist
sudo sh ./examples/mnist/train_lenet.sh
第六部分 Python安装和调试
1. 安装caffe必须的一些依赖项:
$ 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
/usr/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/local/lib
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
3. 这里非常重要的是,为了确保支持Caffe Notebook里的程序,需要使用到IDE环境,并且支持iPython输出。
4 编译Python wrapper
make pycaffe
第七部分 Matlab安装和调试
1. Caffe提供了MATLAB接口, 有需要用MATLAB的同学可以额外安装MATLAB。 安装教程请自行搜索。
2. 安装完成后添加图标 http://www.linuxidc.com/Linux/2011-01/31632.htm
sudo vi /usr/share/applications/Matlab.desktop
3.编译Matlab wrapper
执行如下命令
make matcaffe 至此,所有的安装步骤告一段落,大家可以下载咖啡自带的demo,跑一跑玩了。 本文基本是参照caffe的官方安装文档:http://caffe.berkeleyvision.org/installation.html 以及各位博友提供的参考步骤进行。 如有雷同纯属参考,如有错误之处,望各位不吝赐教。3ks