姿态估计数据集概述
支持的数据集格式
Ultralytics YOLO格式
用于训练YOLO姿态模型的数据集标签格式如下:
- 每个图像一个文本文件:数据集中的每个图像都有一个与其同名且扩展名为".txt"的相应文本文件。
- 每行一个对象:文本文件中的每一行对应图像中的一个对象实例。
- 每行的对象信息:每行包含以下关于对象实例的信息:
- 对象类别索引:表示对象类别的整数(例如,0表示人,1表示汽车等)。
- 对象中心坐标:对象中心的x和y坐标,归一化到0到1之间。
- 对象宽度和高度:对象的宽度和高度,归一化到0到1之间。
- 对象关键点坐标:对象的关键点,归一化到0到1之间。
以下是姿态估计任务的标签格式示例:
Dim = 2 的格式
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
train
和 val
字段分别指定包含训练和验证图像的目录路径。
names
是一个类别名称字典。名称的顺序应与YOLO数据集文件中对象类别索引的顺序一致。
(可选)如果点是对称的,则需要flip_idx,例如人体的左右侧或面部。例如,如果我们假设面部特征的五个关键点:[左眼,右眼,鼻子,左嘴,右嘴],原始索引为[0, 1, 2, 3, 4],那么flip_idx为[1, 0, 2, 4, 3](只需交换左右索引,即0-1和3-4,不修改其他如鼻子)。
使用方法
Example
支持的数据集
本节概述了与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 格式:
示例
此转换工具可用于将 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:
- 下载数据集并将标签文件准备为 YOLO 格式。
- 创建一个 YAML 配置文件,指定训练和验证图像的路径、关键点形状和类别名称。
-
使用配置文件进行训练:
如何在 Ultralytics YOLO 中添加自己的数据集用于姿态估计?
要添加您的数据集:
- 将您的注释转换为 Ultralytics YOLO 格式。
- 创建一个 YAML 配置文件,指定数据集路径、类别数量和类别名称。
-
使用配置文件训练您的模型:
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 格式的示例:
更多关于创建 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 项目中。有关详细信息,请参阅 转换工具 部分。