YOLO分割模型训练数据标注格式

在训练YOLO分割模型时,需要对数据集中的每张图片进行标注,以提供模型学习所需的对象信息。以下是数据标注的具体格式和步骤,以确保模型能够正确理解和识别图像中的对象。

文本文件标注格式

对于数据集中的每张图片,都应有一个与之同名的文本文件,该文件的扩展名为".txt"。每个对象实例在文本文件中占据一行,包含对象的类别索引和边界坐标。具体格式如下:

<类别索引> <x1> <y1> <x2> <y2> ... <xn> <yn>

其中,<类别索引>代表对象的类别编号,<x1> <y1> <x2> <y2> ... <xn> <yn>是对象分割掩码的边界坐标,这些坐标值需要归一化到0和1之间。坐标之间以空格分隔。

YAML配置文件格式

Ultralytics框架使用YAML文件格式来定义训练检测模型时的数据集和模型配置。以下是定义检测数据集的YAML格式示例:

# 训练/验证/测试集可以是1) dir: 路径/imgs, 2) file: 路径/imgs.txt, 或3) list: [路径/imgs1, 路径/imgs2, ..] path: ../datasets/coco8-seg # 数据集根目录 train: images/train # 训练图片(相对于'path')4张图片 val: images/val # 验证图片(相对于'path')4张图片 test: # 测试图片(可选) # 类别(80个COCO类别) names: 0: person 1: bicycle 2: car # ...

在YAML配置文件中,train和val字段指定了包含训练和验证图片的目录路径,names是一个类别名称的字典,其顺序应与YOLO数据文件中的类别索引顺序相匹配。

数据集使用示例

以下是使用Python CLI和Ultralytics YOLO库来加载模型并进行训练的示例代码:

from ultralytics import YOLO # 加载模型 model = YOLO("yolo11n-seg.pt") # 使用预训练模型进行训练(推荐) results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640) # 从预训练的*.pt模型开始训练 yolo segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640

在这段代码中,首先导入了YOLO库,然后加载了一个预训练的模型,并使用指定的数据集和参数进行训练。

支持的数据集

UltralyticsYOLO支持多种数据集格式,主要包括:

  • COCO:一个全面的物体检测、分割和描述数据集,包含超过200K张标记图片,涵盖多种类别。
  • COCO8-seg:一个紧凑的8张图片的COCO子集,专为快速测试分割模型训练而设计,适合CI检查和workflow验证。
  • COCO128-seg:一个较小的实例分割任务数据集,包含128张带有分割注释的COCO图片。
  • Carparts-seg:一个专注于汽车部件分割的专用数据集,适合汽车应用。它包括各种车辆和详细注释的单个汽车组件。
  • Crack-seg:一个针对各种表面裂缝分割的数据集,对基础设施维护和质量控制至关重要,提供了详细的图像,用于训练模型识别结构弱点。
  • Package-seg:一个专门用于不同类型包装材料和形状分割的数据集。它对物流和仓库自动化特别有用,有助于开发用于包装处理和排序的系统。

如果有自己的数据集,并希望使用UltralyticsYOLO格式进行分割模型训练,请确保它遵循上述"Ultralytics YOLO格式"中指定的格式。将注释转换为所需格式,并在YAML配置文件中指定路径、类别数量和类别名称。

标签格式转换

如果数据集标签格式不是Ultralytics YOLO格式,可以使用以下Python代码片段将流行的COCO数据集格式转换为YOLO格式:

from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

这个转换工具可以将COCO数据集或任何COCO格式的数据集转换为Ultralytics YOLO格式。转换后,请仔细检查想要使用的数据集是否与模型兼容,并遵循必要的格式约定。正确格式化的数据集对于训练成功的物体检测模型至关重要。

自动标注功能

自动标注是一个重要的功能,它允许使用预训练的检测模型生成分割数据集。它使能够快速准确地标注大量图片,无需手动标注,节省时间和精力。

使用Ultralytics框架进行自动标注,可以使用以下Python代码中的auto_annotate函数:

from ultralytics.data.annotator import auto_annotate auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")

auto_annotate函数接受图片路径以及可选参数,用于指定预训练的检测和SAM分割模型、运行模型的设备以及保存标注结果的输出目录。通过利用预训练模型的强大功能,自动标注可以显著减少创建高质量分割数据集所需的时间和努力。这个功能特别适合处理大量图像集合的研究人员和开发人员,因为它允许他们专注于模型开发和评估,而不是手动标注。

常见问题解答

Q: Ultralytics YOLO支持哪些实例分割的数据集格式?

A: Ultralytics YOLO支持多种实例分割的数据集格式,主要是其自己的Ultralytics YOLO格式。每个图片需要一个对应的文本文件,其中包含分割成多行的对象信息(每个对象一行),列出类别索引和归一化的边界坐标。有关YOLO数据集格式的更多详细说明,请访问实例分割数据集概述。

Q: 如何将COCO数据集注释转换为YOLO格式?

A: 使用Ultralytics工具,可以轻松地将COCO格式注释转换为YOLO格式。可以使用ultralytics.data.converter模块中的convert_coco函数:

from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

这个脚本将COCO数据集注释转换为所需的YOLO格式,使其适合训练YOLO模型。有关更多详细信息,请参考标签格式转换部分。

Q: 如何为训练Ultralytics YOLO模型准备YAML文件?

A: 要为训练YOLO模型准备YAML文件,需要定义数据集路径和类别名称。以下是一个示例YAML配置:

path: ../datasets/coco8-seg # 数据集根目录 train: images/train # 训练图片(相对于'path') val: images/val # 验证图片(相对于'path') names: 0: person 1: bicycle 2: car # ...

请根据数据集更新路径和类别名称。有关更多信息,请查看数据集YAML格式部分。

Q: Ultralytics YOLO中的自动标注功能是什么?

A: Ultralytics YOLO中的自动标注允许使用预训练的检测模型为数据集生成分割注释。这大大减少了手动标记的需求。可以使用以下auto_annotate函数:

from ultralytics.data.annotator import auto_annotate auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485