跳至内容

实例分割数据集概述

支持的数据集格式

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('yolov8n-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 detect train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

支持的数据集

支持的数据集

  • COCO:一个用于物体检测、分割和字幕的综合数据集,包含 20 多万张标注了各种类别的图像。

  • COCO8-seg:COCO 的 8 幅图像子集,结构紧凑,专为快速测试分割模型训练而设计,是 CI 检查和工作流程验证的理想之选。 ultralytics 存放处。

  • 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="yolov8x.pt", sam_model='sam_b.pt')

当然,下面是更新后的代码片段表:

论据 类型 说明 默认值
data str 包含要注释的图像的文件夹路径。 None
det_model str, optional 预训练的YOLO 检测模型。默认为 'yolov8x.pt'. 'yolov8x.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 细分模型,运行模型的设备,以及保存注释结果的输出目录。

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



创建于 2023-11-12,更新于 2024-04-18
作者:glenn-jocher(8)

评论