跳转至内容

姿势估计数据集概述

支持的数据集格式

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> <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

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

字段 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("yolo11n-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 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 Tiger Pose 数据集包含 263 张图像,这些图像来自一个 YouTube 视频,其中 210 张图像用于训练,53 张用于验证。
  • 标签格式:与上述 Ultralytics YOLO 格式相同,包含 12 个动物姿势的关键点,且没有可见的维度。
  • 类别数量: 1 (老虎)。
  • 关键点: 12个关键点。
  • 用法:非常适合动物姿势或任何非基于人体的姿势。
  • 阅读更多关于 Tiger-Pose 的信息

手部关键点

  • 描述:手部关键点姿势数据集包含近 2.6 万张图像,其中 18776 张图像用于训练,7992 张用于验证。
  • 标签格式: 与上述 Ultralytics YOLO 格式相同,但包含 21 个人手关键点和可见维度。
  • 类别数量: 1 (手)。
  • 关键点: 21个关键点。
  • 用法:非常适合人手姿势估计和手势识别
  • 阅读更多关于Hand Keypoints的信息

Dog-Pose

  • 描述:Dog Pose 数据集包含约 6,000 张图像,为训练和验证狗姿势估计模型提供了多样化和广泛的资源。
  • 标签格式: 遵循 Ultralytics YOLO 格式,带有特定于狗解剖结构的多个关键点的注释。
  • 类别数量: 1 (狗)。
  • 关键点: 包括 24 个针对狗姿势量身定制的关键点,例如四肢、关节和头部位置。
  • 用途:非常适合训练模型以估计各种场景下的狗姿势,从研究到实际应用
  • 阅读更多关于 Dog-Pose 的信息

添加您自己的数据集

如果您有自己的数据集,并且想使用 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")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
    

    有关更多信息,请访问 COCO-Posetrain 部分。

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

# 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

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

阅读更多关于在 数据集 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项目中。 有关详细信息,请参阅转换工具部分和数据预处理指南



📅 1 年前创建 ✏️ 10 天前更新

评论