caffe训练自己的模型:全流程

最近做项目,将使用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/

(3)caffe简易上手指南(二)—— 训练我们自己的数据

https://www.cnblogs.com/alexcai/p/5469436.html

caffe训练准备可能出现的问题汇总:

https://blog.csdn.net/u010417185/article/details/52649178

猜你喜欢

转载自blog.csdn.net/weixin_41770169/article/details/86701143