Ultralytics YOLO27:
Get Started

COCO-Pose 数据集#

COCO-Pose 数据集将 COCO(上下文中的常见物体)改编用于姿态估计:其中包含来自 COCO Keypoints 2017 的 58,945 张图像,使用 17 个关键点的定义标注了 156,165 个人物。它是训练和评估关键点模型的标准数据集,例如 Ultralytics YOLO26;其 8 张图像组成的子集 COCO8-Pose 沿用相同格式,便于快速进行合理性检查。

使用人体关键点进行 COCO 姿态估计

COCO-Pose 预训练模型#

模型尺寸
(像素)
mAP姿态
50-95(e2e)
mAP姿态
50(e2e)
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(ms)
参数
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.6
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.424.1
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.3
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.7
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6202.3

主要功能#

  • COCO-Pose 基于 COCO Keypoints 2017 挑战赛构建,该挑战赛为 156,165 个标注人物标注了 1,710,498 个独立关键点。
  • 每个人物标注都使用 17 种关键点类型——鼻子、眼睛、耳朵、肩膀、肘部、手腕、臀部、膝盖和脚踝——并以 (x, y, visibility) 三元组形式存储。
  • 与 COCO 一样,该数据集提供标准化评估指标,包括用于姿态估计任务的目标关键点相似度(OKS),因此适合比较模型性能。
  • 下载大小:首次使用时约为 ~20.2 GB(train2017.zip + val2017.zip + 标签)。不会自动获取 7 GB 的 test2017.zip,因为这些图像不提供真实标注,仅在提交 test-dev2017 结果时需要。

数据集结构#

在训练和验证时,COCO-Pose 仅包含含有关键点标注人物的 COCO 2017 图像,因此其带标签的数据划分比完整 COCO 数据集更小。其 YAML 定义了三个子集:

  1. Train2017:此子集包含 COCO 数据集中的 56,599 张图像,已标注用于训练姿态估计模型。
  2. Val2017:此子集包含 2,346 张图像,用于模型训练期间的验证。
  3. Test-dev2017:完整的 40,670 张 test2017 图像中包含 20,288 张图像的子集,不提供真实标注。数据集 YAML 将此划分关联到 COCO test-dev 关键点评估服务器。

在如此规模的数据集上训练时,Ultralytics Platform 最能发挥作用——它会管理计算资源,让你无需自行配置 GPU 就能启动和监控运行任务。

应用场景#

COCO-Pose 数据集专门用于训练和评估在关键点检测和姿态估计方面表现出色的深度学习模型。该数据集包含大量标注图像,并采用标准化评估指标,是从事人体姿态研究的计算机视觉研究人员和从业者的重要资源。

数据集 YAML#

使用 YAML 文件定义数据集配置,其中包含数据集路径、类别和其他相关信息。对于 COCO-Pose 数据集,coco-pose.yaml 文件由 https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml 维护。

ultralytics/cfg/datasets/coco-pose.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO 2017 Keypoints dataset https://cocodataset.org by Microsoft
# Documentation: https://docs.ultralytics.com/datasets/pose/coco
# Example usage: yolo train data=coco-pose.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco-pose ← downloads here (20.2 GB)

# 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: coco-pose # dataset root dir
train: train2017.txt # train images (relative to 'path') 56599 images
val: val2017.txt # val images (relative to 'path') 2346 images
test: test-dev2017.txt # 20288 of 40670 images, submit to https://codalab.lisn.upsaclay.fr/competitions/7403

# 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: |
  from pathlib import Path

  from ultralytics.utils import ASSETS_URL
  from ultralytics.utils.downloads import download

  # Download labels
  dir = Path(yaml["path"])  # dataset root dir

  urls = [f"{ASSETS_URL}/coco2017labels-pose.zip"]
  download(urls, dir=dir.parent)

  # Download data (test2017.zip excluded: ground truth is withheld, only used for the CodaLab test-dev split)
  urls = [
      "http://images.cocodataset.org/zips/train2017.zip",  # 19G, 118k images
      "http://images.cocodataset.org/zips/val2017.zip",  # 1G, 5k images
  ]
  download(urls, dir=dir / "images", threads=3)

用法#

要在 COCO-Pose 数据集上训练 YOLO26n-pose 模型 100 个 epoch,并将图像尺寸设为 640,可以使用以下代码片段。可用参数的完整列表请参阅模型训练页面。

训练示例
from ultralytics import YOLO

# 加载模型
model = YOLO("yolo26n-pose.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

示例图像和标注#

COCO-Pose 数据集包含各种带有人体关键点标注的图像。以下是数据集中的一些图像示例及其对应的标注:

COCO 姿态估计数据集马赛克训练批次

  • 马赛克图像:此图像展示了由数据集马赛克图像组成的训练批次。马赛克是一种训练时使用的技术,它将多张图像合并为一张图像,从而增加每个训练批次中目标和场景的多样性。这有助于提升模型对不同目标尺寸、长宽比和上下文的泛化能力。

该示例展示了 COCO-Pose 数据集中图像的多样性和复杂性,以及在训练过程中使用马赛克增强的优势。

引用与致谢#

如果你在研究或开发工作中使用 COCO-Pose 数据集,请引用以下论文:

引用格式
@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 联盟创建并维护这一对计算机视觉社区有价值的资源。若要详细了解 COCO-Pose 数据集及其创建者,请访问 COCO 数据集网站。

常见问题#

  • COCO-Pose 提供 COCO Keypoints 2017 图像和标注,并将其转换为 YOLO 关键点格式;该数据集包含 58,945 张图像,采用 17 个关键点的定义。将任意 Ultralytics YOLO 姿态模型指向 data=coco-pose.yaml 即可使用该数据集,训练页面介绍了之后可调整的所有参数。

  • 加载 yolo26n-pose.pt 并调用 model.train(data="coco-pose.yaml", epochs=100, imgsz=640) — 完整的 Python 和 CLI 代码片段请参阅上方的训练示例,参数完整列表请参阅训练页面。

  • COCO-Pose 数据集为姿态估计任务提供多种标准化评估指标,与原始 COCO 数据集类似。主要指标包括目标关键点相似度(OKS),用于评估预测关键点与真实标注之间的准确度。这些指标可用于全面比较不同模型的性能。例如,文档列出了 COCO-Pose 预训练模型(如 YOLO26n-pose、YOLO26s-pose 等)的具体性能指标,例如 mAPpose50-95 和 mAPpose50。

  • COCO-Pose 提供两个带标注的数据划分:56,599 张 train2017 图像和 2,346 张 val2017 图像。第三个划分 test-dev2017(完整 40,670 张 test2017 图像中的 20,288 张)不公开其真实标注;数据集 YAML 将其链接到 COCO test-dev 关键点评估服务器。具体划分路径请参阅数据集结构部分,或查看 GitHub 上的 coco-pose.yaml 文件。

  • COCO-Pose 使用 17 种人体关键点类型,并采用 COCO 的标准化指标(包括目标关键点相似度(OKS))来比较模型。这种组合适用于体育分析、医疗保健和人机交互等人体姿态应用。YOLO26-pose 预训练权重列于 COCO-Pose 预训练模型部分。

    有关关键点模型的更多信息,请参阅姿态估计任务文档。

评论