Skip to content

姿态估计数据集概述

支持的数据集格式

Ultralytics YOLO格式

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

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

以下是姿态估计任务的标签格式示例:

Dim = 2 的格式

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

Dim = 3 的格式

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <p2-visibility>

在此格式中,<class-index> 是对象的类别索引,<x> <y> <width> <height>边界框的坐标,<px1> <py1> <px2> <py2> ... <pxn> <pyn> 是关键点的像素坐标。坐标之间用空格分隔。

数据集YAML格式

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

# 训练/验证/测试集,可以是1) dir: path/to/imgs, 2) file: path/to/imgs.txt, 或 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8-pose # 数据集根目录
train: images/train # 训练图像(相对于'path')4张图像
val: images/val # 验证图像(相对于'path')4张图像
test: # 测试图像(可选)

# 关键点
kpt_shape: [17, 3] # 关键点数量,维度数量(2表示x,y或3表示x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# 类别字典
names:
    0: person

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

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

(可选)如果点是对称的,则需要flip_idx,例如人体的左右侧或面部。例如,如果我们假设面部特征的五个关键点:[左眼,右眼,鼻子,左嘴,右嘴],原始索引为[0, 1, 2, 3, 4],那么flip_idx为[1, 0, 2, 4, 3](只需交换左右索引,即0-1和3-4,不修改其他如鼻子)。

使用方法

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-pose.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# 从预训练的*.pt模型开始训练
yolo pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640

支持的数据集

本节概述了与Ultralytics YOLO格式兼容并可用于训练姿态估计模型的数据集:

COCO-Pose

  • 描述: COCO-Pose是一个大规模的目标检测、分割和姿态估计数据集。它是流行的COCO数据集的一个子集,专注于人体姿态估计。COCO-Pose包括每个人体实例的多个关键点。
  • 标签格式: 与上述Ultralytics YOLO格式相同,包含人体姿态的关键点。
  • 类别数量: 1(人类)。
  • 关键点: 17个关键点,包括鼻子、眼睛、耳朵、肩膀、肘部、手腕、臀部、膝盖和脚踝。
  • 使用: 适用于训练人体姿态估计模型。
  • 附加说明: 数据集丰富多样,包含超过20万张标注图像。
  • 了解更多关于COCO-Pose

COCO8-Pose

  • 描述: Ultralytics COCO8-Pose 是一个小型但多功能的姿态检测数据集,由 COCO train 2017 集的前 8 张图像组成,其中 4 张用于训练,4 张用于验证。
  • 标签格式: 与上述 Ultralytics YOLO 格式相同,包含人体姿态的关键点。
  • 类别数量: 1(人类)。
  • 关键点: 17 个关键点,包括鼻子、眼睛、耳朵、肩膀、肘部、手腕、臀部、膝盖和脚踝。
  • 用途: 适用于测试和调试目标检测模型,或用于试验新的检测方法。
  • 附加说明: COCO8-Pose 非常适合用于健全性检查和 CI 检查。
  • 了解更多关于 COCO8-Pose

Tiger-Pose

  • 描述: Ultralytics 这个动物姿态数据集包含从 YouTube 视频 中获取的 263 张图像,其中 210 张用于训练,53 张用于验证。
  • 标签格式: 与上述 Ultralytics YOLO 格式相同,包含 12 个动物姿态关键点,无可见维度。
  • 类别数量: 1(老虎)。
  • 关键点: 12 个关键点。
  • 用途: 非常适合用于动物姿态或其他非人类姿态的检测。
  • 了解更多关于 Tiger-Pose

手部关键点

  • 描述: 手部关键点姿态数据集包含近 26,000 张图像,其中 18776 张用于训练,7992 张用于验证。
  • 标签格式: 与上述 Ultralytics YOLO 格式相同,但包含 21 个人手关键点和可见维度。
  • 类别数量: 1(手)。
  • 关键点: 21 个关键点。
  • 用途: 非常适合用于人手姿态估计。
  • 了解更多关于手部关键点

添加您自己的数据集

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

转换工具

Ultralytics 提供了一个方便的转换工具,用于将流行的 COCO 数据集格式标签转换为 YOLO 格式:

示例

from ultralytics.data.converter import convert_coco

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

此转换工具可用于将 COCO 数据集或任何 COCO 格式的数据集转换为 Ultralytics YOLO 格式。use_keypoints 参数指定是否在转换后的标签中包含关键点(用于姿态估计)。

常见问题

Ultralytics YOLO 格式用于姿态估计是什么?

Ultralytics YOLO 格式用于姿态估计数据集涉及为每张图像标记相应的文本文件。文本文件的每一行存储一个对象实例的信息:

  • 对象类别索引
  • 对象中心坐标(归一化的 x 和 y)
  • 对象宽度和高度(归一化)
  • 对象关键点坐标(归一化的 pxn 和 pyn)

对于 2D 姿态,关键点包括像素坐标。对于 3D,每个关键点还有一个可见性标志。更多详情,请参见 Ultralytics YOLO 格式

如何使用 COCO-Pose 数据集与 Ultralytics YOLO?

要使用 COCO-Pose 数据集与 Ultralytics YOLO:

  1. 下载数据集并将标签文件准备为 YOLO 格式。
  2. 创建一个 YAML 配置文件,指定训练和验证图像的路径、关键点形状和类别名称。
  3. 使用配置文件进行训练:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n-pose.pt")  # 加载预训练模型
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
    

    更多信息,请访问 COCO-Pose训练 部分。

如何在 Ultralytics YOLO 中添加自己的数据集用于姿态估计?

要添加您的数据集:

  1. 将您的注释转换为 Ultralytics YOLO 格式。
  2. 创建一个 YAML 配置文件,指定数据集路径、类别数量和类别名称。
  3. 使用配置文件训练您的模型:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n-pose.pt")
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
    

    完整步骤,请查看 添加您自己的数据集 部分。

Ultralytics YOLO 中数据集 YAML 文件的目的是什么?

Ultralytics YOLO 中的数据集 YAML 文件定义了用于训练的数据集和模型配置。它指定了训练、验证和测试图像的路径、关键点形状、类名以及其他配置选项。这种结构化的格式有助于简化数据集管理和模型训练。以下是一个 YAML 格式的示例:

path: ../datasets/coco8-pose
train: images/train
val: images/val
names:
    0: person

更多关于创建 YAML 配置文件的信息,请参阅 数据集 YAML 格式

如何将 COCO 数据集标签转换为 Ultralytics YOLO 格式以进行姿态估计?

Ultralytics 提供了一个转换工具,用于将 COCO 数据集标签转换为 YOLO 格式,包括关键点信息:

from ultralytics.data.converter import convert_coco

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

此工具有助于无缝地将 COCO 数据集集成到 YOLO 项目中。有关详细信息,请参阅 转换工具 部分。


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments