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
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java中多线程的使用(超级超级详细)+多线程的实现原理 2
- protobuffer的前世今生(三)——序列化和反序列化性能比较
- 女生勿扰,只适合男孩子的 Python 爬虫,里面东西不给钱统统白送
- LTP 4来了!
- protobuffer的前世今生(五)——在Java中的两种使用方式之注解模式
- Java File类基础解析 1
- jit即使编译语言调用c++
- java JDBC系列1 JDBC类的简析与JDBC的基础操作
- TRTC Android端开发接入学习之常见问题(十一)
- 树莓派基础实验7:倾斜开关实验
- Hive SQL经典优化案例
- 树莓派基础实验8:振动开关实验
- 几行代码实现cookie的盗取
- 从apollo的初始化看spring boot 1.5.3启动过程( 一)
- CSRF(跨站请求伪造)学习总结