自学内容网 自学内容网

《Hello YOLOv8从入门到精通》3,目标检测数据集和标注规范

YOLOv8目标数据集的基本格式和标注规范对于训练出高效、准确的模型很重要。具体如下:

一、数据集基本格式

  1. 图像文件:数据集中的图像文件,通常是jpg或png等常见图像格式。这些图像包含了待检测的目标。

  2. 标注文件:标注文件是包含每张图像中目标对象的类别和位置信息的文本文件。标注文件的名称必须与图像文件的名称保持一致(除扩展名外)。

  3. 1)YOLO 格式

  4. 这是 YOLO 系列模型常用的标注格式。在 YOLO 格式的标注文件中,每一行对应一个目标物体的标注信息。标注信息通常包含类别编号、目标中心横坐标(相对于图像宽度)、目标中心纵坐标(相对于图像高度)、目标宽度(相对于图像宽度)和目标高度(相对于图像高度)。例如,一个标注文件中的一行可能是 “0 0.5 0.6 0.3 0.4”,这里 “0” 表示类别编号,后面的数字表示目标在图像中的位置和大小信息。标注文件的文件名通常与对应的图像文件名相同,只是扩展名不同(如.jpg 对应的标注文件可能是.txt)。

  5. 2)COCO 格式

  6. 这是一种在目标检测领域广泛使用的标注格式,尤其是在大规模数据集(如 COCO 数据集)中。

  7. COCO 格式的标注文件是 JSON 格式的,它包含了更丰富的信息。其中主要的部分包括 “images”、“annotations” 和 “categories”。

  8. “images” 部分记录了图像的基本信息,如文件名、图像尺寸、图像 ID 等;

  9. “annotations” 部分包含了每个目标物体的标注信息,如目标类别 ID、边界框坐标(通常是左上角和右下角的坐标)、分割信息(如果有)等;

  10. “categories” 部分定义了类别信息,包括类别名称、类别 ID 等。这种格式方便存储和管理大规模的标注数据,并且可以用于多种计算机视觉任务,不仅仅是目标检测。

  11. 类别文件:类别文件包含了数据集中所有目标对象的类别信息。

  12. 它通常是一个文本文件,其中每行代表一个类别,行号代表类别ID。此外,也可以使用json格式的类别文件,以更灵活地描述数据集的类别信息。

二、标注规范

  1. 标注格式
    • 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的浮点数。

  2. 标注要求
    • 目标框必须框住整个目标物体,不能有遗漏和重叠。

    • 目标框的宽度和高度应该为正数,不能为零或负数。

    • 如果一张图片中有多个目标物体,每个目标物体应该用一个独立的目标框进行标注,不允许多个目标共用一个框。

    • 如果目标物体的形状不规则,可以使用多个框进行标注,但必须确保每个框都框住目标物体的一部分,且所有框的并集能够完全覆盖目标物体。

    • 目标框的坐标必须在数据集中统一,以确保模型训练的一致性和准确性。

  3. 标注工具
    • 可以使用多种标注工具进行标注,如LabelImg、Labelme等。

    • LabelImg

      • LabelImg是一个开源的图像标注工具,支持多种标注格式,包括YOLO格式。

      • 使用LabelImg进行标注时,需要先安装该工具,然后加载需要标注的图片文件夹,并选择标注结果存放文件夹和标注格式(选择YOLO)。

      • 标注过程中,可以使用快捷键(如w键选择矩形框进行标注,ctrl+s保存标注结果,d键切换下一张图片)来提高标注效率。

    • MakeSense

      • MakeSense是一个在线标注平台,支持多种标注类型和格式,包括YOLO格式。

      • 使用MakeSense进行标注时,需要先注册并登录平台,然后创建标注项目并上传需要标注的图片。

      • 在标注项目中,可以选择逐次添加标签或一次性添加标签文件,然后按照提示进行标注。

    • Labelme

      • Labelme是另一个常用的图像标注工具,支持多边形、矩形、圆形等多种标注形状。

      • 虽然Labelme默认不支持YOLO格式,但可以通过编写脚本将标注结果转换为YOLO格式。

      • 标注完成后,需要导出标注结果(通常为json格式),然后使用脚本进行格式转换。

  4. 数据增强
    • 为了提高模型的泛化能力和鲁棒性,可以对数据集进行增强处理。常见的增强方式包括翻转、裁剪、旋转、平移等几何变换操作。

    • 数据增强可以在标注前或标注后进行,但需要注意保持标注信息与增强后的图像一致。

  5. 数据集划分
    • 数据集通常被划分为训练集、测试集和验证集(可选)。训练集用于模型的训练过程;测试集用于评估模型的性能和泛化能力;验证集(如有)则用于在训练过程中调整模型参数和选择最佳模型。

    • 划分数据集时,需要确保各个子集中的样本分布相似,以避免因数据分布不均导致的模型偏差。

  6. 注意事项
  7. 标注格式

    • 确保标注结果符合YOLOv8模型训练的要求,即每个目标物体都有一个唯一的类别编号和位置信息(中心坐标、宽度和高度)。

  8. 标注质量

    • 标注过程中需要仔细、耐心,确保标注信息准确无误。

    • 对于复杂场景或目标物体较多的图片,可以多次检查并调整标注结果。

  9. 数据增强

    • 为了提高模型的泛化能力和鲁棒性,可以对数据集进行增强处理(如翻转、裁剪、旋转等)。

    • 数据增强后需要重新进行标注,并确保标注信息与增强后的图像一致。

  10. 数据集划分

    • 将数据集划分为训练集、验证集和测试集(如有需要),并确保各个子集中的样本分布相似。

  11. 加载数据

    • 在标注工具中加载需要标注的图片文件夹,并选择标注结果存放文件夹和标注格式(YOLO格式)。

  12. 进行标注

    • 使用标注工具提供的工具(如矩形框、多边形等)对图片中的目标进行标注。

    • 标注过程中,需要确保目标框完全框住目标物体,并且标注信息准确无误。

  13. 保存标注结果

    • 标注完成后,保存标注结果到指定的文件夹中。

    • 如果使用的是Labelme等工具,需要编写脚本将标注结果转换为YOLO格式。

  14. 检查标注质量

    • 对标注结果进行质量检查,确保标注信息准确无误,并且符合YOLOv8模型训练的要求。


原文地址:https://blog.csdn.net/Jagua/article/details/143949073

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!