Abstract
最近2d的姿态估计在公开数据集上获得了很出色的表现,但是由于庞大的参数量及高延迟在工业领域还没有得到很好的应用。为了解决这个gap,我们从经验上探讨了姿态估计中的关键因素包括Paradigm、模型结构、训练策略和部署,得到了一个表现好且实时的人体姿态估计架构。RTMpose基于MMPOSE。RTMpose在coco数据集上准确率AP75.8%,Intel i7-11700 CPU、90+FPS,在英伟达GTX 1660 Ti GPU430+ FPS。RTMpose-l 在COCO-WholeBody数据集上AP67%、130+ FPS。为了更进一步评估RTMPose’的实时能力,我们在移动端部署了RTMPOSE,72.2% AP on COCO with 70+ FPS on a Snap-dragon 865 chip,优于现有的开源库。代码和模型发布于https://github.com/open- mmlab/mmpose/tree/1.x/projects/rtmpose
Intronduction
实时人体姿态估计对人机交互、动作识别、运动分析和VTuber技术等各种应用都很有吸引力。尽管在学术基准[31,37]上取得了惊人的进展[52,61],但在计算能力有限的设备上进行稳健和实时的多人姿态估计仍然是一项具有挑战性的任务。最近的尝试缩小了与高效网络架构[3,56,63]和无检测范式[19,29,51]的差距,这还不足以达到令人满意的工业应用性能。
在这项工作中,我们从五个方面实证研究了影响2D多人姿势估计框架性能和延迟的关键因素:Paradigm、骨干网络、定位方法、训练策略和部署。通过一系列优化,我们引入RTMPose
首先,RTMPose遵循自上而下的Paradigm,即使用现成的检测器来获得边界框,然后单独估计每个人的姿势。由于额外的检测过程和不断增加的人群场景中的工作量。然而,得益于实时检测器的卓越效率[42,46],检测部分不再是自上而下方法推理速度的瓶颈。在大多数情况下(每张图像6人以内),所提出的轻量级姿态估计网络能够实时执行所有实例的多次前向传递。
其次,RTMPose采用CSPNeXt[42]作为主干,这是首次为对象检测而设计的。为图像分类设计的主干[20,49]对于密集预测任务(如对象检测、姿态估计和语义分割等)来说是次优的。一些骨干利用高分辨率特征图[52,63]或高级转换器架构[15]在公共姿态估计基准上实现了高精度,但存在高计算成本、高推理延迟或部署困难。CSPNeXt在速度和准确性之间表现出良好的平衡,并且便于部署。
第三,RTMPose使用基于SimCC的[35]算法预测关键点,该算法将关键点定位视为分类任务。与基于热图的算法[24,59,61,65]相比,基于SimCC的算法以更低的计算工作量实现了具有竞争力的精度。此外,SimCC使用两个完全连接层的非常简单的架构进行预测,使其易于部署在各种后端。
第四,我们回顾了先前工作[3,30,42]中的训练设置,并根据经验介绍了一组适用于姿态估计任务的训练策略。我们的实验表明,这组策略为所提出的RTMPose和其他姿势带来了显著的收益估计模型。
最后,我们共同优化了姿态估计框架的推理管道。我们使用[3]中BlazePose提出的跳帧检测策略来减少延迟,并通过姿态非最大值抑制(NMS)和平滑滤波来改进姿态处理,以获得更好的鲁棒性。我们提供了一系列t/s/m/l大小的RTMPose模型,以覆盖不同的应用场景,并在性能和速度之间进行最佳权衡
我们使用不同的推理框架(PyTorch、ONNX Runtime、TensorRT、ncnn)和硬件(i7-11700、GTX1660Ti、Snapdragon865)部署RTMPose来测试效率
如图6所示,1,我们评估了RTMPose与各种推理框架(PyTorch、ONNX Runtime、TensorRT、ncnn)和硬件(Intel i7-11700、GTX 1660Ti、Snapdragon 865)的效率。我们的RTMPose-m在英特尔i7上以90+FPS在COCO valset上实现了75.8%的AP-11700 CPU,NVIDIA GeForce GTX 1660 Ti GPU上430+FPS,Snapdragon 865芯片上35+FPS。在我们的姿态估计管道RTMPose中使用高性能实时物体检测模型RTMDet nano-m可达到73.2%的AP。在MMDeploy[12]的帮助下,RTMPose还可以轻松地部署到各种后端,如RKNN、OpenVINO、PPLNN等。
2. Related Work
Bottom-up Approaches.自下而上的算法[7,10,19,27,29,41,44,45]检测图像中的未知实例的关键点,并对这些关键点进行组合以获得人体姿势。自下而上的范式被认为适用于人群场景,因为随着人数的增加,计算成本稳定。然而,这些算法通常需要大的输入分辨率来处理各种人的尺度,这使得协调准确性和推理速度。
Top-down Approaches.
自上而下的算法使用现成的检测器来提供边界框,然后将人体裁剪到统一的比例来进行姿态估计。自上而下范式的算法[5,38,52,59,61]一直主导着公共基准。两阶段推理范式允许人体检测器和姿态估计器使用相对较小的输入分辨率,这使得它们在非极端场景(即,当图像中的人数不超过6人时)中的速度和准确性方面优于自下而上的算法。此外,以前的大多数工作都专注于在公共数据集上实现最先进的性能,而我们的工作旨在设计具有更好速度-精度权衡的模型,以满足工业应用的需要。
Coordinate Classification.
先前的姿态估计方法通常将关键点定位视为坐标回归(例如[30,43,54])或热图回归(例如[25,59,61,65])。SimCC[35]介绍了一种新的方案,该方案将关键点预测公式化为分别从水平和垂直坐标的子像素仓中进行分类,这带来了几个优点。首先,SimCC摆脱了对高分辨率热图的依赖,从而实现了一种非常紧凑的架构,既不需要高分辨率的中间表示[52],也不需要昂贵的放大层[59]。其次,SimCC对最终的特征图进行平坦化以进行分类,而不是涉及全局池化[54],从而避免了空间信息的丢失。第三,通过亚像素级的坐标分类可以有效缓解量化误差,而不需要额外的细化后处理[65]。这些特性使得SimCC对于构建轻量级姿态估计模型具有吸引力。在这项工作中,我们进一步开发了坐标分类方案,并对模型架构和训练进行了优化ing战略。
Vision Transformers
从现代自然语言处理(NLP)移植而来的基于转换器的架构[55]在各种视觉任务中取得了巨大成功,如表示学习[15,39]、对象检测[8,34,67]、语义分割[66]、视频理解[4,17,40]以及姿态估计[36,43,51,61,62]。ViTPose[61]利用最先进的变换器主干来提高姿态估计的准确性,而TransPose[62]将变换器编码器与CNN集成在一起,以有效地捕捉长距离空间关系。引入了基于令牌的关键点嵌入,将视觉线索查询和解剖约束学习结合起来,这两种方法都很有效
基于热图的[36]和基于回归的[43]方法。受检测先驱[8]的启发,PRTR[33]和PETR[51]提出了带有变换器的端到端多人姿态估计框架。以前使用变换器的姿态估计方法要么使用基于热图的方法
表示或保留像素令牌和关键点令牌,这导致高计算成本并使实时推理变得困难。相反,我们将自注意机制与基于SimCC的紧凑表示相结合,以捕获关键点依赖关系
显著降低了计算负载,并允许以先进的精度和效率进行实时推理。
3. Methodology
在本节中,我们阐述了我们根据坐标分类范式构建RTMPose的路线图。我们首先用更高效的主干架构对SimCC[35]进行了改装,这提供了一个轻量级但强大的基线(3.1)。我们采用了[42]中提出的训练策略,并进行了一些小的调整,使其在姿态估计任务中更有效。通过一系列精细的模块(3.3)和微观设计(3.4),模型性能得到了进一步提高。最后,我们共同优化了整个自上而下的推理。最终的模型体系结构如图2所示,图3展示了以simcc为基线如何一步步提升的
3.1. SimCC: A lightweight yet strong baseline
Preliminary. SimCC[35]将关键点定位公式化为一个分类问题。其核心思想是将水平轴和垂直轴划分为等宽编号的bin,并将连续坐标离散为必要的bin标签。然后对模型进行训练,以预测其中
关键点位置的bin。可以通过使用大量的bin来将量化误差降低到亚像素级。
得益于这种新颖的公式,SimCC具有非常简单的结构,它使用1*1卷积层将骨干提取的特征转换为矢量化的关键点表示,并使用两个完全连接的层分别执行分类。
受传统分类任务中标签平滑的启发[53],SimCC提出了一种高斯标签平滑策略,One-hot标签替换为以gt bin为中心的高斯分布式软标签,该策略集成了模型训练中的归纳偏差,并显著提高了性能。我们发现这种技术也与有序回归任务中SORD[16]的思想相一致。在给定由标签分布定义的类间惩罚距离的情况下,软标签自然地封装了关键点位置的秩似然性。
Baseline.我们首先从标准SimCC中删除昂贵的上采样层。结果见表。1表明,与基于SimCC和热图的基线相比,修剪后的SimCC具有显著更低的复杂性[59]仍能获得令人满意的精度。这表明在定位任务中,将全局空间信息编码为非纠缠的一维表示是有效的。通过将ResNet-50[21]主干替换为
紧凑型CSPEXT-m[42],我们进一步减小了模型尺寸,并获得了一个轻量级但很强的基线,69.7%AP。
3.2. Training Techniques
Pre-training 以往的工作[3,30]表明,采用基于热图的方法对主干进行预训练可以提高模型的精度。我们采用UDP[24]方法进行骨干预训练。这改进了模型从69.7%降到70.3%。在下面的部分中,我们将此技术用作默认设置。
Optimization Strategy我们采用了文献[42]中的优化策略。指数移动平均(EMA)用于消除过拟合(70.3%~70.4%)。采用平余弦退火策略,使精度提高到70.7%AP。我们还抑制了归一化层上的权重衰减和偏差。
Two-stage training augmentations按照[42]中的训练策略,我们使用一个强然后弱的两阶段
增强。首先使用更强的数据增强训练180个epoch,然后使用较弱的策略训练30个历元。在强阶段,我们使用更大的随机缩放范围[0.6,1.4],以及更大的随机旋转因子80,并将截断概率设置为1。根据AID[26],Cutout有助于防止模型过度拟合图像纹理,并鼓励模型学习姿势结构信息。在弱策略阶段,我们关闭随机移位,使用较小的随机旋转范围,并将截断概率设置为0.5,以允许模型在更接近真实图像分布的域中进行微调。
3.3. Module Design
Feature dimension 我们观察到,模型性能随着特征分辨率的提高而提高,因此,我们使用一个完全连接的层来将一维关键点表示扩展到由超参控制的所需维度。在这项工作中,我们使用256维,精度从71.2%AP变为71.4%AP
Self-attention module 为了进一步利用全局和局部的空间信息,我们在[36,62]的启发下,使用self-attention模块细化关键点表示。
我们采用了transformer变体,门控注意单元(GAU)[23],与普通transformer相比,它具有更快的速度、更低的内存成本和更好的性能[55]。具体而言,GAU改进了前馈transformer层的网络(FFN)与选通线性单元(GLU)[50],并以优雅的形式集成注意机制:
3.4. Micro Design
Loss function 我们将坐标分类视为一个有序回归任务,并遵循SORD中提出的软标签编码。
在这项工作中,我们采用未归一化的高斯分布作为类间距离度量:
注意,等式3可以被视为计算所有的Softmax(rt;ri)。我们在Softmax操作中为模型输出和软标签添加温度,以进一步调整归一化分布形状:
根据实验结果,使用=0∶1可以将性能从71.9%提高到72.7%。
在SimCC中,水平标签和垂直标签使用相同的方式进行编码。我们根据经验探索了一种简单的策略,为他们单独设置:
其中WS分别是水平方向和垂直方向上的bin number。该步骤将准确率从72.7%提高到72.8%。
Larger convolution kernel我们对最后一个卷积层的不同内核大小进行了实验,发现使用较大的内核大小可以提高性能超过使用1 1内核。最后,我们选择使用一个7 7卷积层,达到73.3%的AP。此外,我们还比较了表中不同温度因素的影响。3使用最终模型架构。
More epochs and multi-dataset training增加训练时间会给模型性能带来额外的收益。
其中,270和420个训练周期分别达到73.5%和73.7%。为了进一步挖掘模型的潜力,我们将COCO[37]和AI Challenger[58]数据集结合在一起,丰富了训练数据用于预训练和微调,具有平衡的采样率。最终性能达到75.3%AP。
3.5. Inference pipeline
除了姿态估计模型之外,我们还进一步优化了自顶向下的推理管道,以获得更低的延迟和更好的鲁棒性。我们使用BlazePose[3]中的跳过帧检测机制,其中人体检测是
每K帧执行一次,在间隔帧中,根据最后的姿势估计结果生成边界框。此外,为了实现帧上的平滑预测,我们在后处理阶段使用了基于OKS的姿态NMS和OneEuro[9]滤波器。
4. Experiments
实验中的训练设置如表所示。7、如第3.2节所述,我们进行了基于热图的预训练[24],除了较短的时段外,该训练策略与微调中使用的训练策略相同。
我们所有的模型都在8个NVIDIA A100 GPU上训练。并用平均精度(AP)来评价模型的性能。