最近做项目,将使用mobilenetv2 caffe模型,从自己准备数据,到训练, 整体走了一遍流程。
1、图像预处理
融合了差不多10个年龄数据集,得到一个数量40万,1-60岁的数据集。
2、生成imdb文件
(1)使用python脚本,生成文件名和标签文件:train.txt,valid.txt和test.txt文件
(2)修改sh脚本,生成train和valid的imdb文件
3、生成均值文件
使用sh脚本,根据上述imdb文件生成均值文件
4、模型训练
(1)模型文件准备:sovler.prototxt, train_valid.prototxt, deploy.prototxt
模型文件来自:https://github.com/shicai/MobileNet-Caffe
sovler.prototxt是调用文件,train_valid.prototxt是训练和验证模型结构,deploy.prototxt是测试模型结构。
train_valid.prototxt和deploy.prototxt区别在于,前者添加了输入,并且输出做了一下修改。其他都一样。
train_valid.prototxt文件输入格式修改参照:
https://www.cnblogs.com/denny402/p/5083300.html
另外,输入输出修改,可以参照caffe中的示例model:
.../caffe/models/bvlc_reference_caffenet
输入修改:
name: "CaffeNet"
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
mirror: true
crop_size: 227
mean_file: "E:/NotFineshed/caffeWin10/caffe-master/examples/myExample/mydata_mean.binaryproto"
}
# mean pixel / channel-wise mean instead of mean image
# transform_param {
# crop_size: 227
# mean_value: 104
# mean_value: 117
# mean_value: 123
# mirror: true
# }
data_param {
source: "E:/NotFineshed/caffeWin10/caffe-master/examples/myExample/mydata_train_lmdb"
batch_size: 25
backend: LMDB
}
}
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
transform_param {
mirror: false
crop_size: 227
mean_file: "E:/NotFineshed/caffeWin10/caffe-master/examples/myExample/mydata_mean.binaryproto"
}
# mean pixel / channel-wise mean instead of mean image
# transform_param {
# crop_size: 227
# mean_value: 104
# mean_value: 117
# mean_value: 123
# mirror: false
# }
data_param {
source: "E:/NotFineshed/caffeWin10/caffe-master/examples/myExample/mydata_test_lmdb"
batch_size: 20
backend: LMDB
}
}
输出修改:
现将输出个数修改成自己需要的,再将prob层改成如下:
layer {
name: "accuracy"
type: "Accuracy"
bottom: "fc8"
bottom: "label"
top: "accuracy"
include {
phase: TEST
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc8"
bottom: "label"
top: "loss"
}
(2)训练
./build/tools/caffe train --solver=examples/myExample/solver.prototxt
./build/tools/caffe train --solver=examples/myExample/solver.prototxt --gpu 0,1
3篇caffe训练模型的新手贴:
(1)caffe 训练自己的分类模型:
https://blog.csdn.net/hust_bochu_xuchao/article/details/78986687
(2)caffe学习系列:训练自己的图片集(超详细教程)
https://blog.csdn.net/qq_27923041/article/details/54139887/
https://www.cnblogs.com/alexcai/p/5469436.html
caffe训练准备可能出现的问题汇总: