姿态估计数据集概览
支持的数据集格式
Ultralytics YOLO 格式
用于训练 YOLO 姿态模型的标签格式如下:
- 每张图像对应一个文本文件:数据集中的每张图像都有一个对应的文本文件,文件名与图像文件相同,扩展名为 ".txt"。
- 每个对象占一行:文本文件中的每一行对应图像中的一个对象实例。
- 每行包含的对象信息:每一行包含有关该对象实例的以下信息:
- 对象类别索引:表示对象类别的整数(例如,0 表示人,1 表示汽车等)。
- 对象中心坐标:对象的 x 和 y 中心坐标,归一化至 0 到 1 之间。
- 对象宽度和高度:对象的宽度和高度,归一化至 0 到 1 之间。
- 对象关键点坐标:对象的关键点,归一化至 0 到 1 之间。
以下是姿态估计任务的标签格式示例:
2D 关键点格式
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
3D 关键点格式(包含每个点的可见性)
<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 🚀 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.ziptrain 和 val 字段分别指定包含训练图像和验证图像的目录路径。
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("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 格式兼容,并可用于训练姿态估计模型的数据集:
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 的内容
Dog-Pose
- 描述:Dog-Pose 数据集包含 6,773 张训练图像和 1,703 张测试图像,为犬类关键点估计提供了多样且广泛的资源。
- 标签格式:遵循 Ultralytics YOLO 格式,针对狗的解剖结构标注了多个关键点。
- 类别数量:1(狗)。
- 关键点:包含 24 个针对狗的姿态量身定制的关键点,例如四肢、关节和头部位置。
- 用途:非常适合训练模型以在各种场景下估计狗的姿态,从研究到实际应用均可。
- 阅读更多关于 Dog-Pose 的内容
Hand Keypoints
- 描述:手部关键点姿态数据集包含近 2.6 万张图像,其中 18,776 张用于训练,7,992 张用于验证。
- 标签格式:与上述 Ultralytics YOLO 格式相同,但包含人手的 21 个关键点以及可见性维度。
- 类别数量:1(手)。
- 关键点:21 个关键点。
- 用途:非常适合手部姿态估计和手势识别。
- 阅读更多关于手部关键点的内容
Tiger-Pose
- 描述:Ultralytics Tiger-Pose 数据集包含 263 张源自YouTube 视频的图像,其中 210 张用于训练,53 张用于验证。
- 标签格式:与上述 Ultralytics YOLO 格式相同,包含 12 个动物姿态关键点,且没有可见性维度。
- 类别数量:1(虎)。
- 关键点:12 个关键点。
- 用途:非常适合动物姿态或任何非人类的姿态估计。
- 阅读更多关于 Tiger-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 参数指定是否在转换后的标签中包含关键点(用于姿态估计)。
常见问题 (FAQ)
什么是用于姿态估计的 Ultralytics YOLO 格式?
用于姿态估计数据集的 Ultralytics YOLO 格式涉及使用相应的文本文件标注每张图像。文本文件的每一行存储有关对象实例的信息:
- 对象类别索引
- 对象中心坐标(归一化的 x 和 y)
- 对象宽度和高度(归一化)
- 对象关键点坐标(归一化的 pxn 和 pyn)
对于 2D 姿态,关键点包括像素坐标。对于 3D 姿态,每个关键点还有一个可见性标志。更多详细信息,请参阅 Ultralytics YOLO 格式。
如何将 COCO-Pose 数据集与 Ultralytics YOLO 一起使用?
要将 COCO-Pose 数据集与 Ultralytics YOLO 一起使用:
-
下载数据集并准备 YOLO 格式的标签文件。
-
创建一个 YAML 配置文件,指定训练和验证图像的路径、关键点形状以及类别名称。
-
使用配置文件进行训练:
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
我该如何在 Ultralytics YOLO 中添加自己的姿态估计数据集?
添加你的数据集:
-
将你的标注转换为 Ultralytics YOLO 格式。
-
创建一个 YAML 配置文件,指定数据集路径、类别数量和类别名称。
-
使用配置文件来训练你的模型:
from ultralytics import YOLO model = YOLO("yolo26n-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
# 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 配置文件内容。
如何将 COCO 数据集标签转换为用于姿态估计的 Ultralytics YOLO 格式?
Ultralytics 提供了一个转换工具,可将 COCO 数据集标签转换为 YOLO 格式,包括关键点信息:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)