您的位置:首页 > Web前端

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

2017-06-21 19:40 316 查看
一、 准备数据
https://pan.baidu.com/s/1i4Rn4hf 在这个地址下载图片和txt文件。    
 

二、转换为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)。

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

D:/caffe.exe train -solver examples/myfile/solver.prototxt

运行时间和最后的精确度,会根据机器配置,参数设置的不同而不同。用cpu运行500次,半天时间,精度为90多%。



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

新建一个list.txt ,里面包含0-999 个数字,每个数字一行(对应的是网络的最后一个num_output)。

新建一个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就是你之前训练完之后得到的文件,均值文件用训练是的均值文件。

双击运行,就可以得到这张图片的结果了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: