本文共 1613 字,大约阅读时间需要 5 分钟。
caffe训练自己的数据总共分三步:
1、将自己的图像数据转换为lmdb或leveldb,链接如下:
,leveldb格式对应调整即可。
2、求图像均值,链接如下:
3、使用已有的神经网络训练数据,本文用的是imagenet的网络。
(1)、将caffe\models\bvlc_reference_caffenet中的文件拷贝到要训练的图像文件夹中,注意:
数据文件和对应的均值文件*.binaryproto以及训练的caffe.exe的数据格式要对应,在生成这些对应的工具文件的.exe文件时要加上对应的宏USE_LMDB或USE_LEVELDB,要对应正确,默认为LMDB文件格式。
(2)、修改solver.prototxt文件 原文件为:
net: "models/bvlc_reference_caffenet/train_val.prototxt"test_iter: 1000test_interval: 1000base_lr: 0.01lr_policy: "step"gamma: 0.1stepsize: 100000display: 20max_iter: 450000momentum: 0.9weight_decay: 0.0005snapshot: 10000snapshot_prefix: "models/bvlc_reference_caffenet/caffenet_train"solver_mode: GPU修改后:
net: "train_val.prototxt"test_iter: 1000test_interval: 1000base_lr: 0.01lr_policy: "step"gamma: 0.01stepsize: 1000display: 1000max_iter: 10000momentum: 0.9weight_decay: 0.0005snapshot: 5000snapshot_prefix: "caffenet_train"solver_mode: CPU参数解释:
test_iter: 1000是指测试的批次,我们就10张照片,设置10就可以了。 test_interval: 1000是指每1000次迭代测试一次,我们改成500次测试一次。 base_lr: 0.01是基础学习率,因为数据量小,0.01就会下降太快了,因此改成0.001 lr_policy: “step”学习率变化 gamma: 0.1学习率变化的比率 stepsize: 100000每100000次迭代减少学习率 display: 20每20层显示一次 max_iter: 450000最大迭代次数, momentum: 0.9学习的参数,不用变 weight_decay: 0.0005学习的参数,不用变 snapshot: 10000每迭代10000次显示状态,这里改为2000次 solver_mode: GPU末尾加一行,代表用GPU进行(3)、修改train_val.prototxt
主要修改下面几个地方
mean_file是你的图像均值文件,根据phase分别对应训练数据的测试数据的均值文件
source是你的图像转换后的文件,lmdb或leveldb文件的文件夹。
crop_size加上#注释掉是因为图像不一定需要裁剪,例如我的图像文件为64*64,裁剪大小为227,没办法裁剪。
然后运行caffe.bat批处理文件,其文件内容为
CaffeConfig.exe train --solver=solver.prototxt::CaffeConfig.exe use -helppause::是bat文件的注释,不用管。
运行bat没错误,就会进行训练,出错的话你就要看错误信息去看看哪个地方有问题,我的运行也出了好多错。
运行截图: