caffe深度学习记录之二:训练自己的数据

上文 说到关于环境的配置,这次我们聊一聊关于使用vs2015生成后的exe来训练自己的数据。好了,废话不多说,下面开始

一、准备工作

既然要训练自己的数据,那就要准备训练的素材,尽可能多的素材用来训练,然后用部分素材来作为验证。

首先:在caffe的解压目录 data/下新建 文件夹mine(自定义) ,然后在这个文件夹下新建三个文件夹:分别是mean、train、val

train是用来存放训练数据的文件夹,val是用来存放测试数据的文件夹,mean是存放均值文件的文件夹,还有训练的结果。

在train文件夹下放入要训练的图片(若有多种类型,在此文件夹下新建多个子文件夹存放每一种类型的图片),val同理。

其中在文件夹下把图片名称命名为统一格式,val也是。如下:


二、各种文件配置及执行

1.新建在mine目录下新建train.txt问价,用来存放训练图片的名称,要确保在train文件夹下按照这个路径能找到此图片,后面的0 是指种类,若是有多种命名为0,1,2,3...(从0开始) ;新建val.txt 文件,存放测试图片的名称。数据量较大可以写一段程序来完成这项工作。内容栗子如下:


2.在 caffe目录下 \caffe\examples\mnist 复制 lenet_solver.prototxt 和 lenet_train_test.prototxt 文件分别重命名为 solver.prototxt 和 train_val.prototxt

① 对于train_val.prototxt 文件,修改上半部分文件为:

name: "AlexNet"
layer { # 关于训练数据
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 64 # 图片格式保持一致,下方执行bat文件时会用到
    mean_file: "XXXX/caffe/data/mine/mean/train_mean.binaryproto" # 文件会zid
  }
  data_param {
    source: "XXXX/caffe/data/mine/train_ldb" # 文件夹会自动生成
 batch_size: 50 # 按照数据量修改此数值
 backend: LEVELDB # 修改为转成db的格式
layer { # 关于测试数据
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    mirror: false
    crop_size: 64
    mean_file: "XXX/caffe/data/mine/mean/val_mean.binaryproto"
  }
  data_param {
    source: "XXX/caffe/data/mine/val_ldb" 
    batch_size: 50
    backend: LEVELDB # 同上
  }
} # 之后内容不变.....

layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }..... 

② 对于solver.prototxt 文件,修改内容如下:

net: "XXX/caffe/data/mine/train_val.prototxt" # 上面文件的目录
test_iter: 1000
test_interval: 1000
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 20
max_iter: 450000
momentum: 0.9
weight_decay: 0.0005
snapshot: 10000
snapshot_prefix: "XXX/caffe/data/mine/mean/" # 生成均值文件的目录
solver_mode: GPU # 只用CPU的话改成CPU


三、批处理文件编写

① 新建 convert_imageset.bat 文件,用txt打开,这个批处理文件主要是把图片文件转成leveldb格式的数据文件

vs2015编译成功 的convert_imageset.exe 文件目录  --shuffle --backend=leveldb 转成leveldb数据文件  ## 这是格式
--resize_width=64 --resize_height=64 裁剪文件的大小  图片数据保存的目录 图片所保存的目录的txt  图片生成数据文件保存目录
SET GLOG_logtostderr=1  # 这是内容
XXX\caffe\scripts\build\tools\Release\convert_imageset.exe --shuffle --backend=leveldb --resize_width=64 --resize_height=64  XXX\caffe\data\mine\train\ XXX\caffe\data\mine\train.txt XXX\caffe\data\mine\train_ldb
  
XXX\caffe\scripts\build\tools\Release\convert_imageset.exe --shuffle --backend=leveldb --resize_width=64 --resize_height=64  XXX\caffe\data\mine\val\ XXX\caffe\data\mine\val.txt XXX\caffe\data\mine\val_ldb   
pause 

②新建compute_image_mean.bat 文件,用txt打开,这个文件主要是把上述数据文件转成均值文件:

格式:

vs2015编译成功的 compute_image_mean.exe 文件  数据格式 数据文件所在地址  对应的数据文件
SET GLOG_logtostderr=1  # 这是内容
XXX\caffe\scripts\build\tools\Release\compute_image_mean.exe --backend=leveldb XXX\caffe\data\mine\train_ldb XXX\caffe\data\mine\mean\train_mean.binaryproto 
  
  
XXX\caffe\scripts\build\tools\Release\compute_image_mean.exe --backend=leveldb XXX\caffe\data\mine\val_ldb XXX\caffe\data\mine\mean\val_mean.binaryproto  
pause

③ 新建start_train.bat 文件,用txt打开,这个文件主要是用来执行训练数据:

格式:

vs2015编译成功的caffe.exe文件地址  train 训练标志  --solver= XXX  上述 solver.prototxt 文件地址
XXX\caffe\scripts\build\tools\Release\caffe.exe train --solver=XXX\caffe\data\mine\solver.prototxt    # 这是内容
pause

然后依次执行上述三个批处理文件,会有挺长一段时间等待,若是图片训练文件太少 ,可能会一直出现 restarting ... 这种,观察 mean 文件夹下有没有生成.caffemodel文件,若是生成,则可以关掉窗口(我不知道对不对,我用这个等了一晚上,但是还是没有执行结束,我训练数据就4.500个图片。。看到mean中生成了5个.caffemodel 文件,就把它关掉了)。

三、验证图片精确度

在mine 目录下,新建 test_model.sh 文件,命名随意,

格式:caffe.exe文件路径 test 标志  训练的prototxt 所在路径 -weights caffemodel 所在路径

XXX/caffe/scripts/build/tools/Release/caffe.exe test -model=XXX/caffe/data/mine/train_val.prototxt -weights=XXX/caffe/data/mine/mean/_iter_50000.caffemodel

sleep 60 # 用来是的窗口停止60s,防止窗口闪退
pause

然后查看精确度 是多少,最后会停止生成,因为我训练个测试样本较少,所以,精确度一直是1..



至此,我们就训练得到了caffemodel文件,但是由于每一个文件都很大 90M+ ,目前正在找减少这个文件的大小(按理说我样本文件很少,caffemodel文件却很大,中间不知出了什么问题,还请各位大神解答。

博文有问题,随时提出来,一起交流。小白一只,大神轻喷....)


最后,在做的过程中,查看了很多大神的博客,也有一部分是借鉴大神的博客,由于太多就不一一列举。

在此感谢网络上的各位大神,正是你们的分享,才有小白学习成长的机会。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值