姿态估计数据集概览
支持的数据集格式
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.zip在 train 和 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 (人)。
- Keypoints: 17 个关键点,包括鼻子、眼睛、耳朵、肩膀、手肘、手腕、臀部、膝盖和脚踝。
- 用法: 适用于训练人体姿态估计模型。
- 附加说明: 该数据集丰富多样,包含超过 20 万张已标注图像。
- 阅读更多关于 COCO-Pose 的信息
COCO8-Pose
- 描述: Ultralytics COCO8-Pose 是一个小巧且通用的姿态检测数据集,由 COCO train 2017 集的前 8 张图像组成,其中 4 张用于训练,4 张用于验证。
- 标签格式: 与上述 Ultralytics YOLO 格式相同,包含人体姿态关键点。
- 类别数量: 1 (人)。
- Keypoints: 17 个关键点,包括鼻子、眼睛、耳朵、肩膀、手肘、手腕、臀部、膝盖和脚踝。
- 用法: 适用于测试和调试目标检测模型,或尝试新的检测方法。
- 附加说明: COCO8-Pose 是进行冒烟测试和 CI 检查.
- 的理想选择。阅读更多关于 COCO8-Pose 的信息
Dog-Pose
- 描述: Dog Pose 数据集包含 6,773 张训练图像和 1,703 张测试图像,为犬类关键点估计提供了多样化且广泛的资源。
- 标签格式: 遵循 Ultralytics YOLO 格式,并带有针对犬类解剖结构特定多个关键点的标注。
- 类别数量: 1 (狗)。
- Keypoints: 包括 24 个专门针对狗姿态的关键点,如四肢、关节和头部位置。
- 用法: 非常适合训练模型以在各种场景下估计狗的姿态,从研究到 实际应用.
- 均可。阅读更多关于 Dog-Pose 的信息
Hand Keypoints
- 描述: 手部关键点姿态数据集包含近 2.6 万张图像,其中 18,776 张用于训练,7,992 张用于验证。
- 标签格式: 与上述 Ultralytics YOLO 格式相同,但包含 21 个手部关键点和一个可见性维度。
- 类别数量: 1 (手)。
- Keypoints: 21 个关键点。
- 用法: 非常适合手部姿态估计和 手势识别.
- 。阅读更多关于 Hand Keypoints 的信息
Tiger-Pose
- 描述: Ultralytics Tiger Pose 数据集包含来自 YouTube 视频 的 263 张图像,其中 210 张用于训练,53 张用于验证。
- 标签格式: 与上述 Ultralytics YOLO 格式相同,包含 12 个动物姿态关键点,且没有可见性维度。
- 类别数量: 1 (老虎)。
- Keypoints: 12 个关键点。
- 用法: 非常适合动物姿态或任何非人类的姿态估计。
- 阅读更多关于 Tiger-Pose 的信息
添加你自己的数据集
如果你有自己的数据集并希望使用它通过 Ultralytics YOLO 格式训练姿态估计模型,请确保它遵循上述 "Ultralytics YOLO 格式"。将你的标注转换为所需格式,并在 YAML 配置文件中指定路径、类别数量和类名。
转换工具
Ultralytics 提供了一个便捷的转换工具,可以将流行的 COCO dataset 格式转换为 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)