跳至内容

实例分割数据集概述

支持的数据集格式

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

提示

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

数据集 YAML 格式

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

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

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

"(《世界人权宣言》) trainval 字段分别指定了包含训练图像和验证图像的目录路径。

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

使用方法

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-seg.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640

支持的数据集

支持的数据集

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

添加自己的数据集

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

移植或转换标签格式

将 COCO 数据集格式转换为YOLO 格式

使用以下代码片段,您可以轻松地将标签从流行的 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 框架自动标注数据集,您可以使用 auto_annotate 功能,如下图所示:

示例

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 保存注释结果的目录。默认为 'labels' 文件夹中的 'data'. None

"(《世界人权宣言》) auto_annotate 函数将获取图像路径,以及用于指定预训练检测和 SAM 细分模型,运行模型的设备,以及保存注释结果的输出目录。

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

常见问题

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

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

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

使用Ultralytics 工具可直接将 COCO 格式注释转换为YOLO 格式。您可以使用 convert_coco 功能中的 ultralytics.data.converter 模块:

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 # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to '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")

该功能可实现注释流程自动化,使其更快、更高效。更多详情,请浏览自动注释部分。

📅创建于 1 年前 ✏️已更新 2 个月前

评论