使用caffe训练自己的数据

初试caffe训练,这里不是跑的caffe里自带的例子,是训练测试自己的数据集,欢迎指正~ps:这边就不介绍caffe的安装配置了,直接进入主题啦~

1大量样本的准备

既然要做训练的话没有大量的图片样本是不行滴,这个阶段耗费很久的时间,说到这里要吐血了,三个人,对采集的视频中的每帧图片进行截图,不夸张的说总共截的图片大概有近百万张,当然啦还要对图片进行筛选不好的样本不要,否则会影响测试效果!我们一共做了四组实验,这里挑一个简单一组实验进行讲解。

有四类图片,每类都有大量的图片

介绍一种简易得到标签的方法,在每个文件夹下可建立一个批处理命令

运行getall.bat可得到

用notepad打开使用替换将jpg替换成jpg 1简易的标签就好了啊

2训练集和测试集

这组实验我们的样本总数为250465,训练集170318,测试集80147。

针对四类我们分别挑选了一些图片作为训练集,剩下的作为测试集。四个类所有训练的图片放在一起,所有测试的图片放在一起

原本四个类我们是从1-4的,后来我们将其批量改成了0-3(小伙伴们做样本的时候可以直接从0开始,不知道从哪看到说标签最好从0开始的)

这边解释一下如,H:/RoadCongestionDetection/dataSet02/4/这个路径 4文件夹里的图片标签的全部被批量改成20180420162405.02.avi_4_00118486.jpg 3

所有的训练集对应一个标签,标签里有0,1,2,3类的图片,所有的测试集对应一个标签,标签里有0,1,2,3类的图片,

3转换数据集格式以及计算均值

 

先放图

这是一个批处理命令这里面是下面三条命令

将数据集的格式转换成lmdb格式,因为caffe训练神经网络的输入只能为lmdb和leveldb,所以我们要转换图片格式。在caffe编译好的.exe文件就是release目录里有一个convert_imageset.exe可以进行格式转换。分别对训练集和测试集进行格式转换,这边是写了一个批处理命令或者在命令行里执行下面的命令

convert_imageset.exe anyDir train.txt train_all_lmdb --gray=false --shuffle=true --resize_width=180 --resize_height=135 --check_size=false --encode_type=jpg

这里我们转换成lmdb格式,文件夹train_all_lmdb就是对train.txt训练集的数据转换,这里我们将图片大小重置为180*135的,有些可能直接用的227*227,shuffle是要不要将数据打乱,随心情。有些也可以不要gray,check_size ,encode_type、

convert_imageset.exe anyDir test.txt test_all_lmdb --gray=false --shuffle=false --resize_width=180 --resize_height=135 --check_size=false --encode_type=jpg

文件夹train_all_lmdb就是对train.txt训练集的数据转换

每个文件夹下

 

同样的caffe编译好的.exe文件就是release目录里有一个compute_image_mean.exe可以进行计算均值文件,这边是写了一个批处理命令或者在命令行里执行下面的命令

compute_image_mean.exe train_all_lmdb mean.binaryproto

可得到均值文件

 

4修改网络模型的配置参数并进行训练

我们利用caffe里models里的网络模型

我们之后的训练用的是caffenet还有alexnet网络模型训练的,Googlenet网络太复杂,训练的时候崩了,OutOfMemory。

假设用alexnet,将文件夹下的文件复制一下粘贴过来

训练只要对train_val.prototxt和solver.prototxt进行修改

首先train_val.prototxt

这里我们是四类所以num_out是4,注意文件里不要有中文,不要有多余的空格或空行否则都会出现问题的,亲测

接下来是solver.prototxt

 

总250465训170318测80147

net里面修改过的train_val.prototxt

test_interval1600是测试集的数量80147/测试的batch_size50=1600    1600次后测试一下

base_lr初始学习率

stepsize训练3200次之后,(170318/80)*1.5=3200设置迭代1.5次后降低一次学习率为初始学习率*gamma

display训练200次之后,将训练误差显示在屏幕上
max_iter总共训练22000次(170318/80)*10=22000迭代10次
snapshot训练4400次保存一次模型
snapshot_prefix"caffe_alexnet_train"保存的模型

solver_mode设置使用GPU加速训练

文件都已配置好可以开始训练啦

在caffe编译好的.exe文件就是release目录里有一个caffe.exe可以进行,这边是写了一个批处理命令train.bat或者在命令行里执行下面的命令

这边在目录下就会得到训练好的模型利用模型来分类

5分类测试

修改deploy.prototxt文件

因为4类num_out为4

新建一个label_4.txt有着0,1,2,3的标签

 

在caffe编译好的.exe文件就是release目录里有一个classification.exe可以进行,这边是写了一个批处理命令classification.bat或者在命令行里执行下面的命令

classification.exe deploy.prototxt caffe_alexnet_train_iter_13200.caffemodel mean.binaryproto label_4.txt F:/videoTag_V4/videoTag/20180417175745.02.avi --fileType=video_file
pause
F:/videoTag_V4/videoTag/20180417175745.02.avi待测试的视频的地址名字

测试结果

\(^o^)/~回顾了一下前段时间的caffe训练测试,写下来巩固一下~

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值