您的位置:首页 > Web前端

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

2018-01-19 11:51 465 查看
在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 copysudo protoc src/caffe/proto/caffe.proto --cpp_out=.  
sudo mkdir include/caffe/proto  
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 copymake 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 copymkdir build  
cd build  
cmake ..  
make all -j8  
5、训练
安装完了,自然要测试一下能不能用咯。首先cd到caffe目录,然后输入命令:
[python] view plain copy./data/mnist/get_mnist.sh  
./examples/mnist/create_mnist.sh  
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./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%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习