windows-caffe入门之用CPU训练自己的数据

一、 准备数据

https://pan.baidu.com/s/1i4Rn4hf 在这个地址下载图片和txt文件。   

注:txt文件内容有误,请将标签改成0-3,而不是原来的4-7!   

二、转换为lmdb格式

https://pan.baidu.com/s/1hrG0ccc 在这个地址下载两个bat文件,右键编辑生成lmdb文件夹.bat

D:\caffe\Build\x64\Release\convert_imageset.exe --resize_height=256 --resize_width=256 --shuffle --backend=leveldb E:\caffe\caffe\data\re\train\ E:\caffe\caffe\data\re\train.txt  E:\caffe\caffe\examples\myfile\ilsvrc12_train_lmdb

根据你自己的实际地址修改, E:\caffe\caffe\data\re\train\ 是代表你放图片的文件夹,E:\caffe\caffe\examples\myfile\ilsvrc12_train_lmdb代表的是你要生成的文件夹的名字及存放的位置。

--backend=leveldb  千万不能删,在windows下,必须要转换成leveldb格式的,否则无法运行。

双击bat,生成文件夹。      

三、计算均值并保存

编辑生成均值.bat同理,根据每个人存放的地址不同修改它。

四、创建模型并编写配置文件

模型用程序自带的caffenet模型,位置在 models/bvlc_reference_caffenet/文件夹下,caffe的模型一般有3个文件,train,solver,deploy。

solver是用来快速配置网络的,train里面是详细的网络架构。deploy用来推理的,所谓推理就是用训练完毕的caffemodel去预测(比如一张图片是否属于a)。

修改其中的solver.prototxt,最好改成绝对地址。

net: "examples/myfile/train_val.prototxt"
test_iter: 2
test_interval: 50
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
stepsize: 100
display: 20
max_iter: 500
momentum: 0.9
weight_decay: 0.005
solver_mode: CPU
修改train_val.protxt

name: "CaffeNet"
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 227
    mean_file: "examples/myfile/mean.binaryproto"
  }
  data_param {
    source: "examples/myfile/img_train_lmdb"
    batch_size: 256
    backend: LEVELDB

  }
}
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    mirror: false
    crop_size: 227
    mean_file: "examples/myfile/mean.binaryproto"
  }
  data_param {
    source: "examples/myfile/img_test_lmdb"
    batch_size: 50
    backend: LEVELDB
  }
}

train下的meanfile 用train的均值文件,sourse即我们之前生成的lmdb文件夹。2个backend必须改为LEVELDB。

batch size *iter必须>=图片的数量。例如train的batch size*max iter(在solver中)最好大于等于图片的数量,test也是如此(solver中是test_iter)。

train和test最后的num_output改成4(即代表4个类别)。

新建bat文件,输入如下指令,就可以进行训练了

D:/caffe.exe train -solver examples/myfile/solver.prototxt
运行时间和最后的精确度,会根据机器配置,参数设置的不同而不同。用cpu运行500次,半天时间,精度为90多%。


测试:随便拿张图来验证。

新建一个list.txt ,里面包含4个数字,每个数字一行(对应的是网络的最后一个num_output),每一行对应一个标签,例如第一行的标签为巴士,则list里面可以写“巴士”,即list是将标签转化为你想看到的名字。

新建一个bat文件,输入

D:\caffe\Build\x64\Release\classification.exe D:\caffe\models\bvlc_reference_caffenet\deploy.prototxt E:\caffe\caffe\_iter_500.caffemodel  E:\caffe\caffe\examples\myfile\mean.binaryproto E:\caffe\caffe\examples\myfile\list.txt E:\caffe\caffe\data\re\test\301.jpg

pause

caffemodel就是你之前训练完之后得到的文件,均值文件用训练是的均值文件。

双击运行,就可以得到这张图片的结果了。


你可能感兴趣的:(深度学习)