Ultralytics YOLO27:

姿态估计数据集概览#

支持的数据集格式#

Ultralytics YOLO 格式#

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

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

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

使用 2D 关键点的格式

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

包含关键点可见性的格式(包含每个点的可见性)

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

在此格式中,<class-index> 是对象的类别索引,<x> <y> <width> <height>边界框的归一化坐标,<px1> <py1> <px2> <py2> ... <pxn> <pyn> 是归一化的关键点坐标。可见性通道是可选的,但对于标注了遮挡情况的数据集很有用。

数据集 YAML 格式#

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

ultralytics/cfg/datasets/coco8-pose.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-pose ← downloads here (1 MB)

# 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: 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
names:
  0: person

# Keypoint names per class
kpt_names:
  0:
    - nose
    - left_eye
    - right_eye
    - left_ear
    - right_ear
    - left_shoulder
    - right_shoulder
    - left_elbow
    - right_elbow
    - left_wrist
    - right_wrist
    - left_hip
    - right_hip
    - left_knee
    - right_knee
    - left_ankle
    - right_ankle

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

trainvaltest 字段分别指向训练、验证和测试图像。每个字段都可以接受一个目录、目录列表,或列出每行一个图像路径的 *.txt 文件(以 ./ 开头的路径会相对于 *.txt 文件进行解析)。使用 *.txt 文件可以在目录的子集上训练、跳过未标注图像,或将多个来源的图像合并到一个数据划分中。

将图像路径作为 `*.txt` 文件
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

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

(可选)flip_idx 将每个关键点映射到其镜像点,因此水平翻转增强可以使人类身体或面部等对称骨架的左右保持一致。对于按 [左眼、右眼、鼻子、左嘴角、右嘴角] = [0, 1, 2, 3, 4] 编号的五个面部标志点,flip_idx 为 [1, 0, 2, 4, 3]:左右点对 0-1 和 3-4 互换,而鼻子保留其自身索引。

(可选)kpt_oks_sigmas 设置训练和验证期间使用的自定义逐关键点 OKS sigma,例如 [0.26, 0.25, 0.25, ...]。列表长度必须等于 kpt_shape 中的关键点数量 N,且每个值都必须为正数。省略此项时,COCO 的 17 个关键点 sigma 将用于 kpt_shape: [17, 3],其他情况则使用统一的 1/N

使用方法#

示例
from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

支持的数据集#

本节概述了与 Ultralytics YOLO 格式兼容并可用于训练姿态估计模型的数据集。大多数这些数据集还托管在Ultralytics 平台上,你可以在该平台上浏览图像和标注、查看数据集统计数据,并克隆这些数据集用于云端训练。

COCO-Pose#

  • 描述:COCO-Pose 是一个大规模人体姿态估计数据集,涵盖 COCO 2017 中包含关键点标注人员的图像。
  • 标签格式:与上述 Ultralytics YOLO 格式相同,包含人体姿态关键点。
  • 类别数量:1(人员)。
  • 关键点:17 种关键点类型,包括鼻子、眼睛、耳朵、肩膀、肘部、手腕、髋部、膝盖和脚踝,每个关键点都包含一个可见性维度。
  • 用途:适合训练人体姿态估计模型。
  • 补充说明:该数据集基于 COCO Keypoints 2017 挑战构建:包含 58,945 张图像,其中标注了 156,165 人。
  • 详细了解 COCO-Pose

COCO8-Pose#

  • 描述Ultralytics COCO8-Pose 是一个小型但灵活的姿态估计数据集,由 COCO train 2017 集中的前 8 张图像组成,其中 4 张用于训练,4 张用于验证。
  • 标签格式:与上述 Ultralytics YOLO 格式相同,包含人体姿态关键点。
  • 类别数量:1(人员)。
  • 关键点:17 种关键点类型,包括鼻子、眼睛、耳朵、肩膀、肘部、手腕、髋部、膝盖和脚踝,每个关键点都包含一个可见性维度。
  • 用途:适合测试和调试姿态估计模型,或尝试新的关键点检测方法。
  • 补充说明:COCO8-Pose 非常适合进行合理性检查和 CI 检查
  • 详细了解 COCO8-Pose

Dog-Pose#

  • 描述Ultralytics Dog-Pose 数据集包含 6,773 张训练图像和 1,703 张验证图像,用于犬类关键点估计。
  • 标签格式:遵循 Ultralytics YOLO 格式,包含针对狗类解剖结构特定多个关键点的标注。
  • 类别数量:1(狗)。
  • 关键点:24 个关键点,每个关键点都包含一个可见性维度,适用于肢体、关节和头部位置等狗类姿态。
  • 用途:适合训练模型以估计各种场景中的狗类姿态,从研究到实际应用均可使用。
  • 补充说明:源图像来自 Stanford Dogs Dataset
  • 详细了解 Dog-Pose

手部关键点#

  • 描述Ultralytics Hand Keypoints 数据集包含 26,768 张图像,其中 18,776 张用于训练,7,992 张用于验证。
  • 标签格式:与上述 Ultralytics YOLO 格式相同,但包含人手的 21 个关键点和一个可见性维度。
  • 类别数量:1(手)。
  • 关键点:21 个关键点。
  • 用途:适用于人体手部姿态估计和手势识别
  • 补充说明:关键点标注使用 Google MediaPipe 生成,以确保标注一致性。
  • 详细了解 Hand Keypoints

Tiger-Pose#

  • 描述Ultralytics Tiger-Pose 数据集包含从一个 YouTube 视频中获取的 263 张图像,其中 210 张用于训练,53 张用于验证。
  • 标签格式:与上述 Ultralytics YOLO 格式相同,包含动物姿态的 12 个关键点,不包含可见性维度。
  • 类别数量:1(老虎)。
  • 关键点:12 个关键点。
  • 用途:适用于动物姿态或任何非人体姿态。
  • 补充说明:基于 AGPL-3.0 许可证发布。
  • 详细了解 Tiger-Pose

添加你自己的数据集#

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

要完全跳过转换步骤,Ultralytics Platform支持你上传原始图像、在浏览器中标注关键点,并直接使用生成的数据集进行训练。

转换工具#

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 格式要求为每张图像配备一个对应的文本文件。文本文件的每一行存储一个对象实例的信息:

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

    对于 2D 姿态,关键点包括归一化的 x 和 y 坐标。包含可见性维度时,每个关键点还会包含一个可见性标志。有关详细信息,请参阅 Ultralytics YOLO 格式

  • coco-pose.yaml 已随软件包提供,并会在首次使用时下载图像和标签,因此无需手动准备:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    有关数据集的详细信息,请参阅 COCO-Pose,完整参数列表请参阅 训练页面。

  • 要添加你的数据集:

    1. 将标注转换为 Ultralytics YOLO 格式。

    2. 创建一个 YAML 配置文件,指定数据集路径、类别数量和类别名称。

    3. 使用配置文件训练模型:

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

      有关完整步骤,请参阅添加你自己的数据集部分。

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

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
    # Example usage: yolo train data=coco8-pose.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-pose ← downloads here (1 MB)
    
    # 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: 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
    names:
      0: person
    
    # Keypoint names per class
    kpt_names:
      0:
        - nose
        - left_eye
        - right_eye
        - left_ear
        - right_ear
        - left_shoulder
        - right_shoulder
        - left_elbow
        - right_elbow
        - left_wrist
        - right_wrist
        - left_hip
        - right_hip
        - left_knee
        - right_knee
        - left_ankle
        - right_ankle
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

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

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

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

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

评论