ubuntu16.04下编译安装caffe

caffe最简单的安装方式

Posted by 蒋为 on January 2, 2017

记录

caffe简介

Caffe是一个清晰而高效的深度学习框架,其作者是毕业于UC Berkeley的贾扬清博士,目前在Google工作。

Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换:

本文介绍的是仅cpu模式编译安装caffe,是我看过几十篇文章后总结的最简单的安装方式,但是运行效率不怎么样,不过对于刚入门的初学者学习caffe差不多够了,

可以少花一点时间在配置上面。

caffe安装

安装依赖项

sudo apt-get install git libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev libatlas-base-dev python-dev libgflags-dev libgoogle-glog-dev liblmdb-dev

下载与配置文件

git clone https://github.com/BVLC/caffe



cp Makefile.config.example Makefile.config  //生成配置文件

gedit Makefile.config   //修改配置文件

修改CPU_ONLY=1,将前面的#号删除即可。

将# Whatever else you find you need goes here.下面两项修改为: INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial 这是因为Ubuntu16.04的路径发生了一些变化

打开makefile文件搜索并替换 NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) 为 NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

编译

make all -j8

make test

make runtest

关于j8: j8是编译器选项,代表计算机cpu有8个核,因此可以多线程一起make,这样make的速度会快很多。一般常用的还有j4

配置python接口

安装依赖:

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

配置环境变量:

sudo gedit /etc/profile
 

添加如下行:

export PYTHONPATH=/home/caffe/python:$PYTHONPATH

使用绝对路径

然后:

  source /etc/profile

  cd caffe

  make pycaffe

测试是否可以引用

$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
>>> 

最后,关于配置cuda和cudd提高caffe速度

有兴趣可以去折腾下,反正我折腾了几天都没成功 T——T

运行caffe自带的简单例子

为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载。但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了。

注意:在caffe中运行所有程序,都必须在根目录下进行,否则会出错

mnist实例

mnist是一个手写数字库,由DL大牛Yan LeCun进行维护。mnist最初用于支票上的手写数字识别, 现在成了DL的入门练习库。征对mnist识别的专门模型是Lenet,算是最早的cnn模型了。

mnist数据训练样本为60000张,测试样本为10000张,每个样本为28*28大小的黑白图片,手写数字为0-9,因此分为10类。

首先下载mnist数据,假设当前路径为caffe根目录

sudo sh data/mnist/get_mnist.sh

运行成功后,在 data/mnist/目录下有四个文件:

train-images-idx3-ubyte: 训练集样本 (9912422 bytes) train-labels-idx1-ubyte: 训练集对应标注 (28881 bytes) t10k-images-idx3-ubyte: 测试集图片 (1648877 bytes) t10k-labels-idx1-ubyte: 测试集对应标注 (4542 bytes)

这些数据不能在caffe中直接使用,需要转换成LMDB数据

sudo sh examples/mnist/create_mnist.sh

如果想运行leveldb数据,请运行 examples/siamese/ 文件夹下面的程序。 examples/mnist/ 文件夹是运行lmdb数据

转换成功后,会在 examples/mnist/目录下,生成两个文件夹,分别是mnist_train_lmdb和mnist_test_lmdb,里面存放的data.mdb和lock.mdb,就是我们需要的运行数据。

接下来是修改配置文件,如果你有GPU且已经完全安装好,这一步可以省略,如果没有,则需要修改solver配置文件。

需要的配置文件有两个,一个是lenet_solver.prototxt,另一个是train_lenet.prototxt.

首先打开lenet_solver_prototxt

sudo vi examples/mnist/lenet_solver.prototxt

根据需要,在max_iter处设置最大迭代次数,

将最后一行solver_mode,改成CPU

保存退出后,就可以运行这个例子了

sudo time sh examples/mnist/train_lenet.sh

CPU运行时候大约13分钟,GPU运行时间大约4分钟,GPU+cudnn运行时候大约40秒,精度都为99%左右

主要参考文章

http://www.cnblogs.com/————/p/6070324.html

http://blog.csdn.net/u011762313/article/details/47262549