Skip to content

实例分割数据集概述

支持的数据集格式

Ultralytics YOLO 格式

用于训练 YOLO 分割模型的数据集标签格式如下:

  1. 每张图像一个文本文件:数据集中的每张图像都有一个与其同名且扩展名为 ".txt" 的相应文本文件。
  2. 每行一个对象:文本文件中的每一行对应图像中的一个对象实例。
  3. 每行的对象信息:每行包含以下关于对象实例的信息:
    • 对象类别索引:表示对象类别的整数(例如,0 表示人,1 表示汽车等)。
    • 对象边界坐标:围绕掩码区域的边界坐标,归一化到 0 和 1 之间。

分割数据集文件中单行的格式如下:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

在此格式中,<class-index> 是对象的类别索引,<x1> <y1> <x2> <y2> ... <xn> <yn> 是对象分割掩码的边界坐标。坐标之间用空格分隔。

以下是 YOLO 数据集格式的一个示例,单张图像包含两个对象,分别由 3 点和 5 点线段组成。

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104

Tip

  • 每行的长度不必相等。
  • 每个分割标签必须有至少 3 个 xy 点<class-index> <x1> <y1> <x2> <y2> <x3> <y3>

数据集 YAML 格式

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

# 训练/验证/测试集,可以是 1) 目录:路径/到/图像,2) 文件:路径/到/图像.txt,或 3) 列表:[路径/到/图像1, 路径/到/图像2, ..]
path: ../datasets/coco8-seg # 数据集根目录
train: images/train # 训练图像(相对于 'path')4 张图像
val: images/val # 验证图像(相对于 'path')4 张图像
test: # 测试图像(可选)

# 类别(80 个 COCO 类别)
names:
    0: person
    1: bicycle
    2: car
    # ...
    77: teddy bear
    78: hair drier
    79: toothbrush

trainval 字段分别指定包含训练和验证图像的目录路径。

names 是一个类别名称的字典。名称的顺序应与 YOLO 数据集文件中对象类别索引的顺序匹配。

使用方法

Example

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

支持的数据集

支持的数据集

  • COCO: 一个综合的数据集,用于目标检测、分割和字幕生成,包含超过 20 万张标记图像,涵盖广泛的类别。
  • COCO8-seg: COCO 的一个紧凑的 8 图像子集,设计用于快速测试分割模型训练,非常适合 ultralytics 仓库中的 CI 检查和工作流验证。
  • COCO128-seg: 一个用于实例分割任务的小型数据集,包含 128 张带有分割注释的 COCO 图像子集。
  • Carparts-seg: 一个专注于汽车零件分割的专业数据集,非常适合汽车应用。它包括各种车辆,并详细注释了各个汽车部件。
  • Crack-seg: 一个专门用于各种表面裂缝分割的数据集。对于基础设施维护和质量控制至关重要,它提供了详细的图像,用于训练模型识别结构弱点。
  • Package-seg: 一个专注于不同类型包装材料和形状分割的数据集。它特别适用于物流和仓库自动化,有助于开发用于包装处理和分拣的系统。

添加您自己的数据集

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

端口或转换标签格式

COCO 数据集格式到 YOLO 格式

你可以使用以下代码片段轻松将流行的 COCO 数据集格式的标签转换为 YOLO 格式:

Example

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

此转换工具可用于将 COCO 数据集或任何 COCO 格式的数据集转换为 Ultralytics YOLO 格式。

请记住,仔细检查你想要使用的数据集是否与你的模型兼容,并遵循必要的格式约定。格式正确的数据集对于训练成功的目标检测模型至关重要。

自动标注

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

使用检测模型生成分割数据集

要使用 Ultralytics 框架自动标注你的数据集,你可以使用如下所示的 auto_annotate 函数:

Example

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
参数 类型 描述 默认值
data str 包含待标注图像的文件夹路径。 None
det_model str, optional 预训练的 YOLO 检测模型。默认为 'yolo11x.pt' 'yolo11x.pt'
sam_model str, optional 预训练的 SAM 分割模型。默认为 'sam_b.pt' 'sam_b.pt'
device str, optional 运行模型的设备。默认为空字符串(CPU 或可用时为 GPU)。 ''
output_dir str or None, optional 保存标注结果的目录。默认为与 'data' 同一目录下的 'labels' 文件夹。 None

auto_annotate 函数接受图像路径,以及可选参数,用于指定预训练的检测和 SAM 分割模型、运行模型的设备以及保存标注结果的输出目录。

通过利用预训练模型的强大功能,自动标注可以显著减少创建高质量分割数据集所需的时间和精力。此功能对于处理大量图像集合的研究人员和开发人员特别有用,因为它使他们能够专注于模型开发和评估,而不是手动标注。

常见问题

Ultralytics YOLO 支持哪些数据集格式用于实例分割?

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

如何将 COCO 数据集标注转换为 YOLO 格式?

使用 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 模型。更多详情,请参阅 端口或转换标签格式

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

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

path: ../datasets/coco8-seg # 数据集根目录
train: images/train # 训练图像(相对于'path')
val: images/val # 验证图像(相对于'path')

names:
    0: person
    1: bicycle
    2: car
    # ...

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

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

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")

此函数自动化了标注过程,使其更快更高效。更多详情,请探索自动标注部分。


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments