YOLOv5数据集的文件结构和文件格式以及标注工具LabelImg的说明文档

文章目录

  • 一 · 概述
  • 二 · 文件结构与数据格式
    • 2.1 数据集的文件结构
    • 2.2 数据格式
    • 2.2 文件结构
    • 2.3 标注文件的注意事项
  • 三 · 手动标注YOLOv5数据集
    • 3.1 标注工具的选择
    • 3.2 标注流程
  • 四 · 总结与注意事项
    • 4.1 `labelImg`的使用技巧与说明
    • 4.2 注意事项

一 · 概述

YOLOv5 是一个采用深度学习技术的目标检测模型。在训练这个模型时,需要创建一个特定格式的数据集。这篇文章将详细介绍 YOLOv5 训练数据集的创建方法、文件结构及其格式说明。

二 · 文件结构与数据格式

YOLOv5 采用了 .txt 文件来描述同名图像文件中目标的类别和位置信息。.txt 文件中的每一行代表图像中的一个目标,多个目标采用多行数据来保存。

2.1 数据集的文件结构

一般情况下, 一个完整的数据集包含三部分内容:

  • classes.txt 文件,用于记录类别名称
  • images 文件夹,用于保存图片文件
  • labels 文件夹,用于保存标注文件

注: imageslabels 文件夹中的文件名应该一一对应,即 images 文件夹中的图片文件和 labels 文件夹中的标注文件应该同名。

其中,数据集中对应的训练集、验证集和测试集分别放在 trainvaltest 文件夹中。同样,imageslabels 文件夹中的结构应该一一对应。数据比例建议 : 70% 用于训练,20% 用于验证,10% 用于测试。

文件结构如下:

dataset/
├── classes.txt
├── images
│   ├── train
│   │   ├── image1.jpg
│   │   └── ...
│   ├── val
│   │   ├── image3.jpg
│   │   └── ...
│   └── test
│       ├── image5.jpg
│       └── ...
└── labels├── train│   ├── image1.txt│   └── ...├── val│   ├── image3.txt│   └── ...└── test├── image5.txt└── ...

2.2 数据格式

举例说明,假设我们的任务是检测5个类别的目标:狗(dog)、人(person)、猫(cat)、电视(tv)和汽车(car)。那么 classes.txt 文件内容如下:

dog
person
cat
tv
car

.txt文本中记录的并非类别名称,而是类别的索引,从 0 开始。例如,dog 的索引为0,person 的索引为 1,以此类推。

索引类别
0dog
1person
2cat
3tv
4car

.txt文本中,每行记录一个目标对象的类别索引和位置信息,包含五个字段:<class> <cx> <cy> <width> <height>

  • class:类别索引,整数,从 0 开始。
  • cx、cy:浮点数,表示目标中心点的横坐标和纵坐标,归一化到图像宽高的比例,范围为 [0, 1]
  • width、height:浮点数,表示目标的宽度和高度,归一化到图像宽高的比例,范围为 [0, 1],

标注示意图如下:

600

注意cx、cy、width、height 都是相对于图像宽高的比例,而不是绝对像素值。
例如,如果一个目标的中心点位于图像的正中心,且占据了整个图像区域,格式为 0 0.5 0.5 1 1(假设目标类别为 0)。

2.2 文件结构

YOLOv5 训练数据集通常包含两部分:图像文件和对应的标注文件。每个图像文件对应一个同名但扩展名为 .txt 的标注文件。例如,对于图像 image.jpg,其对应的标注文件为 image.txt

在这个 .txt 文件中,每一行代表图像中的一个目标信息,按照 class cx cy width height 的顺序排列。例如,0 0.5 0.5 1 1 表示该图像有一个类别为 0(假设为猫)的目标,在图像正中心位置,且占据整个图像。

2.3 标注文件的注意事项

  • 所有数值使用空格隔开
  • 文件结束时可选一个空行,但不是必须的
  • 每行末尾不能有空格
  • 行与行之间不能有空行

注 : 标注文件不符合上述格式要求时,会导致在标注可视化或训练时出现错误。

三 · 手动标注YOLOv5数据集

训练所需要的图像可以从各种来源获取,例如公开数据集、互联网或者自己进行图片标注。如果你打算从网上收集图片,注意版权和使用许可。

接下来,需要在每张图像中标注出我们想要检测的目标。可以使用各种标注工具,如 labelImg。每张图片的标注结果会生成一个对应的 .txt 文件。

3.1 标注工具的选择

这里我们选用 labelImg 作为标注工具一个开源的图像标注工具,易于使用,支持 Pascal VOC YOLO 等多种格式。软件使用界面如下图所示:

600

3.2 标注流程

  1. 打开 labelImg 软件,点击 Open Dir 打开图像文件夹。
  2. 点击 Change Save Dir 设置标注文件保存路径。用于保存 .txt 标注文件
  3. 选择一张图像,点击 Create RectBox 按钮,然后在图像上框选目标,目标框选定后,在弹出的类别框中选择对应的类别即可,如下图所示:
    600
  4. 点击 Save 保存标注结果,软件会自动生成一个同名的 .txt 文件,保存了目标的类别和位置信息。

四 · 总结与注意事项

4.1 labelImg的使用技巧与说明

  • 快捷键w 新建矩形框,d 下一张图片,a 上一张图片,s 保存标注结果,del 删除当前矩形框
  • 自动保存: 点击工具栏的 View,在下拉菜单中勾选 Auto Save mode 即可开启自动保存模式
  • 类别显示: 点击工具栏的 View,在下拉菜单中勾选 Display Labels,即可在画面中对应的标注框中显示当前类别的名称
    400
  • 默认类别设置: 当标注单个类别目标时,设置默认类别,每次就不需要选择目标类别,工具自动填充,如下如所示,设置并勾选默认类别为 person 后,每次拉框直接默认类别,不需要再手动选择了
    400

4.2 注意事项

  • 文件格式:标注文件的格式必须符合 YOLOv5 的要求,否则 LabelImg 无法可视化标注框。参考[[#2.3 标注文件的注意事项]]

  • 中文路径:无论是文件夹路径还是图片名称,均不能包含中文字符,否则会导致标注文件保存失败

  • classes.txt: classes.txt 文件一定要放置在与标注文件同一级的目录中,否则 LabelImg 无法可视化标注框。

  • 标注提示文件: LabelImg 自带一个标注提示文件,用来填充标注时的标注提示框,文件位置处理data/predefined_classes.txt,确保文件中的类别名称与 classes.txt 文件中的类别名称一致。labelImg会自动读取这个文件,用于填充标注提示框。文件结构如下所示:

LabelImg
|__data
|   |__predefined_classes.txt
|__labelImg.exe

以上便是关于 YOLOv5 数据集的文件结构和数据格式的简要说明,关于如何使用 yaml文件配置训练时的训练集与测试集路径、以及多个数据集文件夹组合的配置方法,会通过另一篇文档详细记录与说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测(MATLAB 2018a)

准确识别心电信号的R波是进行HRV分析的前提。因此&#xff0c;开发出准确的心电信号R波检测方法十分重要。近几十年来&#xff0c;提出的R峰检测方法主要分为两个阶段。第1阶段是预处理阶段&#xff0c;目的是对受不同噪声影响的原始心电信号进行降噪处理&#xff0c;从而实现增…

基于SpringBoot+Html+Mysql的餐厅点餐管理系统外卖点餐系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

算法与数据结构高手养成:朴素的贪心法(上)最优化策略

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

沃飞长空总部落地成都高新,为蓉低空经济发展助力!

5月25日&#xff0c;吉利科技集团与成都高新区签署合作协议&#xff0c;吉利科技集团旗下沃飞长空全球总部落地成都高新区。 根据协议&#xff0c;沃飞长空全球总部项目落地成都未来科技城&#xff0c;将布局总部办公、研发和生产制造低空出行航空器等业务。双方将积极发挥各自…

图片去水印工具(低调用哦)

一、简介 1、它是一款专业的图像编辑工具&#xff0c;旨在帮助用户轻松去除照片中不需要的元素或修复照片中的缺陷。无论是修复旧照片、消除拍摄时的不良构图&#xff0c;还是删除照片中的杂乱元素&#xff0c;都能帮助用户快速实现这些目标。其功能强大且操作简单&#xff0c…

【蓝桥杯嵌入式】第十四届省赛 更新中

0 前言 刚刚做完第十四届的省赛&#xff0c;这届题目比我想象中的要简单&#xff1b;不过我去年参加的14届单片机的省赛都比往年的国赛还难&#xff0c;挺离谱的~ 1 展示 1.1 源码 1.2 演示视频 1.3 题目展示 2 CubeMX配置(第十四届省赛真题) 设置下载线 HSE时钟设置 时钟树…

微信小程序-常用的视图容器类组件

一.组件分类 小程序中的组件也是由宿主环境提供的&#xff0c;开发者可以基于组件快速搭建出漂亮的页面结构。 官方把小程序的组件分为了9大类: (1) 视图容器 (2) 基础内容 (3) 表单组件 (4)导航组件 (5) 媒体组件 (6) map 地图组件 (7) canvas 画布组件 (8) 开放能力 (9) 无…

Android Studio中xml预览不显示问题解决办法

具体表现&#xff1a; Android Studio的XML中可以看到视图的相对位置结构&#xff0c;但是看不到具体的模样&#xff0c;全黑&#xff0c;等于半摸黑调UI&#xff08;由于我已经修好了所以没有截图&#xff09;。不是所有的项目都会这样&#xff0c;一部分项目是正常的。 或许…

Sping源码(九)—— Bean的初始化(非懒加载)— getMergedLocalBeanDefinition

序言 前两篇文章介绍了Bean初始化之前的一些准备工作&#xff0c;包括设置BeanFacroty的ConversionService属性以及将Bean进行冻结。这篇文章将会进入到preInstantiateSingletons方法。进一步了解Bean的初始化流程。 preInstantiateSingletons public void preInstantiateSin…

这个开源的多模态模型无敌。。。

InternVL 由 OpenGVLab 开发&#xff0c;是一个开源的多模态对话模型&#xff0c;其性能接近商业化的 GPT-4V 模型。 GPT-4V 是 OpenAI 去年推出的多模态模型&#xff0c;使用它你可以分析所需的任何类型的图像并获取有关该图像的信息。 1. InternVL 开源模型 而今天的主角研究…

香港苏州商会、香港青年科学家协会博士团参观李良济,加强人才交流,促进科创合作与共赢

近日&#xff0c;香港苏州商会、香港青年科学家协会联合主办的苏港青年科创交流会成功举行&#xff0c;香港青年科学家协会博士团神州行苏州站启动。 5月26日&#xff0c;香港苏州商会及香港青年科学家协会博士团走进李良济&#xff0c;先后参观了李良济中医药文化展厅&#xf…

游戏联运平台如何助力游戏行业飞速发展?

随着科技的进步和互联网的普及&#xff0c;游戏行业正以前所未有的速度飞速发展。在这个过程中&#xff0c;游戏联运平台凭借其独特的优势和功能&#xff0c;成为了推动游戏行业腾飞的关键力量。本文将探讨游戏联运平台如何助力游戏行业实现飞速发展。 一、游戏联运平台的定义与…

Linux下多线程的相关概念

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误或者有写的不好的地方的话&…

62、 忠北国立大学计算机科学系:FingerNet-专门用于细致MI分类的神经网络模型

本文由泡菜国高校于2024年3月6日发表于arXiv&#xff0c;做了一个专门处理运动想象信号的CNN模型&#xff0c;融合了EEGNet和DeepConvNet。 FingerNet是一种专门用于细致MI分类的网络&#xff0c;利用了时间特征&#xff0c;在相同手部分类任务中表现出比EEGNet和DeepConvNet更…

使用 MySQL 触发器 + 统计学生表实时计算表数据量

要使用 MySQL 触发器实时计算表数据量&#xff0c;您可以创建一个触发器&#xff0c;当插入、更新或删除学生表的数据时&#xff0c;触发器就会更新另一个表中保存的学生表数据量信息。以下是一个示例&#xff1a; 首先&#xff0c;假设您有一个名为 students 的学生表&#x…

低代码开发难吗?

在软件开发的多样化浪潮中&#xff0c;低代码开发平台以其简化的编程模型&#xff0c;为IT行业带来了新的活力。作为一位资深的IT技术员&#xff0c;我对低代码开发平台的易用性和强大功能有着深刻的认识。今天&#xff0c;我将分享我对YDUIbuilder这一免费开源低代码平台的使用…

0.25W 1.5KVDC~3KVDC 隔离超小型单输出 DC/DC 电源模块——TKE-W25系列

TKE-W25系列隔离超小型单输出 DC/DC 电源模块是一款超小型单输出电源模块&#xff0c;工业级环境温度&#xff0c;用于PCB安装的国际标准结构。此系列产品小巧&#xff0c;效率高&#xff0c;低输出纹波,用于需要电压转换和隔离的场合&#xff0c;封装有SIP和DIP可选。

出租房水电抄表系统的全面解析

1.系统定义和功能 出租房水电抄表系统是一种智能的可视化工具&#xff0c;关键用于解决房东在经营好几个出租房源时&#xff0c;对水电的使用量统计分析、收费和管理上的问题。通过自动化抄表、收费和通告&#xff0c;此系统减轻了房东的工作负担&#xff0c;提高了效率&#…

达梦数据库安装手册

首先了解达梦数据库相关内容&#xff1a; 达梦在线服务平台 下载windows版本开发版&#xff0c;将下载的文件解压。进行安装 2、安装流程&#xff0c;默认选择下一步。 3、安装引导&#xff0c;默认下一步&#xff0c;安装实例可以进行修改 4、最后一步记录一下创建的摘要 …

JavaDS-学习数据结构之如果从零开始手搓顺序表,顺带学习自定义异常怎么用!

前言 笔者开始学习数据结构了,虽然笔者已经会用了,不管是C 中的stl亦或是Java 中的集合,为了算法比赛多少都突击过,但只知其然而不知其所以然,还是会限制发展的,因此,笔者写下这篇博客.内容是手搓一个顺序表.顺带加一点异常的使用,大伙看个乐子就好了.有错误直接私信喷我就好了…