深度学习--【1】Ubuntu下caffe环境搭建,CPU

在Windows下安装caffe遇到好多奇奇怪怪的问题,于是转战Ubuntu,比windows下要简单很多。

本篇博文主要讲解快速搭建caffe环境:

电脑系统:ubuntu 16.04

1、安装caffe所需要的依赖库

Caffe的所有依赖包都可以使用apt-get大发搞定。

#在Ubuntu下如果没有使用root账号,则每个命令前需要加sudo。

$ sudo apt-get install git
$ 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 libatlas-base-dev
$ sudo apt-get install python-dev
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


2、下载caffe源码

我的caffe源码下载到home目录下

$ cd ~
$ sudo git clone https://github.com/bvlc/caffe.git
$ cd caffe

下载完成后可以看到caffe的源码包如下:


3、配置Make.config文件

caffe文件解压后,文件夹下面有一个Makefile.config.example文件,我们需要将这个文件复制一份并重命名:Make.config  。

$ sudo cp Makefile.config.example Makefile.config

然后我们打开这个文件,可以看到如下内容:


然后我们把:#CPU_ONLY:=1,那一行的注释符号去掉: CPU_ONLY:=1。这是因为我们没有安装CUDA,还不能使用gpu,所以我们把配置改为只使用cpu。

4、编译

方案一:

(1)在完成Make.config配置后,我们输入命令:

    $  make -j 

     进行caffe源码编译.这一步有可能遇到如下错误:

  • 错误1     caffe/proto/caffe.pb.h: No such file or directory

      如果出现这个错误,那么输入命令:

[cpp]  view plain  copy
  1. sudo protoc src/caffe/proto/caffe.proto --cpp_out=.  
  2. sudo mkdir include/caffe/proto  
  3. sudo mv src/caffe/proto/caffe.pb.h include/caffe/proto  

      然后在进行make -j就可以了

  • 错误2     hdf5.h: No such file or directory

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

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
 
 
  • 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
 
 
  • 1

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

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
 
 
  • 1
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

 然后在进行make -j就可以了

(2)编译成功后编译python接口,输入命令

[python]  view plain  copy
  1. make pycaffe
这个如果不使用python接口,调用caffe模型的话也可以不用安装,不过建议还是搞一下,就一句话的事。完事后,我们会发现caffe源码目录下,多了一个build文件,这个文件下面有个tools,打开这个文件夹:


这个文件夹下面的工具可是个好东西啊,以后我们会经常用到这些可执行文件,最常用的就是可执行文件:caffe,我们只要调用这个工具,就可以进行训练。

  • 错误1     numpy/arrayobject.h No such file or directory

      如果出现这个错误,那么输入命令:

      sudo apt-get install python-numpy


方案二:直接采用cmake:

[cpp]  view plain  copy
  1. mkdir build  
  2. cd build  
  3. cmake ..  
  4. make all -j8  
5、训练

安装完了,自然要测试一下能不能用咯。首先cd到caffe目录,然后输入命令:

[python]  view plain  copy
  1. ./data/mnist/get_mnist.sh  
  2. ./examples/mnist/create_mnist.sh  
  3. sudo vim examples/mnist/lenet_solver.prototxt  

把lenet_solver.prototxt里面的solver_mode 改为 CPU。因为我们还没装GPU,暂时只使用CPU就好了。

./data/mnist/get_mnist.sh下载MNIST数据集,下载完成后,在data/mnist下会出现四个文件:

t10k-images-idx3-ubyte   测试图片数据

t10k-labels-idx1-ubyte   测试标签

train-images-idx3-ubyte  训练图片数据

train-labels-idx1-ubyte  训练标签

因为下载完的数据为二进制文件,需要转换为LEVELDB或LMDB才能被caffe识别,因此执行./examples/mnist/create_mnist.sh 生成

可以通过修改create_mnist.sh中的BACKEND="lmdb"或者BACKEND="leveldb"来选择生成数据格式。

执行完create_mnist.sh以后,在examples/mnist下生成两个文件夹mnist_train_lmdb和mnist_test_lmdb两个目录,每个目录下都有两个文件data.mdb和lock.mdb,顾名思义,mnist_train_lmdb就是生成的LMDB格式的MNIST数据集,mnist_test_lmdb则为LMDB格式的测试集。


然后我们运行脚本:

[python]  view plain  copy
  1. ./examples/mnist/train_lenet.sh  
这个时候,如果成功的话,就会开始跑起来

训练完成以后,会在mnist文件夹下生成lenet_iter_10000.caffemodel

7、测试

利用训练好的模型权值文件(examples/mnist/lenet_iter_10000.caffemodel)可以对测试数据集(或外部测试集)进行预测,运行如下命令:

$ ./build/tools/caffe test \

   -model examples/mnist/lenet_train_test.prototxt \

   -weights examples/mnist/lenet_iter_10000.caffemodel \

  -iterations 100

 命令行解释:

  • ./build/tools/caffe test, 表示只做预测(前向传播计算),不进行参数更新(后向传播计算)
  • -model examples/mnist/lenet_train_test.prototxt, 指定模型描述文件文件
  •  -weights examples/mnist/lenet_iter_10000.caffemodel, 指定模型预先训练好的权值文件。
  • -iterations 100,指定测试迭代次数。参与测试的样例数目为(iterations * batch_size),batch_size在model prototxt中设定,为100时正好覆盖全部10000个测试样本。
命令运行结束后,可以得到测试结果,accuracy为99.04%


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值