本文所使用的的ubuntu的环境为16.04,为了安装的顺利,请先安装opencv,详见:Linux下安装OpenCV 3.0
1. 安装依赖项
建议不要一次安装这么多,以免出错可以排除错误:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2. 下载caffe源码
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
3. 配置Makefile文件
修改默认的配置。打开文件:sudo gedit Makefile.config,注意:这里需要命令行打开,如果只是在对应文件中右击使用gedit打开的话,可能看不到完整的内容。
这里只是用CPU模式,打开Makefile.config
文件
1. 去掉CPU_ONLY:=1前面的#符号
2. 去掉OPENCV_VERSION:=3
编译测试:其中sudo make -j4为编译命令,参数 -j 后可以添加数字,为启动多核编译,速度更快,这里默认为1。看到如图所示,则为编译成功,编译成功后的文件存放于~/caffe/build目录下,并且会在根目录生成.build_release文件夹。
- 1
- 2
- 3
- 1
- 2
- 3
4. 出错解决方法
如果出现fatal error: hdf5.h: 找不到的话:
在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
打开文件:sudo gedit Makefile.config
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码
打开文件:sudo gedit Makefile
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
在进行重新编译:
- 1
- 2
- 3
- 1
- 2
- 3
则最后的运行截图可以看到安装成功了:
依赖包简介
刚才过程中通过apt安装了多个依赖包,这里对这些依赖包的作用进行简介。
ProtoBuff
ProtoBuff是由google公司开发的一种可以实现内存与非易失存储介质交换的协议接口,Caffe源码中大量使用ProtoBuffer进行权值和模型参数灯载体。例如,有人喜欢使用TXT存储参数,有人喜欢用BIN存储参数,一个项目中不一样的参数管理会带来很多问题。ProtoBuffer工具很好地解决了这个问题,用户只要建立统一的参数描述文件(proto),然后利用protoc编译就能让协议细节等关键部分代码自动生成。caffe中使用ProtoBuff进行序列化。
Boost
著名的C++准标准库,功能强大,这个不用过多介绍。
glog & gflag
google公司的库,gflag提供命令行参数解析的作用,glog库是用于记录应用程序日志的实用库,提供基于C++标准输入输出流形式的接口。
libatlas
提供卷积神经网络中用到的矩阵,向量的计算。
HDF5
HDF是能高效存储和分发科学数据的新型数据格式。它可以存储不同类型的图像和数码数据的文件,并且可以在不同类型的机器上传输,同时还有能统一处理这种文件格式的函数库。Caffe训练模型可以选择保存为HDF5格式或默认的ProtoBuffer格式。
OpenCV
世界上最流行的开源计算机视觉库,包含大量图像处理函数。
LMDB和LEVELDB
提供数据管理,将Caffe中不同的原始数据,如jpeg,二进制数据转换为统一的key-value存储。大部分请况下LMDB已经满足使用,但是为了与旧版本兼容,仍然引入例LEVELDB。
Snappy
压缩和解压缩的C++库。
更正: