linux(ubuntu)下安装深度学习框架caffe

本文详细介绍了如何在Ubuntu 16.04环境下安装Caffe深度学习框架,包括安装必要的依赖库、配置Makefile文件、解决安装过程中遇到的问题等步骤。

本文所使用的的ubuntu的环境为16.04,为了安装的顺利,请先安装opencv,详见:Linux下安装OpenCV 3.0

1. 安装依赖项

建议不要一次安装这么多,以免出错可以排除错误:

sudo apt-get install git
sudo apt-get install libprotobuf-dev libleveldb-dev 
sudo apt-get install libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install python-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. 下载caffe源码

# 下载caffe源码
git clone https://github.com/BVLC/caffe.git
cd caffe 
cp Makefile.config.example Makefile.config //复制一个Makefile.config.example 并命名为Makefile.config
 
  • 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文件夹。

sudo make -j4  
sudo make test
sudo make runtest
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

4. 出错解决方法

如果出现fatal error: hdf5.h: 找不到的话:

在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。

打开文件:sudo gedit Makefile.config

即将:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码

打开文件:sudo gedit Makefile

即将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

在进行重新编译:

sudo make -j4
sudo make test
sudo make runtest
 
  • 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++库。



更正:

# Whatever else you find you need goes here.下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
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的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径


cd /usr/lib/x86_64-linux-gnu

\\然后根据情况执行下面两句:
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值