高效视觉背传研究的趋势是变成一种结合卷积和 transformer 块的模型。在速度和准确性之间取得优势需要智能地组合两者,即在架构上和在组件上。大多数出版物专注于最大化准确性和使用 MACs(乘累运算)作为效率指标。 然而,后者因为像内存访问成本和并行度等因素,通常不能准确地衡量出模型实际的运行速度。 作者分析了常见模块和架构设计选择,而不是以 MACs 为单位,而是以实际吞吐量和使用延迟为指标,因为后两者的组合是实际应用中模型效率更好的表示。 作者将这种分析得出的结论应用到宏观设计中,以增加硬件效率。 此外,作者引入了一种简单的瘦身版本的 Multi-Head Self-Attention,这也与作者的分析相一致。作者将宏观和微观设计相结合,创建了一个新的硬件效率 Backbone 网络家族,称为 LowFormer。 LowFormer 在吞吐量方面和延迟方面实现了显著的加速,同时实现了与当前最先进的硬件效率 Backbone 相类似或更好的准确性。 为了证明作者硬件效率设计的普遍适用性,作者在 GPU、移动 GPU 和 ARM CPU 上评估了作者的方法。 作者还进一步指出,下游任务,如目标检测和语义分割,从作者的硬件效率架构中受益。 代码和模型可以在 https://github.com/altair199797/LowFormer。
近年来,有效视觉 Backbone 网络研究主要集中在将注意力机制与卷积层相结合。通过局部信息提取(由卷积实现)和全局推理(由注意力实现)的混合,已经证明比同质模型更优秀。在提高速度与准确率之间的权衡一直是该领域研究的主要目标,以提高下游任务(如目标检测、姿态估计和语义分割)的效率。 Backbone 网络架构的效率对于提高移动和边缘设备上下游任务的可适用性也尤为重要[39]。
为了衡量深度学习模型的计算效率并进行比较,通常会计算它们的MACs(乘加运算)数量[34]。模型中的MACs数量与其准确性高度相关。例如,通过增加宽度、深度或分辨率标度,可以提高准确性[34]。然而,MACs并非同等重要,忽略诸如内存访问成本和并行度等因素,这些因素可能会显著影响模型的执行时间。
作者的目标是通过对何时MACs执行效率最高进行研究来提高有效 Backbone 网络架构的吞吐量与延迟,同时通过研究MACs的执行效率提高准确性。后续根据研究结果推导出高效的 Backbone 网络架构设计配方。在进行调查的实验部分(请参见第3节)中,作者对比了宏设计决策下的执行时间和MACs数量。
作者将研究成果应用于创建一个新的 Backbone 网络家族,称为 LowFormer。LowFormer 通过作者的宏设计实现高效 MAC 执行,从而使其比之前提出的模型(参见图1)更快且更准确。根据调查结果,作者通过简化并轻量级的传统注意机制对 LowFormer 进行补充,使尺度点产品注意(SDA)针对降采样的特征图进行上下采样。结果是 SDA 在较低的输入分辨率上运行,从而得名 LowFormer。
作者通过测量 GPU 吞吐量、GPU 延迟、移动 GPU 延迟和 ARM CPU 延迟测试了 LowFormer 的硬件效率的泛化性。作者通过广泛的消融研究(参见第5.3节)来支持和证明设计决策。所提出的架构具有简单的微型和宏设计,作者可以将其从低复杂性(LowFormer-B0)扩展到更高复杂性(LowFormer-B3)。总共具有五种模型(B0、B1、B1.5、B2、B3),作者在 ImageNet-1K 上的 top-1 精确度范围为 78.40% 到 83.64%。例如,与 MobileOne-S2 相比,LowFormer-B0 在 GPU 上具有 2 倍的处理能力和 15% 更少的延迟,而 top-1 精确度提高了 1%。在具有最高复杂性的模型 LowFormer-B3 中,GPU 吞吐量近似为 FAT-B3(12)的 3 倍,GPU 延迟为 55%。
作者将 LowFormer 集成到语义 FPN [18] 和 RetinaNet [23] 中,以提高语义分割和目标检测模型的效率。例如,在作者的 LowFormer-B1 Backbone 网络中,作者实现了 1.7% 更好的 mIoU 比 FastViT-SA12 [38],同时具有 3 倍的处理能力和 30% 更少的 GPU 延迟。总之,作者的贡献如下:
在深度学习领域,[34]一直以来的一个主要目标是实现最佳的计算效率。实现所有(计算)成本下的最高准确性早已不再是唯一的目标。相反,越来越多的研究关注于创建最有效的架构,并随后实现最佳的速度-准确性权衡[6, 17, 31]。早期的方法主要将速度与最少的MACs(媒体访问成本)相等同[5, 15, 36],而更多的最新研究越来越以桌面GPU和CPU上的吞吐量或延迟[2, 28, 47],移动GPU[39]或一般边缘设备[6]上的方式衡量模型。
内存访问成本和并行度已经成为了有效模型设计的两个重要因素。例如EfficientViT [24]指出在 Transformer 块中,多头自注意力(MHSA)比前馈网络(FFN)诱导更高的内存访问成本。因此,他们在其架构中增加了FFN相对于MHSA的比例,同时最小化了精度损失。MobileOne [39]的作者则分析了激活函数和多分支架构对移动延迟的影响。另一方面,ShuffleNetV2 [28]和FasterNet [3]都指出了分组卷积在当前硬件上由于高内存访问成本[3]执行的不效率。作者遵循他们的观点,但并非像[28]那样解组一部分卷积,也非引入一个新的微观设计[3],而是研究如何合并了逐点和逐通道卷积的执行时间。作者进一步分析了分辨率对硬件效率的影响,并在作者的宏设计中应用了这两项研究的洞见。
高效注意。有各种各样的不同类型的注意力操作,试图取代传统注意力操作,这些操作尽力去除其二次方性质,基于Wang等人[42]的线性注意的变异。然而,Yu等人[46]的研究表明,注意本身并不像作者以为的那么重要,甚至可以被简单的池化操作所取代。Li等人[20]进一步发挥了这个理念,在前三个阶段使用了高效的池化操作,在最后两个阶段使用了传统的注意力操作[20]。另外一些人[11, 43, 45]在注意力操作之前对键K和V进行下采样,无论是通过卷积还是池化。
Si等人[33]的做法则是下采样Q,因此在所有阶段都完全在较低的分辨率下运行。这种方法与作者使用的注意力方法相似,但是作者在下采样时使用卷积而不是池化,并未能集成其Inception Token Mixer,这种Mixer将多个路径的通道分隔开来,其中一个是较低分辨率下的注意力。此外,与Si等人[33]不同的是,作者在所有阶段都使用了他们的InceptionFormer块,也错过了作者在第4.1节中描述的其他优化。
作者从原始多头自注意力(MHSA)中对该适应方法非常简单,接近于传统注意力,作者在已经确立的概念上舍弃了过度复杂的方案。据作者所知,尚无任何人提出过这种适应方法到原始多头自注意力[40]。
在接下来的部分,作者将研究不同配置下卷积运算的硬件效率。例如,一个卷积运算块相较于另一个,虽然它的MAC操作更多,但是硬件效率至少是相似的。作者在桌面GPU和CPU上评估速度。
当模型关注效率和友好移动设计时,逐点卷积是标准卷积的显著替代方案[17, 34]。标准卷积是无分组卷积(组=1),而逐点卷积是具有与输入通道数一样多组的分组卷积。逐点卷积在MACs方面有效,但无法完全将其转化为通用硬件。在架构设计中对模型进行MACs评估,会自动导致尽可能插入逐点卷积,不论其有效性提升速度如何。为了将执行时间和MACs之间的断点作为效率度量具体化,作者进行了一个使用简化玩具架构的实验。作者对使用逐点卷积对GPU吞吐量、GPU延迟和CPU延迟的影响进行了考察(见表1)。作者创建了三个只包含逐点卷积的模型(#2,#4,#6)和三个只包含标准卷积的模型(#1,#3,#5)。虽然表1中#1和#
移动倒置瓶颈块(MBConv)[32]在高效 Backbone 网络[17, 32, 34]中拥有悠久的成功历史,并且仍被许多新方法[2, 8, 35]所采用。它由两个逐点卷积(PWConv)和中间的逐点(DWConv)组成(参见图5来描述它)。PWConv通过指定的扩展因子增大和减小通道维度。然而,如作者在第3.1节中得出的结论,逐点卷积并不是特别硬件高效的。为了提高硬件效率,作者因此通过利用融合的MBConv[14]移除逐点卷积,将第一行的PWConv和DWConv融合为一条标准卷积。尽管融合的MBConv比未融合的更具有硬件效率(因为它不包含逐点卷积),但是它同时也具有显著更高的MACs(虽然层数较少)。逐点卷积在高通道维度上表现得更好,因为其计算量与通道维度成线性关系。因此作者将比较不同配置下这两个模块的执行时间。
图2作者比较了融合和未融合的MBConv在扩展因子为四和六(第一和第二行)。省略了通道数范围在16到64之间和分辨率从7到28的场景,因为这与 Backbone 网络结构无关,并且GPU利用率太低不适合得出有意义的结论。在两张图中作者都描绘了GPU平均执行时间(左侧)和MACs(右侧)比未融合的MBConv除以。作者测量了在批处理大小为200,迭代100次的平均执行时间,这与作者在第5.1节中测量吞吐量的方式相同。
可以观察到图2中分辨率和通道维度对相对执行时间有很大影响,尽管融合的MBConv总是具有更高的MACs(值超过1),但在许多场景中(值较小在左部分)它更快。只有在高通道数(超过512)的情况下,相对执行时间恶化并接近相对MACs。作者在附录中同样以这种方式评估了GPU延迟。
在操作系统分辨率和对层的通道数量上,会极大地影响硬件执行的效率。在表2中,作者通过创建包含20倍相同层堆叠的模型,比较了不同的层配置。表2中作者引入了以下7种场景,每个场景都以相同数量的MAC(百万次运算)为基准,但在通道维数和操作分辨率上有所不同。为了比较不同层的硬件效率,作者测得了GPU延迟和吞吐量。这些模型仅包含标准卷积(未分组)。
表2清晰地展示了高分辨率会导致硬件执行效率降低,而通道数量增加只会带来一些小问题。例如,在第1种场景中,第一个卷积的吞吐量只有第二个卷积的1/3,延迟几乎为3倍。
它的分辨率是后者的8倍,但通道数较少,其MAC与第二层相同。同样的状况也会在分辨率差较小时发生,正如第2种场景所示,在那里,第一个卷积的分辨率是第二个卷积的2倍,但依然无法以比第二个卷积的更高吞吐量、延迟执行其MAC。
运行高分辨率的模型可能会使模型运行速度降低到一个比MAC大得多的程度,而减少操作分辨率可以使硬件执行更加高效。作者强调,模型缩放应该更受实际测量速度的影响,因为MAC可能是有误导性的,特别是在通过更高输入分辨率来缩放模型时。
以下作者将描述作者提出的原始Multi-Head Self-Attention [40]的轻量级自适应以及作者的硬件高效的宏设计。同时,作者也解释了它们是如何源于第三章执行时间分析中的洞察。
在最后两个阶段,作者采用了一种轻量级的适应性MHSA[40],如图4所示,名为LowFormer Attention。在作者的适应版本中,Scaled Dot-Product Attention (SDA) 被两个深层卷积和两个点卷积所封装,执行 Query (Q)、键(K)和值(V)的输入和输出投影。
在输入投影过程中,Q、K和V的通道维度被减半,在SDA之后通过输出投影恢复到初始的通道维度。
降低分辨率。在第三节3.3中,作者学习了高运行分辨率会不成比例地降低卷积速度。作者将这个洞察转移到注意力,因此卷积(见图4)也会降低和提高SDA前后最后一个阶段特征图的分辨率,使得注意力操作在一半的分辨率上执行。在第五节5.3中,作者证明了这个措施对吞吐量和延迟有显著影响。
由于这两个适应,使输入到SDA的所有维度(通道维度、高度和宽度)都被减少,因此作者用lightweight描述LowFormer Attention。
MLP跟随Attention。在Vaswani等[40]之后,作者在LowFormer Attention之后附加了层归一化和多层感知机(MLP)。作者发现它的对模型准确性的影响显著,并且Liu等人[24]指出,MLP比注意力运算更节省硬件资源。
本宏观设计基于 EfficientViT [2] 和 MobileViT [30]。作者特设五个阶段,并根据以下两个配方进行了架构的调整,这两个配方来自第3节执行时间分析的见解。整个架构如图3所示。作者提出了五种不同的版本,即 B0-B3(B0,B1,B1.5,B2,B3)。架构细节如下表3所示。
第一阶段中的层数更少。从第3.3节中的见解作者得出的结论是第一阶段的层数越少,硬件效率越高(见表3)。因此,最优的是对前三个阶段进行减少。因此,大部分计算集中在最后一个两个阶段,其中对于输入尺寸224224,运算分辨率为1414和77。
结合深度卷积和逐点卷积。在第3.1节中,作者证明了逐点卷积并非标准的卷积硬件效率更高,在第3.2节中得出结论,结合的MBConv(参见图5)可以比未结合的快。这种效果随着通道数的增加而减弱。因此,在输入通道数达到最多256时,作者结合了MBConv,除最后阶段的宽度为2的MBConv块外,其他地方都结合了(参见图3)。作者还在LowFormer Attention(参见图4)之后的SDA后结合了深度卷积和逐点卷积。作者通过还原第5.3节中对MBConv块的结合来证实这种方法的有效性。
结合模型在低层卷积注意力(LowFormer Attention)和逐点卷积后的SDA的卷积融合进行验证。
设置:作者在ImageNet-1K上进行图像分类实验[10],该数据集包括128万个用于训练的图像和5万个用于验证的图像,共分为1000个类别。所有模型都从零开始训练,使用了与Cai等人[2]相似的设置,输入分辨率均为224。此外,作者还使用AdamW[26]优化器进行了总共320个训练周期,学习率设置为,但batch size设置为512。
作为学习率调度器,作者使用了余弦退火[25]并进行了20次预热周期,采用线性计划。此外,作者还采用了Cai等人[2]的多尺度学习。作者用batch size为2400和基础学习率设置为的LowFormer-B3进行了训练,而LowFormer-B2的batch size为850,基础学习率设置为。
GPU吞吐量与延迟。在表5中,作者通过GPU吞吐量和延迟来衡量速度。对于GPU吞吐量,作者在一块Nvidia A40显卡上执行100次迭代,每次迭代使用200个batch size,总共对每个输入图像运行一次,计算每个输入图像的中间时间。用于测量GPU延迟的是作者在一块Nvidia Titan RTX上进行400次迭代,每次迭代使用16个batch size。对于后者,作者还编写了所有模型到TorchScript代码并在推理时对它们进行了优化[1]。作者还为延迟和吞吐量测量进行了5次预热迭代。
结果。为了更好地比较不同方法,作者将LowFormer-B1和LowFormer-B3的版本纳入考虑,这些版本在不同的 Resolution 下进行了评估(见表5)。与其他所有方法相比,LowFormer的变体在保持相似或较低的GPU吞吐量的情况下,在Top-1准确性方面仍然优于其他方法(见表5)。在Resolution 256下测试的LowFormer-B1的Top-1准确率比EfficientViT-B1[2]高0.8%,比RepViT-M1.1[41]高23%,但比73%更高吞吐量,比21%的延迟低。
在Resolution 224下测试的LowFormer-B1只有与SHViT-S4[47]在Resolution 256下相比,Top-1准确率为0.44%,与SHViT-S4[47]的吞吐量类似。但是,SHViT架构通过增加输入分辨率的方式增加了其模型复杂度,从而使其最优秀的模型SHViT-S4[47]在Resolution 512下的Top-1准确率低于LowFormer-B3,但吞吐量相同。
作者的设计硬件效率和MACs数量和执行时间之间不一致的关系在比较LowFormer-B3与GhostNetV2x1.0[36]时表现得尤为明显。
LowFormer的Top-1吞吐量是GhostNetV2x1.0的3倍,延迟低20%,MACs数量多36倍,Top-1准确率高出8.3%。
分辨率扩展。作者在图6中探讨了增加输入分辨率对GPU延迟的影响,研究了LowFormer-B1以及其他方法。在保持Top-1精度的同时,LowFormer-B1在ImageNet-1K上的性能比其他模型快得多,与输入分辨率无关。
移动GPU和CPU延迟。在表4中,作者还验证了作者的模型在移动GPU(ARM Mali-G76 MP12)和ARM CPU(ARM Cortex A53)上的效率。作者在每次迭代时使用batch size为1和Resolution 224x224,对移动CPU运行了30次迭代,而对移动GPU运行了10000次迭代,总共进行了1000次预热迭代。
尽管作者的架构并非专门针对边缘应用进行优化,但从例子来看,LowFormer-B1在Top-1准确率上比MobileOne-S4[39]高0.5%,MobileOne-S4在移动GPU上的延迟高32%,在ARM CPU上的延迟高59%。
作者利用预训练的 Backbone 网络,并在目标检测和语义分割中应用这些网络。作者将这些模型在COCO 2017 [22]和ADE20K [49]上进行训练和评估,分别使用了mmdetection [4]和mmsegmentation [7]。
对于目标检测,作者采用RetinaNet框架 [23],而对于语义分割,作者则将 Backbone 网络集成到Semantic FPN [18]。在 Backbone 网络GPU吞吐量和延迟测量方面,作者遵循第5节的做法,但在输入分辨率512512上进行评估。
目标检测: 作者将模型训练12个周期(1倍计划),参考 [2, 12]。关于结果,例如LowFormer-B2模型在[12]的FAT-B0模型基础上,实现了**+1.0**的AP,同时在512512的分辨率上, Backbone 网络的吞吐量比率为93%更高(请参阅表6)。
语义分割。对于语义分割,作者用40,000次迭代训练模型,每次迭代批次大小32,参考 [12, 29, 38, 41]。
作者使用AdamW优化器 [26],学习率采用余弦退火法 [25],基础学习率为×,warm-up步骤1000个,其中线性提高。例如,LowFormer-B1在集成到Semantic FPN后,相比EfficientFormerV2-S2模型,实现了 +0.4的mIoU,但吞吐量提高了2.4倍,延迟降低20%(请参阅表7)。
在表8中,作者分析了模型设计的决策。作者以将低层形式器-B1(LowFormer-B1)变为单层形式器-B1为例,以证明这种变化对准确率、吞吐量及延迟的影响。以下是作者的主要消融实验:
作者展示了高分辨率及逐点卷积对硬件效率的负面影响,并提出了一种替换逐点卷积的方法。
作者还提出了一种简单的轻量级注意力机制,并证明了当它在较低分辨率下运行时,不会降低准确性,而是导致显著的执行速度提升,尤其是在模型输入分辨率增加时。作者的硬件高效的宏微设计相比之前的做法带来了显著的加速。
作者还进一步证明了作者的 Backbone 架构在目标检测和语义分割中的应用性。
[1].LowFormer: Hardware Efficient Design for Convolutional Transformer Backbones.