前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >上海交大 SDPose-T | 以4.4M参数和 1.8 GFLOPs 获得了69.7%的mAP SOTA 性能 !

上海交大 SDPose-T | 以4.4M参数和 1.8 GFLOPs 获得了69.7%的mAP SOTA 性能 !

作者头像
AIGC 先锋科技
发布2024-07-08 12:57:03
900
发布2024-07-08 12:57:03
举报
文章被收录于专栏:AIGC 先锋科技

基于 Transformer 的方法最近在人体姿态估计(HPE)上取得了最先进的预测质量。然而,这些表现最佳的基于 Transformer 的模型大多数对计算资源和存储资源的需求过高,无法部署在边缘计算平台上。 那些需要较少资源基于 Transformer 的模型,由于其规模较小,容易出现欠拟合现象,因此其性能明显低于大型模型。 鉴于这一困境,作者引入了SDPose,这是一种新的自蒸馏方法,用于提高小型基于 Transformer 模型的性能。为了减轻欠拟合问题,作者设计了一个基于多次循环前向的 Transformer 模块,名为多循环 Transformer (MCT),以更充分地利用小型模型参数的潜力。此外,为了防止MCT带来的额外推理计算消耗,作者引入了一种自蒸馏方案,将MCT模块的知识提取到简单的前向模型中。 具体来说,在MSCOCO验证数据集上,SDPose-T以4.4M参数和1.8 GFLOPs获得了69.7%的mAP。此外,SDPose-S-V2在MSCOCO验证数据集上以6.2M参数和4.7 GFLOPs获得了73.5%的mAP,在主要的微型神经网络方法中达到了新的最先进水平。 代码:https://github.com/MartyPenink/SDPose

1 Introduction

人体姿态估计(HPE)旨在给定图像中估计人体每个关节点的位置。HPE任务支持广泛的下游任务,如活动识别,运动捕捉等。近年来,随着ViT模型在许多视觉任务上被证明有效,许多基于Transformer的方法在HPE任务上取得了优异的性能。与过去的基于CNN的方法相比,基于Transformer的模型在捕捉视觉元素之间的关系方面要强大得多。

然而,它们大多数模型庞大且计算成本高昂。目前最先进的(SOTA)基于Transformer的模型拥有6.32亿个参数,并需要122.9亿次浮点运算。如此大规模的模型难以部署在边缘计算设备上,并且无法适应身体智能发展的快速增长。然而,当用作 Backbone 网络的CNN或ViT规模不够大时,基于Transformer的模型无法很好地学习关键点与视觉元素之间的关系,导致性能不佳。堆叠更多的Transformer层是一个可行的办法,但这也会增加网络的规模,导致参数增大,边缘部署困难。

为了帮助小型模型更好地学习,一种可能的方法是从大型模型向小型模型传递知识。然而,先前的蒸馏方法有以下缺点:

  1. 为了对齐向量空间,在特征蒸馏过程中需要额外的操作,可能导致性能下降。
  2. 训练强大的教师网络需要巨大的额外训练成本。

在本文中,作者引入了一种循环转发方案,为此作者进一步设计了一种自蒸馏方法。这个名为SDPose的框架,减轻了HPE中规模与性能之间的冲突。指导作者设计的关键洞察是,对于一种深层的HPE方法,其性能可以按照作者定义的模型的“潜在深度”成比例提高。“潜在深度”是完整推理过程中参与的Transformer层的深度。向模型中添加层是增加“潜在深度”的直接方法,但这也会带来额外的参数。为了在不添加额外参数的情况下增加“潜在深度”,作者设计了多周期Transformer(MCT)模块,在推理过程中多次循环通过Transformer层的标记化特征,并使用最后的输出作为结果。

如图2所示,与基于Transformer的模型相比,基于MCT的模型的参数具有更高的方差和接近零的低密度,这证明它已经被更好地训练。通过这种方式,利用MCT模块可以帮助小型Transformer模型被认为是具有更大“潜在深度”的Transformer模型,并摆脱欠拟合以实现更好的性能。

然而,MCT模块仍然增加了额外的计算负担。为了避免额外的计算消耗,作者提出了一个简单但有效的自蒸馏范式。具体来说,在训练阶段,作者将标记化特征发送到MCT模块,因为在MCT模块的每个周期中输入和输出都在同一个向量空间,可以从后续输出中提炼先前的结果,无需任何额外操作。在推理时,作者执行一次单次传递以保持原始计算消耗。通过这个设计,作者将MCT模块的知识在一次训练中提取到一个简单的前向模型中,从而得到一个训练得更好的模型。总的来说,SDPose在保持计算消耗的同时提高了性能。

作者基于TokenPose[3]和DistilPose[8]设计了几个SDPose模型:SDPose-T,SDPose-S-V1,SDPose-S-V2,SDPose-B和SDPose-Reg。如图1所示,作者的基于MCT的模型在与其基础模型相同的计算消耗下提高了性能。它们与其他更大模型的性能也相当。

作者的贡献可以总结如下:

  • 作者首次发现,将 Token 通过Transformer层循环可以增加Transformer层的“潜在深度”,而无需添加额外参数。基于这一发现,作者设计了多周期Transformer(MCT)模块。
  • 作者设计了一个自蒸馏范式SDPose,将MCT模块中的知识提取到一个单次传递模型中,实现了性能与资源消耗的平衡。据作者所知,作者是首次探索如何将自蒸馏应用于基于Transformer的HPE任务。
  • 作者进行了广泛的实验和分析,以证明SDPose在多个任务上的有效性和广泛适用性。

2 Related Works

Human Pose Estimation

基于深度学习的方法在人体姿态估计(HPE)任务中占据主导地位。基于深度学习的人体姿态估计器可以分为基于回归和基于 Heatmap 的两大类。

基于回归的方法直接估计每个关键点的坐标。Toshev等人首次利用卷积网络预测2D人体关节的图像坐标,随后在网络架构上进行大量创新。值得注意的是,如Poseur这样的基于 Transformer 的方法在预测质量上取得了良好效果。除了寻求更好的网络架构外,像RLE这样的工作通过量化回归坐标的不确定性来改进回归学习框架。

基于 Heatmap 的方法估计一个2D图像或3D体积的可能性,并将其解码为坐标。自从Tompson等人的开创性工作以来, Heatmap 已成为主流的输出表示形式,因为其维度更好地与输入图像空间对齐,从而降低了神经网络的的学习复杂度。

对于这两种输出表示, Transformer 已被证明是人体姿态估计器中特征提取和处理的有效的模块。Yang等人[4]利用 Transformer 编码器进一步将卷积神经网络产生的特征图编码为关键点表示。另一方面,Xu等人[5]设计了一个纯 Transformer 架构,用于初始图像特征提取以及特征处理。Li等人[3]设计了对关键点信息进行标记表示,并将可学习的关键点标记作为输入送到 Transformer 模块中。尽管这些基于 Transformer 的方法准确度高,但它们往往较为复杂。

有几项工作提出了更轻量级的基于 Transformer 的HPE模型。Ye等人[8]设计了DistilPose,并采用了一种新颖的模拟 Heatmap 损失,以实现从基于 Heatmap 的教师网络到基于回归的学生网络的知识转移。尽管DistilPose实现了SOTA性能,但它需要训练一个单独的蒸馏过程的教师网络。相比之下,Ma等人提出了PPT,它查找并丢弃TokenPose中较少关注图像标记,以减少计算复杂性。尽管PPT在没有额外麻烦的情况下减少了计算量,但与TokenPose相比,它伴随着性能下降。以前的工作未能通过一个整体过程在降低计算复杂性的同时实现SOTA结果,作者的工作据作者所知是首次在这方面对HPE的成功尝试。

Knowledge Distillation

为了降低深度学习模型训练和部署的成本,已经提出了几种技术,其中知识蒸馏与SDPose最为相关。

最初由Hinton等人[15]提出作为一种模型压缩技术,知识蒸馏将知识从教师模型传递到学生模型。最近的工作探索了在单一模型内的知识蒸馏,即自蒸馏。"Be Your Own Teacher"[16]在一个模型内将深层知识蒸馏到较浅层。"Born-Again Neural Network"[17]沿着时间维度应用自蒸馏,将从先前迭代中的模型知识蒸馏出来,以监督当前迭代中的模型学习。作者的工作进一步推进了这项工作,首次尝试在基于 Transformer 的HPE模型上应用自蒸馏。

3 Methods

在本节中,作者为作者循环前向方案提出了多循环 Transformer (MCT)模块。此外,作者提出了一个自我蒸馏人体姿态估计框架SDPose,用于作者的MCT模块。在训练过程中,模型将标记通过MCT模块进行多次循环,其中前一循环的输出用作下一循环的输入。然后,作者使用MCT模块中每个循环的输出对前一循环的输出进行蒸馏,从而将MCT模块的完整推理知识提取到单次传递中。在推理过程中,模型保持其原始推理流程,不产生额外的计算但实现更强的性能。整体框架如图3所示。

多循环 Transformer 模块

为了更好地改进小型基于 Transformer 的模型,作者首先研究了如何增加小型基于 Transformer 模型的潜在深度。作者提出了MCT模块,它将标记化特征多次循环通过 Transformer 层,使 Transformer 网络的性能等同于更深层次的 Transformer 网络。

具体来说,作者遵循TokenPose的方案。对于输入图像

I

,作者从主干提取特征

F

,然后将

F

划分为一个网格状的 Patch 。然后作者展平它们,并使用线性投影函数将它们形成视觉标记_VT_。作者使用额外的

K

个可学习标记_KT_来表示

K

个关键点。然后作者将关键点标记与视觉标记连接起来,并将它们发送到 Transformer 编码层。

对于一个循环

N

次的MCT模块,作者将每个循环的输出关键点标记和视觉标记分别表示为

VT_{1},KT_{1}...VT_{N},KT_{N}

。对于第

i

个循环,作者取

VT_{i-1}

KT_{i-1}

作为输入,输出是

VT_{i}

KT_{i}

。最后,作者使用

VT_{N}

KT_{N}

作为 Transformer 层的输出来进行预测。作者设计的MCT模块与具有相同数量 Transformer 层的 Transformer 模型相比,具有更高的潜在深度,并允许参数更充分地学习以获得更好的性能。作者进一步在4.3节中解释这个结论。

Self-Distillation On MCT Module

MCT模块会产生额外的计算量,作者希望在不过度牺牲模型性能的前提下避免这一点。

一种看似有前景的方法是直接使用MCT中第一个周期的结果,但这将极大地降低性能。如图4所示,在第一次通过 Transformer 层的过程中,关键点标记的注意力始终聚焦于较小的区域,并逐渐收缩到单一位置。然而,在第二次通过 Transformer 层的过程中,关键点标记的注意力扩展到了更大的区域,贯穿所有层次。这表明每个周期都携带丰富的信息,而忽略后期周期的输出会导致信息丢失,从而性能下降。

受到自蒸馏工作的启发,作者将MCT模块中的完整推理作为教师,并将其知识提取到MCT模块的单次传递中,作者将其用作学生。由于在 Transformer 层中输入和输出标记处于同一向量空间,因此作者可以最小化信息丢失,在不同周期的输出标记之间进行蒸馏。

具体来说,对于一个循环了

N

次的MCT模块,作者使用输出

VT_{i}

KT_{i}

来蒸馏前一个周期中的输出

VT_{i-1}

KT_{i-1}

。在训练期间,作者对每次推理进行所有周期的蒸馏,从而逐渐将知识提炼到第一个周期。

同时,为了约束标记的正确性,作者将所有输出标记

VT_{1},KT_{1}...VT_{N},KT_{N}

通过相同的预测头得到预测结果

P_{1},P_{2}...P_{N}

,并分别用 GT 情况约束预测。

Loss Function

对于每个循环的标记,作者分别使用输出标记作为教师来提炼输入标记。具体来说,作者的损失函数设计为:

L_{kt}=\sum_{i=1}^{N-1}MSE(KT_{i},KT_{i+1}) \tag{1}
L_{vt}=\sum_{i=1}^{N-1}MSE(VT_{i},VT_{i+1}) \tag{2}

其中

MSE

指的是均方误差损失,它已被证明在测量标记间的差异方面是有效的。

同时,为了确保两个循环预测的结果都是正确的,作者计算了预测的 Heatmap 与 GT 值之间的损失:

L_{pose}=\sum_{i=1}^{N}MSE(P_{i},GT) \tag{3}

其中 GT 表示 GT 值。

总结一下,作者自蒸馏框架的整体损失函数如下:

L=L_{pose}+\alpha_{1}L_{kt}+\alpha_{2}L_{vt}, \tag{4}

其中

\alpha_{1},\alpha_{2}

是超参数。

4 Experiments

作者评估了所提出的SDPose模型,并在MSCOCO以及Crowdpose数据集上进行了大量的消融研究。为了公平性,作者所有的实验都是使用MMPose框架进行的。

Implementation Details

4.1.1 Datasets

作者在两个数据集上进行了实验,分别是MSCOCO数据集和Crowdpose数据集。MSCOCO包含超过20万张人体图像,每个人体有17个预标注的关键点。作者使用包含57K张图像的MSCOCO train2017来训练SDPose并比较方法。作者在单独的MSCOCO val2017(5K张图像)和dev2017(20K张图像)上评估它们。作者还将在更具有挑战性的拥挤场景中使用Crowdpose评估SDPose。这个数据集包含20K张人体图像,大约有80K个人体部位重叠,每人有14个预标注的关键点。

作者评估时使用的边界框和评价指标与之前的工作保持一致。

4.1.2 Settings And Training

作者将在TokenPose-S-V1、TokenPose-S-V2和TokenPose-B上应用SDPose。作者将原始的 Transformer 模块替换为作者的MCT模块,而所有其他模型配置与TokenPose论文中的一致。作者将基于MCT的模型命名为SDPose-S-V1、SDPose-S-V2和SDPose-B。为了证明SDPose可以提升潜在的深度,作者设置了一个较小的模型SDPose-T,将TokenPose-S-V1变为六个 Transformer 层,在训练期间进行三次推理循环,使用后一个循环对前一个进行精馏。

同时,作者还设计了一个基于回归的模型SDPose-Reg,它使用了Distilpose[8]中的名为TokenReg的基于回归的 Head ,并使用RLE损失,用SDPose进行训练。对于SDPose,作者在一台配备8个NVIDIA Tesla V100 GPU的机器上训练模型,每个GPU分配64个样本。作者使用Adam优化器进行300个周期的训练。初始学习率设置为1e-3,并在第200和第260个周期分别降低十分之一。对于作者的损失函数,作者将超参数设置为

\alpha_{1}=\alpha_{2}=5e-6

Main Results

与基于 Heatmap 的方法比较。如表1所示,作者提出的小型SDPose模型与其他小型模型相比具有竞争力。作者主要与TokenPose,OKDHP,以及PPT方法进行比较。

具体来说,SDPose-S-V1在6.6M参数和2.4 GFLOPs下实现了72.3

\%

的AP,这与TokenPose-S-V1在相同的参数和计算复杂度下,提高了2.8

\%

的AP。同样,SDPose-S-V2和SDPose-B在与TokenPose-S-V2和TokenPose-B相同的参数和GFLOPs下,分别实现了1.7

\%

和0.5

\%

的AP提升。

此外,与TokenPose-S-V1相比,SDPose-T在参数数量显著减少(减少33.3

\%

)和GFLOPs(减少25.0

\%

)的情况下,性能略有提升(

\uparrow 0.2\%

)。与其他轻量级方法相比,SDPose在大多数情况下以更少的参数实现了更高的性能。特别是,与PPT-S相比,SDPose-T在减少更多参数和计算量的同时,没有降低性能。

表3还展示了SDPose与其他小型模型在MSCOCO测试开发集上的结果。作者看到SDPose-S-V2在小型模型中取得了SOTA性能。此外,SDPose可以应用于PPT以获得更好的性能。详细结果在第4.5节中呈现。

与基于回归的方法比较。如表2和表3所示,作者提出的SDPose与其他回归模型相比具有竞争力。与同样是基于Transformer的PRTR[20]相比,SDPose在参数数量和GFLOPs显著减少的情况下,实现了1.5

\%

的AP提升。与较小型的Poseur相比,SDPose在FPS显著提升(

\uparrow 26.2

)的情况下,实现了0.6

\%

的AP提升。与DistilPose-S[相比,SDPose也获得了1.4

\%

的AP提升。同样,如表3所示,在MSCOCO测试开发集上,SDPose-Reg相比于DistilPose-S实现了1.1

\%

的AP提升。

在Crowdpose数据集上的评估。为了验证SDPose的泛化能力,并在更困难的情况下挑战SDPose,作者在Crowdpose数据集上训练并评估了SDPose。如表4所示,作者所有的基于MCT的模型都超过了它们相应的朴素Transformer Baseline 模型。

Visualization

为了探索SDPose性能提升的原因,作者首先可视化了MCT模块中不同 Transformer 层之间关键点标记和视觉标记之间的注意力图。如图4所示,每个周期都携带了大量的信息。作者还可视化了不同 Transformer 层之间关键点标记的注意力图。

如图5所示,在第一次通过 Transformer 层的过程中,与普通 Baseline 方法类似,关键点标记的注意力逐渐集中在它们自己身上。然而,在第二次通过 Transformer 层的过程中,关键点标记的注意力被重新分配到所有其他关键点标记上,作者认为这代表了获取更多的全局信息。总的来说,MCT模块中的这种全局信息使得能够更好地学习参数。

此外,作者还可视化了 Transformer 参数的分布。如图2所示,TokenPose在每个 Transformer 层中具有更多的近零参数,这些通常被认为是训练不足的参数。SDPose与TokenPose相比,近零参数显著减少,表明作者的网络训练更加充分。这也说明MCT模块中包含的更多全局信息使得参数学习更加充分。

Ablation Studies

4.4.1 Losses

在本节中,作者研究了来自不同部分的蒸馏损失对SDPose性能的贡献。如表5所示,作者在不同的实验中设置了不同的蒸馏损失。当不使用蒸馏,直接从第一次循环获得的 Token 预测结果时,网络只有来自第二次循环最终输出的约束。在这种情况下,第一次循环输出的 Token 等同于中间结果。直接使用其预测丢失了后期循环中嵌入的信息,因此性能较差。

当作者使用蒸馏损失时,模型性能可以得到提升,这证明关键点 Token 通过MCT模块学习到更多信息,从而与模型参数更好地互动。当作者逐渐添加蒸馏损失时,第一次循环预测的性能逐渐提升。当添加所有三部分蒸馏损失时,性能达到最佳。

4.4.2 Network Scale

在本节中,作者评估了在不同网络配置和规模下SDPose的有效性。正如表6所示,作者首先研究了网络增强方法的有效性。作者在TokenPose-S-V1的基础上设置了不同的MCT模块循环次数,并且在训练时没有使用自蒸馏,直接从最后一个循环预测输出。当作者增加循环次数时,与仅使用单次传递相比,性能得到了提升。这充分说明作者的增强方法使 Transformer 层能够学习更多信息,并且有效地将原始网络增强为更深的 Transformer 网络。

为了证明引入全局信息的重要性,作者还设计了一个层数较少但使用三个循环的网络。这相当于经历了12层 Transformer 层,但性能比 Baseline 更好。此外,作者注意到,具有三个循环的12层 Transformer 网络的性能低于具有两个循环的网络。作者认为,尽管多个循环可以帮助标记关注更多的全局信息,但过多的循环可能导致网络忘记关键点的更重要的局部信息。如表7所示,作者设计了一个带有三次循环MCT模块的蒸馏实验。测试性能低于带有两次循环MCT模块的蒸馏实验。这也证明了过度增强网络结构以学习全局知识并不完全有益。

Extensibility Study

在本节中,作者进一步研究了SDPose的可扩展性。如表8所示,作者展示了将SDPose与PPT结合使用时的性能。在训练过程中,作者在SDPose的第一个循环中使用PPT对标记进行剪枝。最终,在将计算量减少到与PPT-S相同的水平的同时,性能保持了SDPose-S-V1的水平。这证明了SDPose与其他轻量级方法结合使用时效果良好。

作者还将在分类任务中迁移SDPose。作者使用Deit-Tiny作为作者的 Baseline 。如表9所示,当作者在Deit-Tiny上应用MCT模块时,网络的性能显著提高。当作者使用作者的SDPose训练 Baseline 时,在没有额外参数和计算的情况下,网络的性能也有所提高。这证明了SDPose可以扩展到基于 Transformer 模型的多种任务中。

5 Conclusion

在本工作中,作者提出了一种新颖的人体姿态估计框架,名为SDPose,其中包括一个多周期 Transformer (MCT)模块和一个自蒸馏范式。通过作者的设计,使得小型基于 Transformer 的模型在计算量和参数数量不变的情况下显著提升,并在同等规模模型中取得了新的最佳性能。同时,作者还把SDPose扩展到其他模型,证明了SDPose的通用性。

简而言之,SDPose在同等规模模型中取得了最佳性能。

参考

[1].SDPose: Tokenized Pose Estimation via Circulation-Guide Self-Distillation.

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

本文分享自 AIGC 先锋科技 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Introduction
  • 2 Related Works
  • Human Pose Estimation
  • Knowledge Distillation
  • 3 Methods
    • 多循环 Transformer 模块
    • Self-Distillation On MCT Module
    • Loss Function
    • 4 Experiments
    • Implementation Details
    • 4.1.1 Datasets
    • 4.1.2 Settings And Training
    • Main Results
    • Visualization
    • Ablation Studies
    • 4.4.1 Losses
    • 4.4.2 Network Scale
    • Extensibility Study
    • 5 Conclusion
    • 参考
    相关产品与服务
    边缘可用区
    腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档