前言
本文是在最新的 Ubuntu 16.04.2 上安装Caffe(仅CPU)的参考,系统来源于清华大学开源软件站,因Caffe在不同Linux系统的安装会有一些小区别,所以请非16.04版本的朋友绕道Google或Baidu。
Caffe在不同机器上的相同操作也可能产生一些不一样的“效果”,本文中出现的报错和解决方案可能也会不全面,所以还请多包涵。
致谢(不仅仅是这些):
博客1–python配置
博客2–pycaffe接口
博客3–python环境检查
博客3–hdf5-1
博客3–hdf5-2
文章–mnist
安装步骤
一.安装依赖包
$ sudo apt-get install libprotobuf-dev
$ sudo apt-get install libleveldb-dev
$ sudo apt-get install libsnappy-dev
$ sudo apt-get install libopencv-dev
$ sudo apt-get install libhdf5-serial-dev
$ sudo apt-get install protobuf-compiler
$ sudo apt-get install –no-install-recommends libboost-all-dev
$ sudo apt-get install libopenblas-dev
$ sudo apt-get install liblapack-dev
$ sudo apt-get install libgflags-dev
$ sudo apt-get install libgoogle-glog-dev
$ sudo apt-get install liblmdb-dev
$ sudo apt-get install libatlas-base-dev
注:可见Caffe所需的依赖包比较多,可以选择上述方法“逐个”(推荐)进行下载,也可以通过下述方法进行下载。
- $ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
- $ sudo apt-get install –no-install-recommends libboost-all-dev
- $ sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
- $ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
如果提示”安装无法定位软件包”,可以尝试 $ sudo apt-get update 命令
二.安装caffe
- 方法一(Git):
- $ cd ~
- $ git clone git://github.com/BVLC/caffe.git
- 方法二:
- 浏览器访问 Github :https://github.com/BVLC/caffe
- 下载.zip文件
- 打开Ubuntu的文件管理
- 解压(Extract)
- 再将解压出来的caffe-master文件直接移到home下
- $ cd ~
三.编译Caffe
- 进入caffe根目录:
$ cd ~/caffe-master
- 拷贝生产.config文件:
$ cp Makefile.config.example Makefile.config 修改Makefile.config文件中的一些内容(方法如下):
会vim的朋友可以:
$ vim Makefile.config
不会vim的朋友也可以直接使用Ubuntu自带的超简单文本编辑器nano:
$ nano Makefile.config
不喜欢这些编辑器的朋友(Windows的忠实用户)当然也可以使用如下指令:
$ sudo gedit Makefile.config
修改内容如下:
一.去除注释符
修改前:# CPU_ONLY := 1
修改后:CPU_ONLY := 1
二.hdf5相关
hdf5为什么要加粗呢?因为这里真的是一步一坑,很可能会出现从删库到跑路的局面(笔者原本是14.04的系统,在一次构建环境失败后,重装了16.04的系统,之后又删过2次caffe,改了至少10次配置文件,前后总共用了近15个小时)。
如果你在修改了 内容一 之后就开始编译:
$ make all
那么就很可能会产生类似于下述语句的错误:
./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory
./include/caffe/util/libhdf5.so … fatal error: libhdf5.so : No such file or directory
其实报错不仅仅是这两个(可能会有几百个),这是因为系统按照顺序执行了其中一个.cpp文件后发现在调用hdf5.h文件时,该文件不在系统配置文件的路径下而返回一个报错并终止 $ make 指令对caffe进行的编译操作。
那么该如何修改呢?为了保险起见,你最好先执行以下命令查找hdf5.h:
$ sudo find / -name hdf5.h
如果返回“查询不到此文件”,那么请执行下载环节中的指令:
$ sudo apt-get install libhdf5-serial-dev
重新下载hdf5相关依赖库。
如果返回的路径为:
/usr/include/hdf5/serial/hdf5.h
那么请对Makefile.config文件进行如下修改:
修改前:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include修改后:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
修改前:
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib修改后:
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
重新开始编译(此时处于caffe-master文件内部即caffe-root权限)
先执行:
$ make all -j8
注:从这里开始,编译的时间会比较长,另外后面的 -j8 指令是启用了CPU的多核工作机制,可以加快编译进程。
再执行:
$ make test -j8
最后执行:
$ make runtest -j8
注:如果上述三条指令任意一条执行结果失败,则需要执行语句:
$ make clean
然后解决掉问题重新开始编译。
当全部执行成功,没有返回报错,runtest执行结束后产生如图所示效果:
则证明编译成功。(因Markdown下图片上传不便,所以图片来自参考博客,笔者的最终结果应该是1105个用例执行成功,希望有明白其中缘由的朋友私信我,在此表示感谢!)
四.编译python接口(pycaffe)
caffe有python和C++两种接口,笔者用python,所以利用python接口调用caffe,这会对之后caffe的使用带来便利。
安装pip
Ubuntu 16.04 默认已经安装了python2.7,所以可以直接安装pip,以便后续安装python库/包。
$ sudo apt-get install python-pip
(因为东西有点多,所以建议在网络情况好的情况下进行此步骤)在caffe的根目录下,有个python文件夹,文件夹里面有个清单requirements.txt,里面有需要的依赖库和版本信息,按照其安装即可,但在安装前,还需要先安装fortran编辑器(gfrotran),因为安装scipy库时需要它,命令如下:
$ sudo apt-get install gfortran
$ cd ~/caffe-master/python
$$ for req in $(cat requirements.txt); do pip install $req; done
再返回caffe-master目录,用以下指令进行验证(再遍历一遍):
cd ~/caffe-master
sudo pip install -r requirements.txt
若显示Requirement already satisfied,则安装成功。
配置python路径
- 第一处:
gedit ~/.bashrc #打开
export PYTHONPATH=/home/usrname/caffe-master/python:$ PYTHONPATH #在配置文件的最后写入该路径,笔者是export PYTHONPATH=/home/minygd/caffe-master/python:**PYTHONPATHsorce ~/.bashrc #生效
- 第二处:
$ cd ~/caffe-master
$ gedit Makefile.config
修改前:
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
修改后:
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/local/lib/python2.7/dist-packages/numpy/core/include
然后更新一下配置(可能需要重启电脑才有效,但是影响不大):
$ sudo ldconfig
编译python接口
$ cd ~/caffe-master
$ make pycaffe
验证python接口:
实质是在python环境下,引入caffe包,若无报错则成功,若报错请返回配置python路径步骤。
$ cd ~
$ python
若出现如上图所示的情况,即 caffe 可以被python调用,则pycaffe接口成功。
五.使用MNIST手写数据集测试(训练数据模型)
Part 1
$ cd ~/caffe (or whatever you called your Caffe directory)
$ ./data/mnist/get_mnist.sh
$ ./examples/mnist/create_mnist.sh
这里需要的时间较长,首先是调用了get_mnist.sh脚本下载数据集,再调用create_mnist.sh将下载的数据集转换成可以处理的lmdb格式的文件。
Part 2
编辑examples/mnist文件夹下的lenet_solver.prototxt文件,将solver_mode模式从GPU改为CPU.
Part 3
训练模型:
./examples/mnist/train_lenet.sh
后话
因本身电脑配置的问题,mnist的处理时间以小时来计算,所以笔者还未进行数据处理,后续会更新本文。
如果出现了别的问题,欢迎一起来交流!当然,通过google和baidu往往也能很好地解决问题。正如笔者本身,填完坑的一刹那,心中的愉悦那是难以形容的。
三天时间,终于在caffe喝到了cafe.

本文详述在Ubuntu 16.04上安装Caffe(CPU版本)的步骤,包括安装依赖、获取源码、编译配置和测试。遇到hdf5相关错误时,需调整Makefile.config。完成编译后,通过MNIST数据集测试模型。

1万+

被折叠的 条评论
为什么被折叠?



