MMPose 完整教程:3 步跑通 133 关键点全身姿态估计
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
做一个健身动作纠正 Demo 时,你可能碰到过这样的坎:模型只返回 17 个身体关节,想判断"手指有没有伸直""脚掌朝向对不对"就抓瞎了。要补齐手、脚、脸的信息,往往得自己再拼几套独立模型,数据格式还不统一。
MMPose是一个基于 PyTorch 的开源姿态估计工具箱(OpenMMLab 出品),它把 2D/3D 人体、手部、人脸、全身、动物姿态估计等主流任务收进同一套代码框架里。本文带你从安装到跑通 Demo,再到选型和微调,走一遍完整流程。
读完你能拿到什么
- 一套适配 GPU/CPU 环境的最短安装路径,避开 mmdet、mmcv 版本对不齐的坑
- 用仓库自带测试图跑通17 关键点人体姿态估计的完整命令
- RTMPose 系列(t/s/m/l/x)与 WholeBody 全身模型的精度-速度选型对照表
- 多目标检测 + 姿态估计的 Pipeline 搭法,以及训练/部署调优的实用技巧
MMPose 怎么做的:三种范式 + 模块化拼装
姿态估计任务里,"先检测人再估计"和"一次性估计所有人"是两条主流路线,MMPose 把两者都实现了,你可以按场景挑:
- Top-down(自顶向下):先由目标检测器给出每个人的包围框,再对每张人体裁剪图做关键点回归。精度高,适合单人或少人场景,是 WholeBody 133 关键点模型的默认范式。
- Bottom-up(自底向上):先在整图上检测所有关键点,再按人体结构做关联,适合多人拥挤场景(CrowdPose、AIC 这类数据集就是用它刷分的)。
- RTMO:一个"检测头 + 关键点头"共享特征的单阶段方案,省掉了显式的检测-估计两步,兼顾速度与精度,适合实时多人场景。
除范式外,框架把骨干网络(Backbone)、编解码器(Codec)、损失函数、评估指标都拆成了可插拔组件。比如同一个 HRNet 骨干,可以配SimCCLabel输出坐标分类、也可以配MSRAHeatmap输出热图,组合成本模型——这也是配置系统(configs 目录)比"代码里硬写结构"更省心的原因。
它覆盖的任务面也决定了你能拿它做什么:
| 任务方向 | 典型数据集 | 关键点规格 |
|---|---|---|
| 2D 人体 | COCO、MPII、CrowdPose | 17 点 |
| WholeBody 全身 | COCO-WholeBody | 133 点(身体 17 + 脸 68 + 双手 42 + 双脚 10) |
| 2D 手部 | OneHand10K、InterHand | 21 点 |
| 2D 人脸 | 300W、WFLW | 68 点 |
| 3D 人体/手 | H36M、InterHand3D | 3D 坐标 |
| 动物/时尚 | AnimalPose、DeepFashion2 | 自定义 |
一键安装步骤:环境准备只需 4 条命令
MMPose 支持 Linux / Windows / macOS,要求Python 3.7+、PyTorch 1.8+。推荐用 MIM(OpenMMLab 的包管理工具)装依赖,它能自动处理 mmcv、mmengine 之间的版本匹配:
git clone https://gitcode.com/GitHub_Trending/mm/mmpose cd mmpose pip install -r requirements.txt pip install -v -e .安装依赖要点:
- 创建独立 conda 环境(Python 3.8 较稳),再按 PyTorch 官方说明装好 GPU/CPU 版 PyTorch
pip install -U openmim,然后mim install mmengine、mim install "mmcv>=2.0.1"- 若要走"检测 + 姿态"全流程 Demo,再加装
mim install "mmdet>=3.1.0" - 版本对应关系:mmpose 1.x ↔ mmcv 2.x ↔ mmdet 3.x,混装 1.x 时代的 mmcv-full 会报错,先卸载再装
下载权重 + 跑通第一个 Demo
验证安装是否成功,最快的方式是官方推荐的两步走:
第 1 步:用 MIM 一键拉取配置和权重
mim download mmpose --config td-hm_hrnet-w48_8xb32-210e_coco-256x192 --dest .这条命令会同时下载.py配置文件和.pth权重文件,比手动去 Model Zoo 页面找链接省事。
第 2 步:对仓库自带的测试图推理
python demo/image_demo.py \ tests/data/coco/000000000785.jpg \ td-hm_hrnet-w48_8xb32-210e_coco-256x192.py \ td-hm_hrnet-w48_8xb32-210e_coco-256x192-0e67c616_20220913.pth \ --out-file vis_results.jpg \ --draw-heatmapvis_results.jpg里能看到骨架叠加图,加--draw-heatmap还能额外画出模型预测的热图,调试定位精度时很直观。更多参数(关键点置信阈值、骨架样式等)可参考 demo/image_demo.py。
多人场景则换用带检测器的 Pipeline 脚本 demo/topdown_demo_with_mmdet.py,同时传入"检测器 + 姿态模型"两对配置/权重即可:
python demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/rtmdet_m_640-8xb32_coco-person.py <det权重> \ configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_coco-256x192.py <pose权重> \ --input data/test.jpg --bbox-thr 0.5模型怎么选:RTMPose 与 RTMW 规格对照
MMPose 里最值得关注的实时系列是RTMPose(论文实证了范式、骨干、定位算法、训练策略五个维度后给出的工业级方案)和它的全身版RTMW。选型时直接看下面两张表:
RTMPose 人体 17 关键点(AIC+COCO 训练)
| 型号 | COCO AP | CPU 延迟(ms, i7-11700) | GPU 延迟(ms, GTX 1660Ti) | 参数量(M) |
|---|---|---|---|---|
| t | 68.5 | 3.20 | 1.06 | 3.34 |
| s | 72.2 | 4.48 | 1.39 | 5.47 |
| m | 75.8 | 11.06 | 2.29 | 13.59 |
| l | 76.5 | 18.85 | 3.46 | 27.66 |
| l-384(384x288 输入) | 77.3 | - | 6.05 | 27.79 |
RTMW 全身 133 关键点(Cocktail14 多数据集混合训练,COCO-WholeBody val)
| 型号 | 输入 | Body AP | Face AP | Hand AP | Whole AP |
|---|---|---|---|---|---|
| rtmw-m | 256x192 | 0.676 | 0.783 | 0.491 | 0.582 |
| rtmw-l | 256x192 | 0.743 | 0.834 | 0.598 | 0.660 |
| rtmw-l | 384x288 | 0.761 | 0.884 | 0.663 | 0.701 |
| rtmw-x | 384x288 | 0.763 | 0.884 | 0.664 | 0.702 |
选型经验:
- 移动端/浏览器:t 或 s 级,延迟 3~5ms,AP 损失可接受
- 桌面 GPU 实时:m 级是精度和速度的甜点位,WholeBody 场景选 rtmw-l 256x192
- 离线高精度:直接上 384x288 输入,Whole AP 从 0.660 提到 0.702 左右
更多型号与下载方式见 configs/wholebody_2d_keypoint/rtmpose/ 和 projects/rtmpose/。
能落地哪些场景
1. 健身动作相似度打分:全身 133 关键点让"动作比对"从关节级细化到手脚级。仓库里的 projects/just_dance/ 就是现成例子:用关键点序列计算动作相似度并驱动小游戏,改改骨骼定义就能迁移到教学、康复场景。
2. 数字人/虚拟形象驱动:人脸 68 点 + 身体 17 点组合后可直接喂给 3D 骨骼重定向流程。projects/mmpose4aigc/ 展示了与 AIGC 工具链(如 OpenPose 格式输出)的对接方式,RTMPose 的蒸馏全身模型也被社区广泛用于生成式管线的姿态条件输入。
3. 安防与行为分析:多人场景下用 Bottom-up 或 RTMO 方案批量输出关键点,跌倒检测、队列密度估计这类下游任务只需要把关键点的时序特征接进分类器即可,不用再维护一套检测模型。
进阶:从训练到部署的调优清单
用自定义数据微调:MMPose 的完整工作流是 7 步(推理验证 → 准备数据 → 改配置 → 浏览增强图 → 训练 → 测试 → 可视化),核心命令只有两条:
python tools/train.py configs/your_config.py # 单卡训练 python tools/test.py configs/your_config.py work_dir/best_coco/AP_epoch_xxx.pth改配置前先用python tools/misc/browse_dataset.py <config> --mode transformed看一眼数据增强后的效果,能避免"训完了才发现裁剪框不对"这类低级问题。数据集准备可参照 docs/en/dataset_zoo/2d_wholebody_keypoint.md(COCO-WholeBody 评估需pip install xtcocotools)。
训练期:框架已内置学习率 warmup/缩放、混合精度、多机多卡支持,多卡训练直接bash tools/dist_train.sh <GPU数> <config>。
部署期:
- 通过 MMDeploy 导出 ONNX / TensorRT / ncnn 等 SDK 模型,覆盖 Linux、Windows、Jetson、Android
- 需要极致延迟时,把检测频率设为隔帧(Pipeline 默认每 5 帧检测一次人体框)
- 量化到 INT8 通常可再省一半以上显存/内存占用
小结
MMPose 用一套模块化框架把"检测、估计、编解码、评估"全链路打通,配合 RTMPose/RTMW 系列模型,让你今天就能在一张 GPU 上跑通 133 关键点的全身姿态估计。后续值得跟进的方向是 3D 全身重建(RTMPose3D)与 2D 到 3D 的提升链路。
- 官方文档入口:docs/en/index.rst
- 快速上手指南:docs/en/quick_run.md
- 推理 API:mmpose/apis/inference.py
- 模型索引:model-index.yml
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考