SHViT:具有内存高效宏设计的单头视觉Transformer

文章目录

  • 摘要
  • 1、引言
  • 2、分析与方法
    • 2.1、宏观设计中的冗余分析
    • 2.2、微观设计中的冗余分析
    • 2.3、单头自注意力
    • 2.4、单头视觉转换器
  • 3、实验
    • 3.1、实现细节
    • 3.2、SHViT在ImageNet-1K分类任务上的表现
    • 3.3、SHViT在下游任务中的表现
    • 3.4、消融研究
  • 4、相关工作
  • 5、结论
  • SHViT:单头视觉转换器与内存高效的宏观设计——补充材料
    • A、与大型模型的小型变体的比较
    • B、内存效率分析
    • C、COCO 检测上的进一步结果
    • D、冗余实验更多细节
    • E、关于相关工作的进一步讨论

摘要

链接:https://arxiv.org/pdf/2401.16456.pdf
近年来,高效的视觉转换器在资源受限的设备上表现出色,延迟较低。传统上,它们在宏观层面使用 4×4 的补丁嵌入和 4 阶段结构,同时在微观层面使用具有多头配置的复杂注意力。本文旨在以内存高效的方式解决所有设计层面的计算冗余问题。我们发现,使用较大步长的 patchify stem 不仅减少了内存访问成本,还通过利用早期阶段中具有减少空间冗余的令牌表示来实现竞争性性能。此外,我们的初步分析表明,早期阶段的注意力层可以用卷积层代替,并且后期阶段的多个注意力头是计算冗余的。为了解决这个问题,我们引入了一个单头注意力模块,该模块本质上可以防止头部冗余,同时通过并行结合全局和局部信息来提高准确性。基于我们的解决方案,我们介绍了 SHViT,这是一种 SingleHead 视觉转换器,它实现了最先进的速度和准确性的权衡。例如,在 ImageNet-1k 上,我们的 SHViT-S4 在 GPU、CPU 和 iPhone 12 移动设备上的速度分别比 MobileViTv 2×1.0 快 3.3 倍、8.1 倍和 2.4 倍,同时准确性提高了 1.3%。在 MS COCO 上使用 MaskRCNN 头进行目标检测和实例分割时,我们的模型与 FastViT-SA12 的性能相当,但在 GPU 和移动设备上的主干延迟分别降低了 3.8 倍和 2.0 倍。

1、引言

视觉转换器(ViT)由于其强大的模型能力,在各种计算机视觉任务中表现出令人印象深刻的性能[1-3]。与卷积神经网络(CNN)[4,5]相比,ViT在建模长程依赖关系方面表现出色,并能有效地随着大量训练数据和模型参数进行扩展[6]。尽管有这些优势,但原始ViT缺乏归纳偏置,需要更多的训练数据,而且全局注意力模块相对于图像大小具有二次计算复杂度。为了解决这些挑战,先前的研究要么将ViT与CNN相结合,要么引入具有成本效益的注意力变体。

最近,解决实时约束问题的研究也提出了遵循类似策略的高效模型。这些策略可以归为两类:1)高效架构——宏观设计;2)高效多头自注意力(MHSA)——微观设计。探索架构设计的研究[7-12]利用卷积来处理高分辨率/低级特征,并使用注意力来处理低分辨率/高级特征,从而在不进行复杂操作的情况下展示优越性能。然而,这些方法大多主要关注使用哪些模块来聚合令牌,而不是如何构建令牌(关于patchify stem和阶段设计)。另一方面,高效MHSA技术通过实现稀疏注意力[9, 13-18]或低秩逼近[19-22]来降低注意力的成本。这些模块应用了通常采用的多头机制。尽管取得了很大的进步,但宏观/微观设计中的冗余问题仍未得到完全理解或解决。在本文中,我们探索了所有设计层次的冗余性,并提出了内存高效的解决方案。

为了识别宏观设计中的计算冗余,我们专注于补丁嵌入大小,观察到最近的高效模型大多使用 4×4 的补丁嵌入。我们进行了如图2所示的实验,以分析传统宏观设计中的空间冗余,并发现了一些有趣的结果。首先,尽管早期阶段的通道数较少,但由于令牌数量庞大(在 224×224 分辨率下,第一阶段:3136个令牌;第二阶段:784个令牌),它们表现出了严重的速度瓶颈。其次,使用3阶段设计,通过 16×16 的patchify stem在第一阶段处理196个令牌,并不会导致性能显著下降。为了进一步比较,我们设置了一个基本模型(表6(2)),采用上述宏观设计,并使用 3×3 的深度可分离卷积进行简单的令牌混合。与高效模型MobileViTXS [18]相比,我们的简单模型在ImageNet-1k [23]上的准确率提高了1.5%,同时在A100 GPU和Intel CPU上的运行速度分别快了5.0倍和7.6倍。这些结果表明,早期阶段存在大量的空间冗余,与专门的注意力方法相比,高效的宏观设计对于模型在严格的延迟限制内实现竞争性性能更为关键。请注意,这一观察并不意味着令牌混合器是微不足道的。
在这里插入图片描述

此外,我们还探讨了微观设计中的冗余性,特别是MHSA层内的冗余性。大多数高效的MHSA方法主要集中在有效的空间令牌混合上。由于有效的宏观设计,我们能够使用具有更高语义密度的紧凑令牌表示。因此,我们将注意力转向注意力层中存在的通道(头)冗余性,这也是大多数先前工作中被忽视的关键方面。通过全面的实验,我们发现多头机制中存在明显的冗余性,特别是在后期阶段。然后,我们提出了一种新颖的单头自注意力(SHSA)作为具有竞争力的替代方案,以减少计算冗余性。在SHSA中,仅对输入通道的子集应用具有单个头的自注意力,而其他通道保持不变。SHSA层不仅消除了由多头机制引起的计算冗余性,而且通过处理部分通道降低了内存访问成本。此外,这些效率使得能够在相同的计算预算内堆叠更多具有更大宽度的块,从而提高性能。

基于这些发现,我们提出了一种基于内存高效设计原则的单头视觉转换器(SHViT),作为一个新的网络家族,它在各种设备上运行得非常快。实验表明,我们的SHViT在分类、检测和分割任务上在速度和准确性方面都达到了最先进的性能,如图1所示。例如,我们的SHViT-S4在ImageNet上实现了79.4%的top-1准确率,同时在Nvidia A100 GPU上的吞吐量为14283张图像/秒,在Intel Xeon Gold 5218R CPU @ 2.10 GHz上的吞吐量为509张图像/秒。这相比EfficientNet-B0 [24]在准确率上提高了2.3%,在GPU推理速度上提高了69.4%,在CPU速度上提高了90.6%。此外,SHViT-S4的准确率比MobileViTv2 2×1.0 [21]高出1.3%,同时在iPhone 12移动设备上快2.4倍。在使用Mask-RCNN [26]检测器进行MS COCO [25]上的目标检测和实例分割时,我们的模型在多种设备上的骨干网络延迟更小,显著优于EfficientViT-M4 [27],其中APbox提高了6.2,APmask提高了4.9。

总结来说,我们的贡献如下:

  • 我们对大多数现有研究中被忽视的冗余性进行了系统分析,并提出了内存高效的设计原则来解决这一问题。

  • 我们引入了单头ViT(SHViT),在各种设备(如GPU、CPU和iPhone移动设备)上实现了良好的准确性和速度权衡。

  • 我们在各种任务上进行了广泛的实验,验证了SHViT的高速度和有效性。

2、分析与方法

在这一部分,我们首先通过首创的实验对宏观和微观设计中的冗余进行分析,然后讨论减少这些冗余的各种解决方案。之后,我们将介绍单头视觉转换器(SHViT)并解释其细节。

2.1、宏观设计中的冗余分析

大多数高效模型[5,7-9,11, 17, 19, 21, 29,30]采用了4x4的patchify stem(即将图像分割成小块的初始操作)/4阶段配置(见图2(a))。相比之下,普通的ViT模型[1,31]采用16x16的patchify stem为后续MHSA层生成有意义的输入令牌。我们关注这一差异,并进一步假设,大步幅的patchify stem不仅对MHSA层是必要的,而且对于在严格延迟范围内进行有效的表示学习也至关重要。
在这里插入图片描述

为了证实我们的假设,受[10,27, 32]的启发,我们采用了16x16的patchify stem和3阶段设计。我们基于MetaFormer块[28]和上述两种宏观设计构建了两个模型(详见图2)。具体来说,我们配置了两个模型,使其具有相似数量的通道,以获得相同的特征图大小。令人惊讶的是,尽管模型(b)的性能比模型(a)差1.5%,但它在GPU/CPU上的速度分别是模型(a)的3.0倍/2.8倍。此外,当在256x256的分辨率下进行训练时,模型(b’)不仅与模型(a)相当,而且速度明显更快。

根据上述观察,我们提出的高效宏观设计具有以下优势:

1)在早期阶段,可以利用具有大感受野和减少空间冗余的令牌表示。这意味着模型能够在处理的初始阶段就捕获全局信息,同时通过减少冗余提高计算效率。

2)它可以将特征图大小缩小多达16倍,这导致内存访问成本的显著减少。通过大幅减小特征图的大小,模型在处理数据时所需的内存量大大降低,从而加快了计算速度并降低了资源消耗。

3)由于采用了激进的大步幅设计,当分辨率增加时,吞吐量只会略有下降,从而实现了有效的性能提升(如图2(b’)、图8和表2所示)。这表明我们的设计在应对高分辨率数据时仍能保持良好的处理性能,适用于多种实际应用场景。

2.2、微观设计中的冗余分析

MHSA层在多个子空间(头)中独立计算和应用注意力图,这一设计已被证明可以提高性能[1,33]。然而,尽管注意力图的计算资源需求较大,但最近的研究表明,许多注意力图并非至关重要[34-39]。

我们也通过三个实验深入探讨了流行的小型ViT模型(如DeiT-T[31]、Swin T[40])中的多头冗余问题:注意力图可视化、头相似性分析以及头消融研究。

在头相似性分析中,我们测量同一层中每个头与其他头之间的平均余弦相似度。在头消融研究中,我们评估了通过使给定层中某些头的输出无效(而其他层的头保持不变)对性能的影响,并报告最高得分。每个实验的细节和进一步的结果将在补充材料中提供。

在这里插入图片描述

首先,在早期阶段(如图3(a)所示),我们观察到表现最好的头往往以类似于卷积的方式工作,而那些在移除后对性能影响最小的头则通常更全局地处理信息。此外,如图2(b’)所示,与在第一阶段使用深度卷积层的模型相比,在第一阶段使用注意力层的模型在速度与准确性之间的权衡上表现较差。因此,为了效率,我们在初始阶段使用具有空间归纳偏置的卷积作为令牌混合器。
在这里插入图片描述

在后期阶段,我们发现特征和预测层面都存在大量的冗余。例如,DeiT-T的后期阶段(如图3(b)所示)的头平均相似度为78.3%(对于6个头为64.8%),Swin T也表现出显著的高值(如图4左侧所示)。在移除一个头的实验中,我们观察到大多数头可以在不偏离原始精度太多的情况下被移除。值得注意的是,在某些Swin-T的情况下(如图4右侧所示),移除一个头甚至会导致分数略有提高。此外,当在Swin-T中仅使用12个或24个头中的一个时,性能下降平均仅为0.95%点。

以往解决头冗余的方法[34-39]通常首先训练完整的网络,然后剪除不必要的头。尽管这些方法有效,但它们以在训练过程中增加计算资源和内存占用为代价。为了以更具成本效益的方式解决上述问题,我们设计了一个具有单个头的注意力模块,从而天然地避免了头冗余。这种方法确保了训练和推理过程都更加精简和高效。

2.3、单头自注意力

基于以上分析,我们提出了一种新的单头自注意力(SHSA),其详细信息如图5的右下角所示。它仅在输入通道的一部分 ( C p = r C ) \left(C_{p}=r C\right) (Cp=rC)上应用具有单个头的注意力层进行空间特征聚合,并保持剩余通道不变。我们默认设置 r r r 1 / 4.67 1 / 4.67 1/4.67。形式上,SHSA层可以描述为:

SHSA ⁡ ( X ) = Concat ⁡ ( X ~ a t t , X r e s ) W O X ~ a t t = Attention ⁡ ( X a t t W Q , X a t t W K , X a t t W V )  Attention  ( Q , K , V ) = Softmax ⁡ ( Q K ⊤ / d q k ) V X a t t , X res  = Split ⁡ ( X , [ C p , C − C p ] ) \begin{array}{c} \operatorname{SHSA}(\mathbf{X})=\operatorname{Concat}\left(\tilde{\mathbf{X}}_{att}, \mathbf{X}_{res}\right) W^{O} \\ \tilde{\mathbf{X}}_{att}=\operatorname{Attention}\left(\mathbf{X}_{att} W^{Q}, \mathbf{X}_{att} W^{K}, \mathbf{X}_{att} W^{V}\right) \\ \text { Attention }(\mathbf{Q}, \mathbf{K}, \mathbf{V})=\operatorname{Softmax}\left(\mathbf{Q} \mathbf{K}^{\top} / \sqrt{d_{qk}}\right) \mathbf{V} \\ \mathbf{X}_{att}, \mathbf{X}_{\text {res }}=\operatorname{Split}\left(\mathbf{X},\left[C_{p}, C-C_{p}\right]\right) \end{array} SHSA(X)=Concat(X~att,Xres)WOX~att=Attention(XattWQ,XattWK,XattWV) Attention (Q,K,V)=Softmax(QK/dqk )VXatt,Xres =Split(X,[Cp,CCp])

其中 W Q , W K , W V W^{Q}, W^{K}, W^{V} WQ,WK,WV W O W^{O} WO是投影权重, d q k d_{qk} dqk是查询和键的维度(默认为16),而 Concat ⁡ ( ⋅ ) \operatorname{Concat} (\cdot) Concat()是连接操作。为了保持内存访问的一致性,我们采用初始的 C p C_{p} Cp通道作为整个特征图的代表。此外,SHSA的最终投影应用于所有通道,而不仅仅是初始的 C p C_{p} Cp通道,从而确保注意力特征能够高效地传播到剩余通道。SHSA可以被解释为沿着块轴顺序展开先前并行计算的冗余头。

在这里插入图片描述

在图6中,我们还探索了各种单头设计。近期的研究[7, 12, 27, 29, 32, 41, 42]通过顺序结合卷积和注意力层,将局部细节融入全局上下文中。然而,这种方法在给定的令牌混合器中只能提取局部细节或全局上下文中的一种。此外,[6]指出,一些通道处理局部细节,而其他通道则处理全局建模。这些观察表明,当前的串行方法在处理每一层的所有通道时存在冗余(图6(a)、(b))。相比之下,我们采用前置卷积的部分通道方法,通过在一个单一的令牌混合器内并行利用两种互补特征,以内存高效的方式解决了上述问题[12, 43]。
在这里插入图片描述

为了有效利用注意力层,层归一化[44]是必不可少的;同时,为了实现多头方法,需要数据移动操作,如重塑操作。因此,如图7所示,MHSA(多头自注意力)的运行时间有很大一部分被内存密集型操作所占据,如重塑和归一化[27, 45-47]。通过最小化内存密集型操作的使用,或将其应用于较少的输入通道,SHSA模块可以充分利用GPU/CPU的计算能力。

在这里插入图片描述

2.4、单头视觉转换器

单头视觉转换器(SHViT)的架构概述如图5所示。给定输入图像,我们首先应用四个步长为3×3的卷积层。与标准ViT模型使用的步长为16×16的卷积标记化相比[1, 31],我们的重叠patchify茎可以提取更好的局部表示[10, 27, 32]。然后,令牌通过三个堆叠的SHViT块阶段进行层次化表示提取。SHViT块主要由三个主要模块组成(如图5所示):深度卷积(DWConv)层用于局部特征聚合或条件位置嵌入[48, 49],单头自注意力(SHSA)层用于建模全局上下文,以及前馈网络(FFN)用于通道交互。FFN中的扩展比率设置为2。DWConv和SHSA的结合以计算和内存高效的方式捕获了局部和全局依赖关系。根据2.2节中的发现,我们在第一阶段不使用SHSA层。为了减少令牌而不损失信息,我们利用了一个高效的下采样层,它由两个阶段1块组成,并在它们之间放置了一个反转残差块[27, 50, 51](步长为2)。最后,使用全局平均池化和全连接层输出预测。

除了上述操作符外,归一化和激活层在确定模型速度方面也起着至关重要的作用。我们仅在SHSA层中使用层归一化[44],而将批归一化(BN)[52]集成到其余层中,因为BN可以与其相邻的卷积或线性层合并。我们还使用ReLU[53]激活函数,而不是其他复杂的替代方案[51, 54, 55],因为它们在各种推理部署平台上要慢得多[7, 27, 56]。

在这里插入图片描述

我们构建了四个具有不同深度和宽度设置的SHViT变体。由于使用了较大尺寸的patch嵌入和单头设计,我们可以使用比之前的高效模型更多的通道和块。模型规格在表1中提供。

3、实验

3.1、实现细节

我们在ImageNet-1K[23]上进行图像分类,它包含128万个训练图像和5万个验证图像,共1000个类别。所有模型均使用AdamW[57]优化器从头开始训练300个epoch,学习率为 1 0 − 3 10^-3 103,总批处理大小为2048。我们使用带有5个epoch线性预热的余弦学习率调度器[58]。SHViT-S1至S4的权重衰减分别设置为 0.025 / 0.032 / 0.035 / 0.03 0.025/0.032/0.035/0.03 0.025/0.032/0.035/0.03。为了公平比较,我们遵循[31]中提出的相同数据增强方法,包括Mixup[59]、随机擦除[60]和自动增强[61]。对于 38 4 2 384^2 3842 51 2 2 512^2 5122分辨率,我们使用权重衰减为 1 0 − 8 10^-8 108、学习率为0.004的模型进行30个epoch的微调。此外,我们还评估了各种硬件平台上的吞吐量性能。我们在Nvidia A100上使用批处理大小为256测量GPU吞吐量。对于CPU和CPU_ONNX,我们在Intel® Xeon® Gold 5218R CPU @ 2.10GHz处理器上使用批处理大小为16(使用单线程)评估运行时间。对于CPU_ONNX,我们将模型转换为ONNX[62]运行时格式。移动延迟是使用iPhone 12和iOS版本16.5测量的。我们使用CoreML工具[63]导出模型(批处理大小设置为1),并报告1000次运行的中值延迟。我们还验证了我们的模型作为COCO[25]上目标检测和实例分割的高效视觉骨干的有效性,分别使用RetinaNet[64]和Mask R-CNN[26]。所有模型均按照[40]在mmdetection库[65]上进行1×计划(12个epoch)的训练。

3.2、SHViT在ImageNet-1K分类任务上的表现

如图1、表2和表4所示,我们将单头视觉转换器(SHViT)与最先进的模型进行了比较。比较结果清楚地表明,我们的SHViT在各种设备上实现了精度和吞吐量/延迟之间的更好权衡。
在这里插入图片描述

与高效卷积神经网络(CNN)的比较。我们的SHViT-S1比MobileNetV3-Small[51]的精度高出5.4%,同时在A100 GPU和Intel CPU上的速度相近。与ShuffleNetV2 × 2.0[66]相比,SHViT-S2在A100 GPU和Intel CPU上的速度分别提高了2.2倍和2.5倍,同时性能略优。此外,当转换为ONNX运行时格式时,我们的模型速度提高了3.8倍。与最近的FasterNet-T1[30]相比,SHViT-S3不仅精度提高了1.2%,而且运行更快:在A100 GPU上快15.1%,在Intel CPU上快32.4%。值得注意的是,在Top-1精度为79.1-79.4%的情况下,我们的模型在A100 GPU/Intel CPU上使用ONNX格式时,比EfficientNet-B1[24]快2.9倍/3.3倍,比FastViTT12[7]快3.4倍/5.5倍,比MobileOne-S4[56]快2.7倍/1.8倍。当以内存高效的方式利用最小注意力模块时,ViT仍然可以像高效CNN一样展示快速的推理速度。

与高效ViT和混合模型的比较。我们的SHViT-S1在A100 GPU和ONNX运行时格式的Intel CPU上的吞吐量分别比EfficientViT-M2[27]高出10%和42%,同时性能也有大幅提升(从70.8%提升至72.8%)。SHViT-S3的精度与PoolFormer-S12[28]相似,但使用的浮点运算量(FLOPs)减少了3倍,在A100 GPU上的速度快了3.8倍,作为ONNX模型时快了6.1倍。值得注意的是,我们的SHViT-S4以1.9%的更高精度超越了最近的EdgeViT-XS[17],同时在A100 GPU上快了2.6倍,在Intel CPU上快了1.7倍,在ONNX实现上快了4.2倍。如上述结果所示,当转换为ONNX格式时,我们的模型与最近的SOTA模型相比展示了显著的性能提升。这种增强在很大程度上是因为我们的单头设计使用了较少的重塑操作,这些操作通常在ONNX运行时造成开销。综上所述,上述结果表明,我们提出的内存高效的宏设计在速度-精度权衡方面比高效的注意力变体或像池化这样的高度简单操作具有更显著的影响。

高分辨率微调。按照[27]的做法,我们也对SHViT-S4进行了高分辨率微调。与最先进的EfficientViT-M5_{r512}[27]相比,即使训练时使用了较低的分辨率,我们的SHViT-S4_{r384}也取得了具有竞争力的性能。此外,SHViT-S4_{r384}在A100 GPU上的速度快了77.4%,在Intel CPU上快了55.6%,在ONNX运行时格式上快了惊人的3.6倍。而且,SHViT-S4_{r512}在A100 GPU上实现了82.0%的Top-1精度,吞吐量为3957张图像/秒,证明了在各种输入尺寸下的有效性。
在这里插入图片描述

蒸馏结果。我们在表3中报告了使用DeiT[31]蒸馏配方后模型的性能。值得注意的是,我们的模型在速度和精度方面都超过了竞争模型。特别是SHViT-S3甚至超过了FastViT-T8,后者作为ONNX模型时慢了5.2倍。SHViT-S4的性能优于EfficientFormer-L1[8],同时在GPU和ONNX运行时上分别快了2.1倍和1.9倍。
在这里插入图片描述

移动延迟评估。我们还在表4中验证了我们的模型在移动设备上的有效性。与高效的模型EfficientNet-B1[24]和MobileOne-S4[56]相比,我们的SHViT-S4在iPhone 12设备上实现了相似的精度,同时运行速度分别快了0.2毫秒和0.1毫秒。SHViT-S4还获得了与针对移动延迟高度优化的模型相竞争的性能,表明它在不同的推理平台上具有一致的性能。图8中的进一步结果显示,我们的模型在最近的模型FastViT[7]和EfficientFormer[8]上表现出色,尤其是在高分辨率下。在低分辨率下,SHViT-S4的速度略慢,但在1024×1024分辨率下,我们的模型分别比FastViT和EfficientFormer低34.4%和69.7%的延迟。这些结果源于宏观和微观设计中增加的内存效率。
在这里插入图片描述

3.3、SHViT在下游任务中的表现

在表5中,我们使用两个框架评估了SHViT的迁移能力:1) RetinaNet[64]用于目标检测,2) Mask R-CNN[26]用于实例分割。
在这里插入图片描述

目标检测。SHViT-S4在移动设备上的速度比MobileNetV3[51]快2.3倍,同时性能提升了+8.9 AP。与MobileFormer[19]相比,我们的模型在A100 GPU和移动设备上分别快了3.2倍和8.2倍,同时性能也更好。

实例分割。SHViT-S4在速度上超越了GPU或移动优化的模型,如EfficientViT[27]和EfficientNet[24],同时实现了显著的性能提升。值得注意的是,我们的模型在PoolFormer[28]的基础上,APb提高了1.7,APm提高了1.3,同时在GPU、CPU和移动设备上分别快了4.3倍、8.1倍和2.1倍。

如上述结果所示,采用3阶段的大步长Patchify stem不仅降低了计算成本,还生成了有意义的令牌表示,尤其是在高分辨率下。此外,与采用类似宏观设计的EfficientViT[27]相比,我们模型表现出的显著性能差距,证明了我们的微观设计选择的有效性。

3.4、消融研究

在本节中,我们首先验证我们提出的单头自注意力(SHSA)层的有效性,然后对SHSA层的部分比率进行简要的消融研究。结果如表6所示。
在这里插入图片描述

SHSA的有效性。为了评估SHSA层是否能像多头自注意力(MHSA)层[1]一样有效地捕获全局上下文,我们通过将SHSA层替换为MHSA层或移除它来进行消融研究。如表6(1、2与4)所示,SHSA层在速度和精度的权衡上优于MHSA层。虽然移除SHSA层会使模型速度更快,但会导致精度大幅下降。同时,模型(2)与表2中的SOTA模型相比,也能实现高度竞争性的性能,这表明我们提出的宏观设计在严格的延迟约束下提供了一个坚实的架构基线。

寻找SHSA的适当部分比率。默认情况下,我们为所有SHViT模型设置部分比率为1/4.67,以获得最佳的速度-精度权衡(3、5与4)。与非常小的值相比,适度增加用于令牌交互的通道数可以在低成本下实现有效的性能提升。同时,过大的值并不会提供能够补偿伴随成本的性能提升。

4、相关工作

在资源受限的设备中利用卷积神经网络(CNN)已经引起了众多研究者的广泛关注。在这一趋势中,出现了多种策略,包括MobileNets[50,51,71]中的卷积分解、ShuffleNets[66,72]中的通道混洗、GhostNet[67]中的廉价线性变换、EfficientNet[24]中的复合缩放定律以及许多工作中的结构重参数化[7,56,73]。

即使在Vision Transformer(ViT)[1]领域,也有许多针对高效设计的研究正在进行,以加速各种设备上的推理速度。一个颇有前景的方法是设计一种新型的ViT架构,该架构融合了CNN的局部先验。这种方法主要在后期阶段引入注意力,以便在不产生大量计算开销的情况下有效地提取全局信息[7-10,12]。与此相反,其他方法则并行使用注意力和卷积,要么在单个令牌混合器内[14,43,74],要么在逐块的基础上[19],以组合丰富的特征集。另一种方法侧重于降低MHSA的计算复杂度[17, 18,21,69]。例如,MobileViTv2[21]引入了一种具有线性复杂度的可分离自注意力,该复杂度与令牌数量(分辨率)成正比。EdgeViT[17]将MHSA应用于子采样特征,以成本效益高的方式实现近似完全的空间交互。与上述方法不同,我们优先考虑以最小的空间冗余组织令牌,而不是有效地混合令牌。

此外,最近的工作[27, 34-39, 75-77]已经证明,许多头部以相似的方式工作,可以在不显著影响性能的情况下进行剪枝。EfficientViT[27]提出将完整的通道分割成不同的部分来馈入注意力头部,以提高注意力的多样性。此外,[76]提出了一种针对多头相似性的正则化损失,而[78]则探讨了不同层之间的头部相似性。与我们减少多头冗余的做法不同,我们设计了一个单头配置的模块,这不仅固有的防止了多头冗余,还节省了计算成本。

5、结论

在这项工作中,我们研究了许多现有模型常用架构设计中空间和通道维度上的冗余性。然后,我们提出了使用 16 × 16 的块嵌入、3个尺度的层次化表示以及单头自注意力来解决计算冗余问题。我们进一步基于提出的宏观/微观设计,提出了我们的多功能SHViT,它在各种设备和视觉任务上实现了超快的推理速度和高性能。

讨论。虽然我们的宏观设计是有效的,但还需要更精细(高分辨率)的特征来进一步提高性能或识别小物体。因此,我们未来的工作重点是探索成本效益高的方法来利用这些特征。将单头设计集成到现有的复杂注意力方法中将是一个有趣的研究方向。

SHViT:单头视觉转换器与内存高效的宏观设计——补充材料

本补充材料提供了额外的比较结果、内存分析、检测结果和实验设置。

A、与大型模型的小型变体的比较

我们在表7中将我们的模型与已建立模型的小型变体进行了比较。当应用于更高的分辨率时,我们的模型在参数和吞吐量方面均优于最先进的模型。与Swin-T[40]相比,我们的SHViT-S4_{r 384}在精度上低0.3%,但在A100 GPU和Intel CPU上的速度分别快2.3倍和9.5倍。
在这里插入图片描述

此外,在图9中,我们还提供了第3.2节的进一步结果。这些结果不仅证明了在移动设备上,而且与其他推理平台相比,增加分辨率可以提高速度性能,与最近的模型[7,8]相比。这一结果表明,我们的模型可以成为现实应用中具有竞争力的替代方案。关于这些性能提升的进一步分析将在下一节中详细说明。
在这里插入图片描述

B、内存效率分析

我们的模型与轻量级模型相比具有更多的参数。例如,SHViT-S3的参数数量是EfficientNet-B0[24]的2.7倍。然而,在资源受限的设备上部署模型时,一个重要考虑因素是特征图的内存访问成本。对于给定的层,内存访问次数如下所示:

2 × b × h × w × c + k 2 × c 2 2 \times b \times h \times w \times c + k^{2} \times c^{2} 2×b×h×w×c+k2×c2

特别是当增加批量大小以提高吞吐量,或对于需要高分辨率输入的应用时,上述方程中第一项的影响变得尤为关键。我们提出的宏观和微观设计通过分别消除第一项中 h × w \times w ×w 和 c 组件的冗余,显著减少了内存使用量。在表8中,尽管我们的模型参数多于EfficientNet-B0,但消耗的测试内存更少。值得注意的是,随着批量大小的增加,内存使用量的差异也在增加。
在这里插入图片描述

C、COCO 检测上的进一步结果

我们还使用DEtection TRansformer(DETR)[80, 81]框架在COCO目标检测基准[79]上展示了结果,如表9所示。
在这里插入图片描述

DETR的编码器由自注意力和前馈网络(FFN)组成,而解码器由自注意力、交叉注意力和前馈网络组成。为了证明我们的单头注意力模块不仅作为特征提取器有效,而且作为检测头也有效,我们将单头设计应用于编码器的自注意力层和解码器的交叉注意力层。这两层涉及显著的计算成本,因此采用单头设计可以极大地提高模型速度。然而,在检测头中,每个注意力权重都定位不同的极值点[88],这使得将它们简单地组合成单头设计变得具有挑战性。此外,我们发现在编码器和解码器的初始层和后续层中,多头设计都是至关重要的。因此,我们在每个编码器和解码器的第2、3和4层中使用了单头注意力模块。为了最小化性能下降,我们还将单头模块中的头维度从32增加到64。我们使用Deformable DETR[80,81]的训练配方来训练我们的模型。如表9所示,单头模块作为检测头展示了合理的性能,是推理速度至关重要的应用中的竞争性替代方案。

D、冗余实验更多细节

在本节中,我们提供了第2.2节头部相似性分析的实现细节。对于每一层 i i i,平均余弦相似度值计算如下:

HeadSim i = 1 N h ( N h − 1 ) ∑ j ≠ k cos ⁡ ( head j , head k ) \text{HeadSim}_{i} = \frac{1}{N_h(N_h - 1)} \sum_{j \neq k} \cos(\text{head}_j, \text{head}_k) HeadSimi=Nh(Nh1)1j=kcos(headj,headk)

其中, N h N_h Nh是头的数量。然后,对所有批次的值求平均。

头部消融研究。为了进行头部消融实验,我们修改了多头自注意力(MHSA)的公式:

MHSA = Concat ( δ 1 head 1 , … , δ N head N ) W O , head i = Attention ( X i W i Q , X i W i K , X i W i V ) , Attention ( q , k , v ) = Softmax ( q k ⊤ / d head ) v , \begin{aligned} \text{MHSA} &= \text{Concat}(\delta_1 \text{head}_1, \ldots, \delta_N \text{head}_N) W^O, \\ \text{head}_i &= \text{Attention}(\mathbf{X}_i W_i^Q, \mathbf{X}_i W_i^K, \mathbf{X}_i W_i^V), \\ \text{Attention}(\mathbf{q}, \mathbf{k}, \mathbf{v}) &= \text{Softmax}(\mathbf{q} \mathbf{k}^\top / \sqrt{d_{\text{head}}}) \mathbf{v}, \end{aligned} MHSAheadiAttention(q,k,v)=Concat(δ1head1,,δNheadN)WO,=Attention(XiWiQ,XiWiK,XiWiV),=Softmax(qk/dhead )v,

其中, δ \delta δ是值为 0 , 1 {0,1} 0,1的掩码变量。当所有 δ \delta δ都等于1时,上述层相当于MHSA层。为了消融头部 i i i,我们只需设置 δ i = 0 \delta_i=0 δi=0。我们在测试时通过选择性地从一个给定的架构中移除一个或多个注意力头部,并评估对精度的影响的结果。我们报告模型中每一层的最佳精度,即通过将整个层减少到单个最重要的头部而实现的精度。

我们进一步研究了DeiT-S-Distill [31]中的头部冗余问题。DeiT-S-Distill是一个通过从卷积神经网络(ConvNets)中提炼知识得到的视觉转换器。在提炼后的模型中,我们观察到在后期阶段多个头部之间存在显著的计算冗余性。此外,在多个头部操作类似于卷积的早期阶段,性能出现了相对明显的下降。

E、关于相关工作的进一步讨论

关于宏观设计。我们的补丁嵌入方案与[10,27]中的方案相似,但推导过程是从完全不同的视角进行的。虽然[10]通过实验将ResNet和DeiT结合,间接地确定了补丁嵌入的大小,但我们的工作从一开始就致力于研究冗余性,并从空间和通道两个方面分别进行分析。这不仅使我们能够解决传统补丁嵌入中的空间冗余问题,还促使我们提出了SHSA模块。这与[10]中使用的MHSA不同,SHSA模块在移动设备上的表现优于MHSA(例如,SHViTS4的准确率为80.2%,推理时间为1.6ms,而LeViT-192的准确率为80.0%,推理时间为28.0ms)。据我们所知,目前尚未有分析解决不同环境(设备、任务)中空间冗余性影响(速度、内存效率)的现有工作。
在这里插入图片描述

关于SHSA中的部分设计。部分通道设计在之前的研究[30,66]中也有所应用。然而,我们的工作在动机和有效性上都与众不同。先前的工作主要关注FLOPs(或吞吐量),因此在部分通道上使用卷积(深度卷积或普通卷积)。相比之下,本文通过在部分通道上使用单头注意力来解决多头冗余问题。此外,我们的SHSA在之前的卷积之后,在一个单一的令牌混合器内并行地高效地利用两种互补特征[12,43]。这一设计不仅提高了模型的性能,还使得模型在处理复杂任务时更加高效和灵活。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576381.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python-opencv实现最近邻插值和双线性插值对图片上采样

使用背景 当我们需要把图像进行放大或者缩小的时候,第一反应是使用resize()实现。很多情况下,我们会调用最近邻插值和双线性插值去放大图片,当然要说没有分辨率的损失那是不可能的,只能说在放大图片的过程中尽可能增加了图片的分…

免费的一键伪原创工具,用来高效写文章真妙!

写文章是一件耗时间、费精力的事,遇到没有写作灵感的时候,写文章就像嚼蜡一样难受,但好在有免费的一键伪原创工具,它能帮助我们高效率实现自动写作文章,并且整个写作的过程我们无需思考内容怎么去写,是可以…

自动驾驶传感器篇: GNSSIMU组合导航

自动驾驶传感器篇: GNSS&IMU组合导航 1.GNSS1.1 GNSS 系统概述1.2 GNSS系统基本组成1. 空间部分(Space Segment):2. 地面控制部分(Ground Control Segment):3. 用户设备部分(Use…

x86 64位的ubuntu环境下汇编(无优化)及函数调用栈的详解

1. 引言 为了深入理解c&#xff0c;决定学习一些简单的汇编语言。使用ubuntu系统下g很容易将一个c的文件编译成汇编语言。本文使用此方法&#xff0c;对一个简单的c文件编译成汇编语言进行理解。 2.示例 文件名&#xff1a;reorder_demo.cpp #include<stdio.h>typede…

摩尔定律仍在延续|从最新1.6nm工艺节点看芯片发展-2

2nm工艺的斗争还没结束&#xff0c;TSMC台积电就又公开宣布了1.6nm&#xff08;TSMC A16TM&#xff09;半导体工艺&#xff0c;太卷了&#xff01; TSMC A16TM技术采用领先的纳米片晶体管&#xff0c;并结合创新的背侧电源轨方案&#xff0c;计划于2026年投入生产。这种设计极…

【项目】YOLOv8/YOLOv5/YOLOv9半监督ssod火灾烟雾检测(YOLOv8_ssod)

假期闲来无事找到一份火灾烟雾数据集&#xff0c;自己又补充标注了一些&#xff0c;通过论文检索发现现在的火灾检测工作主要局限于对新场景的泛化性不够强&#xff0c;所以想着用半监督&#xff0c;扩充数据集的方法解决这个问题&#xff0c;所以本文结合使用现在检测精度较高…

成功案例丨守“鲜”有道 Fortinet为都乐筑就全球安全防护网

作为全球知名的跨国食品企业&#xff0c;都乐业务遍布各大洲。在各种新兴业务模式层出不穷的数字化时代&#xff0c;都乐面临着生产持续性、安全运营、供应链安全等严峻的网络安全挑战。通过采用Fortinet的FortiSIEM、FortiMail等系列Fortinet Security Fabric安全平台生态产品…

DaVinci Resolve Studio 19(达芬奇19调色剪辑)win/mac激活版

DaVinci Resolve Studio是一个结合专业的8k 编辑&#xff0c;颜色混合&#xff0c;视觉效果和音频后期制作的软件。只需点击一下&#xff0c;你就可以立即在编辑、混音、特效和音频流之间切换。此外&#xff0c;达芬奇解决(达芬奇)是一个多用户协作的解决方案&#xff0c;使编辑…

Swift - 基础语法

文章目录 Swift - 基础语法1. 常量1.1 只能赋值1次1.2 它的值不要求在编译时期确定&#xff0c;但使用之前必须赋值1次1.3 常量、变量在初始化之前&#xff0c;都不能使用 2. 标识符3. 常用数据类型4. 字面量4.1 布尔4.2 字符串4.3 整数4.4 浮点数4.5 数组4.6 字典 5. 类型转换…

OpenHarmony音视频—opus

简介 Opus是一种用于在互联网上进行交互式语音和音频传输的编解码器。它可以从低比特率窄带语音扩展到非常高的高品质立体声音乐。 下载安装 直接在OpenHarmony-SIG仓中搜索opus并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 将下载的opus库代码存在以下路径&a…

OSPF的LSA详解

一、什么是LSA&#xff1f;LSA作用&#xff1f; 在OSPF协议中&#xff0c;LSA全称链路状态通告&#xff0c;主要由LSA头部信息&#xff08;LSA摘要&#xff09;和链路状态组成。部分LSA只有LSA头部信息&#xff0c;无链路状态信息。使用LSA来传递路由信息和拓扑信息&#xff0c…

2024全网最火的接口自动化测试,一看就会

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

网工内推 | 外企网工,思科认证优先,弹性工作,补贴多

01 淳华科技&#xff08;昆山&#xff09;有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1.全厂网络规划 2.Cisco交换机和路由器的配置 3.日常设备点检\维护\配置 4.网络设备的评估并做报告说明 任职要求&#xff1a; 1.具有一定的网络工作经验有Cisco或是其…

DNS域名系统 | unbound

目录 DNS 命名空间和域名结构 DNS的命名空间的结构: 域名服务器的分类&#xff1a; ​编辑 DNS 资源记录 常见type: DNS报文结构 请求报文&#xff1a; 响应报文&#xff1a; 解析类型 递归查询 迭代查询 DNS劫持 DNS劫持方法&#xff1a; 防御措施 DNS服务部署…

05_Scala运算符

文章目录 **1.Scala运算符****2.scala中没有 --等语法****3.逻辑运算符和Java完全相同****4.scala认为万物皆对象** 1.Scala运算符 Scala底层 使用的是equals() 程序员比较两个量的时候&#xff0c;谁来没事比较内存地址&#xff1f; Java中引用数据类型比较地址&#xff0…

Allure精通指南(05)定制化报告内容(环境信息、图标、缺陷类别)

文章目录 Allure 自定义测试环境信息Allure 自定义缺陷类别信息Allure 自定义图标步骤一步骤二步骤三 Allure 自定义测试环境信息 步骤 1&#xff1a;创建 environment.properties 文件 在项目根目录或任何其他不会被--clean-alluredir参数影响的目录下创建 environment.proper…

OpenHarmony语言基础类库【@ohos.util.LightWeightMap (非线性容器LightWeightMap)】

LightWeightMap可用于存储具有关联关系的key-value键值对集合&#xff0c;存储元素中key值唯一&#xff0c;每个key对应一个value。 LightWeightMap依据泛型定义&#xff0c;采用轻量级结构&#xff0c;初始默认容量大小为8&#xff0c;每次扩容大小为原始容量的两倍。 集合中…

1、opencv介绍与开发环境搭建

1、opencv介绍 OpenCV 是 Intel 开源计算机视觉库&#xff0c;是一个跨平台的开源计算机视觉和机器学习软件库。它由一系列 C 函数和少量 C 类构成&#xff0c;可用于开发实时的图像处理、计算机视觉以及模式识别程序。 该库有 2500 多种优化算法&#xff0c;其中包括一套全面…

python怎么输出倒序

python怎么输出倒序&#xff1f;下面给大家介绍四种方法&#xff1a; 创建测试列表 >>> lst [1,2,3,4,5,6]方法1&#xff1a; >>> lst.reverse() #reverse()反转 >>> lst [6, 5, 4, 3, 2, 1] 方法2&#xff1a; >>> lst1 [i for i in …

2024年最好用的10款ER图神器!

分享10款ER图工具&#xff0c;详细分析他们的功能特点、价格和适用场景&#xff0c;可以根据你的需求进行选择。ER图&#xff08;Entity-Relationship Diagram&#xff09;是数据库设计中常用的一种模型&#xff0c;用于描述实体之间的关系。这种图形化的表示方法旨在帮助人们理…
最新文章