《Hello YOLOv8从入门到精通》3,目标检测数据集和标注规范
YOLOv8目标数据集的基本格式和标注规范对于训练出高效、准确的模型很重要。具体如下:
一、数据集基本格式
-
图像文件:数据集中的图像文件,通常是jpg或png等常见图像格式。这些图像包含了待检测的目标。
-
标注文件:标注文件是包含每张图像中目标对象的类别和位置信息的文本文件。标注文件的名称必须与图像文件的名称保持一致(除扩展名外)。
-
1)YOLO 格式:
-
这是 YOLO 系列模型常用的标注格式。在 YOLO 格式的标注文件中,每一行对应一个目标物体的标注信息。标注信息通常包含类别编号、目标中心横坐标(相对于图像宽度)、目标中心纵坐标(相对于图像高度)、目标宽度(相对于图像宽度)和目标高度(相对于图像高度)。例如,一个标注文件中的一行可能是 “0 0.5 0.6 0.3 0.4”,这里 “0” 表示类别编号,后面的数字表示目标在图像中的位置和大小信息。标注文件的文件名通常与对应的图像文件名相同,只是扩展名不同(如.jpg 对应的标注文件可能是.txt)。
-
2)COCO 格式:
-
这是一种在目标检测领域广泛使用的标注格式,尤其是在大规模数据集(如 COCO 数据集)中。
-
COCO 格式的标注文件是 JSON 格式的,它包含了更丰富的信息。其中主要的部分包括 “images”、“annotations” 和 “categories”。
-
“images” 部分记录了图像的基本信息,如文件名、图像尺寸、图像 ID 等;
-
“annotations” 部分包含了每个目标物体的标注信息,如目标类别 ID、边界框坐标(通常是左上角和右下角的坐标)、分割信息(如果有)等;
-
“categories” 部分定义了类别信息,包括类别名称、类别 ID 等。这种格式方便存储和管理大规模的标注数据,并且可以用于多种计算机视觉任务,不仅仅是目标检测。
-
类别文件:类别文件包含了数据集中所有目标对象的类别信息。
-
它通常是一个文本文件,其中每行代表一个类别,行号代表类别ID。此外,也可以使用json格式的类别文件,以更灵活地描述数据集的类别信息。
二、标注规范
-
标注格式:
-
YOLOv8的标注文件通常采用以下格式:<object-class-id> <x> <y> <width> <height>。其中,<object-class-id>是目标对象的类别编号,<x>和<y>是目标中心位置的坐标(经过归一化处理,即目标的真实x、y值除以图像的宽度和高度),<width>和<height>是目标的宽度和高度(同样经过归一化处理)。
-
另一种常见的格式是:列1为目标类别id,列2为目标中心位置x,列3为目标中心位置y,列4为目标宽度w,列5为目标高度h。这些值都是小于1的浮点数。
-
-
标注要求:
-
目标框必须框住整个目标物体,不能有遗漏和重叠。
-
目标框的宽度和高度应该为正数,不能为零或负数。
-
如果一张图片中有多个目标物体,每个目标物体应该用一个独立的目标框进行标注,不允许多个目标共用一个框。
-
如果目标物体的形状不规则,可以使用多个框进行标注,但必须确保每个框都框住目标物体的一部分,且所有框的并集能够完全覆盖目标物体。
-
目标框的坐标必须在数据集中统一,以确保模型训练的一致性和准确性。
-
-
标注工具:
-
可以使用多种标注工具进行标注,如LabelImg、Labelme等。
-
LabelImg:
-
LabelImg是一个开源的图像标注工具,支持多种标注格式,包括YOLO格式。
-
使用LabelImg进行标注时,需要先安装该工具,然后加载需要标注的图片文件夹,并选择标注结果存放文件夹和标注格式(选择YOLO)。
-
标注过程中,可以使用快捷键(如w键选择矩形框进行标注,ctrl+s保存标注结果,d键切换下一张图片)来提高标注效率。
-
-
MakeSense:
-
MakeSense是一个在线标注平台,支持多种标注类型和格式,包括YOLO格式。
-
使用MakeSense进行标注时,需要先注册并登录平台,然后创建标注项目并上传需要标注的图片。
-
在标注项目中,可以选择逐次添加标签或一次性添加标签文件,然后按照提示进行标注。
-
-
Labelme:
-
Labelme是另一个常用的图像标注工具,支持多边形、矩形、圆形等多种标注形状。
-
虽然Labelme默认不支持YOLO格式,但可以通过编写脚本将标注结果转换为YOLO格式。
-
标注完成后,需要导出标注结果(通常为json格式),然后使用脚本进行格式转换。
-
-
-
数据增强:
-
为了提高模型的泛化能力和鲁棒性,可以对数据集进行增强处理。常见的增强方式包括翻转、裁剪、旋转、平移等几何变换操作。
-
数据增强可以在标注前或标注后进行,但需要注意保持标注信息与增强后的图像一致。
-
-
数据集划分
-
数据集通常被划分为训练集、测试集和验证集(可选)。训练集用于模型的训练过程;测试集用于评估模型的性能和泛化能力;验证集(如有)则用于在训练过程中调整模型参数和选择最佳模型。
-
划分数据集时,需要确保各个子集中的样本分布相似,以避免因数据分布不均导致的模型偏差。
-
-
注意事项
-
标注格式:
-
确保标注结果符合YOLOv8模型训练的要求,即每个目标物体都有一个唯一的类别编号和位置信息(中心坐标、宽度和高度)。
-
-
标注质量:
-
标注过程中需要仔细、耐心,确保标注信息准确无误。
-
对于复杂场景或目标物体较多的图片,可以多次检查并调整标注结果。
-
-
数据增强:
-
为了提高模型的泛化能力和鲁棒性,可以对数据集进行增强处理(如翻转、裁剪、旋转等)。
-
数据增强后需要重新进行标注,并确保标注信息与增强后的图像一致。
-
-
数据集划分:
-
将数据集划分为训练集、验证集和测试集(如有需要),并确保各个子集中的样本分布相似。
-
-
加载数据:
-
在标注工具中加载需要标注的图片文件夹,并选择标注结果存放文件夹和标注格式(YOLO格式)。
-
-
进行标注:
-
使用标注工具提供的工具(如矩形框、多边形等)对图片中的目标进行标注。
-
标注过程中,需要确保目标框完全框住目标物体,并且标注信息准确无误。
-
-
保存标注结果:
-
标注完成后,保存标注结果到指定的文件夹中。
-
如果使用的是Labelme等工具,需要编写脚本将标注结果转换为YOLO格式。
-
-
检查标注质量:
-
对标注结果进行质量检查,确保标注信息准确无误,并且符合YOLOv8模型训练的要求。
-
原文地址:https://blog.csdn.net/Jagua/article/details/143949073
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!