MMPose 关键点姿态估计实战指南:5 分钟跑通全身 133 点检测
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
MMPose 是 OpenMMLab 出品的开源姿态估计工具箱,一句话定位:把"从图片里找出人(或动物)的每个关节点"这件事做到开箱即用。它内置 400+ 份训练配置,覆盖 17 点身体关键点到 133 点全身(身体+手+脚+脸)关键点,热图回归、SimCC 坐标编码、关联嵌入等 20 余条算法路线都有现成实现,COCO、MPII、AP-10K 等主流数据集的适配器和评测指标全部内置。
🗺️ 能力版图:一个人、一只猴子、一张人群图
任务覆盖面广:它不只能做人体 2D 姿态,还能做动物姿态、人脸 68 点、手势关键点、时尚地标——从 COCO 17 点到 COCO-WholeBody 133 点全覆盖,3D 姿态估计(视频/图像提升、MotionBERT)同样在库内。
算法路线全:热图回归(HRNet、ViTPose、LiteHRNet)、SimCC 坐标编码(RTMPose)、关联嵌入(AE)、bottom-up 单阶段(RTMO、DEKR、YOLOX-Pose)三条技术路线并存,31 个骨干网、27 种任务头可自由组合。
数据集适配器多:COCO、MPII、300W、AP-10K、CROWDPOSE、Halpe 等 30+ 数据集的解析、转换、评测代码内置,configs/base/datasets/ 下有 55 份数据集基线配置,改个路径就能训。
工程化完整:训练、测试、分布式、可视化工具(可视化钩子、坏例收集 Hook、EMA)一应俱全,推理端提供统一的 Inferencer API,一条命令跑图片或视频。
🚀 从 clone 到第一张可视化:最短路径
先装环境,克隆仓库后按顺序执行依赖安装和可编辑安装:
git clone https://gitcode.com/GitHub_Trending/mm/mmpose cd mmpose && pip install -r requirements.txt pip install -v -e .这一步把 mmengine、mmcv 等 OpenMMLab 依赖和你本地的 mmpose 源码一起装进环境,装完后import mmpose即可用。
然后直接跑仓库自带的全关键点(133 点)推理脚本,输入仓库里自带的一张测试图:
python demo/image_demo.py \ tests/data/coco/000000000785.jpg \ configs/wholebody_2d_keypoint/rtmpose/coco-wholebody/rtmpose-m_8xb64-270e_coco-wholebody-256x192.py \ rtmpose-m_simcc-coco-wholebody_270e-256x192-cd5e845c_20230123.pth \ --out-file vis_results.jpg模型权重从配置文件中记录的下载地址自动获取,跑完在vis_results.jpg里就能看到带骨架和手部、脚部关键点的全身姿态图。如果你要接检测器做"检测+姿态"两段式流水线,换用 demo/topdown_demo_with_mmdet.py,检测器配置目录在 demo/mmdetection_cfg/。
模型选型不用纠结,看这一行:
- 要精度:RTMPose-l 全身版,COCO-WholeBody Body AP 69.5、Whole AP 61.1
- 要实时:RTMPose-m 全身版,单张推理约 13.5ms,精度与速度折中
- 要轻量:RTMPose-t 身体版,256×192 输入下 3.34ms/张,AP 68.5,适合边缘端
🔧 拆机:核心模块
数据流水线:它负责把原始图片和标注变成可喂给网络的张量;输入是图片路径和 COCO 格式标注 JSON;输出是裁剪后的 bbox 图像、热图/SimCC 目标编码和变换参数(用于推理后反变换回原图坐标)。核心实现在 mmpose/datasets/,transforms/下按 topdown、bottomup、3D 分类提供全套增强算子(随机翻转、仿射、翻转后处理等),datasets/下 47 个数据集类负责解析各家标注。
模型网络:它负责把特征图变成关键点预测;输入是裁剪图像特征;输出是热图、SimCC 一维坐标图或回归坐标。mmpose/models/ 里backbones/(31 个骨干,HRNet、CSPNeXt、ViT 系都有)与heads/(27 个任务头)解耦,换骨干不动头,换头不动骨干:
# 典型 topdown 热网配置片段(HRNet + 热图头) model=dict( backbone=dict(type='HRNet', num_features=[32, 64, 128, 256]), # 多分辨率特征 head=dict( type='HeatmapHead', in_channels=256, loss=dict(type='KeypointMSELoss', use_target_weight=True)), # 按可见度加权 ))训练配置:它负责定义一次训练的全部超参;输入是数据路径、模型结构、优化器参数;输出是可复现的训练实验。configs/ 下按"任务/算法/数据集"三级组织,408 份非基线配置,每份都附了 benchmark 结果表(如 rtmpose_coco.md),照着表格抄配置即可对齐论文指标。
📍 三个落地场景
舞蹈动作实时打分(健身行业)
跟练类应用要逐帧比对"学员动作"和"标准动作"的相似度。仓库的 projects/just_dance/ 直接用 RTMPose 提取两路视频的全身关键点、对齐片段并输出合成对比视频:
python projects/just_dance/process_video.py teacher.mp4 student.mp43D 人体运动重建(动作捕捉/影视后期)
单摄像头视频想拿到 3D 骨骼用于动画重定向,可用 H36M 预训练的视频姿态提升模型,demo/body3d_pose_lifter_demo.py 直接吃视频文件,输出 3D 关键点轨迹:
python demo/body3d_pose_lifter_demo.py --video demo/resources/slow_video.mp4 \ configs/body_3d_keypoint/video_pose_lift/h36m/vpn_image_body25d_8xb64-100e_h36m-256x192.py \ --save-subdir outputs/野生动物姿态标注(生态研究)
保护区监控相机里抓拍的猴子、鸟类,需要标注姿态做行为分析。AP-10K 的 14 类动物关键点模型现成可用,拿仓库自带猕猴图直接推:
python demo/image_demo.py \ tests/data/macaque/d47f1b1ee9d3217e.jpg \ configs/animal_2d_keypoint/topdown_heatmap/ap10k/td-hm_hrnet-w32_8xb64-210e_ap10k-256x256.py \ hrnet-w32_8xb64-210e_ap10k-256x256-66327a4a_20230129.pth \ --out-file monkey_pose.jpg⚖️ 选型与基准:哪个模型够用
以下数据来自仓库自带的 RTMPose 基准测试(COCO val2017,检测器 human AP 56.4):
| 模型 | 输入尺寸 | AP | GPU 推理时间 | CPU FPS |
|---|---|---|---|---|
| RTMPose-t | 256×192 | 68.5 | 3.34 ms | ~9 |
| RTMPose-s | 256×192 | 72.2 | 5.47 ms | ~14 |
| RTMPose-m | 256×192 | 75.8 | 13.59 ms | ~26 |
| RTMPose-l | 256×192 | 76.5 | 27.66 ms | ~45 |
选型建议:追求精度选 RTMPose-l(76.5 AP);追求实时选 RTMPose-m(13.6ms 一张,单机 GPU 可支撑多路流);移动端/边缘设备选 RTMPose-t(3.3ms,精度只比 s 低 3.7 AP)。
🛠️ 二次开发路线
- 自定义数据集:先用 tools/dataset_converters/ 下 15 个转换脚本把标注转成 COCO 格式(
mat2json.py、wflw2coco.py等),再在 configs/base/datasets/ 复制一份基线配置改路径。 - 模型量化与导出:ONNX 导出和 TensorRT/ONNXRuntime 推理基准在 projects/rtmpose/benchmark/,含各模型延迟对比表。
- 分布式训练:
./tools/dist_train.sh <config.py> 8一行起 8 卡训练,SLURM 集群版在 tools/slurm_train.sh。
🌐 生态与路线图
生态联动:
- MMDetection:提供人体检测框,两段式流水线的上游,检测器配置在 demo/mmdetection_cfg/
- MMTracking:把单帧姿态串成轨迹做跟踪,示例配置在 demo/mmtracking_cfg/
- MMDeploy:承接 MMPose 的 ONNX 模型做端侧部署,转换工具在 tools/torchserve/ 与 TorchServe 示例
路线图方向(结合 projects/ 下 8 个扩展项目看社区动向):
- 实时 3D 重建:RTMPose3D 已在库内,多视角融合是下一步
- 多模态传感器融合:视觉+IMU 混合输入的姿态估计
- 自监督预训练:用未标注视频降低标注成本
- 边缘端量化部署:INT8 量化与 NPU 后端适配
资源速查
- 官方文档:docs/(安装、配置指南、数据准备全覆盖)
- 示例脚本:demo/(单图/视频推理、检测+姿态、3D 提升、Inferencer)
- 模型配置:configs/(408 份配置 + 每算法 benchmark 结果表)
- 核心源码:mmpose/(datasets、models、codecs、evaluation、apis 五大模块)
跑通第一篇可视化只需要两行命令,剩下的按场景挑模型、按任务挑配置目录即可——这正是 MMPose 的设计意图:让你把精力花在业务逻辑上,而不是复现论文的工程细节里。
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考