跳至内容

姿势估计数据集概览

支持的数据集格式

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 格式示例:

# 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-pose  # 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)

# Keypoints
kpt_shape: [17, 3]  # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# Classes dictionary
names:
  0: person

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

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

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

使用方法

示例

from ultralytics import YOLO

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

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

支持的数据集

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

COCO 姿势

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

COCO8-Pose

  • 说明UltralyticsCOCO8-Pose 是一个小型但通用的姿势检测数据集,由 COCO 训练 2017 年集的前 8 幅图像组成,其中 4 幅用于训练,4 幅用于验证。
  • 标签格式:与上述Ultralytics YOLO 格式相同,带有人体姿势的关键点。
  • 类别数量:1(人类)。
  • 关键点:17 个关键点,包括鼻子、眼睛、耳朵、肩膀、手肘、手腕、臀部、膝盖和脚踝。
  • 使用方法适用于测试和调试物体检测模型,或尝试新的检测方法。
  • 附加说明:COCO8-Pose 是合理性检查和 CI 检查的理想选择。
  • 了解更多 关于

老虎姿势

  • 说明Ultralytics该动物姿势数据集由 263 张图片组成,这些图片来自YouTube 视频,其中 210 张用于训练,53 张用于验证。
  • 标签格式:与上述Ultralytics YOLO 格式相同,动物姿势有 12 个关键点,无可见尺寸。
  • 班级数量:1(老虎)。
  • 关键点:12 个关键点。
  • 使用方法非常适合摆出动物姿势或任何其他非人类姿势。
  • 了解更多 关于

添加自己的数据集

如果您有自己的数据集,并希望将其用于使用Ultralytics YOLO 格式训练姿态估计模型,请确保该数据集遵循上文 "Ultralytics YOLO format "中指定的格式。将注释转换为所需格式,并在 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)

对于二维姿势,关键点包括像素坐标。对于三维姿势,每个关键点都有一个可见度标记。详情请参阅Ultralytics YOLO 格式

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

要使用 COCO-Pose 数据集,请访问Ultralytics YOLO : 1.下载数据集,并以YOLO 格式准备标签文件。 2.2. 创建一个 YAML 配置文件,指定训练和验证图像的路径、关键点形状和类名。 3.3. 使用配置文件进行训练:

```python
from ultralytics import YOLO

model = YOLO("yolov8n-pose.pt")  # load pretrained model
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
```

For more information, visit [COCO-Pose](coco.md) and [train](../../modes/train.md) sections.

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

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

```python
from ultralytics import YOLO

model = YOLO("yolov8n-pose.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
```

For complete steps, check the [Adding your own dataset](#adding-your-own-dataset) section.

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 项目中。详情请参阅 "转换工具"部分。



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

评论