ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ultralytics COCO-Pose 数据集解析:从 58,945 张图像的 17 关键点标注到 YOLO26-pose 实战训练

2026/9/8 23:24:25 拓冰建站 浏览量
Ultralytics COCO-Pose 数据集解析:从 58,945 张图像的 17 关键点标注到 YOLO26-pose 实战训练 Ultralytics COCO-Pose 数据集解析从 58,945 张图像的 17 关键点标注到 YOLO26-pose 实战训练【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics导读COCO-Pose 是 Ultralytics 项目在人体姿态估计Pose Estimation任务上使用的主力训练与基准数据集。它以微软 COCO Keypoints 2017 为基础将 58,945 张图像中 156,165 个标注人物组织为标准的 17 关键点 YOLO 格式。本文基于仓库中该数据集的官方文档与其配套源码数据集 YAML、任务文档、模型配置完整讲解 COCO-Pose 的数据规模、目录与标注结构、数据集 YAML 各字段语义、评测指标并给出用yolo26n-pose.pt在 Python 与 CLI 下训练、验证、推理的端到端方案。读完本文你可以理解 COCO-Pose 与普通 COCO 检测数据集的区别并独立完成从数据自动下载到 YOLO26-pose 模型训练的完整流程。数据集概览与在项目中的定位COCO-Pose 将 COCOCommon Objects in Context数据集改造为适合关键点/姿态估计任务的形式从 COCO Keypoints 2017 挑战赛中选取了 58,945 张图像以 17 关键点keypointschema 对其中的人物进行标注共覆盖 156,165 个标注人物、1,710,498 个独立关键点。它是项目内用于训练与基准测试关键点模型如 YOLO26-pose的标准数据集。在 Ultralytics 仓库中COCO-Pose 与用于快速冒烟测试的迷你版 COCO8-Pose 形成大训练集 小验证集搭配COCO8-Pose 仅取 COCO train2017 前 8 张图像4 训练 / 4 验证约 1 MB格式与 COCO-Pose 完全一致同为 17 关键点、单 person 类、相同flip_idx适合先跑通训练管线再切换到完整 COCO-Pose。属性COCO-PoseCOCO8-Pose图像总数58,945train 56,599 val 2,3468train 4 val 4标注人物156,165少量验证用关键点 schema17 个17 个类别person1 类person1 类下载体积约 20.2 GB首次使用约 1 MB用途正式训练与基准管线排错与快速实验对应的配置文件分别位于 ultralytics/cfg/datasets/coco-pose.yaml 与 ultralytics/cfg/datasets/coco8-pose.yaml两者共享完全相同的 17 关键点与flip_idx定义这保证了小数据验证 → 大数据训练的无缝迁移。17 关键点标注体系与关键特性每个 person 标注使用 17 种关键点类型按索引顺序依次为鼻子nose0、左眼1、右眼2、左耳3、右耳4、左肩5、右肩6、左肘7、右肘8、左腕9、右腕10、左髋11、右髋12、左膝13、右膝14、左踝15、右踝16。这一索引顺序在 姿态估计任务文档 中被明确列出并在 coco-pose.yaml 的kpt_names中以 YAML 列表形式完整复现。标注格式上每个关键点以(x, y, visibility)三元组存储x、y关键点在图像中的像素坐标visibility可见性标志0表示该点未标注1表示已标注但可能被遮挡2表示已标注且可见。因此在数据集的kpt_shape: [17, 3]中17是关键点数量、3表示每点存储x, y, visible三个维度若无需可见性标志可写作 2。这一维度约定同样出现在 yolo26-pose.yaml 模型配置中说明数据集与模型的kpt_shape必须保持一致。除标注格式外COCO-Pose 还有以下几个关键特性标准化评测指标沿用 COCO 的 Object Keypoint SimilarityOKS等指标用于姿态估计任务的模型横向对比其评测通过标准 mAPpose50-95、mAPpose50 等呈现左右翻转支持数据增强阶段做水平翻转时需要将左右对称的关键点成对交换如左眼↔右眼、左肩↔右肩数据集 YAML 中的flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]正是这一映射索引 0 鼻子保持不变其余成对交换COCO8-Pose 与之完全相同下载体积提示首次使用约需 20.2 GBtrain2017.zipval2017.zip 标签文件。7 GB 的test2017.zip不会被自动拉取因为其图像的真值ground truth被官方保留仅在向 CodaLab 的 test-dev2017 评测服务器提交时需要。数据集目录结构三个子集与自动下载脚本从仓库 coco-pose.yaml 的头部注释可以看到推荐目录布局数据集根目录为datasets/coco-pose由path: coco-pose定义训练与验证通过.txt文件索引图像列表。COCO-Pose 定义了下述三个子集Train201756,599 张图像来自 COCO 2017 train 集用于训练姿态估计模型Val20172,346 张图像用于训练过程中的验证Test-dev2017完整 40,670 张 test2017 图像中的 20,288 张其真值被官方保留。YAML 中test: test-dev2017.txt指向该划分仅用于向 COCO test-dev keypoints 评测服务器 提交。由于只保留含关键点标注人物的图像其标注划分比完整 COCO 的对应集合更小。与完整 COCO 检测集不同这里的 person 是唯一类别即names: {0: person}。YAML 末尾还内嵌了可选的download脚本段首次使用时可自动完成数据准备from pathlib import Path from ultralytics.utils import ASSETS_URL from ultralytics.utils.downloads import download dir Path(yaml[path]) # dataset root dir # 先下载 pose 专用标签coco2017labels-pose.zip urls [f{ASSETS_URL}/coco2017labels-pose.zip] download(urls, dirdir.parent) # 再下载 train201719G/118k 图与 val20171G/5k 图test2017 因真值保留不自动拉取 urls [ http://images.cocodataset.org/zips/train2017.zip, http://images.cocodataset.org/zips/val2017.zip, ] download(urls, dirdir / images, threads3)从上述脚本与配置可推断Ultralytics 会自动将下载的图像与 COCO 关键点标签以 COCO JSON 组织解析并转换为 YOLO 格式的txt标签每个关键点为class x1 y1 x2 y2 x3 y3 ...即边界框后跟17 × 3个数值。这种规模的数据准备适合在 GPU 算力托管的场景下进行这也是文档中建议大规模训练使用 Ultralytics Platform 管理计算资源、监控训练任务的原因。深入解读 coco-pose.yaml 数据集配置以下为仓库中 ultralytics/cfg/datasets/coco-pose.yaml 的关键字段与语义# 路径数据集根目录与三个划分相对 path path: coco-pose # 根目录实际解析为 父目录/coco-pose下载于此约 20.2 GB train: train2017.txt # 训练索引56599 张 val: val2017.txt # 验证索引2346 张 test: test-dev2017.txt # 测试划分40670 中的 20288 张提交至 CodaLab # 关键点结构 kpt_shape: [17, 3] # 关键点数 17维度 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 # 唯一类别 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]字段说明要点path / train / val / test三者的取值可以是目录、文件路径如这里的train2017.txt图像列表或路径列表train、val、test均相对于path解析kpt_shape第一维是关键点数量第二维是每点的坐标维度2 对应(x, y)3 对应(x, y, visible)。COCO-Pose 的[17, 3]与 COCO8-Pose 配置 及 YOLO26-pose 模型配置 完全一致flip_idx数据增强执行水平翻转时用于交换左右成对关键点。相比类别翻转姿态任务还必须保持身体左右对称点配对正确否则训练会因标签错位而显著掉点names、kpt_names指定类别与每类关键点的可读名称前者供检测/分类使用后者用于关键点可视化与输出组织download一段 Python 脚本或 URL供 Ultralytics 数据准备逻辑在检测到数据缺失时自动执行。如果需要将该配置用于自定义姿态数据推荐先以 coco8-pose.yaml约 1 MB、立即可下载验证整套流程再切换到完整的coco-pose.yaml。COCO-Pose 预训练模型与性能基准下表汇总了仓库在 COCO-Pose 上预训练的 YOLO26-pose 各尺寸模型指标来源为 docs/macros/yolo-pose-perf.md其中 mAPpose50-95(e2e) 为端到端模式下的指标模型输入尺寸 (pixels)mAPpose50-95(e2e)mAPpose50(e2e)CPU ONNX (ms)T4 TensorRT10 (ms)参数量 (M)FLOPs (B)YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.5YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.423.9YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.1YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.3YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6201.7指标口径见 docs/en/tasks/pose.mdmAPval为 COCO Keypoints val2017 上的单模型单尺度验证结果可通过yolo val pose datacoco-pose.yaml device0复现Speed为 COCO val 图像在 Amazon EC2 P4d 实例上的平均耗时可通过yolo val pose datacoco-pose.yaml batch1 device0|cpu复现Params 与 FLOPs为model.fuse()之后的融合模型数值合并 Conv 与 BatchNorm并对端到端模型移除辅助的 one-to-many 检测头预训练 checkpoint 保留完整训练结构数值可能略高。从 yolo26-pose.yaml 可以看到这些模型共享同一套骨架以 P3/8–P5/32 三尺度特征输出nc: 80COCO 类别经Pose26(P3, P4, P5)检测头产生关键点end2end: True表明 YOLO26 使用端到端模式而reg_max: 1指定 DFL bins。模型配置中的kpt_shape: [17, 3]再次印证了它正是为 COCO-Pose 这类 17 关键点数据所设计。缩放系数n/s/m/l/x通过[depth, width, max_channels]复合缩放控制模型大小如 n 版 363 层、约 374 万参数。使用 COCO-Pose 训练 YOLO26-pose 模型用 Python 训练from ultralytics import YOLO # 加载模型推荐加载预训练权重进行微调 model YOLO(yolo26n-pose.pt) # load a pretrained model (recommended for training) # 在 COCO-Pose 上训练 100 个 epoch输入尺寸 640 results model.train(datacoco-pose.yaml, epochs100, imgsz640)用 CLI 训练# 从预训练 *.pt 权重开始训练 yolo pose train datacoco-pose.yaml modelyolo26n-pose.pt epochs100 imgsz640数据量较小时例如刚验证完 COCO8-Pose也可以从模型 YAML 直接构建或先转存预训练权重# 从 YAML 构建新模型并从头训练 yolo pose train datacoco8-pose.yaml modelyolo26n-pose.yaml epochs100 imgsz640 # 从 YAML 构建模型并迁移预训练权重后训练 yolo pose train datacoco8-pose.yaml modelyolo26n-pose.yaml pretrainedyolo26n-pose.pt epochs100 imgsz640完整可调参数请查阅 Training 模式文档。值得说明的是CLI 中的yolo pose train通过 入口模块 的任务分发将datacoco-pose.yaml等键值参数传给训练引擎coco-pose.yaml的文件名会被解析为仓库配置目录下的数据集定义。验证ValCOCO-Pose 数据规模较大训练中通常使用其 val2017 划分评估模型。训练完成后无需重复指定数据集——model会保留训练时的data与参数作为模型属性from ultralytics import YOLO model YOLO(yolo26n-pose.pt) # 官方模型 model YOLO(path/to/best.pt) # 自定义训练模型 metrics model.val() # 无需参数自动使用训练时的数据集与设置 metrics.box.map # box mAP50-95 metrics.pose.map # pose mAP50-95对应 mAP^pose 50-95 metrics.pose.map50 # pose mAP50 metrics.pose.map75 # pose mAP75 metrics.pose.maps # 每个类别各自的 mAP50-95(P) 列表 metrics.pose.image_metrics # 逐图像 pose 指标字典含 precision/recall/F1/TP/FP/FN对应的 CLI 命令为yolo pose val modelyolo26n-pose.pt # 验证官方模型 yolo pose val modelpath/to/best.pt # 验证自定义模型推理Predict训练好的模型可用model.predict或yolo pose predict直接对图像、视频与实时流做姿态估计每个检测到的人物实例输出 17 组关键点及其可见性from ultralytics import YOLO model YOLO(yolo26n-pose.pt) results model(https://ultralytics.com/images/bus.jpg) for result in results: xy result.keypoints.xy # (N, 17, 2)像素坐标 xyn result.keypoints.xyn # (N, 17, 2)归一化坐标 kpts result.keypoints.data # (N, 17, 3)含可见性/置信度CLI 形式为yolo pose predict modelyolo26n-pose.pt sourcehttps://ultralytics.com/images/bus.jpg。关键点推理结果的字段结构在 任务文档的 Results 部分 有完整说明其底层类型Keypoints与后处理实现在 推理结果模块 中定义。评测指标OKS 与 mAPposeCOCO-Pose 继承自 COCO因此评测遵循 COCO 关键点挑战的标准协议。核心指标是Object Keypoint SimilarityOKS用于度量预测关键点与真值标注的吻合程度$$ \mathrm{OKS} \frac{\sum_i \exp(-d_i^2 / 2 s^2 \kappa_i^2) \cdot \delta(v_i 0)}{\sum_i \delta(v_i 0)} $$其中d_i为第i个关键点的预测与真值欧氏距离s为目标尺度κ_i为各关键点的归一化常数per-keypoint sigmav_i为可见性标志只有v 0的标注关键点参与计算。汇总各 OKS 阈值0.50–0.95即可得到 mAPpose50-95这是表格中横比模型精度的主要数字。由于只有被标注可见或遮挡但已标注的关键点才计入 OKS(x, y, visibility)三元组中的可见性字段直接参与评测这正是标签质量影响模型成绩的关键环节之一。应用场景COCO-Pose 用于训练与评估关键点检测 / 姿态估计深度学习模型其大规模标注与标准化评测使其成为人体姿态方向研究与工程实践的基石资源典型应用包括运动分析、健身动作监测、医疗康复辅助、人机交互等。如需进一步了解模型在关键点检测之外的使用方式可参考 Pose Estimation 任务文档若需要自定义关键点数据也可以参考仓库中同目录下的 Dog-Pose、Tiger-Pose、Hand Keypoints 等专门数据集。引用与致谢如果在研究或开发中使用 COCO-Pose 数据集请按 COCO 惯例引用以下论文misc{lin2015microsoft, title{Microsoft COCO: Common Objects in Context}, author{Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár}, year{2015}, eprint{1405.0312}, archivePrefix{arXiv}, primaryClass{cs.CV} }常见问题COCO-Pose 数据集是什么如何与 Ultralytics YOLO 姿态模型搭配使用COCO-Pose 将 COCO Keypoints 2017 的图像与标注转换为 YOLO 关键点格式58,945 张图像、17 关键点 schema。将任何 Ultralytics YOLO pose 模型指向它即可训练即datacoco-pose.yaml其余可调参数见 Training 模式文档。如何用 YOLO26 在 COCO-Pose 上训练加载yolo26n-pose.pt并调用model.train(datacoco-pose.yaml, epochs100, imgsz640)Python 与 CLI 的完整示例见上文使用 COCO-Pose 训练 YOLO26-pose 模型一节。COCO-Pose 提供哪些评测指标与原始 COCO 类似核心是 OKSObject Keypoint Similarity用于评估预测关键点相对真值的精度进而汇总为 mAPpose50-95、mAPpose50 等指标实现不同模型间的公平比较。数据集如何划分COCO-Pose 提供两个含标注的划分56,599 张 train2017 与 2,346 张 val2017。第三个划分 test-dev2017完整 40,670 张 test2017 中的 20,288 张真值保持私有其 YAML 配置关联到 COCO test-dev keypoints 评测服务器。关键特性与应用有哪些COCO-Pose 使用 17 种人体关键点类型并继承 COCO 的标准化指标含 OKS适合运动分析、医疗健康与人机交互等人体姿态场景。各尺寸的预训练 YOLO26-pose 权重列表参见上文性能基准表。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考