CPU也可以起飞的RTMPose来袭 | 作者手把手带你设计一个超轻超快的模型(一)

简介: CPU也可以起飞的RTMPose来袭 | 作者手把手带你设计一个超轻超快的模型(一)

近年来对二维姿态估计的研究在公共基准上已经取得了不错的进展,但其在工业界的应用仍存在着模型参数大和高延迟的问题。为了弥补这一差距,本文通过经验探讨了姿态估计中的关键因素,包括范式、模型架构、训练策略和部署,并提出了一个基于MMPose的高性能实时多人姿态估计框架RTMPose。

RTMPose-m在英特尔i7-11700 CPU和COCO上以95_FPS的速度得到了75.8%的AP,在NVIDIA GTX 1660 Ti GPU上达到430+的FPS,而RTMPose-l在COCO-WholeBody上以130+的FPS达到67.0%的AP。

为了进一步评估RTMPose在关键实时应用程序中的能力,本文还报告了在移动设备上部署后的性能。RTMPoses-s在骁龙865芯片上以70+的FPS实现了72.2%的AP,性能优于现有的开源方法。

Github:https://github.com/open-mmlab/mmpose/tree/dev-1.x/configs/wholebody_2d_keypoint/rtmpose


1、简介


实时人体姿态估计对人机交互、动作识别、运动分析和VTuber技术等各种应用都很有吸引力。尽管在学术基准上取得了惊人的进展,但在计算能力有限的设备上执行鲁棒和实时的多人姿态估计仍然是一项具有挑战性的任务。最近的尝试缩小了与高效网络架构和无检测范式之间的差距,这仍然不足以达到工业应用的满意性能。

在这项工作中,作者从5个方面实证研究了影响2D多人姿态估计框架性能和延迟的关键因素:范式、骨干网络、定位方法、训练策略和部署。通过一系列优化,引入了RTMPose,这是一系列用于姿态估计的实时模型。

首先,RTMPose遵循自上而下的模式,即使用现成的检测器来获取边界框,然后单独估计每个人的姿势。由于额外的检测过程和人群场景中不断增加的工作量,自顶向下算法被定型为准确但速度慢。然而,得益于实时检测器的卓越效率,检测部分不再是自顶向下方法推理速度的瓶颈。在大多数场景中(每个图像6人以内),所提出的轻量级姿态估计网络能够实时地对所有实例执行多个前向传递。

第二,RTMPose采用CSPNeXt作为主干,它首先设计用于目标检测。为图像分类设计的主干对于密集的预测任务(如目标检测、姿势估计和语义分割等)来说是次优的。一些利用高分辨率特征图或高级Transformer架构的主干在公共姿势估计基准上实现了高精度,但存在高计算成本、高推理延迟或部署困难。CSPNeXt在速度和精度方面表现出良好的平衡,并且易于部署。

第三,RTMPose使用基于SimCC的算法预测关键点,该算法将关键点定位视为分类任务。与基于Heatmap的算法相比,基于SimCC的算法以较低的计算工作量实现了具有竞争力的精度。此外,SimCC使用2个完全连接层的非常简单的架构进行预测,使其易于部署在各种后端。

第四,作者重新审视了先前工作中的训练设置,并根据经验介绍了一组适用于姿势估计任务的训练策略。作者的实验表明,这组策略为提出的RTMPose以及其他姿势估计模型带来了显著的收益。

最后,作者联合优化了姿态估计框架的推理流水线。使用Blazepose中提出的跳帧检测策略来减少延迟,并通过姿态非最大抑制(NMS)和平滑滤波来改进姿态处理,以获得更好的鲁棒性。作者还提供了一系列具有t/s/m/l大小的RTMPose模型,以覆盖不同的应用场景,同时实现最佳的性能和速度权衡。

使用不同的推理框架(PyTorch、ONNX Runtime、TensorRT、ncnn)和硬件(i7-11700、GTX1660Ti、Snapdragon865)部署RTMPose,以测试效率。

image.png

如图1所示,使用各种推理框架(PyTorch、ONNX Runtime、TensorRT、ncnn)和硬件(Intel i7-11700、GTX 1660Ti、Snapdragon 865)评估RTMPose的效率。RTMPose-m在COCO valset上实现了75.8%的AP,Intel i7-11700 CPU上的帧速率为90+,NVIDIA GeForce GTX 1660 Ti GPU上的帧率为430+,Snapdragon 865芯片上的帧频率为35+。在姿态估计管道中使用高性能实时检测模型RTMDet nano,RTMPosem可以实现73.2%的AP。

借助MMDeploy,RTMPose还可以轻松部署到各种后端,如RKNN、OpenVINO、PPLNN等。


2、相关工作


2.1、Bottom-up Approaches

自底向上算法检测图像中的实例不可知关键点,并划分这些关键点以获得人体姿势。自下而上的范式被认为适合人群场景,因为随着人数的增加,计算成本稳定。然而,这些算法通常需要较大的输入分辨率来处理各种人的尺度,这使得协调准确性和推理速度具有挑战性。

2.2、Top-down Approaches

自顶向下算法使用现成的检测器来提供边界框,然后将人体裁剪成统一的比例以进行姿态估计。自上而下范式的算法一直主导着公共基准。两阶段推理范式允许行人检测器和姿态估计器使用相对较小的输入分辨率,这允许它们在非极端场景(即,当图像中的人数不超过6人时)中在速度和精度方面优于自下而上的算法。

此外,以前的大多数工作都集中在公共数据集上实现最先进的性能,而本文工作旨在设计具有更好速度精度权衡的模型,以满足工业应用的需求。

2.3、Coordinate Classification

先前的姿态估计方法通常将关键点定位视为坐标回归或Heatmap回归。SimCC引入了一种新的方案,该方案将关键点预测公式化为分别从水平和垂直坐标的子像素箱进行分类,这带来了几个优点。

首先,SimCC摆脱了对高分辨率Heatmap的依赖,从而允许非常紧凑的架构,既不需要高分辨率的中间表示,也不需要昂贵的上采样层。

其次,SimCC将最终的特征图变平以进行分类,而不是涉及全局池化层,因此避免了空间信息的丢失。

第三,量化误差可以通过亚像素级的坐标分类有效缓解,而无需额外的细化后处理。这些特性使得SimCC在构建轻量级姿态估计模型方面具有吸引力。

在这项工作中,作者进一步开发了坐标分类方案,并对模型架构和训练策略进行了优化。

2.4、Vision Transformers

移植自现代自然语言处理(NLP)的基于Transformers的架构在各种视觉任务中取得了巨大成功,如表示学习、目标检测、语义分割、视频理解以及姿态估计。

ViTPose利用最先进的Transformer主干来提高姿态估计精度,而TransPose将Transformer编码器与CNN集成,以有效地捕获长距离空间关系。基于Token的关键点嵌入被引入以结合视觉线索querying和anatomic constraint学习,在基于Heatmap的和基于回归的方法中都显示出有效。

PRTR和PETR提出了带有Transformer的端到端多人姿态估计框架。以前使用Transformer的姿态估计方法要么使用基于Heatmap的表示,要么保留像素tokens和关键点tokens,这导致了高计算成本,并使实时推理变得困难。

相反,本文将自注意力机制与基于SimCC的紧凑表示相结合,以捕获关键点依赖性,这显著减少了计算负载,并允许以更高的准确性和效率进行实时推断。

相关文章
|
人工智能 并行计算 openCL
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
随着 Llama2 的开源,以及通义千问、百川、智谱等国内大模型的问世,很多用户有了本地部署去尝试大模型的需求,然而硬件的需求阻碍了很多人的尝试,并不是所有人都拥有一块英伟达显卡的,所以 Llama2 问世不久,大神 Andrej Karpathy 的一个 weekend project 爆火——llama2.c。
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
|
6月前
|
测试技术 PyTorch 算法框架/工具
魔搭开源推理引擎 DashInfer,助力CPU服务器解锁大模型超强推理
ModelScope推出了预训练大语言模型(LLM)推理引擎DashInfer,采用C++ Runtime编写,提供C++和Python语言接口,具有生产级别的高性能表现,适用于多种CPU架构,包括x86和ARMv9。DashInfer支持连续批处理(Continuous Batching)和多NUMA推理(NUMA-Aware),能够充分利用服务器级CPU的算力,为推理14B及以下的LLM模型提供更多的硬件选择。该项工作已开源。
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
不止于大模型 英特尔CPU引领智算新高度
ChatGPT的横空出世拉开了AI大模型的新时代,而近期的文生视频模型SORA又让业界为之激动不已。据了解,Sora所需token(文本处理最小单位)数量相较于文本及图片模型的推理呈数量级增长。经中信证券简单估算,对于一个60帧的视频(约6至8秒),Sora要生成至少约120万个token,这是相当大的计算量。
|
6月前
|
缓存 Java 知识图谱
1.什么是CPU多级缓存模型?
1.什么是CPU多级缓存模型?
81 0
1.什么是CPU多级缓存模型?
|
机器学习/深度学习 并行计算 异构计算
gpu是什么和cpu的区别 模型训练
gpu是什么和cpu的区别 模型训练
747 1
|
存储 机器学习/深度学习 缓存
探索大模型世界的多元算力:CPU、GPU与算存互连的复杂比较与重要性分析
据科技部新一代人工智能发展研究中心发布的报告显示,我国已发布79个参数规模超过10亿的大模型,几乎形成了百模大战的局面。在大模型研发方面,中国14个省区市都在积极开展工作,其中北京拥有38个项目,广东拥有20个项目。
1362 0
|
并行计算 TensorFlow 算法框架/工具
模型部署专题 | 02 :BERT-Tensorflow模型部署(CPU版和GPU版)
介绍如何用Tensorflow部署BERT模型,包括CPU版和GPU版
|
机器学习/深度学习 编解码 人工智能
CPU也可以起飞的RTMPose来袭 | 作者手把手带你设计一个超轻超快的模型(二)
CPU也可以起飞的RTMPose来袭 | 作者手把手带你设计一个超轻超快的模型(二)
923 0
|
机器学习/深度学习 存储 文件存储
快到起飞 | PP-LCNet在CPU上让模型起飞,精度提升且比MobileNetV3+快3倍
快到起飞 | PP-LCNet在CPU上让模型起飞,精度提升且比MobileNetV3+快3倍
271 0
|
6天前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:

热门文章

最新文章