YOLO系列网络训练数据准备工具—Yolo_mark

时间:2022-06-22
本文章向大家介绍YOLO系列网络训练数据准备工具—Yolo_mark,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

项目介绍

Yolo_mark是一个检测任务数据集制作工具,制作完成后的数据格式不是VOC或者COCO的数据格式,从它的名字也可以看出,它是专门为了YOLO系列的网络训练准备数据的,YOLO这一点还是很任性的,它没有使用任何一个已有的深度学习框架来实现他的代码,而是自己写了一个纯C的轻量级框架—darknet,所以它的训练数据准备也不是按照标准开源数据集那样的格式。Yolo_mark就是专门为了准备YOLO准备训练数据的,这里是它的github地址。 该项目支持windows和linux两中系统,依赖Opencv库,2.X或者3.X都可以。如果是windows的话,需要VS2013或VS2015。


使用

下面介绍下windows下如何使用Yolo_mark: 项目中已经提供了.sln文件,使用VS2013或VS2015打开解决方案后,在x64和Release平台下编译这个工程,需要注意的是,我们需要先配置好OpenCV,这个过程就不详细说了。 编译成功后会在x64下的Release文件夹中生成.exe程序,然后通过yolo_mark.cmd的命令行文件运行这个生成的exe程序就好了。 效果就是这样,一个很简单的GUI界面:

Yolo_mark运行还是很好实现的,关键的问题是数据如何组织,因为这些数据要用到YOLO的网络训练中。


数据组织形式

项目中的data文件夹内存放需要标注的数据与标注后的结果: .data文件中定义了目标检测的类别数量,训练数据与测试数据的txt文件列表,各个类别的名字(它是从.names)文件中获取到的:

classes= 1
train  = data/train.txt
valid  = data/valid.txt
names = data/obj.names
backup = backup/

.names文件中定义了各个类别的名字,每个类别的名称都在单独的一行,行数与名称一一对应,比如做单类别行人检测时,.names文件中只有一行:

human

此时,human就是id 0。 train.txt文件为训练数据的列表,它由img文件夹内存放的数据自动获取:

data/img/0.jpg
data/img/1.jpg
data/img/2.jpg
data/img/3.jpg
data/img/4.jpg
data/img/5.jpg
data/img/6.jpg
data/img/7.jpg

最后就是img文件夹了,开始标注之前,img文件夹内只存放需要标注的图像数据(要求.jpg文件),一张图片标注完成之后,会给该图片生成一个名字相同的.txt文件,里面存放的就是bbox的信息:

.txt文件中,每一行都是一个目标的信息,这意味着有几行数据,图像中就标注了几个目标,它根据“id x y w h”的形式存放,其中“ x y w h”都是经过归一化之后的。比如0.txt文件中的结果:

0 0.341797 0.547917 0.049219 0.118056
0 0.731250 0.581944 0.050000 0.225000