恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
MMPose 人体 2D 姿态估计完全指南:Top-down 与 Bottom-up 范式、算法族与实战运行
首页
资讯中心
/
MMPose 人体 2D 姿态估计完全指南:Top-down 与 Bottom-up 范式、算法族与实战运行
MMPose 人体 2D 姿态估计完全指南:Top-down 与 Bottom-up 范式、算法族与实战运行
发布时间:2026/9/16 14:37:56
MMPose 人体 2D 姿态估计完全指南Top-down 与 Bottom-up 范式、算法族与实战运行【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose多人体 2D 姿态估计是计算机视觉的核心任务之一其目标是从一张输入图像中同时检测出所有人的姿态关键点集合是行为识别、人机交互、运动分析、增强现实等众多上层应用的基础能力。本指南以 MMPose 仓库中 configs/body_2d_keypoint/README.md 为主线系统梳理该任务的两大技术路线Top-down 与 Bottom-up、MMPose 中对应实现的全部算法族、COCO/MPII 等数据集准备流程以及图片、视频与统一 Inferencer 三种推理方式帮助你从原理到配置再到运行完整掌握在 MMPose 中落地人体 2D 姿态估计的方法。任务定义什么是多人体 2D 姿态估计按 MMPose 的定义多人体姿态估计Multi-person human pose estimation被描述为从输入图像中检测所有人体及其关键点姿态的任务。与单人姿态估计不同多人体场景天然面临三个叠加的挑战人数未知图像中可能出现任意数量、任意尺度、任意姿态的人实例分离模型不仅要知道哪里是关键点还要回答这些关键点属于哪一个人遮挡与拥挤密集人群场景中人体之间相互遮挡关键点归属判定尤为困难。围绕如何同时解决检测与分组学术界演化出两种截然不同的方法论自顶向下Top-down与自底向上Bottom-up。MMPose 的 configs/body_2d_keypoint 目录正是围绕这两大范式组织全部算法与配置的。两大技术路线Top-down 与 Bottom-upTop-down先检测再估计Top-down 方法将任务拆分为两个阶段以 DeepPose 为代表人体检测先用目标检测器找出图像中所有人体得到每个人的边界框bounding box单人姿态估计对每个边界框裁剪出的人体区域运行单人姿态估计模型预测该人的关键点坐标。这种串行结构使模型可以聚焦到每个人身上因此精度普遍较高是目前公开基准如 COCO上 AP 排行榜的常客但其代价是推理耗时随人数线性增长——检测出 N 个人就要跑 N 次单人姿态估计在人多的场景如演唱会、体育场会明显变慢。MMPose 中属于 Top-down 范式的方法有topdown_heatmap热力图法见下文坐标解码方式topdown_regression直接回归关键点坐标integral_regression积分回归IPR将热力图与坐标回归可微地统一simcc把坐标估计建模为两个方向上的分类问题rtmpose基于 SimCC 的高性能实时姿态估计框架。Bottom-up先检测全部关键点再分组归人Bottom-up 方法以 Associative Embedding 为代表走的是相反路径全图关键点检测一次性输出图像中所有候选关键点包括被遮挡的人的可见关键点分组/关联通过额外预测的分组标签将属于同一个人的关键点聚合成一个实例。因为无需人体检测器、关键点检测只有一次前向Bottom-up 的推理时间与人数的关系更平缓在拥挤场景下往往更具实时优势但分组环节的误差会直接传导到最终结果精度上限通常低于 Top-down 范式。MMPose 中属于 Bottom-up 范式的有associative_embeddingAssociative EmbeddingAEdekr解耦关键点回归cid上下文实例解耦Contextual Instance Decouplingrtmo基于 YOLO 架构的一阶段实时模型yoloxpose基于 YOLOX 检测框架的统一检测与姿态模型。MMPose 中的坐标解码方式与算法族深读虽然范式只有两类但如何从网络输出得到关键点坐标存在多种编码-解码方式这直接决定模型结构与精度表现。MMPose 在每个子目录的 README 中给出了明确的技术定位以下逐一解读。热力图法Top-down Heatmaptopdown_heatmap 遵循 Simple Baselines 开创的范式姿态估计器不直接回归坐标而是为每个关键点输出一张似然热力图图中峰值位置即对应关键点。MMPose 在此目录下提供了从 AlexNet、CPM、ShuffleNet 到 HRNet、MSPN、RSN、HRFormer、Swin、ViTPose、CSPNeXt 等二十余种骨干网络的完整实现并覆盖 COCO、MPII、CrowdPose、AIC、JHMDB、PoseTrack2018、Human-Art 等多个数据集。例如在 COCO val2017人体检测器 AP 56.4上hrnet_coco.md 记录了 HRNet-w32 256x192 输入下 AP 0.749 / AR 0.804 的结果其对应配置为 td-hm_hrnet-w32_8xb64-210e_coco-256x192.py。直接回归法Top-down Regressiontopdown_regression 遵循 DeepPose 的思路由骨干网络直接回归关键点坐标。这类方法结构简单、便于部署但传统上精度弱于热力图法。MMPose 特别实现了RLEResidual Log-likelihood Estimation变体——通过建模关键点标注的不确定性显著提升回归精度COCO val2017 上 ResNet-50RLE 达到 AP 0.706而同一骨干的纯回归只有 AP 0.528见 resnet_rle_coco.md。积分回归法Integral Regressionintegral_regression 采用 Integral Human Pose Regression在 COCO val2017 上 ResNet-50 基础下IPR AP 0.633、DSNT AP 0.674、Debias-IPR AP 0.675。SimCC 坐标分类法simcc 遵循 SimCC。RTMPose面向工业部署的实时框架rtmpose 是 MMPose 团队提出的高性能实时多人体姿态估计框架。它从范式、骨干网络、定位算法、训练策略、部署推理五个维度系统优化在 COCO val2017 上 RTMPose-l 达到 AP 0.758同时保持极高的推理速度。仓库文档明确报告RTMPose-m 在 Intel i7-11700 CPU 上可达 90 FPS在 NVIDIA GTX 1660 Ti GPU 上可达 430 FPS。以 rtmpose-m_8xb256-420e_coco-256x192.py 为例其配置核心要素包括编解码器codec dict(typeSimCCLabel, input_size(192, 256), sigma(4.9, 5.66), simcc_split_ratio2.0, ...)即采用 SimCC 坐标分类simcc_split_ratio2.0表示将每个像素再细分为 2 个 bin骨干网络复用 mmdet 的CSPNeXt_scope_mmdet并通过init_cfg加载预训练权重预测头RTMCCHead内部包含 GAUGating Attention Unit模块配合KLDiscretLoss进行蒸馏式分类训练beta10.0, label_softmaxTrue两阶段训练通过mmdet.PipelineSwitchHook在max_epochs - stage2_num_epochs即 390 epoch处切换到第二阶段数据增强更小的尺度扰动scale_factor[0.75, 1.25]优化策略AdamWlr4e-3weight_decay0.05前 1000 iter 线性预热后半程余弦退火并启用EMAHookmomentum0.0002稳定训练。Associative EmbeddingAEassociative_embedding 是最经典的自底向上方法之一网络为每个检测到的关键点额外预测一个标签tag——同一个人的标签彼此接近不同人的标签彼此远离据此即可把全图关键点聚合成个人实例。仓库以 HRNet 为骨干提供了 COCO 上的完整实现与训练配置associative_embedding/coco。DEKR解耦关键点回归dekrCVPR2021同样走 Bottom-up 路线但它同时检测所有实例中心并回归从实例中心到各关节的偏移。为提高偏移精度不同关节的偏移使用带可变形卷积的独立分支回归让每个关节都能以不同形状的卷积核提取针对性特征。配置见 dekr/coco 与 dekr/crowdpose是下方 Bottom-up Demo 的默认示例模型。RTMO一阶段实时模型rtmoarXiv:2312.07526把坐标分类无缝集成进 YOLO 架构属于一阶段模型其核心是Dynamic Coordinate ClassifierDCC模块通过双 1D 热力图完成关键点定位——DCC 采用动态 bin 分配将坐标 bin 定位到每个预测框附近以提高效率并基于位置编码构造可学习的 bin 表示计算 bin 与关键点的相似度实现精确定位。训练时使用多任务损失框回归、关键点 MLE 分类损失、坐标代理回归、可见性分类推理时基于网格稠密预测单次前向同时输出人体框与姿态且只在 NMS 后对高置信网格解码热力图从而控制计算量。相对此前直接回归坐标的一阶段方法RTMO 在保持实时速度的同时显著提升了精度。CID 与 YOLOX-PoseCIDconfigs/body_2d_keypoint/cid上下文实例解耦方法以 HRNet-w32/w48 为骨干提供 COCO 配置属于 Bottom-up 家族YOLOX-Poseyoloxpose基于 YOLOX 检测框架实现 YOLO-Pose在单次前向中同时完成人体检测与关键点回归不同关节通过带自适应卷积的独立分支预测偏移从而统一了目标检测与姿态估计两条任务线。数据准备2D 人体关键点数据集进入训练或评估前需先按 2D Body Keypoint Datasets 指南 准备数据。MMPose 官方推荐将数据集根目录软链接到$MMPOSE/data若目录结构与默认不同需要在对应配置中修改data_root等路径。该指南覆盖了图像类与视频类共 11 个数据集最常使用的是前两者COCO下载 2017 Train/Val关键点训练与验证均需要并可选下载 person 检测结果文件如COCO_val2017_detections_AP_H_56_person.json用于复现 Top-down 多人体结果。标准目录结构为data/coco/{annotations, person_detection_results, train2017, val2017}MPII原始标注已由 MMPose 转换为 json 格式mpii_train.json、mpii_val.json等放在data/mpii/annotations与data/mpii/images下。MPII 的预测结果默认保存为.mat可用工具 mat2json.py 转换为可读 jsonpython tools/dataset_converters/mat2json ${PRED_MAT_FILE} ${GT_JSON_FILE} ${OUTPUT_PRED_JSON_FILE}其余数据集MPII-TRB、AIC、CrowdPose、OCHuman、MHP、Human-Art、ExLPose、PoseTrack18、sub-JHMDB的下载地址、注解文件与目录布局均在 2d_body_keypoint.md 中逐一给出其中 CrowdPose 的 Top-down 实验按官方惯例使用 YOLOv3 预训练权重生成人体框PoseTrack18 的官方评测工具需另行安装pip install githttps://github.com/svenkreiss/poseval.git。仓库根目录还提供了tests/data/coco等迷你测试数据可直接用于快速验证推理流程。推理实战图像、视频与统一 Inferencer运行示例的完整说明见 2D Human Pose Demo。以下命令均可在本仓库直接执行。方式一整图直接输入单人/单框使用 demo/image_demo.py把整张图当作唯一的输入框适合单人或把全图当作检测框的场景python demo/image_demo.py \ ${IMG_FILE} ${MMPOSE_CONFIG_FILE} ${MMPOSE_CHECKPOINT_FILE} \ --out-file ${OUTPUT_FILE} \ [--device ${GPU_ID or CPU}] \ [--draw-heatmap]若使用热力图模型并加--draw-heatmap可视化结果会同时叠加关键点与预测热力图。官方示例HRNet-w48 COCO 模型python demo/image_demo.py \ tests/data/coco/000000000785.jpg \ configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w48_8xb32-210e_coco-256x192.py \ https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth \ --out-file vis_results.jpg \ --draw-heatmapCPU 运行只需追加--devicecpu。方式二mmdet 检测 mmpose 估计标准 Top-down 流水线先安装 mmdet版本 3.0再运行 demo/topdown_demo_with_mmdet.pypython demo/topdown_demo_with_mmdet.py \ ${MMDET_CONFIG_FILE} ${MMDET_CHECKPOINT_FILE} \ ${MMPOSE_CONFIG_FILE} ${MMPOSE_CHECKPOINT_FILE} \ --input ${INPUT_PATH} \ [--output-root ${OUTPUT_DIR}] [--save-predictions] \ [--show] [--draw-heatmap] [--device ${GPU_ID or CPU}] \ [--bbox-thr ${BBOX_SCORE_THR}] [--kpt-thr ${KPT_SCORE_THR}]其中--bbox-thr与--kpt-thr分别控制检测框与关键点的置信度阈值。官方示例使用 RTMDet-m 人体检测器 RTMPose-mSimCC 姿态模型python demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/rtmdet_m_640-8xb32_coco-person.py \ https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmdet_m_8xb32-100e_coco-obj365-person-235e8209.pth \ configs/body_2d_keypoint/rtmpose/body8/rtmpose-m_8xb256-420e_body8-256x192.py \ https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-body7_pt-body7_420e-256x192-e48f03d0_20230504.pth \ --input tests/data/coco/000000197388.jpg --show --draw-heatmap \ --output-root vis_results/视频输入完全相同只需把--input换成视频文件路径或 URL例如仓库测试数据 tests/data/posetrack18/videos/000001_mpiinew_test/000001_mpiinew_test.mp4。指定--save-predictions可将预测结果落盘保存。方式三Bottom-up 图像/视频 DemoBottom-up 模型不依赖人体检测器使用 demo/bottomup_demo.pypython demo/bottomup_demo.py \ ${MMPOSE_CONFIG_FILE} ${MMPOSE_CHECKPOINT_FILE} \ --input ${INPUT_PATH} \ [--output-root ${OUTPUT_DIR}] [--save-predictions] \ [--show] [--device ${GPU_ID or CPU}] \ [--kpt-thr ${KPT_SCORE_THR}]官方示例直接使用仓库中的 DEKR 配置与对应权重python demo/bottomup_demo.py \ configs/body_2d_keypoint/dekr/coco/dekr_hrnet-w32_8xb10-140e_coco-512x512.py \ https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/dekr/coco/dekr_hrnet-w32_8xb10-140e_coco-512x512_ac7c17bf-20221228.pth \ --input tests/data/coco/000000197388.jpg --output-rootvis_results \ --show --save-predictions方式四统一 Inferencer 接口demo/inferencer_demo.py 提供统一推理接口支持用模型别名替代配置文件与权重路径输入可以是图片路径、视频路径、图片文件夹甚至摄像头python demo/inferencer_demo.py \ tests/data/posetrack18/videos/000001_mpiinew_test/000001_mpiinew_test.mp4 \ --pose2d human --vis-out-dir vis_results/posetrack18该命令对视频逐帧推理并将可视化结果保存到vis_results/posetrack18目录。推理加速技巧Top-down 模型的耗时主要在姿态估计与检测两端官方建议关闭测试时的水平翻转融合——在配置中将model.test_cfg.flip_test设为False参见 td-hm_res50_8xb64-210e_coco-256x192.py可显著减少推理计算量更换更快速的人体检测器如 RTMDet 系列检测配置见 demo/mmdetection_cfg从而缩短 Top-down 流水线第一阶段的耗时。小结如何选择合适的方法综合仓库内全部子 README 给出的基准数据可归纳如下选型思路场景需求推荐方向代表配置追求极致精度学术基准Top-down 热力图topdown_heatmap/cocoHRNet-w48、ViTPose-h 等追求实时部署CPU/边缘Top-down SimCC 实时框架rtmpose/cocoRTMPose-t/s/m/l拥挤场景、人数众多Bottom-up 或一阶段dekr/crowdpose、rtmo无检测器、单次前向Bottom-upassociative_embedding/coco、cid/coco、yoloxpose/coco轻量骨干、移动端SimCC / 回归simcc/coco、topdown_regression/coco各模型的具体权重下载地址、训练日志与更细粒度指标AP/AP50/AP75/AR、PCKh 等均可通过对应子目录下的*_coco.md/*_mpii.md模型卡片查阅。至此从范式原理、算法族对比、数据集准备到四种推理方式你已经可以在 MMPose 中独立完成人体 2D 姿态估计的选型与运行。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考