MMPose 姿态估计工具箱指南:如何 15 分钟跑通首次推理
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
假设任务是这样:一段跟练视频,需要逐帧输出全身 133 个关键点,再和示范视频比对出相似度分数。这类"人体检测 → 关键点回归 → 后处理打分"的完整链路,用 MMPose 姿态估计工具箱可以在半天内搭起来。它提供从 COCO 17 点人体、COCO-WholeBody 133 点全身,到人脸、手部、动物、3D 姿态的预训练模型和配套训练代码,适合需要落地姿态功能、但不想自己从零搭 pipeline 的工程师;想复现论文或对比不同算法的算法同学也能直接用它当基线平台。
下图是一张典型的 COCO 测试图,后续安装验证和推理演示都会用它或同目录图片。
覆盖的任务与模型档位
先看它到底管什么,用一张表说清范围:
| 维度 | 支持情况 |
|---|---|
| 2D 人体 | COCO 17 点;数据集含 COCO、MPII、CrowdPose 等 |
| 全身关键点 | COCO-WholeBody 133 点(身体 17 + 双手 96 + 面部 20) |
| 人脸 / 手部 | 300W、WFLW、LAPA、RHD、OneHand10K 等 |
| 3D 姿态 | H36M、InterHand 等,支持单图/视频 lift 到 3D |
| 动物 / 时尚 | AP-10K(136 类动物)、DeePfashion 地标 |
| 算法路线 | 热图(top-down / bottom-up)、SimCC 坐标回归、AE、RTMO 端到端等 20+ 方法:RTMPose、HRNet、ViTPose、SimpleBaseline、DeKR 等 |
也就是说,除人体外的任务不用换框架。比如同一套推理入口,换配置就能切到动物关键点:
从克隆仓库到跑通第一张推理
整个上手过程只有三步,每步解决一个问题:环境、代码、首次出图。
第 1 步,拉取仓库并以开发模式安装(当前版本 1.3.2,要求 Python 3.7+、PyTorch 1.8+):
git clone https://gitcode.com/GitHub_Trending/mm/mmpose cd mmpose && pip install -v -e .第 2 步,先装好与机器匹配的 PyTorch/CUDA 环境(见docs/zh_cn/installation.md,支持 CPU 环境),否则推理会直接报 CUDA 错误。
第 3 步,用 Inferencer 跑第一张图。模型名可以直接用 metafile 里注册的别名,权重自动下载,不需要手动找 .pth 文件:
python demo/inferencer_demo.py \ --pose2d rtmpose-m \ tests/data/coco/000000196141.jpg \ --vis-out-dir outputs/跑完outputs/里会出现叠加了骨架线的可视化图。想确认 GPU 可用,把--device显式设为cuda:0即可;inferencer_demo.py同时接受图片和视频路径,这是最常用的一条命令。
两个真实落地场景
场景一:健身/舞蹈动作比对。问题是"学员动作和教练差多少,如何量化"。仓库自带的projects/just_dance/项目就是为这个做的:用 RTMPose 全身模型对教师视频和学员视频分别提取关键点,做片段对齐后计算相似度,输出打分和合并视频。在projects/just_dance/目录下执行:
python process_video.py teacher.mp4 student.mp4它还提供app.py起 Gradio 服务,支持摄像头实时输入,适合快速做内部演示。
场景二:视频流多人姿态分析。单图 top-down 推理解决不了"帧里先找到人"的问题。MMPose 的 top-down 方案先跑一个 RTMDet 人检模型框出人体,再逐框跑姿态模型,demo/topdown_demo_with_mmdet.py把这个两段式流程封装成一条命令:
python demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/rtmdet_m_640-8xb32_coco-person.py \ <rtmdet权重路径> \ configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_coco-256x192.py \ <rtmpose权重路径> --input video.mp4 --output-root outputs/检测器配置在demo/mmdetection_cfg/里按精度/速度分了数档(rtmdet-nano 到 cascade_rcnn_x101),人群越密越要往上选。多人遮挡场景的输入长这样:
如果还需要关键点序列做跟踪(而不是每帧独立输出),可以看docs/zh_cn/user_guides/下的 webcam 与 tracking 相关脚本说明。
我该选哪个模型:精度、实时与资源受限
选型时只看两个数:AP(精度)和单帧延迟(速度)。以下数据来自仓库内配置 README 与projects/rtmpose/benchmark/的实测表(COCO 17 点,TensorRT FP16 延迟):
| 需求 | 推荐配置 | AP (COCO) | 参数量 | 参考延迟 |
|---|---|---|---|---|
| 精度优先 | RTMPose-l,384×288 | 77.3 | 27.79M | 1.74ms(RTX 3090) |
| 实时优先 | RTMPose-m,256×192 | 75.8 | 13.59M | 1.18ms(RTX 3090)/ 11.06ms(i7 CPU, ORT) |
| 资源受限(移动端) | RTMPose-t,256×192 | 68.5 | 3.34M | 9.02ms(骁龙 865, ncnn FP16) |
| 全身 133 点 | RTMPose-l,384×288 | Whole AP 64.8(COCO-WholeBody v1.0) | — | 5.08ms(Jetson AGX Orin, TRT FP16) |
取舍建议:服务器端批处理直接用 RTMPose-l;在线服务、对延迟敏感的选 RTMPose-m,它比 l 只低约 1.5 个 AP;要上手机/边缘板就选 RTMPose-t,参数量只有 l 的 1/8。全身任务(含手和脸)注意精度口径不同,Whole AP 会低于身体 17 点的 AP,属正常现象。人脸等细粒度任务同理,在对应configs/face_2d_keypoint/下按输入尺寸选 m 或 l。
进阶:自定义数据集训练与部署优化
训练自己的数据,入口在tools/dataset_converters/:先用对应脚本(如parse_animalpose_dataset.py)把私有标注转成 COCO 格式;然后复制一份 configs/base/datasets/coco.py 类配置改路径和关键点数,组合 backbone/head 写成完整配置,最后执行python tools/train.py <你的配置.py>,多卡则换成tools/dist_train.sh。
部署与推理优化,标准路线是 MMDeploy 导出 ONNX / TensorRT / ncnn。各硬件上的实测延迟汇总在projects/rtmpose/benchmark/README_CN.md,覆盖 i7 CPU、GTX 1660Ti、RTX 3090、Jetson Orin、骁龙 865 等,导出前先查目标平台那一列,避免选了"跑分好看但目标硬件上没有优势"的档位。
相关项目与资源
框架本身保持"可插拔",周边扩展都放在projects/下:projects/rtmpose3d/(3D 姿态)、projects/pose_anything/(通用姿态)、projects/yolox_pose/(端到端)、projects/skps/(骨骼化)。训练、测试、数据集准备的完整文档在 docs/zh_cn/user_guides/。
下一步建议:先把demo/inferencer_demo.py这条命令在你的机器上跑通,再带着实际业务视频去docs/zh_cn/user_guides/train_and_test.md看训练流程——从一条命令到能训练的完整配置,通常一个下午就够。
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考