论文阅读-《Lite Pose: Efficient Architecture Design for 2D Human Pose Estimation》

摘要

这篇论文主要研究了2D人体姿态估计的高效架构设计。姿态估计在以人为中心的视觉应用中发挥着关键作用,但由于基于HRNet的先进姿态估计模型计算成本高昂(每帧超过150 GMACs),难以在资源受限的边缘设备上部署。因此,该论文提出了一个核心问题:在轻量模型上,高分辨率+多分支结构是否真正必要。为了解决这一问题,论文作者设计了一个渐进收缩实验,发现高分辨率分支对于低计算区域的模型是多余的。基于这一发现,他们提出了LitePose,这是一种用于自底向上姿态估计的高效架构。LitePose采用了单分支设计,并引入了两种技术来增强其容量,包括fusion deconv head和 large kernel conv。这种设计不仅降低了计算量,而且在实际应用中取得了良好的效果------在移动平台上,与之前的最先进的高效姿势估计模型相比,LitePose将延迟降低了多达5.0倍,而不会牺牲性能,推动了边缘实时多人姿势估计的前沿。


目录

摘要

一、介绍

二、相关工作

三、重新思考设计高效模型

[1. Scale-Aware Multi-branch Architectures(尺度感知多分支架构)](#1. Scale-Aware Multi-branch Architectures(尺度感知多分支架构))

(1)尺度感知

(2)原理

[2. Redundancy in High-Resolution Branches(高分辨率分支的冗余)](#2. Redundancy in High-Resolution Branches(高分辨率分支的冗余))

[3. Fusion Deconv Head: Remove the Redundancy(冗余消除)](#3. Fusion Deconv Head: Remove the Redundancy(冗余消除))

[4. Mobile Backbone with Large Kernel Convs](#4. Mobile Backbone with Large Kernel Convs)

[5. Single Branch, High Efficiency(单分支节点,更高的效率)](#5. Single Branch, High Efficiency(单分支节点,更高的效率))

[四、Neural Architecture Search(NAS)------自动化机器学习技术](#四、Neural Architecture Search(NAS)——自动化机器学习技术)

[1. 优化目标](#1. 优化目标)

[2. 一次性超网络训练](#2. 一次性超网络训练)

[3. 搜索与微调](#3. 搜索与微调)

五、实验

[1. 数据集和评估指标](#1. 数据集和评估指标)

[2. 实验设计](#2. 实验设计)

[3. 消融实验](#3. 消融实验)

[4. 主要结论](#4. 主要结论)

六、结论

七、展望


一、介绍

人体姿势估计旨在从图像中预测每个人的关键点位置。典型的人体姿势估计模型可以分为自顶向下和自底向上。自顶向下范式首先通过额外的人员检测器检测人员,然后对每个检测到的人员执行单人姿势估计。相比之下,自底向上范式首先预测无身份的关键点,然后将它们分组成人员。由于自底向上范式不涉及额外的人员检测器,并且不需要针对图像中的每个人重复运行姿势估计模型,因此它更适合于边缘实时多人姿势估计。

然而,现有的自底向上姿势估计模型主要集中在高计算区域。例如,HigherHRNet在CrowdPose数据集上取得了最佳性能,但其需要超过150GMACs的计算量,不适合于资源受限的边缘设备,设计低计算成本的模型同时保持良好性能至关重要。之前的研究表明,在高计算区域中,保持高分辨率表示对于获得良好的自底向上姿势估计性能至关重要。然而,目前尚不清楚这一结论是否适用于低计算区域的模型。为了回答这个问题,我们通过逐渐缩小高分辨率分支的深度,构建了一个"桥梁"来连接代表性的多分支架构HigherHRNet和单分支架构(见图2)。而后发现对于低计算区域中的模型,随着高分辨率分支深度的缩小,性能会提高(见图3)。受到这一启发,作者设计了一种用于高效自底向上姿势估计的单分支架构LitePose。在LitePose中,我们使用修改后的MobileNetV2[43]骨干网络,并进行了两项重要改进以有效处理单分支设计中的尺度变化问题:fusion deconv head和 large kernel conv。融合反卷积头去除了高分辨率分支中多余的细化操作,因此允许以单分支方式进行尺度感知多分辨率融合。与图像分类不同的是,作者发现large kernel conv在自底向上姿势估计中提供了明显更显著的改进。最后,作者应用神经架构搜索(NAS)来优化模型架构并选择适当的输入分辨率。

经过在 CrowdPose 和 COCO 数据集上的大量实验,LitePose 的有效性得到了充分验证。在CrowdPose 数据集上,LitePose 实现了2.8倍的MACs(乘加操作次数)减少和高达5.0倍的延迟减少,同时性能表现也很好。在COCO数据集上,与 EfficientHRNet 相比,LitePose 实现了2.9倍的延迟减少,并且提供了更好的性能表现。这些结果证明了LitePose在保持高性能的同时,显著降低了计算成本,使其在边缘设备上实现实时多人姿态估计成为可能。

本论文做出的贡献可以总结为以下几点:

  1. 本研究通过设计渐进收缩实验,证明了高分辨率分支在低计算区域的模型中的非必要性

  2. 本文提出了LitePose,这是一种高效的自下而上姿态估计架构。同时还引入了两种技术来增强LitePose的性能,包括fusion deconv head和 large kernel conv。

  3. 在Microsoft COCO[28]和CrowdPose[26]这两个基准数据集上进行了大量实验,证明了该方法的有效性:与最先进的基于HRNet的模型相比,LitePose实现了高达2.8倍的MACs(乘加操作次数)减少,延迟减少高达5.0倍。

二、相关工作

2D Human Pose Estimation

二维人体姿态估计旨在确定人体的关键点和部位,主要有自上而下和自下而上两种框架。虽然基于HRNet的多分支架构在自下而上姿态估计中取得了先进的结果,但由于其计算量大,难以在边缘设备上部署。因此,本工作致力于提高自下而上框架的效率,故遵循最先进的基于HRNet的方法,并借鉴了关联嵌入技术进行关键点分组。

Model Acceleration.(模型加速)

除了直接设计高效的模型外,另一种模型加速的方法是压缩现有的大型模型。一些方法旨在去除连接和卷积滤波器中的冗余,同时,还有一些方法专注于网络的量化。此外,还提出了几种AutoML方法,实现自动化模型压缩和加速过程。最近,Yu等人设计了LiteHRNet用于自上而下姿态估计,而本文则专注于自下而上的范式研究。Neff等人提出了EfficientHRNet用于高效的自下而上姿态估计。他们将EfficientNet中的复合缩放思想应用于HigherHRNet,实现了1.5倍的MACs减少,然而,当严格约束计算时,该方法仍会面临性能急剧下降的问题。而本文将MACs减少率提高到5.1倍,并在移动平台上实现了比EfficientHRNet高达5.0倍的延迟减少。

Neural Architecture Search.(神经网络架构搜索)

NAS在图像分类任务中取得了成功,通过共享权重的一次性NAS方法可以提高搜索效率。后又尝试采用了一次性搜索所有(once-for-all)的方法,自动修剪通道内的冗余并选择适当的输入大小。总之,在本研究中,我们利用NAS方法进一步提升了LitePose的性能,实现了更高的MACs减少率和延迟减少,并显著提升了模型精度(搜索的模型实现了高达+3.6AP的显著改进。)。

三、重新思考设计高效模型

多分支网络在自底向上姿势估计任务中取得了巨大成功。它们的代表作HigherHRNet使用多分支架构来帮助融合多分辨率特征,从而显著缓解了尺度变化问题。由于这一特性,多分支架构优于单分支架构,并取得了最先进的结果。但是,大多数这些方法在高计算量条件下才能达到最佳性能,比如使用超过150GMACs。针对实际的边缘应用,研究低计算量下高效的人体姿势估计方法是非常重要的。在本节中,首先介绍了基于HRNet的多分支架构以及它们如何处理尺度变化问题。然后指出了在计算受限情况下高分辨率分支中的冗余问题,并通过逐步缩小来加以说明。

针对这一现象,首先提出了 f usion deconv head (融合反卷积头),它消除了高分辨率分支中的多余细化操作,从而以高效的方式处理尺度变化问题。另外,与图像分类任务相比,large kernel conv(大卷积核)对姿势估计任务的改进要明显得多。

1. Scale-Aware Multi-branch Architectures(尺度感知多分支架构)

(1)尺度感知

多分支设计旨在缓解自底向上姿势估计中的尺度变化问题。由于我们需要预测图像中所有人的关节坐标,单分支架构通常很难识别小人并区分最终低分辨率特征中的接近关节,如图5(b)所示。然而,多分支架构引入的高分辨率特征可以保留更详细的信息,因此有助于神经网络更好地捕捉小人并区分接近的关节。

(2)原理

如图2所示,基于HRNet的多分支架构主要由4个阶段组成。在第n阶段(这里我们将干扰阶段视为第1阶段),分别处理具有不同分辨率的n个不同输入特征图的n个分支。在处理输入特征时,每个分支首先分别对其自己的输入特征进行细化,然后在分支之间交换信息以获取多尺度信息。

2. Redundancy in High-Resolution Branches(高分辨率分支的冗余)

本节介绍了一种称为逐渐缩小(gradual shrinking)的方法,用于揭示多分支架构中高分辨率分支的冗余性。如图2和图3所示,通过逐渐缩小高分辨率分支的深度,多分支网络的行为越来越类似于单分支网络。然而,性能不会下降,甚至可能会提高。

Gradual Shrinking.

见图2。首先,定义An = [a1, ..., an]来表示在融合前每个分支用于细化特征的块数(ai表示分支i中的块数)。分支i处理的特征图分辨率高于分支i+1。整个多分支架构的配置可以定义为A = {A1, A2, A3, A4}。

如果一个配置A'i = [a'1, ..., a'i]是从另一个配置Ai = [a1, ..., ai]缩小得到的,那么对于所有j ∈ {1, ..., i},都应有a'j ≤ aj。为了方便起见,我们将其表示为A'i ≤ Ai。如果一个配置A'是从A缩小得到的(即A' ≤ A),那么对于所有i ∈ {1, 2, 3, 4},都应有A'i ≤ Ai。逐步缩小意味着构建一个配置序列[C1, ..., Cm],使得对于所有i ∈ {1, ..., m-1都有},Ci+1 ≤ Ci。如图2和图3所示,我们逐渐缩小高分辨率分支的深度,并惊讶地发现这种缩小操作甚至有助于提高性能。

为了使 Gradual Shrinking 的过程更清晰,本文详细列出了我们使用的四种配置:

3. Fusion Deconv Head: Remove the Redundancy(冗余消除)

在上文中已经揭示了多分支架构的冗余性,但是多分支架构在处理尺度变化问题方面的强大能力依然不容忽视。为了实现将这一特性融入设计中,同时保留单分支架构的优点(例如高效率)的目标,作者提出融合反卷积层作为最终的预测层。如图4和图6所示,作者直接(即没有任何细化)利用先前阶段生成的低级高分辨率特征进行反卷积和最终预测层。一方面,LitePose使用单分支架构作为网络模型骨干,从而受益于低延迟特性。另一方面,直接使用低分辨率特征避免多分支HR fusion模块中的冗余细化。因此,LitePose以高效的方式继承了单分支设计和多分支设计的优势。在图6(a)和图5中展示了fusion deconv head的性能------在几乎不增加计算成本的情况下,实现了+7.6AP的性能提升

4. Mobile Backbone with Large Kernel Convs

本文在LitePose中使用经过修改的MobileNetV2作为骨干,并通过移除最后的下采样阶段和引入大卷积核来优化网络结构,以更好地处理姿态估计任务中的尺度变化问题。实验结果表明,适当增大卷积核尺寸可以显著提高姿态估计性能,但并非越大越好,过大的卷积核会导致性能下降。因此,在架构中将卷积核大小固定为7x7。

之前的一些论文已经研究了在图像分类任务的严格计算约束下的高效架构。如图4所示,本文在LitePose中使用了修改后的MobileNetV2架构作为骨干网络。并对原始的MobileNetV2骨干进行了微小修改------去除了最后的下采样阶段(因为过多的下采样层会导致基本信息的丢失,这不利于姿势估计任务的高分辨率输出)。

并且为了进一步缓解尺度变化问题,在架构设计中引入了 large kernels。图7展示了核的大小分别为3、5、7(对于姿势估计任务还有9)的模型在图像分类和姿势估计任务中的性能比较。在计算成本同样增加(约+25%)的情况下,姿势估计任务上的性能提升(+13.0AP)远远显著于图像分类任务上的性能提升(+1.5%的准确率)。图5中的可视化结果也验证了这一说法。然而,过大的核将引入许多无用的参数和不可忽略的噪声,这不利于训练,并导致性能下降,如图7中k = 9的情况所示。此外还发现将核的大小纳入搜索空间会严重降低第4节中提到的NAS的性能,这可能是由于核的大小变化的影响很大,因此本文决定在架构中将核大小固定为7×7。

5. Single Branch, High Efficiency(单分支节点,更高的效率)

LitePose作为单分支架构,不仅展现出卓越的性能提升(+11.6AP),而且在实际应用中具有硬件友好的特性。相比多分支设计,单分支架构能减少网络碎片化,提高硬件并行度。与HigherHRNet-W16[8]相比,LitePose-L不仅取得了更好的性能(+11.6AP),而且在Qualcomm Snapdragon 855硬件上,LitePose-L的延迟与HigherHRNet-W16相近,即使其MACs(乘积累加操作)更多。这些结果充分证明了LitePose的高效性,使其成为实际应用中更好的选择。

四、Neural Architecture Search(NAS)------自动化机器学习技术

NAS的核心思想是将网络结构的选择也视为一个可学习的参数,然后使用优化算法搜索最佳的结构组合。NAS旨在提高神经网络的性能,减少人工设计网络结构的工作量,并提高模型的泛化能力。

现有的自下而上姿态估计任务的研究通常采用手工设计的通道宽度和固定的高分辨率。为了探索模型的潜在紧凑性,本文应用"一次到位(Once-for-all)"方法,通过自动修剪冗余通道并选择最佳输入分辨率来优化模型。利用神经架构搜索技术(NAS)针对不同的计算预算获得了四个LitePose模型(XS、S、M和L)

1. 优化目标

假设原始的LitePose架构在每一层都包含了{Ck}K k=1个通道(其中K表示网络的层数),网络优化目标是找到一个子网络,其输入分辨率为r′ < r,通道宽度为{C'k}K k=1(C'k<Ck),以满足效率约束,同时实现最佳的平均精度(AP)

2. 一次性超网络训练

首先通过权重共享的方式,训练一个支持不同通道数量配置的LitePose超网络,每次训练迭代中均匀采样一个通道配置并用其训练超网络。这样,每种配置都能得到均等训练并可以独立运行。为了帮助超网络学习更好地关联嵌入以进行分组,我们使用预训练权重初始化超网络。有关超网络训练和预训练的更多详细信息,请参阅第5.2节。

3. 搜索与微调

首先,通过权重共享的方式对超网络进行充分训练,然后可以直接提取特定子网络的权重来评估其性能,而无需进行额外的微调。作者使用进化算法来找到在特定效率约束条件下的最佳配置,并在找到最佳配置后对相应的子网络进行微调,最终报告其性能。详细信息请参见第5节。

五、实验

1. 数据集和评估指标

Microsoft COCO.

本文在COCO上的所有实验都只在训练集上进行训练,并且我们的报告结果都是基于val集和测试开发集。

CrowdPose.

遵循HigherHRNet,本文在训练集和val集上训练模型,报告结果是基于测试集。

Evaluation Metric.

标准评价指标基于对象关键点相似度(OKS),基于OKS,报告了标准平均精度(AP)、AP50和AP75作为实验结果

2. 实验设计

数据增强

数据增强包括随机旋转[-30°,30°]、随机缩放[0.75, 1.5]、随机平移([-40, 40])和随机翻转。

预训练详情

在实验的过程中发现,如果从零开始训练一次性超网络,网络会学习到低质量的关联嵌入(Associative Embedding,简称AE)。为了解决这个问题,本文采用了预训练的方法。具体来说,我们在Microsoft COCO训练集上对最大的超网络进行了训练,但没有使用AE损失(即仅使用热图损失),训练了100个epochs。然后,将其用作进一步超网络训练的预训练模型。

超级网络训练设置

本文使用不同的LitePose变体(LitePose-L/M/S和LitePose-XS)以不同的超参数和搜索空间进行训练。

(1)训练时长和批量大小:其中LitePose-L/M/S超网络训练了800个epochs,LitePose-XS超网络训练了2400个epochs。批量大小分别为32和128。

(2)训练策略:在每个训练步骤中,从搜索空间中均匀采样一个架构配置,并使用该配置训练超网络。学习率设置为0.001(对于批量大小为32)和0.004(对于批量大小为128)。

微调设置

(1)CrowdPose数据集

a. 在CrowdPose数据集上,固定了架构配置,并使用批量大小为32的模型进行微调。

b. 微调时长为200个epochs。

c. 原始学习率设置为10-3,并在第50个和第180个epochs分别降至10-4和10-5(对于批量大小为128的情况进行线性增加)。

(2)COCO数据集

a. 在COCO数据集上,使用在CrowdPose数据集上训练的超网络作为预训练模型进行初始化。

b. 对于每个搜索到的配置,使用批量大小为32的模型进行微调。

c. 微调时长为500个epochs。

d. 原始学习率设置为10-3,并在第350个和第480个epochs分别降至10-4和10-5。

搜索细节

(1)数据集和任务:

a. 在CrowdPose数据集上进行了神经结构搜索。

b. 在获得搜索到的架构后,将其推广到COCO数据集,并在两个数据集上报告性能。

(2)超网络训练设置:

a. 对于LitePose-L/M/S超网络训练,选择了分辨率范围为[512, 448],通道宽度比例范围为[1.0, 0.75, 0.5]。

b. 对于LitePose-XS超网络训练,选择了分辨率范围为[512, 448, 384, 320, 256],通道宽度比例范围为[1.0, 0.75, 0.5, 0.25]。

测量细节

(1)测量对象

本文在Qualcomm Snapdragon 855 GPU、Raspberry Pi 4B+和NVIDIA Jetson Nano GPU上测量了模型的延迟。

(2)实际部署考量

对于实际的边缘部署,深度学习模型可以有效地集成一些优化的库,同时作为后端运行并生成尽可能快的可执行文件是至关重要的。因此,报告中的Raspberry Pi 4B+和NVIDIA Jetson Nano GPU上的所有延迟结果都是通过TVM AutoScheduler优化的

3. 消融实验

Large Kernels

从表3和图7可以看出,7 × 7的核在计算量增加很小的情况下,增强了应对规模变化问题的能力,因此提供了最好的性能。

Fusion Deconv Head

处理尺度变化问题的另一种方法是多分辨率融合,因为引入大分辨率特征可以更好地捕获小尺寸的人物。在表3和图6中定量地展示了性能增益:融合反分割头在CrowdPose数据集上提高了+7.6AP的性能,而计算量只增加了很少。

Neural Architecture Search

神经结构搜索(NAS)的优点体现在两个方面:(1)一次性超级网络训练(2)带微调的结构搜索。如表3所示,超级网络训练在0.5 LitePose和LitePose- xs上分别提供+1.4AP和+2.7AP。架构搜索也为0.5 LitePose提供了+2.2AP的性能提升。此外,对于LitePose-XS,作者在微调中使用了LitePose-S作为热图损失的训练基准,并获得了+1.1AP的性能提升。

4. 主要结论

CrowdPose 数据集上的结论

与Microsoft COCO数据集相比,CrowdPose数据集包含更拥挤的场景。自顶向下方法的一个强烈假设是每个人检测框中只包含一个位于中心的人,这在拥挤的场景中很难满足。因此,一些在COCO数据集上表现良好的自顶向下方法在CrowdPose数据集上失效了。与基于HRNet的最新自下而上基线相比,我们也实现了更好的性能-计算效率权衡。如表1和图9所示,我们的架构在移动平台上相比HRNet方法实现了2.8×的MACs减少和高达5.0×的延迟减少。

COCO 数据集上的结论

本文还展示了在Microsoft COCO数据集上的结果。实验得出本文的方法大幅优于基于HRNet的方法。如表2和图1所示,该架构实现了高达2.4倍的性能提升。此外,与轻量级Openpose相比,该方法在移动平台上性能更好(+14.0AP),并具有更低的延迟。

六、结论

在本文中,我们研究了边缘多人姿势估计的高效架构设计。我们设计了一个渐进收缩实验,以连接多分支和单分支架构。我们的研究表明,在低计算区域的模型中,高分辨率分支是多余的。受此启发,我们提出了LitePose,一种高效的姿势估计架构,它继承了单分支和多分支架构的优点。大量实验证明了LitePose的有效性和鲁棒性,为边缘应用中的实时人体姿势估计铺平了道路。

七、展望

尽管我们迈出了向实时人体姿势估计迈出了一大步,但计算成本(1 GMACs)对于更加极端资源受限的边缘设备(例如微控制器)来说仍然过高。此外,深度卷积在现有框架(例如PyTorch、TensorFlow)上的支持不足。此外,我们的LitePose在没有特定推理后端(例如TVM AutoScheduler)的帮助下无法达到最佳性能。

相关推荐
Crossoads13 分钟前
【汇编语言】端口 —— 「从端口到时间:一文了解CMOS RAM与汇编指令的交汇」
android·java·汇编·深度学习·网络协议·机器学习·汇编语言
AC使者44 分钟前
5820 丰富的周日生活
数据结构·算法
拓端研究室1 小时前
【专题】2024年悦己生活消费洞察报告汇总PDF洞察(附原数据表)
人工智能
月眠老师1 小时前
拓展AI超级智能后的人类生活场景
人工智能·生活
cwj&xyp1 小时前
Python(二)str、list、tuple、dict、set
前端·python·算法
是十一月末1 小时前
Opencv实现图片的边界填充和阈值处理
人工智能·python·opencv·计算机视觉
机智的叉烧2 小时前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
凳子花❀2 小时前
强化学习与深度学习以及相关芯片之间的区别
人工智能·深度学习·神经网络·ai·强化学习
泰迪智能科技014 小时前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
盛派网络小助手4 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#