MMPose 中的 rtmlib免 PyTorch/MMCV 依赖的 RTMPose 轻量级推理库使用指南【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文以 MMPose 仓库内 rtmlib 示例文档 为主体系统讲解 rtmlib 这一超轻量姿态估计库的定位、安装方式、核心 API 用法与可视化选项。读完本文你可以不依赖 mmcv、mmpose、mmdet、PyTorch 等重型框架仅凭 numpy、OpenCV 与 ONNX Runtime 完成 RTMPose/RTMW 全身姿态模型的推理、骨架绘制与 WebUI 演示。1. rtmlib 是什么RTMPose 系列的零框架依赖推理方案rtmlib 文档 将其定义为一个基于 RTMPose 模型进行姿态估计的超轻量库super lightweight library核心卖点是完全不需要 mmcv、mmpose、mmdet 等 OpenMMLab 依赖也不需要 PyTorch。基本依赖只有四项numpyopencv-pythonopencv-contrib-pythononnxruntime此外可以按需选用其他常见推理后端opencv、onnxruntime、openvino、tensorrt来加速推理。文档还特别给 OpenVINO 用户提示需要把your python path\envs\your env name\Lib\site-packages\openvino\libs加入环境变量路径。从 RTMPose 项目主页 对 rtmlib 的描述看它具备以下特性支持 OpenCV / ONNXRuntime / OpenVINO 推理不依赖 PyTorch 或 MMCV推理与可视化 API 简单友好同时支持 CPU 和 GPU 推理可从 OpenMMLab 模型库自动下载 ONNX 模型支持 RTMPose 全系列模型RTMPose、DWPose、RTMO、RTMW 等。在 RTMPose examples 索引 中rtmlib 被列为第 4 类官方示例与 C 部署、ONNXRuntime Python 示例、Android ncnn 示例并列是纯 Python 轻量推理路线的代表。2. 安装2.1 从 PyPI 安装pip install rtmlib -i https://pypi.org/simple2.2 从源码安装git clone https://github.com/Tau-J/rtmlib.git cd rtmlib pip install -r requirements.txt pip install -e . # [optional] # pip install onnxruntime-gpu # pip install openvino源码安装方式适合需要修改内部逻辑如换用其他后端、调整预处理参数的场景可选安装onnxruntime-gpu或openvino以启用 GPU 加速。3. Quick Startwebui.py 与单图推理3.1 运行 WebUI# Please make sure you have installed gradio # pip install gradio python webui.pyWebUI 是 rtmlib 自带的 Gradio 交互界面适合快速验证模型效果与交互体验。3.2 单图推理 API文档给出的最小完整示例如下这里对原示例中未定义的img_show做了修正将其初始化为原图如想要黑色背景可改为np.zeros(img.shape, dtypenp.uint8)import cv2 from rtmlib import Wholebody, draw_skeleton device cpu # cpu, cuda backend onnxruntime # opencv, onnxruntime, openvino img cv2.imread(./demo.jpg) openpose_skeleton False # True for openpose-style, False for mmpose-style wholebody Wholebody(to_openposeopenpose_skeleton, modebalanced, # performance, lightweight, balanced. Default: balanced backendbackend, devicedevice) keypoints, scores wholebody(img) # visualize # if you want to use black background instead of original image, # img_show np.zeros(img_show.shape, dtypenp.uint8) img_show draw_skeleton(img, keypoints, scores, kpt_thr0.5) cv2.imshow(img, img_show) cv2.waitKey()关键参数说明参数说明取值mode模型规格档位performance/lightweight/balanced默认balancedbackend推理后端opencv/onnxruntime/openvinodevice运行设备cpu/cudato_openpose骨架绘制风格False为 mmpose 风格True为 openpose 风格kpt_thr可视化时关键点置信度阈值示例中取0.5分数低于该阈值的点不参与连线返回值约定wholebody(img)返回(keypoints, scores)两个数组draw_skeleton将骨架绘制回图像并返回新图像。4. 两种骨架可视化风格文档用对比表展示了 MMPose 风格与 OpenPose 风格两种绘制结果由to_openpose参数切换MMPose-styleOpenPose-style简洁的关节点 连线风格更贴近 OpenPose 经典渲染的骨架风格两种风格对应同一组推理输出keypoints/scores差异只在绘制层便于对接不同下游业务例如 AIGC 管线通常偏好 OpenPose 风格渲染。5. 结合仓库源码理解 rtmlib 的底层推理流程rtmlib 本身是独立发布的外部库本仓库不包含其源码但 仓库内 ONNXRuntime 推理示例 中的 main.py 完整展示了 RTMPose 模型预处理 → 推理 → SimCC 解码 → 仿射逆变换的标准链路与 rtmlib 内部处理逻辑同构可作为理解其内部原理的可靠参照5.1 预处理bbox 归一化 均值方差对整图推理时示例先把全图视为一个 bboxbbox [0, 0, w, h]经bbox_xyxy2cs计算中心与尺度padding1.25再通过top_down_affine做仿射变换到模型输入尺寸最后做归一化mean np.array([123.675, 116.28, 103.53]) std np.array([58.395, 57.12, 57.375]) resized_img (resized_img - mean) / std这与 RTMW-m 全身模型训练配置 中PoseDataPreprocessor的mean/std参数、COCO-WholeBody 数据集基础配置 的 133 关键点定义一致可以印证 rtmlib 的Wholebody类运行的正是 COCO-WholeBody 133 关键点身体 17 手 脸全身姿态模型输入尺寸为 256x192见 配置中的input_size (192, 256)。5.2 后处理SimCC 解码 坐标回映模型输出为 x/y 两路 SimCC 分布解码时取 argmax 最大值位置并除以分割比例再仿射回原图坐标simcc_x, simcc_y outputs keypoints, scores decode(simcc_x, simcc_y, simcc_split_ratio) # 见 main.py L416-L433 keypoints keypoints / model_input_size * scale center - scale / 2其中simcc_split_ratio2.0与训练配置 codec 定义 完全对应。rtmlib 把这些细节全部封装在Wholebody类内部用户只需拿到keypoints, scores即可。5.3 与仓库内其他推理路线的对比路线依赖适用场景参考rtmlibnumpy OpenCV onnxruntime快速集成、WebUI 演示、无深度学习环境rtmlib 文档ONNXRuntime 手写示例onnxruntime loguru需要自行控制预处理/解码细节onnxruntime 示例MMPose demo 脚本PyTorch mmpose 全家桶精度验证非最高速度topdown_demo_with_mmdet.pyMMDeploy 预编译 SDKmmdeploy-runtime追求极限性能的 CPU/GPU 部署RTMPose README 部署章节从源码结构看rtmlib 与 ONNXRuntime 手写示例共用同一套 ONNX 模型来自 OpenMMLab 模型库的 RTMPose 系列导出件区别在于前者把预处理、解码、可视化打包成三行 API构造、调用、绘制后者暴露了每一步便于定制。6. 引用如果在工作或论文中使用了 rtmlib 及 RTMPose文档建议引用以下文献rtmlib 项目本身与 RTMPose、RTMO 论文misc{rtmlib, title{rtmlib}, author{Jiang, Tao}, year{2023}, howpublished {\url{https://github.com/Tau-J/rtmlib}}, } misc{jiang2023, doi {10.48550/ARXIV.2303.07399}, url {https://arxiv.org/abs/2303.07399}, author {Jiang, Tao and Lu, Peng and Zhang, Li and Ma, Ningsheng and Han, Rui and Lyu, Chengqi and Li, Yining and Chen, Kai}, keywords {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences}, title {RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose}, publisher {arXiv}, year {2023}, copyright {Creative Commons Attribution 4.0 International} } misc{lu2023rtmo, title{{RTMO}: Towards High-Performance One-Stage Real-Time Multi-Person Pose Estimation}, author{Peng Lu and Tao Jiang and Yining Li and Xiangtai Li and Kai Chen and Wenming Yang}, year{2023}, eprint{2312.07526}, archivePrefix{arXiv}, primaryClass{cs.CV} }7. 小结与延伸阅读rtmlib 的价值在于把 RTMPose 系列全身姿态模型的部署门槛降到装四个包、写三行代码免 PyTorch、免 OpenMMLab 依赖支持 CPU/GPU 与多种后端并内置 MMPose/OpenPose 双风格骨架绘制。若你需要更深地定制推理流程可对照 onnxruntime/main.py 手动实现同一链路若追求极致性能则应转向 MMDeploy 预编译 SDK。相关文档路径汇总projects/rtmpose/examples/rtmlib/README.md本文主体文档projects/rtmpose/examples/README.mdRTMPose 官方示例索引projects/rtmpose/README.mdRTMPose 项目总览与模型库projects/rtmpose/examples/onnxruntime/main.py纯 ONNX 推理参考实现projects/rtmpose/rtmpose/wholebody_2d_keypoint/rtmw-m_8xb1024-270e_cocktail14-256x192.pyrtmlibWholebody对应的 133 关键点全身模型训练配置【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
