news 2026/9/15 11:26:45

YOLO 姿态估计数据集完全指南:Ultralytics 标签格式、YAML 配置与实战训练(YOLOv10 仓库视角)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLO 姿态估计数据集完全指南:Ultralytics 标签格式、YAML 配置与实战训练(YOLOv10 仓库视角)

YOLO 姿态估计数据集完全指南:Ultralytics 标签格式、YAML 配置与实战训练(YOLOv10 仓库视角)

【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10

本指南以 YOLOv10 仓库中姿态估计(Pose Estimation)数据集文档为核心,系统讲解 Ultralytics YOLO 姿态标签格式、数据集 YAML 配置、官方支持的 COCO-Pose / COCO8-Pose / Tiger-Pose 数据集,以及 COCO 标注转 YOLO 格式的转换工具。读完本文,你将掌握从数据集准备、配置编写到启动姿态估计模型训练与验证的完整链路,并理解底层源码的关键实现细节。

姿态估计任务与数据集的核心作用

姿态估计(Pose Estimation)是计算机视觉中的一项核心任务:给定一张图像,模型需要定位目标对象上的若干关键点(Keypoints),例如人体的鼻子、眼睛、肩膀、肘部、手腕、臀部、膝盖和脚踝。这些关键点通常以二维[x, y]坐标表示,部分数据集还会附加可见性标记,形成三维[x, y, visible]表示。

在 YOLO 系列模型中,姿态估计属于pose任务(对应仓库中的 pose 任务文档)。与目标检测只输出边界框不同,姿态估计在边界框的基础上额外输出每个关键点的位置与置信度。这一任务的落地质量高度依赖数据集的标签格式是否规范——这正是本文要重点展开的内容。

在 YOLOv10 仓库中,姿态任务的底层实现分布在 pose 预测/训练/验证模块 与 Pose 检测头 中,它们全部围绕统一的标签与配置规范工作,理解这份规范是使用该仓库进行姿态训练的第一步。

Ultralytics YOLO 姿态标签格式

训练 YOLO 姿态模型所使用的数据集标签格式遵循以下三条组织规则:

  1. 每个图像对应一个文本文件:数据集中每张图片都有一个同名(仅扩展名不同)的.txt标签文件;
  2. 每行对应一个目标实例:文本文件中的每一行描述图像中的一个目标对象;
  3. 每行包含完整的实例信息:类别索引、边界框中心坐标、边界框宽高,以及全部关键点坐标,所有数值均归一化到 0~1 之间,坐标之间以空格分隔。

二维格式(Dim = 2)

当关键点只有xy两个维度(不记录可见性)时,每行格式为:

<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>是目标类别索引(例如 0 代表人、1 代表车),<x> <y> <width> <height>是归一化后的边界框信息(中心坐标与宽高),<px1> <py1> ... <pxn> <pyn>是归一化后的关键点像素坐标。

实际标签示例(COCO-Pose 人体 17 关键点)

COCO-Pose 采用 17 个关键点(鼻子、双眼、双耳、双肩、双肘、双腕、双髋、双膝、双踝),其标签文件的一行大致如下(数值为示意,实际以归一化坐标为准):

0 0.5321 0.6123 0.2245 0.8111 0.5312 0.5112 3 0.5213 0.5122 3 0.5314 0.5222 2 0.5415 0.6033 2 0.5516 0.6044 3 0.5617 0.7025 3 0.5718 0.7133 3 0.5819 0.7422 2 0.5910 0.7431 2 ...

注:标签文件中的边界框与关键点坐标均为相对于图像宽高的归一化值。生成标签时,将像素坐标除以图像宽度/高度即可得到。该归一化逻辑在 COCO 转 YOLO 转换器 中有直接的源码体现:box[:2] += box[2:] / 2(左上角坐标转中心坐标),再分别除以wh

数据集 YAML 配置详解

Ultralytics 框架使用 YAML 文件定义数据集与模型配置。姿态数据集的核心 YAML 结构如下(节选自仓库中的 coco8-pose.yaml):

# 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: ../datasets/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 dictionary names: 0: person

各字段含义如下:

字段说明
path数据集根目录。train/val/test均相对于该目录解析
train/val/test三种写法均可:目录路径(如images/train)、文本文件(如train2017.txt列出图片路径)、或路径列表
kpt_shape关键点配置,[数量, 维度]。维度为 2 表示只有x, y;维度为 3 表示x, y, visible
flip_idx对称关键点翻转索引(可选)。数据增强做水平翻转时,用于交换左右对称的关键点
names类别名字典,键的顺序必须与标签文件中的类别索引一一对应

flip_idx 的作用与写法

当关键点具有左右对称性(如人体左右侧、人脸左右眼)时,数据增强中的水平翻转(flip)会导致左右关键点互换。flip_idx正是用来描述这种交换关系的索引映射。

原文档给出的示例:假设人脸关键点为[left eye, right eye, nose, left mouth, right mouth],原始索引为[0, 1, 2, 3, 4],则翻转后索引变为[1, 0, 2, 4, 3]——即交换 0↔1、3↔4,鼻子(索引 2)保持不变。COCO 人体 17 关键点的flip_idx[0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15],本质上是让左右眼、左右耳、左右肩等成对交换。

注意:如果关键点不具备对称性(如 tiger-pose.yaml 中的动物姿态),flip_idx应保持为恒等映射[0, 1, 2, ..., n-1],仓库中老虎姿态数据集正是这样配置的。

仓库中的三份官方姿态数据集 YAML

  • coco-pose.yaml:kpt_shape: [17, 3]train指向train2017.txt(118287 张)、val指向val2017.txt(5000 张),并内置完整的下载脚本(先下载 pose 标签压缩包,再下载 train/val/test 图像);
  • coco8-pose.yaml:kpt_shape: [17, 3],训练/验证各 4 张共 8 张图像,download字段直接给出 1 MB 的压缩包地址,适合快速跑通流水线;
  • tiger-pose.yaml:kpt_shape: [12, 2](12 个关键点、无可见性维度)、flip_idx为恒等映射,训练 210 张、验证 53 张,下载地址约 75.3 MB。

从源码结构看,kpt_shape中的维度数直接决定标签解析与模型输出:二维关键点输出2 * n个通道,三维关键点输出3 * n个通道,这一点在 YOLOv8-pose 模型配置(nc: 1kpt_shape: [17, 3])与 Pose 检测头 中均有体现。

使用姿态数据集训练模型

在 YOLOv10 仓库中,通过ultralytics包加载官方预训练模型即可开始姿态训练。以下以 COCO8-Pose 为例:

from ultralytics import YOLO # 加载模型(推荐加载预训练权重用于迁移学习) model = YOLO('yolov8n-pose.pt') # 训练模型 results = model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)

对应的 CLI 方式:

# 从预训练 *.pt 模型开始训练 yolo detect train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

更规范的写法是显式指定任务类型(详见 train 模式文档):

yolo pose train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

训练结束后,可以使用model.val()验证精度,或使用model.predict(source=...)对图像、视频甚至流媒体进行推理。值得留意的是,仓库的 PoseValidator 在验证阶段专门引入了姿态指标:它继承自DetectionValidator,使用OKS_SIGMAkpt_iou计算基于 OKS(Object Keypoint Similarity)的关键点相似度,并输出 mAP50/mAP50-95 等姿态专用指标——这说明姿态数据的质量直接决定这些指标的可靠性。

官方支持的姿态数据集

以下是本仓库中与 Ultralytics YOLO 格式兼容、可用于训练姿态估计模型的官方数据集。

COCO-Pose(大规模人体姿态)

  • 简介:COCO-Pose 是 COCO(Common Objects in Context)数据集的姿态专用子集,基于 COCO Keypoints 2017 的图像与标注构建,用于训练 YOLO 等模型的姿态估计能力;
  • 规模:包含超过 20 万张带关键点标注的图像(即 200K+ labeled images),train2017 约 11.8 万张,val2017 5000 张;
  • 类别数:1 类(Human);
  • 关键点:17 个,包括鼻子、双眼、双耳、双肩、双肘、双腕、双髋、双膝、双踝;
  • 标签格式:与前述 Ultralytics YOLO 格式一致;
  • 评估指标:与 COCO 一致,提供 OKS(Object Keypoint Similarity)标准化评估指标,便于横向对比模型性能;
  • 适用场景:人体姿态估计模型的训练与评测;
  • 详细说明见 COCO-Pose 数据集文档。

COCO8-Pose(微型快速验证集)

  • 简介:由 COCO train2017 前 8 张图像组成的小型姿态数据集,训练 4 张、验证 4 张;
  • 规模:仅 8 张图像(约 1 MB),既能轻松管理又足以暴露训练流水线中的错误;
  • 类别数:1 类(Human);
  • 关键点:17 个,与 COCO-Pose 相同;
  • 标签格式:与 Ultralytics YOLO 格式一致;
  • 适用场景:模型测试调试、新方法实验、冒烟测试(sanity checks)与 CI 检查的理想选择;
  • 详细说明见 COCO8-Pose 数据集文档。

Tiger-Pose(动物姿态)

  • 简介:由 263 张图像组成的动物姿态数据集(源自一段老虎行走视频),其中 210 张用于训练、53 张用于验证;
  • 类别数:1 类(Tiger);
  • 关键点:12 个,且无可见性维度(对应 YAML 中kpt_shape: [12, 2]);
  • 标签格式:与 Ultralytics YOLO 格式一致;
  • 适用场景:动物姿态及其他非人体姿态估计任务,是验证姿态算法、排查流水线问题的优秀小型数据集;
  • 详细说明见 Tiger-Pose 数据集文档。

以上三份数据集的 YAML 配置均在仓库中可直接查阅:coco-pose.yaml、coco8-pose.yaml、tiger-pose.yaml。

添加自有数据集

如果你拥有自己的姿态数据集并希望用 Ultralytics YOLO 格式训练,只需完成两步:

  1. 格式转换:将你的标注转换为前述 "Ultralytics YOLO 标签格式"——每个图像一个.txt标签文件、每行一个实例、数值归一化到 0~1;
  2. 编写 YAML:在 YAML 配置文件中指定图像路径、关键点数量与维度(kpt_shape)、翻转索引(flip_idx,对称关键点才需要)、类别数量与类别名(names),参考上文给出的 YAML 模板即可。

COCO 标注转 YOLO 格式:convert_coco 工具

Ultralytics 提供开箱即用的转换工具convert_coco,可将 COCO 格式(或任何符合 COCO 标注结构的)数据集转换为 Ultralytics YOLO 格式:

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

use_keypoints=True表示在转换后的标签中保留关键点(姿态任务必需)。该函数定义于 ultralytics/data/converter.py,核心参数如下:

参数默认值说明
labels_dir"../coco/annotations/"存放 COCO 标注 JSON 文件的目录
save_dir"coco_converted/"输出目录(已存在时自动递增避免覆盖)
use_segmentsFalse是否输出分割掩码
use_keypointsFalse是否输出关键点标注(姿态任务需设为True
cls91to80True是否将 COCO 的 91 类 ID 映射为常用的 80 类 ID

从源码实现看,该转换器的关键处理逻辑包括:

  • 遍历labels_dir下所有*.json标注文件,为每个 JSON 建立 image 与 annotation 的映射(converter.py);
  • 将 COCO 的[左上角 x, 左上角 y, 宽, 高]框格式转换为 YOLO 的[中心 x, 中心 y, 宽, 高]格式,并分别除以图像宽高完成归一化(converter.py);
  • use_keypoints=True且标注含keypoints字段时,将 COCO 的[x, y, visible]关键点数组归一化后拼接到类别与边界框之后(converter.py),最终写出cls, box, keypoints组合的标签行(converter.py)。

这一实现与本文第二节的标签格式规范完全对应,可作为将任意 COCO 结构标注转换为 YOLO 姿态标签的标准路径。

结语

从标签文件的三条组织规则,到kpt_shape/flip_idx的 YAML 配置,再到 COCO-Pose、COCO8-Pose、Tiger-Pose 三份官方数据集与convert_coco转换工具,本指南覆盖了 YOLO 姿态估计任务数据侧的全链路。结合实际仓库源码可以看到:标签的归一化规则由 converter.py 保证,kpt_shape直接决定 Pose 检测头 的输出通道,而 OKS 相关指标由 PoseValidator 在验证阶段计算。理解并正确配置数据集格式,是姿态模型训练效果可靠的前提,也是上手 YOLOv10 姿态任务 的第一步。

【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 11:26:15

AB Download Manager 上手指南:多线程下载、断点续传与定时调度

AB Download Manager 上手指南&#xff1a;多线程下载、断点续传与定时调度 【免费下载链接】ab-download-manager A Download Manager that speeds up your downloads 项目地址: https://gitcode.com/GitHub_Trending/ab/ab-download-manager 从浏览器下载一个 5GB 安装…

作者头像 李华
网站建设 2026/9/15 11:25:22

建设一个网站选择的服务器一文搞懂备案与避坑指南

建设一个网站选择的服务器一文搞懂备案与避坑指南 刚接手第一个网站项目,最让人头大的往往不是代码怎么写,而是域名解析和服务器备案。很多新手盯着后台那一堆“审核中”的状态发呆,心里直打鼓:这服务器到底选对了没?备案流程一头雾水,怕填错一个字段就要重来一周。别慌,这篇指南就是为了解决你此刻的焦虑。咱们不整…

作者头像 李华
网站建设 2026/9/15 11:24:36

Mermaid 时序图进阶教程:3 个场景画会条件分支与并行流程

Mermaid 时序图进阶教程&#xff1a;3 个场景画会条件分支与并行流程 【免费下载链接】mermaid Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid 你…

作者头像 李华
网站建设 2026/9/15 11:24:34

GLM-5开源大模型技术解析与工程实践

1. GLM-5开源模型的技术突破与工程价值作为2023年最受瞩目的开源大模型之一&#xff0c;GLM-5的完整开源标志着Agentic Engineering时代的真正到来。这个由智谱AI团队研发的模型不仅在benchmark测试中表现出色&#xff0c;更重要的是它首次实现了从预训练模型到完整工程解决方案…

作者头像 李华