【读点论文】EFFICIENT MODULATION FOR VISION NETWORKS,构建了一个高效的特征调制块,配套做了很多的实验,探讨了一些推理速度与模型设计及平台配置的关系

EFFICIENT MODULATION FOR VISION NETWORKS

ABSTRACT

  • 在本研究中,我们提出了一种高效调制,一种用于高效视觉网络的新型设计。我们重新审视了调制机制,该机制通过卷积上下文建模和特征投影层来操作输入,并通过逐元素乘法和 MLP 块融合特征。我们证明了调制机制特别适合高效网络,并通过提出高效调制 (EfficientMod) 块进一步定制调制设计,该块被认为是我们网络的基本构建块。得益于调制机制的卓越表征能力和所提出的高效设计,我们的网络可以在准确性和效率之间实现更好的权衡,并在高效网络领域树立新的最先进性能。当将 EfficientMod 与 vanilla 自注意力块相结合时,我们获得了混合架构,这进一步提高了性能而不会降低效率。我们进行了全面的实验来验证 EfficientMod 的性能。由于参数较少,我们的 EfficientMod-s 的 top-1 准确率比 EfficientFormerV2-s2 高 0.6,在 GPU 上快 25%,在相同的 GPU 延迟下比 MobileViTv2-1.0 高 2.9。此外,我们的方法在下游任务中表现出显着的改进,在 ADE20K 基准上比 EfficientFormerV2-s 高 3.6 mIoU。代码和检查点可在 https://github.com/ma-xu/EfficientMod 上找到。
  • 论文地址:[2403.19963] Efficient Modulation for Vision Networks (arxiv.org)
  • https://www.secret-flow.com/bootcamp/9teqxigspfue9ce/enroll?inviter=rijlcehwl8ksmzx,记得加入学习

INTRODUCTION

  • 视觉Transformer (ViT) 在广泛的视觉任务上取得了令人瞩目的成就,并为视觉网络设计贡献了创新思想。得益于自注意力机制,ViT 与传统卷积网络的区别在于其动态特性和远程上下文建模能力。然而,由于视觉标记数量的二次复杂度,自注意力既不具有参数效率,也不具有计算效率。这阻碍了 ViT 部署在边缘或移动设备和其他实时应用场景上。为此,人们尝试在局部区域内使用自注意力或选择性地计算信息标记以减少计算。 同时,一些努力尝试将卷积和自注意力结合起来,以实现理想的有效性-效率权衡。

  • 最近,一些研究表明,与自注意力相比,纯卷积网络也可以获得令人满意的结果。 其中,计算效率高且易于实现的FocalNet和VAN表现出尖端性能,明显优于ViT同类产品。通常,这两种方法都考虑使用大核卷积块进行上下文建模,并使用逐元素乘法(后跟MLP块)调制投影的输入特征,如下图b所示。在不失一般性的前提下,我们将这种设计称为调制机制,它表现出良好的性能,并受益于卷积的有效性和自注意力的动态性。虽然调制机制提供了令人满意的性能,并且理论上是有效的(就参数和 FLOP 而言),但当计算资源有限时,它的推理速度令人不满意。原因有两个:i)冗余和同功能操作,例如连续的深度卷积和冗余的线性投影占用了大部分操作时间;ii)上下文建模分支中的零碎操作大大增加了延迟,违反了 ShuffleNetv2 中的指导原则 G3

    • 在这里插入图片描述

    • Transformer、抽象调制设计和我们的 EfficientMod 模块的比较。⊙ 表示元素乘法,⊗ 表示矩阵乘法。与 Transformer 和抽象调制相比,我们的统一模块通过简单的上下文建模设计 (CTX) 有效地调制投影值 (V)。© 中标明了维度数以帮助理解。

  • 在本研究中,我们 提出了高效调制,这是一种简单而有效的设计,可以作为高效模型的基本构建块(见上图 c ) \textcolor{red}{提出了高效调制,这是一种简单而有效的设计,可以作为高效模型的基本构建块(见上图 c)} 提出了高效调制,这是一种简单而有效的设计,可以作为高效模型的基本构建块(见上图c。与 FocalNet和 VAN背后的调制块相比,高效调制块更简单,并继承了所有优点(见图 b 和图 c)。与 Transformer 块相比,我们的 EfficientMod 的计算复杂度与图像大小呈线性相关,我们强调大但局部的交互,而 Transformer 与 token 数量呈立方相关,并直接计算全局交互。与仍然是许多有效网络事实上的基本构建块的倒置残差(MBConv)块不同,我们的解决方案使用更少的通道进行深度卷积并结合了动态(参见表 6 进行比较)。通过分析我们与这些设计之间的联系和差异,我们可以深入了解我们的有效性和效率从何而来。通过研究相似之处和区别,我们可以深入了解我们的方法的效率。

  • 借助我们的高效调制模块,我们引入了一种称为 EfficientMod 网络的高效网络新架构。EfficientMod 是一个纯卷积网络,表现出色。同时,我们提出的模块与传统的自注意力模块正交,并且与其他设计具有出色的兼容性。通过将注意力模块与我们的 EfficientMod 集成,我们得到了一个混合架构,可以产生更好的结果。在不使用神经网络搜索 (NAS) 的情况下,我们的 EfficientMod 在一系列任务中提供了令人鼓舞的性能。与之前最先进的方法 EfficientFormerV2 相比,EfficientMod-s 的 top-1 准确率比 EfficientFormerV2-S2 高出 0.3,在 GPU 上快 25%。此外,我们的方法在下游任务上大大超越了 EfficientFormerV2,在具有可比模型复杂度的 ADE20K 语义分割基准上比它高出 3.6 mIoU。 大量实验的结果表明,所提出的 EfficientMod 是有效且高效的。

RELATED WORK

  • 高效的卷积网络设计。最有效的网络之一是 MobileNet,它将传统卷积分解为逐点卷积和深度卷积。通过这样做,参数数量和 FLOP 大大减少,推理速度大大提高。随后,MobileNetV2通过引入倒置瓶颈块(也称为 MBConv 块)进一步推动了该领域的发展,这现在是大多数高效网络的事实上的基本构建块。

  • 此外,其他一些贡献也值得注意。网络架构搜索 (NAS) 可以提供更好的网络设计,例如 MobileNetv3 、EfficientNet 和 FBNet 等。ShuffleNet利用组操作和通道改组来节省计算量。ShuffleNetv2、FasterNet 和 GhostNet 强调特征重用的有效性。关于高效设计,我们的模型类似于 MBConv 块,但其背后的内部操作和机制不同。在设计理念方面,我们的模型与 FocalNet 和 VAN 相似,但效率更高、更优雅。我们在第 3.5 节和表 6 中讨论了联系和差异。

  • 高效网络中的 Transformer。Transformer 引起了视觉社区的极大兴趣,这无疑包括高效网络。一些方法,例如 MobileFormer,考虑将自注意力添加到 ConvNets 中,以同时捕获局部和全局交互。然而,由于视觉标记数量的二次复杂度,自注意力需要承受高计算成本。为了避免过高的计算量,EfficientFormerV2 和 EdgeNeXt在早期阶段考虑 MBConv 块,并在标记数量(或特征分辨率)较少的后期阶段使用自注意力。 与早期将自注意力和 MBConv 块结合起来以实现效率和有效性之间权衡的努力相比,我们提炼了自注意力、动态和大感受野的固有属性,并将这些属性引入了我们的 EfficientMod。我们还探索了集成自我注意力和 EfficientMod 的混合架构以获得更好的性能

  • 高效网络讨论。尽管参数数量和 FLOP 是广泛使用的评估模型理论复杂度的指标,但它们并不反映网络的实时成本,正如 ShuffleNetv2 中所认可的那样。高效网络设计的实用指南至关重要,例如更少的网络片段和一致的特征维度等。FasterNet还表明,由于每秒浮点运算效率低,低 FLOP 并不一定会导致低延迟。在这项工作中,我们提出了 EfficientMod,并将先前的观察结果纳入我们的设计中,以实现实际效果。

METHOD

REVISIT MODULATION DESIGN

  • 我们首先从 VAN 和 FocalNet 中推导出调制机制的一般概念。视觉注意力网络。VAN考虑了一种卷积注意力设计,它简单而有效。具体来说,给定输入特征 x ∈ R c × h × w x ∈ \R^{c×h×w} xRc×h×w,我们首先使用全连接(FC)层(具有激活函数)f(⋅)将 x 投影到新的特征空间,然后将其输入到两个分支中。第一个分支 ctx(⋅) 提取上下文信息,第二个分支是相同的映射。我们使用元素乘法融合两个分支的特征,然后添加新的线性投影 p (⋅)。具体来说,VAN 块可以写成:

    • O u t p u t = p ( c t x ( f ( x ) ) ⊙ f ( x ) ) , c t x ( x ) = g ( D W C o n v 7 , 3 ( D W C o n v 5 , 1 ( x ) ) ) , ( 2 ) Output = p (ctx(f (x)) ⊙ f (x)) ,\\ ctx(x) = g (DWConv_{7,3} (DWConv_{5,1} (x))) , (2) Output=p(ctx(f(x))f(x)),ctx(x)=g(DWConv7,3(DWConv5,1(x))),(2)

    • 其中 ⊙ 是元素乘法, D W C o n v k , d DWConv_{k,d} DWConvk,d 表示核大小为 k、扩张为 d 的深度卷积,g (⋅) 是上下文分支中的另一个 FC 层。遵循 MetaFormer的设计理念,VAN 块用作 token-mixer,两层 MLP 块(带有深度卷积)相邻连接作为通道混合器。

  • FocalNets。FocalNets 引入了焦点调制,它取代了自注意力,但具有动态性和较大的接受场。FocalNet 还考虑了并行的双分支设计,其中一个上下文建模分支 ctx(⋅) 自适应地聚合不同级别的上下文,一个线性投影分支 v (⋅) 将 x 投影到新空间。类似地,这两个分支通过逐元素乘法融合,并使用 FC 层 p (⋅)。正式地,FocalNet 中的分层调制设计可以通过以下方式给出(为清楚起见,忽略全局平均池化级别):

    • c t x ( x ) = g ( ∑ l = 1 L a c t ( D W C o n v k l ( f ( x ) ) ⊙ z ( f ( x ) ) ) ) , ctx(x) = g ( ∑^L_ {l=1} act (DWConv_{kl} (f (x)) ⊙ z (f (x)))) , ctx(x)=g(l=1Lact(DWConvkl(f(x))z(f(x)))),

    • 其中 ctx 包含 L 级上下文信息,由核大小为 kl 的深度卷积层分层提取,z(⋅) 将 c 通道特征投影到门控值。act(⋅) 是每个卷积层后的 GELU 激活函数。

  • 抽象调制机制。VAN 和 FocalNet 都表现出良好的表征能力,并表现出令人满意的性能。通过重新审视上述内容,我们发现这两种方法都有一些不可或缺的设计,这些设计极大地促进了它们的进步。 首先,两个并行分支单独操作,从不同的特征空间中提取特征,如自注意机制(如上图 a 所示)。其次,对于上下文建模,两者都考虑了较大的感受野。VAN 堆叠了两个带有扩张的大核卷积,而 FocalNet 引入了分层上下文聚合以及全局平均池化以实现全局交互。第三,这两种方法都通过元素乘法融合来自两个分支的特征,这在计算上是高效的。最后,在特征融合后采用线性投影。我们认为这两个模型令人满意的性能可以归功于上述关键组件。同时,也有不同的设计,例如上下文建模的具体实现和特征投影分支的设计(共享或单独投影)。 整合上述相似之处并忽略具体差异,我们抽象出如上图 b 所示的调制机制,并正式定义其公式为:

    • O u t p u t = p ( c t x ( x ) ⊙ v ( x ) ) . ( 4 ) Output = p (ctx(x) ⊙ v (x)) .(4) Output=p(ctx(x)v(x)).(4)
  • 抽象的调制机制继承了卷积和自注意力的理想特性,但以卷积方式运行,理论上具有令人满意的效率。具体而言,由于逐元素乘法,上等式 具有像自注意力一样的动态。上下文分支还引入了局部特征建模,但是通过大内核大小也可以实现大的感受野(这不是效率的瓶颈)。继 VAN 和 FocalNet 之后,在调制设计之后不断引入两层 MLP 块,如上图 c 所示。除了上述使调制机制适用于高效网络的优势之外,我们还在附录 K 节中尝试性地介绍了一种新颖的观点,即调制具有将输入特征投射到非常高维空间的独特潜力。

EFFICIENT MODULATION

  • 尽管抽象的调制机制比自注意力机制更高效,但在理论复杂度和推理延迟方面,它仍无法满足移动网络的效率要求。在这里,我们引入了高效调制机制,它是为高效网络量身定制的,但保留了调制机制的所有理想特性

  • 瘦身调制设计。一般调制块有许多碎片化的操作,如上图 b 所示。引入了四个 FC 层,但没有考虑上下文建模实现的细节。如 ShuffleNetv2中的指南 G3 所述,过多的碎片化操作将显著降低速度,即使通过调整通道数可以降低计算复杂度。为此,我们融合了 MLP 和调制块的 FC 层,如上图 c 所示。我们考虑使用 v (⋅) 将通道维度扩展为扩展因子 r,并利用 p (⋅) 来压缩通道数。也就是说,MLP 块以灵活的扩展因子融合到我们的调制设计中,从而产生一个类似于 MBConv 块的统一块(我们将在表 6 中讨论差异并展示我们的优势)。

  • 简化上下文建模。接下来,我们调整上下文建模分支以提高效率。给定输入 x,我们首先通过线性投影 f (x) 将 x 投影到新的特征空间。然后,使用具有 GELU 激活的深度卷积来建模局部空间信息。我们将内核大小设置为 7,以平衡效率和较大的感受野之间的权衡。最后,使用线性投影 g (x) 进行通道通信。请注意,通道号在整个上下文建模分支中保持不变。简而言之,我们的上下文建模分支可以通过以下方式给出:

    • c t x ( x ) = g ( a c t ( D W C o n v 7 , 1 ( f ( x ) ) ) ) . ( 5 ) ctx(x) = g (act (DWConv_{7,1} (f (x)))) .(5) ctx(x)=g(act(DWConv7,1(f(x)))).(5)
  • 这种设计比 VAN 和 FocalNet 中的上下文建模简单得多。我们用一个大核深度卷积取代了等功能深度卷积。我们承认,这可能会略微降低性能,以牺牲效率为代价。消融研究表明,我们上下文分支中的每个操作都不可或缺

NETWORK ARCHITECTURE

  • 通过上述修改,我们得到了图 c 所示的高效调制模块。接下来,我们实例化高效网络。有关更多详细信息,请参阅附录 B 节。首先,我们引入一个完全基于 EfficientMod 块的纯卷积网络。按照惯例,我们采用 4 个阶段的分层架构;每个阶段由一系列具有残差连接的 EfficientMod 块组成。为简单起见,我们使用重叠的补丁嵌入(通过卷积层实现)分别将特征缩小 4、2、2 和 2 倍。对于每个块,我们使用层归一化对输入特征进行归一化,并将归一化的特征输入到我们的 EfficientMod 块。我们采用随机深度和层尺度来提高模型的鲁棒性。
  • 请注意,我们的 E f f i c i e n t M o d 块与自注意力机制正交 \textcolor{red}{EfficientMod 块与自注意力机制正交} EfficientMod块与自注意力机制正交。继最近将卷积和注意力结合起来以获得更好的性能的进展之后,我们接下来将 EfficientMod 与注意力块结合起来以获得新的混合设计。我们考虑原始注意力块,如 ViT中所示,不做任何修改。注意力块仅在最后两个阶段引入,其中特征尺寸相对较小。我们改变宽度和深度以匹配纯卷积 EfficientMod 对应物中的参数,以便进行公平比较。我们引入了三个范围从 4M 到 13M 参数的尺度,从而产生了 EfficientMod-xxs、EfficientMod-xs 和 EfficientMod-s。

COMPUTATIONAL COMPLEXITY ANALYSIS

  • 我们还研究了我们设计的理论计算复杂性和实用指南。给定输入特征 x ∈ R C × H × W x ∈ \R^ {C × H × W} xRC×H×W,一个 EfficientMod 块的总参数数量为 2 ( r + 1 ) C 2 + k 2 C 2 (r + 1) C ^2 + k^ 2C 2(r+1)C2+k2C,计算复杂度为 O ( 2 ( r + 1 ) H W C 2 + H W k 2 C ) O (2(r + 1)HW C^2 + HW k^2C) O(2(r+1)HWC2+HWk2C),其中 k 是核大小,r 是 v (⋅) 中的扩展率。为简单起见,我们忽略了可学习层中的激活函数和偏差。与 Attention 相比,我们的复杂度与输入分辨率呈线性关系。与 MBConv 相比,我们将深度卷积的复杂度降低了 r 倍,这对于有效性至关重要,如表 6 所示。
  • 除了理论上的计算复杂度,我们还为我们的设计提供了一些实用的指导方针。I)我们通过将更多参数移到特征分辨率较小的后期阶段来减少 FLOP。背后的原因是我们的 EfficientMod 的 FLOP 基本等于输入分辨率 × 参数数量。遵循此准则,我们可以在后期阶段添加更多块或大幅增加宽度。 请注意,此准则并非我们的 EfficientMod 所独有,可应用于所有 FC 和卷积层。II)我们只在最后两个阶段引入注意力块,这是许多作品中的常见做法考虑到自注意力的计算复杂度。III)我们使用 repeat 操作来匹配通道数,以节省 CPU 时间,同时 GPU 上的开销很小。EfficientFormer 观察到 Reshape 通常是许多模型的瓶颈。这里我们来介绍一下细节。Reshape 在 CPU 上相当慢,但对 GPU 友好。同时,Repeat 操作在 CPU 上很快,但在 GPU 上很耗时。如下图所示,EfficientMod 中可以使用两种解决方案(Repeat 和 Reshape)进行交互,我们选择 Repeat 以获得最佳的 GPU-CPU 延迟权衡。
    • 在这里插入图片描述

    • 从重复到重塑,EfficientMod-s GPU 延迟降低 5.1%,CPU 延迟增加 21.8%。

RELATION TO OTHER MODELS

  • 最后,我们讨论了 EfficientMod 块与其他显著设计之间的联系和差异,以强调我们方法的独特性质。MobileNetV2 通过引入移动端倒置瓶颈(简称 MBConv)块开创了高效网络领域的新纪元。与按顺序排列 FC 层的 MBConv 块相比,我们的 EfficientMod 块将深度卷积层分离出来,并通过元素乘法将其从侧面插入到两层 FC 网络的中间。我们将在表 6 中展示我们的设计是一种更高效的操作(由于深度卷积的通道数减少)并实现更好的性能(由于调制操作)。
  • SENet 通过提出通道注意机制 将动态引入 ConvNets。 SE 块可以由 y = x ⋅ s i g ( W 2 ( a c t ( W 1 x ) ) ) y = x ⋅ sig (W_2 (act (W_1x))) y=xsig(W2(act(W1x))) 给出。许多最近的工作 将其纳入其中,以在理论上保持较低的复杂度的同时实现更高的准确性。然而,由于 SE 块中的零碎操作,它将显著减少 GPU 上的推理延迟。相反,我们的 EfficientMod 块固有地通过 y = c t x ( x ) ⋅ q ( x ) y = ctx (x) ⋅ q (x) y=ctx(x)q(x)涉及通道注意,其中 q (x) 自适应地调整 ctx (x) 的通道权重。

EXPERIMENTS

  • 在本节中,我们在四个任务上验证了我们的 EfficientMod:ImageNet1K 上的图像分类、MS COCO 上的对象检测和实例分割以及 ADE20K 上的语义分割。我们在 PyTorch 中实现所有网络,并在两种不同的硬件上转换为 ONNX 模型:

    • GPU:我们选择 P100 GPU 进行延迟评估,因为它可以模拟近年来大多数设备的计算能力。其他 GPU 可能会产生不同的基准测试结果,但我们观察到趋势是相似的。
    • CPU:某些型号在不同类型的硬件上运行可能会出现不可预测的延迟(主要是由于内存访问和碎片化操作造成的)。我们还提供了所有型号在 Intel® Xeon® CPU E5-2680 CPU 上测得的延迟,以便进行全面比较。
  • 对于延迟基准,我们将 GPU 和 CPU 的批处理大小都设置为 1,以模拟实际应用。为了抵消差异,我们为每个模型重复 4000 次运行并报告平均推理时间。我们按照惯例使用四个线程。有关更多设备(例如不同的 GPU、iPhone 等)的详细信息,请查看补充材料。

IMAGE CLASSIFICATION ON IMAGENET-1K

  • 我们在 ImageNet-1K 上评估了 EfficientMod 网络的分类性能。我们的训练方案遵循 DeiT中的标准做法,详细信息可在附录第 5 节中找到。未使用强大的训练技巧(例如重新参数化和提炼)来进行公平比较并保证所有性能均源自我们的 EfficientMod 设计。

  • 我们将 EfficientMod 与其他高效设计进行了比较,并在下表 中展示了结果。显然,我们的方法在不同硬件上的分类准确率和推理延迟方面都表现出了令人钦佩的性能。例如,我们的 EfficientMod-s 的性能与 EdgeViT 相同,但在 GPU 上的运行速度快 15 毫秒(约 73%),在 CPU 上的运行速度快 11 毫秒(约 32%)。此外,我们的模型需要更少的参数和更小的计算复杂度。 EfficientMod-s 的性能也比 EfficientFormerV2-S2 高出 0.6 倍,在 GPU 上的运行速度快 1.8 毫秒(约 25%)。我们的方法在不同规模上都表现出色。请注意,一些高效设计(如 MobileNetV2 和 FasterNet)优先考虑低延迟,而其他模型优先考虑性能(如 MobileViTv2 和 EdgeViT)。相比之下,我们的 EfficientMod 在 GPU 和 CPU 上都能持续快速运行,同时提供最先进的性能。

    • 在这里插入图片描述

    • ImageNet-1K 分类性能。我们将 EfficientMod 与 SOTA 方法进行比较,并报告推理延迟、模型参数和 FLOP。延迟是在一台 P100 GPU 和四线程的 Intel® Xeon® CPU E5-2680 CPU 上测量的。我们使用微小的灰色来表示使用强大的训练策略(如 MobileOne 中的重新参数化和 EfficientFormerV2 中的蒸馏)训练的结果。更多 GPU 上的基准测试结果可在附录 Sec. H 中找到。

  • 为了更好地理解我们方法的增强功能,我们以 EfficientMod-s 为例,概述了每次修改的具体改进。下表 列出了我们的 EfficientMod 结果(从纯卷积版本到混合模型)。

    • 在这里插入图片描述

    • 我们将基于卷积的模型与其他模型进行了比较,并展示了混合版本的改进。

  • 我们注意到,即使是纯卷积版本的 EfficientMod 也已经取得了令人印象深刻的 80.5% 的结果,大大超越了相关的基于卷积的网络。通过采用混合架构,我们进一步将性能提升至 81.0%。

  • 同时,一些方法采用了强大的训练策略进行训练,例如 MobileOne 中的重新参数化和 EfficientFormerV2 中的蒸馏。当使用蒸馏进行训练时(按照(EfficientFormerV2)中的设置),我们将 EfficientMod-s 从 81.0% 提高到 81.9%,如下表 所示。除非另有说明,否则以下所有结果均未经过蒸馏。

    • 在这里插入图片描述

    • 未经蒸馏和经蒸馏的结果。

ABLATION STUDIES

  • 与其他调制模型进行比较。我们将 EfficientMod-xxs 与具有相似数量参数的 FocalNet 和 VAN-B0 进行比较。为了进行公平比较,我们通过减少通道数或块来定制 FocalNet_Tiny_lrf。我们测试了三种变体,选择了最佳变体,并将其命名为 FocalNet@4M。由于 Conv2Former代码尚未完全发布,因此我们在比较中没有考虑它。从下表 中我们可以看出,EfficientMod 在准确性和延迟方面都优于其他调制方法。

    • 在这里插入图片描述

    • 将 EfficientMod 与其他调制模型进行比较。

  • 消融每个组件。我们首先检查设计中每个组件提供的贡献。在未引入注意力和知识蒸馏的情况下,对卷积 EfficientMod-s 进行了实验。下表 显示了消除上下文建模分支中每个组件的结果。显然,所有这些组件对我们的最终结果都至关重要。引入所有这些组件后,我们得到了 80.5% 的 top-1 准确率。同时,我们还进行了一项实验来验证元素乘法的有效性。我们用求和(相同的计算和相同的延迟)代替它来融合来自两个分支的特征,并在表的最后一行显示结果。正如预期的那样,性能下降了 1% 的 top-1 准确率。性能的大幅下降揭示了我们的调制操作的有效性,尤其是在高效网络中。

    • 在这里插入图片描述

    • 基于 EfficientMod-s-Conv 无注意点的消融研究。

  • 连接到 MBConv 块。为了验证 EfficientMod 块的优越性,我们分别将我们的设计和基本 MBConv 与各向同性和分层架构进行比较。有关详细设置,请参阅附录 B 节。在参数和 FLOP 数量几乎相同的情况下,下表 中的结果表明,我们的 EfficientMod 在 GPU 和 CPU 上的运行速度始终比 MBConv 同类产品快得多。最可能的解释是,我们的深度卷积比 MBConv 的卷积轻得多(通道数分别为 c 和 rc,其中 r 设置为 6)。除了更快的推理之外,我们的设计始终提供比 MBConv 块更出色的经验结果。有关可扩展性的更多研究,请参阅附录 G 节。

    • 在这里插入图片描述

    • MBConv 与 EfficientMod 具有各向同性(iso.)和分层(hier.)架构的比较。

  • 上下文可视化。继承自调制机制,我们的 EfficientMod 模块可以区分信息丰富的上下文。按照 FocalNet,我们在 EfficientMod-Conv-s 中可视化上下文层的前向输出(沿通道维度计算平均值),如下图 所示。 显然,我们的模型始终如一地捕获信息丰富的对象,并且背景受到限制,这表明调制设计在高效网络中的有效性

    • 在这里插入图片描述

    • 我们直接将前向上下文建模结果可视化,如上公式 5 所示。可视化结果表明,我们的上下文建模可以强调显眼的上下文。不需要像类激活图 那样使用后向梯度。

OBJECT DETECTION AND INSTANCE SEGMENTATION ON MS COCO

  • 为了验证 EfficientMod 在下游任务上的性能,我们在 MS COCO 数据集上进行了对象检测和实例分割实验。我们在常用检测器 Mask RCNN上验证了我们的 EfficientMod-s。我们遵循先前工作的实现,并使用 1× 调度程序(即 12 个 epoch)训练模型。我们将我们的卷积和混合 EfficientMod-s 与其他方法进行了比较,并在下表 中报告了结果。结果表明,EfficientMod 的表现始终优于具有类似参数的其他方法。在没有自注意力的情况下,我们的 EfficientMod 在检测任务上比 PoolFormer 高出 4.2 mAP,在实例分割任务上比 PoolFormer 高出 3.6 mAP。当引入注意力并与混合模型进行比较时,我们的方法在这两个任务上仍然优于其他方法。
    • 在这里插入图片描述

    • 下游任务中的表现。我们为所有骨干网络配备 Mask-RCNN,并使用 (1×) 调度程序训练模型,以便在 MS COCO 上进行检测和实例分割。我们考虑使用 Semantic FPN 在 ADE20K 上进行语义分割。我们的预训练权重来自表 3。

SEMANTIC SEGMENTATION ON ADE20K

  • 接下来,我们在 ADE20K 数据集上进行语义分割任务的实验。由于其设计简单高效,我们将 Semantic FPN 视为分割头。根据之前的研究,我们在 8 个 A100 GPU 上对我们的模型进行了 40k 次迭代训练,总批次大小为 32。 我们使用 AdamW 优化器训练我们的模型。余弦退火调度程序用于从初始化值 2e-4 衰减学习率。
  • 上表 中的结果表明,EfficientMod 的表现远超其他方法。 在没有注意力机制帮助的情况下,我们的卷积 EfficientMod-s 的表现已经比 PoolFormer 高出 6.3 mIoU。此外,纯卷积 EfficientMod 甚至比配备注意力机制的方法取得了更好的效果。在这方面,我们的卷积 EfficientMod-s 的表现比之前的 SOTA 高效方法 EfficientFormerV2(42.4 vs. 43.5)高出 1.1 mIoU。我们的 EfficientMod 模块的设计是这些令人满意的改进的唯一来源。当引入 Transformer 模块以获得混合设计时,我们进一步将性能提高到 46.0 mIoU,使用相同数量的参数和更少的 FLOP。混合 EfficientMod-s 的表现明显优于其他混合网络,分别比 PvTv2 和 EfficientFormerV2 高出 3.5 和 3.6 mIoU。得出两个结论:1)EfficientMod 设计取得了重大进展,证明了我们方法的价值和有效性;2)大型接受场对于分割等高分辨率输入任务特别有用,而 vanilla 注意力模块(实现全局范围)可以成为高效网络的现成模块。请参阅附录 F 节,以分析 MS COCO 和 ADE20K 之间的改进差距。

CONCLUSION

  • 我们提出了高效调制 (EfficientMod),这是一种统一的基于卷积的构建块,它结合了卷积和注意机制的有利特性。EfficientMod 同时提取空间上下文并投射输入特征,然后使用简单的元素乘法将它们融合在一起。EfficientMod 的优雅设计满足了效率要求,而固有的设计理念则保证了出色的表示能力。借助 EfficientMod,我们构建了一系列高效模型。大量实验检验了我们方法的效率和有效性。EfficientMod 在经验结果和实际延迟方面都优于以前的 SOTA 方法。当应用于密集预测任务时,EfficientMod 取得了令人印象深刻的结果。 全面的研究表明,我们的方法在高效应用方面大有可为
  • 局限性和更广泛的影响。高效设计的可扩展性是一个有趣但研究不足的话题,例如表6 中巨大的延迟差距。此外,采用大内核大小或引入注意力块可能不是扩大接受域的最有效方法。我们尚未观察到 EfficientMod 的任何负面社会影响。相反,我们鼓励研究如何减少计算量并使用有限的计算资源简化现实世界的应用程序。

CODES AND MODELS

  • 代码可以在补充材料中找到。我们提供预训练检查点和日志的匿名链接。ReadME.md 文件包含进行实验的详细说明。 提交后,我们将提供我们的代码和预训练检查点。

DETAILED CONFIGURATIONS

  • 详细框架配置 我们在下表 中提供了 EfficientMod 的详细配置。我们的 EfficientMod 是一种分层架构,使用传统卷积层逐步将输入分辨率缩小 4、2、2、2。对于同时包含 EfficientMod 和注意力模块的阶段,我们首先使用 EfficientMod 模块,然后使用注意力模块。通过改变通道和模块数量,我们引入了 EfficientMod-xxs、EfficientMod-xs、EfficientMod-s 和纯卷积版本的 EfficientMod-s。

    • 在这里插入图片描述

    • 我们的 EfficientMod 架构的详细配置。Dim 表示每个阶段的输入通道数。Blocks [b1, b2] 表示我们分别使用 b1 个 EfficientMod 块和 b2 个 vanilla 注意力块。对于我们的 EfficientMod 块,我们交替将维度扩大 1 倍和 6 倍(对于 EfficientMod-xs,则为 1 倍和 4 倍)。对于 vanilla 注意力块,我们默认考虑 8 个头。

  • 详细的消融配置对于上表6 中的各向同性设计,我们使用 14×14 的补丁大小对输入图像进行修补,从而获得 16×16 的分辨率。我们调整深度和宽度以刻意匹配 EfficientMod-xs 和 EfficientMod-s 的参数数量。 我们还改变扩展率以匹配 MBConv 和 EfficientMod 对应物的参数数量和 FLOP。我们分别选择 256 和 196 作为通道数,13 和 11 作为深度。与 EfficientMod-s 和 EfficientMod-xs 类似,生成的模型将分别具有 12.5M 和 6.4M 个参数。通过这样做,我们保证任何性能差异纯粹来自 MBConv 和 EfficientMod 块的设计。对于分层网络,我们用 MBConv 块替换 EfficientMod 块,并将扩展率改变为匹配参数数量。训练细节详细的训练超参数如下表 所示

    • 在这里插入图片描述

    • Training hyper-parameters.

VISUALIZATION OF MODULATION

  • 我们对调制设计进行了完整的可视化,如下图 所示。我们展示了项目输入 v、上下文建模输出 ctx 和相应的调制结果 ctx ∗ v。最后展示的是模块的输出。可视化实现与第 4.2 节中的设置相同。当输入特征扩大 r 倍(例如,下图 中的 6)时,我们沿通道维度将特征划分为 r 个块,然后可视化每个块及其伴随的调制结果。有趣的是,随着通道数的增加,不同的 thunk 通常显示相似的结果 v。经过相同上下文的调制后,差异会大大加剧,这表明调制机制是成功的。
    • 在这里插入图片描述

    • 更详细地可视化每个扩展的 v 和相关的调制结果 ctx ∗ v。 我们提供最终输出和上下文建模结果 (ctx) 以供参考。

LATENCY COMPARISON

  • 我们还展示了各种方法的准确率与 GPU 和 CPU 延迟的关系,如下图 所示。为了获得更好的可视化效果,我们消除了运行速度明显较慢的特定模型(例如 GPU 上的 EdgeViT)或准确率低得多的特定模型(例如 MobileNetV2)。我们的方法始终以明显的优势超越相关工作,尤其是在 GPU 上。我们的 EfficientMod 在 ImageNet 上以相同的 GPU 延迟比 MobileViTv2 高出 2.8 个 top-1 准确率。我们比之前最先进的方法 EffcientFormerv2 快 25%,但获得的结果相似或略好(0.3%)。在 CPU 上,我们还实现了令人满意的延迟-准确率权衡,证明我们的 EfficientMod 可以用作不同设备上的通用方法。
    • 在这里插入图片描述

    • 比较 EfficientMod 与其他方法在 GPU 和 CPU 设备上的延迟-准确度权衡。EfficientMod 的表现始终远优于其他方法。

DISTILLATION IMPROVEMENTS

  • 我们为每个模型提供了详细的蒸馏实验。我们的教师模型是广泛使用的 RegNetY-160,与 EfficientFormerV2 中的教师模型相同,以便进行公平比较。 虽然其他模型可能会提供更好的改进,但更好的教师模型并不是本研究的主要目标。下表显示,知识蒸馏是一种有效的方法,可以将我们方法的 top-1 准确率提高约 1%,而不会在推理过程中引入任何计算开销。
    • 在这里插入图片描述

    • Detailed improvements from Distillation.

ANALYSIS ON IMPROVEMENT GAP BETWEEN OBJECT DETECTION AND SEMANTIC SEGMENTATION

  • 为什么 ModelMod 在 ADE20K 上提升显著,但在 MS COCO 上提升不大?除了数据集和评估指标的差异外,我们将这种差异归因于检测或分割头中的参数数量。请注意,EfficientMod 仅引入了 12M 个参数。当配备 Mask RCNN 时,额外参数超过 20M(总计超过 60%),主导了最终的检测网络。因此,骨干的影响在很大程度上受到抑制。相反,Semantic FPN 仅在 ADE20K 上为语义分割引入了 4-5M 个参数(总计约 25%)。因此,EfficientMod 的功能得到了充分利用

SCALABILITY OF EFFICIENTMOD

  • 延迟与输入分辨率的关系。我们首先验证输入分辨率的可扩展性。我们将输入分辨率从 224 变为 512,步长为 32。我们将 EfficientMod 的卷积和混合变体与一些强大的基线进行了比较,包括 MobileFormer、MobileViTv2和 EfficientFormerV2。为了进行公平的比较,我们考虑所有模型的模型大小在 10-15M 参数范围内。从下图 中,我们可以观察到,与 MobileFormer 和 MobileViTv2 相比,我们的方法和 EfficientFormerV2 显示出对输入分辨率的良好可扩展性。 与 EfficientFormerV2 相比,我们的方法(卷积和混合)在分辨率较小时也表现出更低的延迟。

    • 在这里插入图片描述

    • 输入大小对 GPU 延迟的影响。

  • 与 MBConv 进行比较。我们还研究了 EfficientMod 的宽度和内核大小的可扩展性。我们使用 B 节中描述的相同设置比较了 EfficientMod 和 MobileNetV2 中常用的 MBConv。为了匹配计算复杂度和参数数量,EfficientMod 和 MBConv 的扩展率分别设置为 6 和 7。如下图 所示,无论宽度或内核大小如何,我们的 EfficientMod 始终比 MBConv 块运行得更快。当增加宽度或内核大小时,我们的 EfficientMod 的延迟趋势比 MBConv 的要平滑得多,这表明 EfficientMod 具有推广到更大模型的巨大潜力

    • 在这里插入图片描述

    • 通过改变宽度和内核大小,比较了我们的 EfficientMod 和 MBConv 块之间的可扩展性。我们使用虚线来显示延迟趋势。模型架构继承自表 6 各向同性设计。

BENCHMARK RESULTS ON MORE GPUS

  • 除了表 1 中显示的 P100 GPU 上的结果外,我们还对其他几个 GPU 实例进行了延迟基准测试,包括 T4、V100-SXM2 和 A100-SXM4-40GB。我们观察到,即使 GPU 类型相同,也可能存在一些差异。因此,我们从服务器中随机分配 GPU 并进行了三次单独的基准测试。下表 报告了平均值和标准偏差值。

    • 在这里插入图片描述

    • 跨多个 GPU 实例的延迟基准测试结果。我们在不同的节点上对每个 GPU 进行了三次测试,并对每个测试的 500 次运行结果取平均值。我们在表中报告了平均±标准延迟。设置与表 1 中的相同。

  • 如表所示,我们的 EfficientMod 在不同的 GPU 设备上始终表现快速。一个有趣的发现是,A100 的结果比 V100 具有更高的延迟。首先,我们表明,如表中所示,这几乎是所有模型的常见现象。其次,我们观察到 A100 的 GPU 利用率始终较低,始终低于 40%,这表明 A100 的强大性能尚未得到充分利用。第三,我们评估了批处理大小 1 以模拟真实场景。当扩大批处理大小时,GPU 利用率会增加,从而降低 A100 的延迟,如上所示(我们以 EfficientMod-s 为例)。最后,我们强调,延迟可能受到难以调试的复杂因素的影响,包括 GPU 架构、GPU 核心数量、CUDA 版本、操作系统等

LATENCY BENCHMARK ON DOWNSTREAM TASKS

  • 除了 G 节中对 EfficientMod 可扩展性的研究外,我们还探讨了现实世界下游任务的延迟。我们直接在一个 A100 GPU 上对表 7 中的方法进行基准测试(未转换为 ONNX 格式),并在下表 中报告延迟。

    • 在这里插入图片描述

    • 对象检测、实例分割和语义分割的延迟基准。

  • 显然,我们的 EfficientMod 在这些任务上也表现出了令人鼓舞的效率。一个有趣的观察是 PoolFormer-S12 表现出最高的延迟。考虑到网络内的核心操作是池化操作,这一点尤其有趣。我们认为有两个因素可能导致这种现象:1) PoolFormer 网络架构可能未针对效率进行优化。2) 池化操作在 CUDA 中的优化程度可能不如卷积(我们在主干设计中也注意到了这种现象)。此外,我们观察到,随着输入分辨率的增加,混合 EfficientMod-s 和 Conv EfficientMod-s 之间的延迟差距会扩大。这归因于我们混合版本中的注意力机制引入的计算复杂性。一种潜在的补救措施是通过缩小注意力块的分辨率来减少计算,类似于 EfficientFormerV2 中采用的方法。但是,与 EfficientFormerV2-s2 和其他替代方法相比,我们的混合 EfficientMod-s 保持了具有竞争力且令人鼓舞的延迟结果。

OPTIMIZATION FOR MOBILE DEVICE

  • 如之前的结果所示,我们的 EfficientMod 主要关注 GPU 和 CPU 设备。接下来,我们探索针对移动设备的优化。我们使用 coremltools【https://github.com/apple/coremltools】 将我们的 PyTorch 模型转换为 Core ML 模型。然后,我们使用 MobileOne 的 iOS 应用程序 【ml-mobileone/ModelBench at main · apple/ml-mobileone · GitHub】并在 iPhone 13(iOS 版本 16.6.1)上对延迟进行基准测试。

  • 我们采用纯卷积的 EfficientMod-xxs(不带注意模块,可实现 75.3% 的 top-1 准确率),并将其与下表 中的其他网络进行比较。根据我们对置换操作在 CoreML 模型中异常耗时的观察,我们将置换 + 线性层替换为卷积层,这在数学上是相等的。我们的模型能够在 iPhone 13 上以 1.2 毫秒的延迟实现 75.3% 的 top-1 准确率。受到 EfficientFormer中对归一化层的分析的启发,我们进一步删除所有层归一化并在每个卷积层后添加一个批归一化层(可在推理过程中自动融合)并重新训练模型。通过这样做,我们将延迟降低到 0.9 毫秒并实现了 74.7% 的 top-1 准确率,这已经取得了令人鼓舞的结果。我们进一步稍微调整了块和通道数,在 1.0ms 时获得了 75.2% 的准确率。强劲的性能表明,我们提出的构建块在移动设备上的表现也令人满意。

    • 在这里插入图片描述

    • 我们对 iPhone 13 上的延迟进行了基准测试,以探索移动设备上的优化。注意:为了公平比较,忽略了具有强大训练技巧(例如重新参数化和蒸馏)的结果。“⧫”表示我们删除了 LN 并在每个卷积层后添加了一个 BN。“▲”表示我们稍微调整了通道和块数以获得更好的准确性。

TENTATIVE EXPLANATION TOWARDS THE SUPERIORITY OF MODULATION MECHANISM FOR EFFICIENT NETWORKS

  • Focal modulation networks、Visual attention network 等论文以及上文消融表已经证明调制机制可以在几乎不增加额外开销的情况下提高性能。然而,隐藏在背后的原因尚未得到充分探究。本文,我们尝试解释调制机制的优越性,并表明调制机制特别适合于高效网络。

  • 回想一下等式 4 中调制机制的抽象公式 y = p ( c t x ( x ) ⊙ v ( x ) ) y = p (ctx(x) ⊙ v (x)) y=p(ctx(x)v(x)),它可以简单地重写为 y = f ( x 2 ) y = f(x ^2) y=f(x2),其中 f ( x 2 ) = c t x ( x ) ⊙ v ( x ) f(x ^2 ) = ctx(x) ⊙ v (x) f(x2)=ctx(x)v(x),我们忽略 p (⋅),因为它是一个可学习的线性投影。因此,我们可以通过以下方式递归地给出第 l 层调制块的输出和残差:

    • 在这里插入图片描述
  • 其中 l 表示层数,al 是每个项目的权重,gl 表示第 l 个项目的组合函数,我们不强调 gl 的细节。仅使用几个块,我们就可以轻松地将输入投影到非常高维的特征空间,甚至是无限维空间。例如,仅使用 10 个调制块,我们将获得 2 10 2^{10} 210 维特征空间。 因此,我们可以得出结论:i)调制机制能够降低对通道数的要求,因为它可以以独特的方式自然地将输入特征投影到非常高的维度;ii)调制机制不需要非常深的网络,因为几个块就可以实现高维空间。然而,在大型模型的情况下,这些模型的宽度和深度很大程度上抵消了调制的好处。因此,我们强调抽象的调制机制特别适合高效网络的设计。

  • 请注意,上面提出的初步解释并不等同于高度形式化的证明。 我们未来的努力将集中在全面深入的调查上。

DETAILED ANALYSIS OF EACH DESIGN

  • 瘦身调制设计的效率: 我们在 EfficientMod 模块中集成了一个额外的 MLP 层,以验证瘦身调制设计的效率。此修改旨在评估瘦身对性能和计算效率的影响。 值得注意的是,这显著降低了 GPU 和 CPU 的延迟,而对准确性的影响微乎其微。这凸显了我们的瘦身方法在不影响准确性的情况下提高模型效率的有效性。

    • 在这里插入图片描述
  • 简化上下文建模的效率为了进一步验证我们的方法在简化上下文建模方面的效率,我们将单一内核大小(7x7)实现与具有不同内核大小的多个卷积层(如FocalNet的实现)进行了比较。实验是基于EfficientMod-s-Conv变体进行的。我们的发现强化了使用单一优化内核大小的优越性。该策略不仅简化了模型,而且还实现了更好的准确率-延迟权衡,证明了我们设计选择的实用性和有效性

    • 在这里插入图片描述
  • 在 EfficientMod 中集成注意力机制 在 EfficientMod 的最后两个阶段引入 vanilla 注意力机制旨在改善全局表示。我们调整了块和通道数量,以确保 EfficientMod-s-Conv 和 EfficientMods 之间的参数数量保持可比性。结果表明,EfficientMod-s 不仅性能有所提高,而且延迟也降低了,从而验证了我们集成注意力机制以提高效率的方法。

    • 在这里插入图片描述
  • 如上所示,额外的实验和分析证实了我们模型中每个设计元素的独特贡献和功效,表明我们的 EfficientMod 可以实现有希望的延迟-准确性权衡。

  • 28
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
^2 * (u(j, i) - 2*u(j+1, i) + u(j+2, i)); end end u(2:M, i) = A \ b; end end % 使用LOD格求解当然可以,以下是我对这个题目的实验小结: 实验目的: 本次实验的目 for n = 1 : round(T / ht) unew = zeros(M, N); for i = 2 : N的是通过仿真实验的方式,深入理解 AM(Amplitude Modulation)和 DSB(Double Sideband)调制的原理以及实现方法,掌握信号调制的基本技术。 实验过程: 1 - 1 % x方向的扩散 for j = 2 : M - 1 unew(j. 实验前准备 在进行实验前,我们需要对AM和DSB调制进行一些预备知识, i) = u(j, i) + ht / hx^2 * (unew(j, i-1) - 2*u(j, i) + u(j, i+1) + u(j-1, i) + u(j+1, i) -的学习,包括信号调制的基本概念、调制信号的产生方式、调制波形 2*ht/ht*u(j, i)); end % y方向的扩散 for j = 2的特点等。此外,我们还需要了解Matlab中信号处理的相关函数和工具箱。 2. : M - 1 unew(j, i) = u(j, i) + ht / hy^2 * (unew 实验内容 本次实验我们主要通过Matlab软件实现AM和DSB调制的仿真,具(j-1, i) - 2*u(j, i) + unew(j+1, i) + u(j, i-体步骤如下: (1)产生调制信号 我们首先需要产生一个基带信号,可以1) + u(j, i+1) - 2*ht/ht*u(j, i)); end end 通过Matlab中的sinc函数或者波形发生器实现。接着,我们可以通过调制函数对基 u = unew; end end ``` 这段代码中,`N`和`M`分别表示在x和带信号进行调制,得到调制信号。 (2)实现AM调制 AM调制是将调y方向上的网格数(不包括边界),`T`表示最终时间,`L`、`R制信号的幅度与载波信号的幅度进行乘积,得到调制后的信号。在Mat`、`B`和`U`分别表示区域的左、右、下、上边界。函数会返回求lab中,我们可以使用ammod函数实现AM调制。 (3)实现DSB调制 DSB调制解结果`u`以及x、y轴上的网格点坐标`x`和`y`。 在代码中是将调制信号与载波信号进行乘积,得到双边带调制信号。在Matlab中,我们使用了四种方法进行求解,分别是六点对称格式、Du Fort-Frankel格、ADI格,我们可以使用dsbmod函数实现DSB调制。 (4)绘制调制波形图 通过Matlab和LOD格。这些方法的实现方式在代码中有详细的注释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值