基于Caffe做cifar10对ImageNet图像的分类

在正文之前,首先确保已经具备实现caffe实验的平台,在安装caffe时,会自带cifar10的所有需要的代码。

一、数据的准备

    在caffe中~/caffe/data/cifar10/下有一个get_cifar10.sh文件,执行这个文件可以下载到cifar10的数据,在此期间,请确保网络正确连接。也可以在Windows上下载,放在当前文件夹下。这个文件中主要写了:1、下载数据;2、解压缩;3、将文件转移到当前文件夹下。(图示中除get_cifar10.sh的其他文件,即为解压后的文件)

基于Caffe做cifar10对ImageNet图像的分类_第1张图片

执行get_cifar10.sh文件代码,如下:

[html]  view plain  copy
  1. ~/caffe/data/cifar10$ sh ./get_cifar10.sh  

    在caffe中,它有自己的数据格式,通常会有两种lmdb和leveldb两种它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库。虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允许多种训练模型同时读取同一组数据集。因此lmdb取代了leveldb成为Caffe默认的数据集生成格式“。

将jpg或其他格式的图片转换为lmdb格式,如下:(在文件夹~/caffe/examples/cifar10下,有create_cifar10.sh文件,我们执行它)

[html]  view plain  copy
  1. ~/caffe/examples/cifar10$ sh ./create_cifar10.sh  

    执行之后,得到两个文件夹cifar10_train_lmdb、cifar10_test_lmdb,转化成功。另外,还得到mean.binaryproto图像均值的二进制文件。在执行create_cifar10.sh文件的过程中,可能出现一些找不到某个文件的问题,我们可以修改路径。

基于Caffe做cifar10对ImageNet图像的分类_第2张图片



基于Caffe做cifar10对ImageNet图像的分类_第3张图片


二、模型的准备

    我们需要准备的有两点:网络结构和参数设置。一般通过后缀来辨别,网络结构的后缀一般为.prototxt,而参数设置文件一般是XX_solver.prototxt。在cifar10中选择cifar10_quick_train_test.prototxt网络结构,选择模型参数设置文件cifar10_quick_solver.prototxt。

三、训练网络

    训练网络,直接去执行train_quick.sh文件,这个文件中。主要是分两个阶段来训练,一个是预训练采用模型准备中的网络结构和模型参数,

[html]  view plain  copy
  1. ~/caffe/build/tools/caffe train --solver=./cifar10_quick_solver.prototxt  

另一个是降低其学习率,继续去训练

[html]  view plain  copy
  1. ~/caffe/build/tools/caffe train --solver=./cifar10_quick_solver_lr1.prototx --snapshot=./cifar10_quick_iter_4000.solverstate  

这些只是train_quick.sh文件中的内容,我们只需要执行train_quick.sh文件即可

[html]  view plain  copy
  1. $sh ./train_quick.sh  
基于Caffe做cifar10对ImageNet图像的分类_第4张图片 基于Caffe做cifar10对ImageNet图像的分类_第5张图片

(注意:在网络结构和参数设置的文件中,都有需要修改路径的地方,如:网络结构的路径,mean.binaryproto文件的路径等等。训练过程中,出现错误时,看看时候修改了所有的路径)

Deep Learningcaffecifar10

你可能感兴趣的:(深度学习,Deep,Learning,caffe,cifar10,Deep,Learning,caffe,cifar10)