由于自己部门需求及学习需求,需要自己制造训练集,并训练好自己的权重,用于检测目标与分割。开始自己探索制造训练集与训练网络的坑坑洼洼的道路,鉴于网上没有较好较为详细的教程,我想要把自己觉得的顺序步骤写出来,给大家减少遇到的坑。
(其实环境也不用相同,毕竟制造制造数据集的方法是相同的)
我把制造自己的数据集分为以下几个步骤:
1.读懂darknet/cfg/yolov3.cfg文件的一些参数
了见参数是我们必须做的第一步,有助于你熟悉这个神经网络,深度学习的一些概念
特别是以下两个参数,必须重点理解
batch=64
subdivisions=16
cfg文件说明
建议用本子记录一遍,加深理解。我就是这样做的(抱歉写字比较潦草)
2.理解以后,就开始搭建数据集,细分以下几步.
2.1准备自己想要训练的目标图片(我这里只准备了78张),放在一个文件夹(这里假设为picture)
2.2建立一个rename.py文件,在终端运行:
2.3同上面的操作类似,建立一个resize.py文件,在终端输入:将图片统一大小,非常重要!!我第一次就是没有做到统一大小,导致后面出问题,原因我没搞明白!知道的朋友麻烦留言告知。(当然如果你的图片全是大小一致的就跳过这一步)
resize.py文件代码:
此时,我们的图片大小已经统一了。
2.4必须必须检查图片的序列号是否连续!!!,可能运行过程中的图片会丢失,与我们建立的py文件中打开文件的方式有关,不连续自己手动改为连续。
不连续的例子:
00001.jpg
00002.jpg
00004.jpg
少了00003.jpg,要补上,因为等会在这个会影响给标注文件xml转化为yolov3的标签labels
3.在darknet/scripts/目录下建立自己的数据集目录结构
3.1scripts下新建VOCdevkits目录
3.2VOCdevkits目录下建立JPEGImages,Annotations,ImageSets三个目录
3.3在ImageSets下建立Layout与Main两个目录
4.将刚才打标的图片放在建立的JPEGImages目录,对应的xml文件放在Annotations
5.运行test.py 转化标签信息,在Main目录生成三个文件
在终端运行
6.VOC数据转化为labels信息
YOLOV3的label,YOLOV3的label标注的一行五个数分别代表类别(从 0 开始编号), BoundingBox 中心 X 坐标,中心 Y 坐标,宽,高。这些坐标都是 0~1 的相对坐标。和我们刚才标注的label不同,因此我们需要下面的py文件帮我们转换label。
这里我提供源码:
注意,voc_label.py需要与VOCdevkits目录同级位置。
观察scripts目录下,是否生成了对应文件 2007_train.txt ;2007_val.txt ;2007_test.txt ;train.txt
坚持至此,兄弟们,数据集完成!!!!7.修改自己的cfg文件及data
7.1cfg/voc.data文件修改
可修改:random = 1:原来是1,显存小改为0。(是否要多尺度输出。我这里不用,因为样本不足时,这个参数会影响训练效果)
在文件开头,修改训练的batches,subdivisions,自己看情况,显卡不强的掂量以下哈哈
8.下载预训练的权重
恭喜,坚持到这里真不容易!!!过了这一步,就能训练自己的数据了!!
这个文件下载看网络!!!很慢!!!我用校园网才下了下来。
注意!!!!敲黑板!!!这个文件必须先在darknet目录下建立backup(保存训练权重的)文件夹,再把这个文件放到darknet目录下,与backup同级
9.成功!!!开始训练!!!!!!!
我训练10000次后测试图
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/iosbc/80841.html