跳至内容

姿势估计数据集概览

支持的数据集格式

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 数据集文件中对象类索引的顺序一致。

(可选)如果点是对称的,则需要翻转_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='coco128-pose.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco128-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 参数指定是否在转换后的标签中包含关键点(用于姿势估计)。



创建于 2023-11-12,更新于 2023-12-03
作者:glenn-jocher(5)

评论