前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实时推理+SOTA精度!RTMO引领MMPose姿态估计新高度

实时推理+SOTA精度!RTMO引领MMPose姿态估计新高度

作者头像
OpenMMLab 官方账号
发布2024-01-10 14:01:43
1.1K0
发布2024-01-10 14:01:43
举报
文章被收录于专栏:OpenMMLabOpenMMLab

实时高精度的单阶段人体姿态估计算法 RTMO 正式开源!RTMO 结合了坐标回归策略与 YOLOX 检测框架,克服了现有的单阶段人体姿态估计模型精度与速度难以兼得的难题。RTMO 具有两个突出的优势:

  • 在密集的多人场景中,速度和精度均领先。相比传统的二阶段模型如 RTMPose,RTMO 的速度受画面中的人数的影响可以忽略不计。同时它在多个多人密集场景的数据集上获得了最高精度,如在 CrowdPose 数据集上取得83.8 AP,较以往最佳模型提升 5.3 AP。
  • 模型简单易部署。作为端到端的单阶段模型,RTMO 可以一条命令完成推理和部署,无需额外的人体检测器网络,大大简化了使用流程。

项目主页:

https://github.com/open-mmlab/mmpose/tree/main/projects/rtmo

(文末点击阅读原文可直达)

论文链接:

https://arxiv.org/abs/2312.07526

效果展示

让我们一起先看看 RTMO 在多人场景中的检测效果(latency 为 NVIDIA 3090 TensorRT-FP16 测试结果)

图1 推理效果图1

图2 推理效果图2

实时姿态估计模型的性能对比

现有的实时姿态估计模型主要包括二阶段 top-down 架构的轻量级模型(例如 RTMPose)以及基于 YOLO 架构的单阶段模型(例如 YOLO-Pose, YOLOv8-Pose)。我们在 CPU 和 GPU 上分别比较了它们的速度和精度。

图3 CPU 上实时姿态估计模型的速度-精度对比图

图4 GPU 上实时姿态估计模型的速度-精度对比图

相较其他实时单阶段模型,RTMO 在性能上全面领先,达到了和二阶段模型 RTMPose 差不多的精度。而相比二阶段模型,RTMO 在画面中人数较多时有速度优势。在相同精度要求下,当画面中人数超过 4(cpu)/2(gpu) 时,RTMO 的推理速度就已经超越了 RTMPose。

多人场景下的领先性能

多人加拥挤场景一直是姿态估计领域的难题。RTMO 在训练过程中使用了 MixUp 数据增强,模拟了拥挤的场景;在正负样本分配的过程中考虑了姿态估计的准确度,减少了关键点错位造成的误差;再加上 MMPose 多数据集训练的加持。因此,RTMO 在多人拥挤场景下依旧有很高的精度。在针对这类场景的 CrowdPose 和 OCHuman 两个数据集上,RTMO 都取得了当前最高的精度。

图5 CrowdPose 测试集 SOTA 模型精度

在 CrowdPose 上,RTMO-l 取得了 83.8 的 AP,相比之前的最佳模型有 5.3 AP 的提升。谁能想到这是一个能跑 100+ FPS 的轻量级模型呢?

图6 OCHuman 数据集 SOTA 模型精度

在 OCHuman 上,RTMO 同样取得了当前最高的精度(不使用标注检测框的情况下)。

便捷的推理接口

得益于 MMPose 框架便捷的推理接口,只需要一行代码,我们就可以调用 RTMO 模型进行推理。

图7 一行代码用 RTMO 完成多人姿态估计

在 OpenXLab 应用平台上,RTMPose 应用也已集成 RTMO。无需本地安装,在浏览器中就能在线使用 RTMO 处理图像、视频。

RTMPose 应用链接:

https://openxlab.org.cn/apps/detail/mmpose/RTMPose

图8 在线试用 RTMO

多平台部署支持

对于需要在业务侧部署模型的小伙伴,RTMO 也带来了福音。

不同于二阶段姿态估计模型,RTMO 无需使用人体检测器预先获取人体检测框,因此它的部署相比 RTMPose 要更加简单。RTMO 项目主页介绍了如何使用 MMDeploy 部署 RTMO 模型,无论是用 ONNX 还是 TensorRT 后端都可以一键搞定。

图9 RTMO 部署教程

此外,我们还提供了开箱即用的轻量推理库 rtmlib (https://github.com/Tau-J/rtmlib):

  • 无需安装 mmcv,mmengine,mmpose 等一系列训练库,有 opencv 就能推理
  • 超级友好简洁的推理和可视化接口
  • 自动下载和缓存 onnx 模型
  • 支持 RTMPose 全系列官方及衍生模型:RTMPose,DWPose,RTMO,RTMW etc.

代码样例:

代码语言:javascript
复制
import cv2

from rtmlib import Body, 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

body = Body(
    pose='rtmo',
    to_openpose=openpose_skeleton,
    mode='balanced',  # balanced, performance, lightweight
    backend=backend,
    device=device)

keypoints, scores = body(img)

# visualize

# if you want to use black background instead of original image,
# img_show = np.zeros(img_show.shape, dtype=np.uint8)

img_show = draw_skeleton(img_show, keypoints, scores, kpt_thr=0.5)

cv2.imshow('img', img_show)
cv2.waitKey()

One More Thing

RTMPose 家族的全身姿态估计模型 RTMW 也进行了全面更新,基于 DWPose 蒸馏方案(同样已集成在 MMPose 中)进行了加强,相较于 alpha 版本中 RTMW-x 取得 70.2 mAP 精度,蒸馏得到的 RTMW-l 用 60% 的计算量取得了 70.1 mAP。

图10 DWPose (上) 与 RTMW (下) 效果对比动图

图11 DWPose (上) 与 RTMW (下) 效果对比静图

总结

RTMO 是基于 MMPose 的单阶段实时人体姿态估计模型,它结合了坐标回归与 YOLOX 检测框架,在多人场景下实现了领先的速度与精度。RTMO 在 CrowdPose 数据集上首次达到了 80+ 的 AP,是多人拥挤场景当前效果最好的实时模型。作为单阶段模型,RTMO 推理部署简单方便。我们还提供了 Python 推理接口、多平台部署方案,开发者可以快速上手使用。诚挚欢迎对人体姿态估计感兴趣的小伙伴来试用 RTMO,提出宝贵意见!

项目主页:

https://github.com/open-mmlab/mmpose/tree/main/projects/rtmo

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenMMLab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人体分析
腾讯云神图·人体分析(Body Analysis)基于腾讯优图领先的人体分析算法,提供人体检测、行人重识别(ReID)等服务。支持识别图片或视频中的半身人体轮廓;支持通过人体检测,识别行人的穿着、体态等属性信息。可应用于人像抠图、背景特效、人群密度检测等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档