ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MMPose 2D 全身关键点数据集实战:COCO-WholeBody 与 Halpe 的下载、组织与评测配置

MMPose 2D 全身关键点数据集实战:COCO-WholeBody 与 Halpe 的下载、组织与评测配置 MMPose 2D 全身关键点数据集实战COCO-WholeBody 与 Halpe 的下载、组织与评测配置【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文聚焦 MMPose 仓库docs/zh_cn/dataset_zoo/2d_wholebody_keypoint.md文档所讲解的 2D 全身Wholebody关键点数据集准备工作覆盖 COCO-WholeBody 与 Halpe 两个官方支持数据集的下载来源、标准目录结构、评估依赖xtcocotools安装并结合mmpose/datasets/datasets/wholebody下的数据集实现与mmpose/evaluation/metrics/coco_wholebody_metric.py评测指标、configs/wholebody_2d_keypoint下的真实训练配置完整讲解从数据落盘到可训练、可评测的落地路径。一、文档定位与整体结论docs/zh_cn/dataset_zoo/2d_wholebody_keypoint.md英文版为docs/en/dataset_zoo/2d_wholebody_keypoint.md是 MMPose 数据动物园中关于全身姿态的入口文档其核心结论只有两条推荐将数据集根目录软链接到$MMPOSE/data如果实际目录结构不同则需要同步修改配置文件中的相应路径当前官方文档支持的两个全身关键点数据集为COCO-WholeBodyECCV 2020133 关键点与HalpeCVPR 2020136 关键点。文档为两个数据集分别给出了论文 BibTeX、图片下载与标注文件下载地址、person detection result人体检测框结果文件下载地址、解压后的标准目录树以及一条统一的评估依赖安装命令pip install xtcocotools下文按数据集逐一展开并补充源码层面的关键点定义、解析逻辑与评测切分方式。二、COCO-WholeBody 数据集2.1 数据集概况COCO-WholeBody 出自论文《Whole-Body Human Pose Estimation in the Wild》ECCV 2020在 COCO 17 个人体关键点之上扩展了足部、面部与双手关键点。从源码mmpose/datasets/datasets/wholebody/coco_wholebody_dataset.py的类注释可以确认其完整的 133 关键点布局0-16: 17 body keypoints # 人体COCO 标准 17 点 17-22: 6 foot keypoints # 足部大脚趾、小脚趾、脚跟 × 左右 23-90: 68 face keypoints # 面部68 点 91-132: 42 hand keypoints # 双手含 2 个 hand_root 4 指 × 4 节 × 2 手对应的数据集元信息keypoint_info、skeleton_info、sigmas、joint_weights集中在 coco_wholebody.py 中。其中两个值得注意的实现细节joint_weights[1.] * 133全部 133 个关键点权重相等sigmas数组包含 133 个 OKS 评测用标准差其取值来源在配置文件中以注释标明官方 COCO-WholeBody 仓库的evaluation/myeval_wholebody.py例如身体关键点沿用 COCO 的 sigmanose 0.026、l_shoulder 0.079 等面部与手部关键点使用更小量级的 sigma体现越精细的部件容忍越小误差的评测口径。2.2 下载与目录组织文档原文步骤完整保留文档要求图像从 COCO 官方下载 2017 Train/Val 图像用于关键点训练与验证标注从文档给出的 Google Drive 链接下载 COCO-WholeBody 的 Train / Validation 标注coco_wholebody_train_v1.0.json、coco_wholebody_val_v1.0.json人体检测结果从文档给出的 OneDrive / Google Drive 链接下载 COCO val2017 的人体检测结果文件COCO_val2017_detections_AP_H_56_person.json将上述内容下载解压到$MMPOSE/data下形成如下结构mmpose ├── mmpose ├── docs ├── tests ├── tools ├── configs ── data │── coco │-- annotations │ │-- coco_wholebody_train_v1.0.json │ |-- coco_wholebody_val_v1.0.json |-- person_detection_results | |-- COCO_val2017_detections_AP_H_56_person.json │-- train2017 │ │-- 000000000009.jpg │ │-- 000000000025.jpg │ │-- 000000000030.jpg │ │-- ... -- val2017 │-- 000000000139.jpg │-- 000000000285.jpg │-- 000000000632.jpg │-- ...该目录结构不是约定俗成而是与仓库内配置严格对位。以 rtmpose-m_8xb64-270e_coco-wholebody-256x192.py 为例数据加载器直接写死了文档中的路径dataset_type CocoWholeBodyDataset data_mode topdown data_root data/coco/ train_dataloader dict( datasetdict( typedataset_type, data_rootdata_root, ann_fileannotations/coco_wholebody_train_v1.0.json, data_prefixdict(imgtrain2017/), ...)) val_dataloader dict( datasetdict( typedataset_type, data_rootdata_root, ann_fileannotations/coco_wholebody_val_v1.0.json, data_prefixdict(imgval2017/), test_modeTrue, bbox_filedata/coco/person_detection_results/ COCO_val2017_detections_AP_H_56_person.json, ...))可以看到ann_file与data_prefix均相对data_root data/coco/解析bbox_file则对应person_detection_results目录下的检测结果文件——这正是文档强调目录结构不同就必须改配置路径的原因。同时配置通过backend_args dict(backendlocal)本地读取并保留了注释掉的 Petrel/S3 后端写法说明云端对象存储场景可以按注释替换。2.3 评估依赖xtcocotools文档明确要求安装扩展版 COCO API版本 1.5以支持 COCO-WholeBody 评测pip install xtcocotools仓库层面这一依赖是真实的运行时依赖requirements/runtime.txt与setup.py中均声明了xtcocotools评测实现mmpose/evaluation/metrics/coco_wholebody_metric.py直接from xtcocotools.cocoeval import COCOeval。之所以不能用原生 pycocotools是因为 COCO-WholeBody 的 JSON 中每个 instance 除了keypoints外还带有foot_kpts、face_kpts、lefthand_kpts、righthand_kpts四个独立字段原生 COCO API 无法解析这种分区关键点结构。三、Halpe 数据集3.1 数据集概况Halpe 出自 PaStaNet 论文CVPR 2020面向人-物交互场景的全身姿态标注。其关键点布局在 halpe_dataset.py 的类注释中定义为共 136 个0-19: 20 body keypoints # 比 COCO-WholeBody 多 head/neck/hip 3 个中心点 20-25: 6 foot keypoints 26-93: 68 face keypoints 94-135: 42 hand keypoints与 COCO-WholeBody 的差异点可从 halpe.py 元信息中核对关键点总数 136joint_weights[1.] * 136比 COCO-WholeBody 多出的 3 个点即head、neck、hip骨架连接不同Halpe 的躯干骨架经由neck脖颈中心点连接双肩、经hip胯部中心点连接双髋并额外定义head-neck连线形成头—颈—髋的中心轴骨架手部手指则直接以wrist为起点连线如left_wrist - left_thumb1而非 COCO-WholeBody 的hand_root起点评测 sigma 方面Halpe 的sigmas中面部 68 点统一取 0.015手部 42 点统一取 0.021 量级同样由官方 HalpeCOCOAPI 代码提供配置文件注释中给出了来源路径。HalpeDataset实现非常薄——它直接继承BaseCocoStyleDataset仅通过METAINFO: dict dict(from_fileconfigs/_base_/datasets/halpe.py)指向元信息文件。这说明 Halpe 的 JSON 标注与 COCO 格式在字段层面兼容keypoints为平铺的K*3序列因此无需像CocoWholeBodyDataset那样重写parse_data_info做分区拼接。3.2 下载与目录组织文档原文步骤完整保留文档给出的数据来源图像与标注从 Halpe 官方仓库下载其中训练集图像来自 HICO-Det验证集图像来自 COCO val2017val2017.zip人体检测结果与 COCO-WholeBody 相同下载 COCO val2017 的人体检测结果COCO_val2017_detections_AP_H_56_person.jsonOneDrive / Google Drive 两个渠道解压到$MMPOSE/data后应形成如下结构mmpose ├── mmpose ├── docs ├── tests ├── tools ├── configs ── data │── halpe │-- annotations │ │-- halpe_train_v1.json │ |-- halpe_val_v1.json |-- person_detection_results | |-- COCO_val2017_detections_AP_H_56_person.json │-- hico_20160224_det │ │-- anno_bbox.mat │ │-- anno.mat │ │-- README │ │-- images │ │ │-- train2015 │ │ │ │-- HICO_train2015_00000001.jpg │ │ │ │-- HICO_train2015_00000002.jpg │ │ │ │-- HICO_train2015_00000003.jpg │ │ │ │-- ... │ │ │-- test2015 │ │-- tools │ │-- ... -- val2017 │-- 000000000139.jpg │-- 000000000285.jpg │-- 000000000632.jpg │-- ...注意 Halpe 的图像目录名hico_20160224_det/images/train2015完全保留 HICO-Det 原始打包结构训练配置中data_prefix必须与此一致annotations/下的两个 JSON 文件名halpe_train_v1.json/halpe_val_v1.json也是写死在配置中的文件名重命名将导致加载失败。Halpe 的评测同样依赖pip install xtcocotools文档末段明确说明依赖声明与 COCO-WholeBody 共用同一套运行时依赖。四、源码纵深133/136 关键点如何被解析与评测4.1 训练时的关键点拼接CocoWholeBodyDataset 重写了parse_data_info核心逻辑是把分区字段按固定顺序拼回一条133 x 3序列# COCO-Wholebody: consisting of body, foot, face and hand keypoints _keypoints np.array(ann[keypoints] ann[foot_kpts] ann[face_kpts] ann[lefthand_kpts] ann[righthand_kpts]).reshape(1, -1, 3) keypoints _keypoints[..., :2] keypoints_visible np.minimum(1, _keypoints[..., 2] 0)可见性判定为原值 0 即视为可见取 0/1并且解析结果保留了raw_ann_info的深拷贝——这一点很关键它让评测阶段无需重新读取标注文件即可还原 COCO 格式真值CocoWholeBodyMetric.gt_to_coco_json正是从raw_ann_info中取出keypoints/foot_kpts/face_kpts/lefthand_kpts/righthand_kpts五个字段重组 JSON 的。4.2 评测时的分区打分CocoWholeBodyMetric 继承自CocoMetric并定义了五个分区常量body_num 17 foot_num 6 face_num 68 left_hand_num 21 right_hand_num 21其_do_python_keypoint_eval会对同一份预测结果发起 6 轮独立的COCOeval分别以keypoints_body、keypoints_foot、keypoints_face、keypoints_lefthand、keypoints_righthand作为 iou_type并各自传入sigmas中对应切片的 sigma 值最后一轮以keypoints_wholebody使用全量 133 个 sigma 做总评。最终上报的指标名与标准 COCO 一致stats_names [AP, AP .5, AP .75, AP (M), AP (L), AR, AR .5, AR .75, AR (M), AR (L)]这与训练配置中的最佳模型保存规则形成闭环——rtmpose-m_8xb64-270e_coco-wholebody-256x192.py中 checkpoint hook 以coco-wholebody/AP为指标、rulegreater保存最优权重说明日志中主指标前缀为coco-wholebody即CocoWholeBodyMetric.default_prefix且该前缀下的AP取自最后一轮 wholebody 总评。results2json中的cuts np.cumsum([0, 17, 6, 68, 21, 21]) * 3也印证了预测结果按 body→foot→face→left hand→right hand 的顺序切分落盘与 4.1 的训练拼接顺序严格对称。4.3 可直接参考的训练配置rtmpose_coco-wholebody.md 目录提供了 RTMPose 系列在 COCO-WholeBody 上的基准配置small/medium/large/xlarge256x192 与 384x288 两档输入其典型配置要点以 medium 256x192 为例编码器SimCCLabelinput_size(192, 256)out_channels133即头输出通道数直接等于全身关键点数骨干为 mmdet 作用域下的 CSPNeXtexpand_ratio0.5, deepen_factor0.67, widen_factor0.75加载 RTMPose 预训练权重两阶段训练共 270 epoch末 30 epoch 由mmdet.PipelineSwitchHook切换到train_pipeline_stage2放弱数据增强scale_factor[0.75, 1.25]、rotate_factor60、CoarseDropout p0.5验证/测试评估器val_evaluator dict(typeCocoWholeBodyMetric, ann_filedata_root annotations/coco_wholebody_val_v1.0.json)再次与文档目录树中的标注文件名一一对应。五、落地检查清单按文档与仓库配置核对数据准备完成的判据可以浓缩为目录data/coco/annotations/coco_wholebody_train_v1.0.jsonval、data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json、data/coco/{train2017,val2017}/图像齐全Halpe 则额外确认data/halpe/annotations/halpe_{train,val}_v1.json与data/halpe/hico_20160224_det/images/train2015/图像树依赖pip install xtcocotools1.5否则CocoWholeBodyMetric导入即失败其from xtcocotools.cocoeval import COCOeval位于模块顶层路径一致性若数据未放在data/coco、data/halpe下需同步修改训练/评测配置中的data_root、ann_file、data_prefix与bbox_file四处路径关键点顺序任何自定义处理可视化、后处理必须遵守 body→foot→face→left hand→right hand 的拼接顺序否则会同时破坏训练标签与评测切分。以上即文档所覆盖的全部准备工作配合 mmpose/datasets/datasets/wholebody 的数据集实现与 mmpose/evaluation/metrics/coco_wholebody_metric.py 的评测实现可以完整复现 MMPose 全身关键点基准如 rtmpose_coco-wholebody.yml 所列指标的训练与评测流程。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表