MMPose 2D Body Keypoint 数据集全指南:COCO 到 PoseTrack18 的下载、目录组织与配置接入
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
MMPose 官方文档 docs/en/dataset_zoo/2d_body_keypoint.md 系统整理了人体 2D 关键点估计(2D Body Keypoint Estimation)所支持的 10 个公开数据集——包括 8 个图像数据集(COCO、MPII、MPII-TRB、AIC、CrowdPose、OCHuman、MHP、Human-Art、ExLPose)和 2 个视频数据集(PoseTrack18、sub-JHMDB)。本指南将完整继承该文档的下载指引与目录规范,并深入仓库源码,说明每个数据集的标注结构、关键点定义、配置接入方式与底层加载逻辑,帮助读者把数据集正确安装到$MMPOSE/data并完成训练与评估。
目录约定:统一的数据根目录
MMPose 约定将数据集根目录软链接(symlink)到$MMPOSE/data,这样所有配置文件的默认路径才能生效。如果你的目录结构与约定不同,需要同步修改配置文件中对应的路径。
文档中每个数据集都给出了期望的目录树。整体结构是:
mmpose ├── mmpose ├── docs ├── tests ├── tools ├── configs `── data │── coco │── mpii │── aic │── crowdpose │── ochuman │── mhp │── HumanArt │── ExLPose │── posetrack18 `── jhmdb从源码看,数据集的标注文件路径由配置文件统一管理。例如 COCO 数据集的元信息定义在 configs/base/datasets/coco.py,而数据集类CocoDataset通过METAINFO = dict(from_file='configs/_base_/datasets/coco.py')直接引用该配置(见 mmpose/datasets/datasets/body/coco_dataset.py),这正是"目录不同步、只需改配置"机制的底层实现。
图像数据集
COCO:多人体关键点的标准基准
COCO(Microsoft COCO,ECCV'2014)是目前人体姿态估计最常用的基准数据集。训练和验证关键点任务需要下载2017 Train/Val两个分区的数据。官方仓库 HRNet-Human-Pose-Estimation 提供了 COCO val2017 的人体检测结果(person detection result),用于复现多人姿态估计的实验;若要评估 COCO'2017 test-dev 分区,还需额外下载 image-info 文件。
将数据解压到$MMPOSE/data后,期望的目录结构为:
data/coco │-- annotations │ │-- person_keypoints_train2017.json │ |-- person_keypoints_val2017.json │ |-- person_keypoints_test-dev-2017.json |-- person_detection_results | |-- COCO_val2017_detections_AP_H_56_person.json | |-- COCO_test-dev2017_detections_AP_H_609_person.json │-- train2017 │ │-- 000000000009.jpg │ │-- 000000000025.jpg │ │-- 000000000030.jpg │ │-- ... `-- val2017 │-- 000000000139.jpg │-- 000000000285.jpg │-- 000000000632.jpg │-- ...COCO 人体关键点共有 17 个点,其定义直接写在配置 configs/base/datasets/coco.py 的keypoint_info中:0~4为鼻子、左右眼、左右耳(头部),5~10为左右肩、肘、腕(上肢),11~16为左右髋、膝、踝(下肢)。每个关键点还包含可视化颜色、type(upper/lower)以及左右对称点的swap映射,用于数据增强时的左右翻转。此外该配置还给出了joint_weights(各关键点在损失函数中的权重,肘/膝 1.2、腕/踝 1.5,重点部位加权)和sigmas(用于计算 OKS 的关键点标准差)。
MPII:单人与多人姿态估计基准
MPII(CVPR'2014)包含约 2.5 万张图像、4 万余个带标注的人体实例,其官方标注是.mat格式。MMPose 已将原始标注转换为 json 格式(mpii_annotations.tar),解压后的目录结构为:
data/mpii |-- annotations | |-- mpii_gt_val.mat | |-- mpii_test.json | |-- mpii_train.json | |-- mpii_trainval.json | `-- mpii_val.json `-- images |-- 000001163.jpg |-- 000003072.jpgMPII 使用16 个关键点定义(见 configs/base/datasets/mpii.py),与 COCO 不同:0~5为右踝/膝/髋、左髋/膝/踝,6~9为骨盆、胸腔、上颈、头顶,10~15为左右腕/肘/肩。其中mpii_gt_val.mat提供的 headbox 信息用于计算 PCKh 指标——这一点在数据集类 mmpose/datasets/datasets/body/mpii_dataset.py 的headbox_file参数中有所体现。
MPII 的.mat结果转换:训练和推理时,预测结果默认保存为.mat格式。文档提供工具将其转换为更易读的.json格式:
python tools/dataset/mat2json ${PRED_MAT_FILE} ${GT_JSON_FILE} ${OUTPUT_PRED_JSON_FILE}例如:
python tools/dataset/mat2json work_dirs/res50_mpii_256x256/pred.mat data/mpii/annotations/mpii_val.json pred.json该工具的源码位于 tools/dataset_converters/mat2json.py:它通过scipy.io.loadmat读取preds数组,读取 ground-truth json 获取图像名,再将预测关键点逐实例写回annotations,最后输出 COCO 风格的 json 文件。
MPII-TRB:三元组表示的人体理解
MPII-TRB(ICCV'2019)在 MPII 基础上引入 Triplet Representation(三元组表示),图像来自 MPII 数据集,标注文件需单独下载。目录结构为:
data/mpii |-- annotations | |-- mpii_trb_train.json | |-- mpii_trb_val.json `-- images |-- 000001163.jpg |-- 000003072.jpg注意其图像目录与 MPII 共用data/mpii/images,只是标注文件不同(mpii_trb_train.json、mpii_trb_val.json)。
AIC:大规模图像理解挑战赛
AI Challenger(AIC,ArXiv'2017)提供 2017 Train/Val 数据用于关键点训练与验证。目录结构为:
data/aic |-- annotations | |-- aic_train.json | |-- aic_val.json |-- ai_challenger_keypoint_train_20170902 | |-- keypoint_train_images_20170902 | | |-- 0000252aea98840a550dac9a78c476ecb9f47ffa.jpg | | |-- 000050f770985ac9653198495ef9b5c82435d49c.jpg | | |-- ... `-- ai_challenger_keypoint_validation_20170911 |-- keypoint_validation_images_20170911 |-- 0002605c53fb92109a3f2de4fc3ce06425c3b61f.jpg |-- 0003b55a2c991223e6d8b4b820045bd49507bf6d.jpg |-- ...AIC 的标注 json(aic_annotations.tar)与图像是分开下载的。
CrowdPose:拥挤场景下的姿态估计
CrowdPose(CVPR'2019)专门面向拥挤场景,包含约 2 万张图像、8 万个人体实例,人群遮挡严重。标注与人体检测结果一起打包在crowdpose_annotations.tar中。
对于自顶向下(top-down)方法,文档说明遵循原论文做法,使用 YOLOv3 预训练权重生成检测到的人体包围框;对于模型训练,则遵循 HigherHRNet 的设定,在 CrowdPose train/val 上训练、在 test 上评估。目录结构为:
data/crowdpose |-- annotations | |-- mmpose_crowdpose_train.json | |-- mmpose_crowdpose_val.json | |-- mmpose_crowdpose_trainval.json | |-- mmpose_crowdpose_test.json | |-- det_for_crowd_test_0.1_0.5.json |-- images |-- 100000.jpg |-- 100001.jpg |-- 100002.jpg |-- ...CrowdPose 使用14 个关键点(见 configs/base/datasets/crowdpose.py):0~11为左右肩/肘/腕/髋/膝/踝,12~13为头顶(top_head)与颈部(neck)。其joint_weights与 COCO 明显不同——肩、肘、髋、膝等部位权重被降为 0.2 左右,以弱化遮挡严重关节的干扰。
OCHuman:遮挡人类数据集
OCHuman(CVPR'2019)包含 4731 张图像,聚焦严重遮挡场景。MMPose 直接使用其官方标注(已转换为 COCO 格式),目录结构为:
data/ochuman |-- annotations | |-- ochuman_coco_format_val_range_0.00_1.00.json | |-- ochuman_coco_format_test_range_0.00_1.00.json |-- images |-- 000001.jpg |-- 000002.jpg |-- 000003.jpg |-- ...文件名中的range_0.00_1.00表示使用遮挡度 0%~100% 的完整子集(OCHuman 官方还提供其他遮挡范围子集)。
MHP:拥挤场景多人解析
MHP(ACM MM'2018)的标注文件打包在mhp_annotations.tar.gz中。目录结构为:
data/mhp |-- annotations | |-- mhp_train.json | |-- mhp_val.json |-- train | |-- images | | |-- 1004.jpg | | |-- 10050.jpg | | |-- ... |-- val | |-- images | | |-- 10059.jpg | | |-- 10068.jpg | | |-- ... `-- test |-- images | |-- 1005.jpg | |-- 10052.jpg | |-- ...Human-Art:自然与人工场景人体数据集
Human-Art(CVPR'2023)是一个跨场景人体数据集,同时覆盖真实照片与 2D/3D 虚拟人、卡通、数字艺术等人工场景。注意:该数据需要通过官网填写数据申请表获得访问权限。图像按场景分子目录存放:
data/HumanArt |-- images | |-- 2D_virtual_human | | |-- cartoon | | | |-- 000000000000.jpg | | | |-- ... | | |-- digital_art | | |-- ... | |-- 3D_virtual_human | |-- real_human |-- annotations | |-- validation_humanart.json | |-- training_humanart_coco.json |-- person_detection_results |-- HumanArt_validation_detections_AP_H_56_person.jsonHuman-Art 的关键点定义与 COCO 一致(同为 17 点),对应配置见 configs/base/datasets/humanart.py。文档特别提示:如果还想使用额外的标注文件(例如 cartoon 的验证集),需要同步修改配置文件中的相应代码。
ExLPose:极低光照人体姿态估计
ExLPose(CVPR'2023)关注极低光照条件下的姿态估计,图像分为bright(亮光)与dark(暗光)两组。目录结构为:
data/ExLPose |-- annotations | |-- ExLPose | |-- ExLPose_test_LL-A.json | |-- ExLPose_test_LL-E.json | |-- ExLPose_test_LL-H.json | |-- ExLPose_test_LL-N.json | |-- ExLPose_test_WL.json | |-- ExLPose_train_LL.json | |-- ExLPose_train_WL.json |-- bright | |-- imgs_0119_3_vid000002_exp100_bright_000052__gain_0.00_exposure_1000.png | |-- ... |-- dark |-- imgs_0119_3_vid000002_exp100_dark_000052__gain_0.00_exposure_1000.png |-- ...标注按亮/暗与不同光照强度划分:LL-*表示低光照(Low-Light)各子集,WL表示正常光照(Well-Light)。
视频数据集
PoseTrack18:视频姿态估计与跟踪基准
PoseTrack18(CVPR'2018)是视频人体姿态估计与跟踪的基准。MMPose 已将官方按视频拆分的标注合并为两个 json 文件(posetrack18_train.json与posetrack18_val.json),并额外提供 mask 文件以加速训练。对于 top-down 方法,文档说明使用 MMDetection 预训练的 Cascade R-CNN(X-101-64x4d-FPN)生成检测框。目录结构为:
data/posetrack18 |-- annotations | |-- posetrack18_train.json | |-- posetrack18_val.json | |-- posetrack18_val_human_detections.json | |-- train | | |-- 000001_bonn_train.json | | |-- ... | |-- val | | |-- 000342_mpii_test.json | | |-- ... | `-- test | |-- 000001_mpiinew_test.json | |-- ... |-- images | |-- train | | |-- 000001_bonn_train | | | |-- 000000.jpg | | | |-- ... | |-- val | |-- test `-- mask |-- train |-- valPoseTrack18 使用17 个关键点(见 configs/base/datasets/posetrack18.py),与 COCO 相比头部定义不同:0为鼻子,1~2为 head_bottom 与 head_top,3~4为左右耳,其余 12 点与 COCO 一致。其官方评估工具需要单独安装:
pip install git+https://github.com/svenkreiss/poseval.git该数据集的加载逻辑见 mmpose/datasets/datasets/body/posetrack18_dataset.py,与 COCO 一样继承自BaseCocoStyleDataset,说明 PoseTrack18 的标注在 MMPose 中同样被规范化为 COCO 风格。
sub-JHMDB:带子划分的动作姿态数据集
sub-JHMDB 是 JHMDB 的子集,MMPose 用于单人姿态估计实验,并按官方划分提供 3 个子集(Sub1/Sub2/Sub3)。图像从 JHMDB 官方下载(Rename_Images.tar.gz),标注文件来自jhmdb_annotations.tar。目录结构为:
data/jhmdb |-- annotations | |-- Sub1_train.json | |-- Sub1_test.json | |-- Sub2_train.json | |-- Sub2_test.json | |-- Sub3_train.json | |-- Sub3_test.json |-- Rename_Images |-- brush_hair | |--April_09_brush_hair_u_nm_np1_ba_goo_0 | |--00001.png | |--00002.png |-- catch |-- ...配置接入与数据集类的实现
无论哪个数据集,接入训练/测试的路径都是统一的:在模型配置中指定dataset_type、data_root、ann_file、data_prefix等字段,并metainfo引用对应的_base_/datasets/*.py数据集信息配置。例如 COCO 的数据集类定义在 mmpose/datasets/datasets/body/coco_dataset.py,其核心是一行METAINFO = dict(from_file='configs/_base_/datasets/coco.py'),即"数据集的元信息(关键点、骨架、权重、sigma)从该配置文件中读取"。
这套机制带来的直接收益是:更换数据集时,你通常只需要替换dataset_type、data_root与ann_file,而无需改动数据流管线和模型结构。例如在 configs/body_2d_keypoint/topdown_heatmap/coco 目录下,同一套 top-down heatmap 训练框架被复用于 COCO、MPII、CrowdPose、AIC 等多个数据集。
此外,从 mmpose/datasets/datasets/body 目录可以看到,仓库为每个数据集单独实现了类:CocoDataset、MpiiDataset、MpiiTrbDataset、AicDataset、CrowdPoseDataset、OCHumanDataset、MhpDataset、HumanArtDataset、HumanArt21Dataset、ExLPoseDataset、PoseTrack18Dataset、JhmdbDataset等,它们统一注册到DATASETSregistry 中。其中 MPII 的headbox_file参数专为 PCKh 指标服务,PoseTrack18 则另有一个面向视频跟踪场景的 posetrack18_video_dataset.py 变体,体现了"同一数据集在不同任务范式下复用"的设计思路。
小结
本文以官方数据集文档为核心,完整梳理了 MMPose 支持的 2D Body Keypoint 数据集:图像类(COCO、MPII、MPII-TRB、AIC、CrowdPose、OCHuman、MHP、Human-Art、ExLPose)与视频类(PoseTrack18、sub-JHMDB)。所有数据集统一放置于$MMPOSE/data,标注以 COCO 风格 json 为媒介,通过configs/_base_/datasets/*.py完成关键点、骨架、损失权重与 sigma 的配置注入。实操时,只需按各节的目录树放置图像与标注,即可直接复用仓库中对应的数据集类与训练配置开始实验。
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考