一张图像数清 133 个关键点:MMPose 全身姿态估计快速上手
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
MMPose 是 OpenMMLab 的姿态估计工具箱。它的 WholeBody 模块解决一件事:从单张图里同时定位人的身体、面部、双手和双脚共 133 个关键点,一次推理拿到全身姿态。
🎯 先数清楚:133 个关键点都分布在哪儿
很多教程只说"全身姿态",却不说具体在估什么。COCO-WholeBody 标注把这 133 个点拆成四组:
| 部位 | 点数 | 编号范围 | 说明 |
|---|---|---|---|
| 身体 | 17 | 0-16 | 鼻、眼耳、肩肘腕、髋膝踝 |
| 足部 | 10 | 17-22 | 左右脚的大脚趾、小脚趾、脚跟 |
| 面部 | 68 | 23-90 | 轮廓、眉眼鼻口 |
| 双手 | 42 | 91-132 | 每只手 21 个关节 |
编号和定义写在数据集基类 configs/base/datasets/coco_wholebody.py 里,每点名称、左右配对、颜色都有。看懂这张表后你就能明白:所谓全身姿态估计,就是比只做 17 点身体姿态多估了 116 个点。
⚙️ 又快又准的诀窍:按部位分头、各估各的
133 个点如果硬塞进一张大特征图,脸和手指这些密集区域很容易互相干扰。MMPose 的思路是把身体、面部、手部拆给不同的检测头分别建模,再在推理时并行输出、最后拼回一个人的 133 点结果。骨干则用 CSPNeXt(一种跨阶段部分连接的轻量网络,源码在 mmpose/models/backbones/cspnext.py),从 tiny 到 x-large 多档规模可选。这套分层结构让精度和帧速不必互相拆台。
📊 基准数据:COCO-WholeBody 验证集怎么看
下面是仓库文档里 RTMPose 的公开成绩(COCO-WholeBody v1.0 验证集,配的人体检测器 human AP 为 56.4):
| 模型 | 输入分辨率 | Whole AP | Whole AR | 备注 |
|---|---|---|---|---|
| rtmpose-m | 256×192 | 58.2 | 67.4 | 小模型首选 |
| rtmpose-l | 256×192 | 61.1 | 70.0 | 官方称 130+ FPS |
| rtmpose-l | 384×288 | 64.8 | 73.0 | 精度最高档 |
AP 可简单理解为定位越准分越高,100 封顶。怎么选?要帧速就上 256×192 的 rtmpose-m/l;要精度就把分辨率加到 384×288,AP 能再涨 3.7 个点。
🏃 最小推理流程:三步跑起来
from mmpose.apis import MPInferencer # 加载全身姿态估计模型(133 关键点) inferencer = MPInferencer('topdown', 'rtmpose-l_256x192') # 传入图片路径即可 result = inferencer('demo/data/coco/000000000785.jpg')分三步理解:
MPInferencer把模型配置加载进内存,'topdown'表示先检测人、再逐人估姿态的两阶段模式;- 第二行是唯一的推理调用,图片路径、张量都能喂;
- 结果里每人对应一组 133 个坐标加可见度分数,取出来就是可用的关键点数据。
想直接看完整效果,仓库里的 demo/inferencer_demo.py 就是这套流程的脚本版。
🏋️ 能解决什么实际问题
- 健身动作评分:输入一段运动视频的关键点序列,输出关节角度与标准模板的偏差分(参考 projects/just_dance,它就算舞蹈动作相似度)。
- 手势交互:输入单帧图像,输出双手 42 点坐标,下游做手势分类或捏合检测。
- 虚拟角色驱动:输入全身 133 点,输出骨骼驱动参数,面部 68 点负责表情,手指 42 点负责精细动作。
🚀 部署路线怎么选
- 云端:用 docker/serve 里的 Dockerfile 打包成推理服务,镜像内已配好模型挂载和推理参数。
- 移动端:先把模型转 ONNX,再做 INT8 量化或剪枝;RTMPose 官方在移动端有完整部署记录,130+ FPS 的基准就是在轻量档测的。
🔄 换自己的数据:微调三步走
- 转格式:用 tools/dataset_converters 里的脚本(如
labelstudio2coco.py)把标注转成 COCO-WholeBody 的 JSON; - 改配置:复制一份 configs/wholebody_2d_keypoint/rtmpose/coco-wholebody 下的训练配置,替换数据路径和关键点映射,不用从零写;
- 开训:
tools/train.py指向该配置即可,学习率调度、数据增强都已在配置里配好。
❓ 新手常见问题
手机上能跑吗?能。选 rtmpose-t/m 这种小模型,配合量化和剪枝,RTMPose 系列本身就是冲着实时部署设计的。
2D 和 3D 差在哪?2D 给你图像平面上的 (x, y),3D 要多估一个深度 z 并恢复空间结构;MMPose 的 3D 方向可看 projects/rtmpose3d,思路是先把 2D 关键点抬升(lifting)到 3D。
关键点被挡住了怎么办?模型会输出可见度分数,低于阈值你就当这个点不可信,而不是硬用它。
写在最后
MMPose 的全身姿态估计把 133 关键点的定位做到了可商用的帧速,一套配置同时覆盖身体、面部和双手,这正是多数应用最缺的一块。接下来 3D 抬升与多视角融合会补上深度维度,届时全身姿态分析会更接近真实的三维人体。
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考