【论文翻译】MobileHumanPose: Toward real-time 3D human pose estimation in mobiledevices


目前,三维姿态估计方法由于效率和精度的问题,无法与各种低计算能力的设备兼容。在本文中,我们从效率和准确性的角度重新审视了姿态估计体系结构。我们提出了一个移动友好模型MobileHumanPose,用于从单个RGB图像中实时估计3D人体姿势。该模型由改进的MobileNetV2骨干网、参数激活函数和受U-Net启发的跳过连接组成。特别是,跳过级联结构通过传播更丰富的特征来提高精度,而计算能力可以忽略不计。我们的模型不仅实现了与最先进的模型相当的性能,而且与基于ResNet-50的模型相比,模型尺寸缩小了七倍。此外,我们的超小型模型在Galaxy S20 CPU上减少了12.2ms的推断时间,适用于移动应用程序中的实时三维人体姿势估计。源代码可在:https:// github.com/SangbumChoi/MobileHumanPose。

1.introduction

        由于深度卷积神经网络和热图表示的快速发展,三维人体姿态估计的性能有了显著提高。这一改进有助于解决人机交互、机器人、监控、AR(增强现实)和VR(虚拟现实)等广泛应用的许多问题。特别是,移动增强现实(MAR)最近引起了学术界和工业界的极大兴趣。因此,在计算能力有限的情况下构建三维人体姿态估计模型是一项重要的工作。然而,基于深度学习的模型的性能增益伴随着更宽的通道大小和更深的卷积层[44]。这将导致计算成本的增加,不适合智能手机等资源有限的设备。

        不幸的是,在各种3D人体姿态估计论文中,只有两篇论文[10,18]处理了模型效率问题。然而,这两种方法都存在明显的缺陷,原因如下:(a)虽然差分架构搜索(DARTS)[10]可以有效地搜索三维人体姿态估计的网络架构,但在移动设备上运行的参数数量和计算成本是无法承受的。(b) Hwang et al .[18]提出了一个关于参数数量和每秒浮点运算(FLOPS)的更有效的模型。但是,与其他最先进的方法相比,其性能并不理想。此外,除了使用师生学习算法之外,对于生成轻量级模型并没有明确的共识。除了这两篇论文外,在实践方面,大部分训练框架都是由PyTorch[34]实现的,用于三维人体姿态估计。然而,使用Tensorflow [1] lite是使用Android神经网络API (NNAPI)委托[25]的唯一选择,NNAPI加快了一些模型的推理时间。
为了克服这些限制,我们提出了一个考虑性能和计算成本的移动友好网络。在训练过程中,我们观察到轻量级骨干(例如,MobileNetV2[38])通常对图像分类任务训练良好,而对3D人体姿势估计任务有微调问题。为了解决这个问题,我们使用了一个随机初始化的模型,它没有在任何数据集上进行预训练。此外,受U-Net[37]的启发,我们修改了前四个倒残差块处的通道数、激活函数,并添加了跳过级联(如图1)。具体地说,我们提出了两种不同类型的级联结构,分别是跳过和残差。与残差级联结构相比,跳过级联结构将更丰富的上下文信息从编码器传播到解码器部分,在保持效率的同时提高了准确性。
        此外,从模型性能和效率的角度出发,我们构建了大型、小型和特小型模型进行公平的比较。通过减少68.9%的参数和48.8%的FLOPS,我们的大型模型实现了与现有模型相当的结果,即在Human3.6M[20]数据集上的平均每个关节位置误差(MPJPE)为51.4mm,在MuPoTS[29]数据集上的正确关键点3D百分比(3DPCKrel)为79.6%。我们提供的超小模型不仅具有低模型尺寸(2.98MB),而且与MoVNect (1.31MB)[18]相比,具有27.7mm的压倒性精度,同时具有更快的推断速度(12.2ms vs. 22.0ms)。
        我们的主要贡献如下:
•我们研究了三维人体姿态估计中尚未研究的效率问题,而现有方法都专注于提高计算成本高的精度。

•我们提出了一个称为MobileHumanPose的高效模型,用于实时3D人体姿势估计。它由来自MobileNetV2的各种修改、来自U-Net的跳过连接和一个参数激活函数组成。与类似的替代方案[18]相比,这种架构在有限的计算能力(小于10 GFLOPS)下产生了最佳性能。

•通过发布我们的代码,我们致力于开发一个基于3D人体姿势估计的现实世界移动应用程序。图2显示了可以从3D姿态估计结果中获得的视觉效果示例。

2. Related work

Efficient architecture 在AlexNet[23]和VGG[40]公开发布后,许多研究人员提出了更深入和更广泛的神经网络。但是,随着网络层深的增加,存在梯度消失的问题。为了解决这个问题,He等人[16]使用残差连接来保持反向传播的信号强度。虽然上述神经网络的目标是执行不同的任务,但有些网络专门用于资源受限的情况。例如,MobileNetV2[38]中的倒残差块在展开层中使用深度卷积,参数数量少,计算成本低。此外,Zhou等[53]指出了反向残差块的瓶颈问题,并提出了MobileNeXt,这是对反向残差块的改进版本,以提高在不同任务中的精度。

此外,许多基于神经结构搜索(NAS)的论文都是为了提高模型的效率。MNasNet[43]采用了专门针对移动设备的NAS算法。此外,MobileNetV3[17]是通过使用NetAdapt[49]对MNasNet进行改进。除了使用廉价的算子如点卷积和深度卷积外,最近Han等[13]提出了“ghost 模块”,它减少了通道维度,在保持信息的同时具有较低的计算能力。

2D human pose estimation 在这些现有网络中,我们研究了各种轻量级骨干网在姿态估计任务中的兼容性,并研究了权值初始化问题。现有的二维人体姿态估计方法可分为自下而上和自上而下两种。自底向上的方法[19,22,32]是搜索所有可能的候选人体关节,并获得关节之间最准确的连接。曹等[7]使用部分亲和场(PAF)来匹配多人情况下对应的关节。
    相比之下,自顶向下的方法[9,48,33,47]是使用人体检测器来查找单个图像中每个人的边界框。将单独裁剪的图像输入人体姿态估计器模型,以提取每个关节的二维热图。Tang等[45]提出了量化、密集连接的U-Net[37]来改善信息流。Tosheve等[46]建议用全连接层提取关节值以降低模型复杂度。目前这项任务[4]的最先进技术不仅使用了由沙漏[33]和U-Net[37]组成的混合网络,而且还提出了软门控跳过连接来学习更复杂的功能。
    我们研究了用于2D人体姿势估计的U-Net结构的有效性,并通过提出两种不同的连接来将这种有效性转移到3D任务中。

3D human pose estimation 三维人体姿态估计方法可分为两阶段方法和一阶段方法。两阶段方法[8,26,51,11]通过提取人体的2D关节并将其提升到3D空间来分离。相比之下,单阶段方法[3,41,35,50,27,39,31]是基于体积热图来提取3D关节。Sun等人[42]引入了一种体积热图,它使用回归方法通过将所有权重通过概率积分来估计3D关节。由于两阶段方法的精度与二维联合预测高度相关,因此我们的方法采用了一阶段方法。

        然而,大多数的姿态估计论文关注的是性能,并且模型需要很高的计算成本,超出了许多移动应用程序的预算。在众多的三维人体姿态估计论文中,只有两篇论文引入了模型效率问题。Chen等[10]在这个任务中使用NAS来获得特定于部分的架构。结果,该方法在各种数据集上都达到了最先进的水平。Hwang等[18]提出了MoVNect,它是VNect[30]和MobileNetV2[38]的组合。他们还使用知识蒸馏来转移教师模型中的信息。然而,这两种方法[18,10]都不能满足模型精度和效率之间的完美平衡。为了解决这一问题,我们提出了一种新的轻量级模型,用于从单个RGB图像中估计3D人体姿势。

3. Proposed Method

3.1. Issue of initialization

        大多数3D人体姿势估计论文[48,31,18,36,39,42]使用在ImageNet数据集[23]上预训练的骨干网络。然而,He等[14]再次强调,随机初始化的网络并不比ImageNet数据集上预训练的网络差。为了在三维人体姿态估计中证明这一假设,我们分析了当每个学习过程从以下参数初始化时骨干网络的训练损失:随机初始化和在ImageNet上预训练。因此,随机初始化网络具有较低的评估误差,如表1所示为56.38mm Mean Per Joint Position error (MPJPE)。

3.2. MobileHumanPose

        在以往的三维人体姿态估计方法中,Moon等人[31]和Chen等人提出的模型[10]注重的是准确性而不是效率。我们遵循基本的编码器-解码器结构(例如,瓶颈维度和体积热图维度),其中编码器执行全局特征提取,解码器估计姿态估计。但是,我们修改了骨干块本身和前四个反向残差块处的通道大小(激活函数),实现了U-Net[37]的跳过级联。

        虽然我们选择了Chen等人的基线结构,但是为了模型的效率,需要找到一个合适的轻量级骨干网。我们比较了ResNet家族[16]和各种轻量级网络的性能(见表2)。所有的骨干都从初始层实现到前面提到的姿态估计结构的第一个达到8 × 8维的中间块。在表2中,MNasNet[43]是轻量级骨干网中MPJPE得分最低的。然而,为了与MNasNet进行公平的比较,MobileNetV2[38]仍然有更多的计算预算(3.36M/1.48G),以获得类似的模型效率(4.23M/1.49G)。因此,我们在MobileNetV2的前四个反向残差块处修改信道大小以获得性能。最后,通过比较MobileNetV2和MNasNet的改进版本,我们选择前者作为我们的骨干网。

        激活函数Bulat等人[5]表明在二维人体姿态估计任务中使用参数ReLU (PReLU)[15]函数时,性能有所提高。由于PReLU函数与ReLU相比具有可学习的参数,因此它在每一层中派生额外的信息。PReLU函数f定义为:

其中ai和yi表示可学习参数和输入信号。

因此,我们将PReLU应用于三维姿态估计。在本研究中,我们还比较了在相同训练条件下PReLU和ReLU的激活函数。图3 (a)显示了修改激活函数后我们的方法的基线。

        Skip concatenation PyTorch[34]中的大多数函数(例如,Conv2D, ReLU)都被算作FLOPS。尽管我们的基线结构达到了很高的模型效率,但从推理速度的角度来看,适当地使用FLOPS无需计算的函数(例如Concat, Bilinear)也是很重要的。考虑到上述因素,我们提出了两种不同的级联结构。具体如图3 (b)、(c)所示。

        对于残差拼接,我们在编码器部分使用平均池化函数来匹配维度,在解码器部分使用双线性函数。我们使用跳跃式连接中具有相同维度的两个不同输出的纯连接。Bulat等[4]声称,至少在某些情况下,残差连接不会完全执行,并降低性能。因此,我们选择跳过级联,与残差级联相比,跳过级联可以将低水平特征信号从编码器导出到解码器。

        loss 我们使用groundtruth和预测坐标之间的L1损失[31,10]。我们的损失L定义为:

实验部分需要的话后面再补上吧【同样也是值得一看】

5.总结

在本文中,我们主要致力于建立一个轻量级的模型,并通过详细的实验来提高精度。我们声称轻量级骨干网在姿态估计任务中表现不佳。针对这一问题,我们提出了基于MoblieNetV2[38]的骨干网的改进版本。此外,与基线架构相比,我们采用跳跃式连接和参数激活函数来提高精度,同时保持成本效率。因此,我们构建了MobileHumanPose,这是可以在移动设备中实现的最精确和紧凑的模型。本文所实现的策略不仅局限于自顶向下和单阶段的方法,而且适用于各种类型的三维人体姿态估计。我们希望这项工作能为移动设备上的实时三维人体姿态估计提供新的思路。

猜你喜欢

转载自blog.csdn.net/weixin_50862344/article/details/129467930
今日推荐