大卷积核:More ConvNets in the 2020s:Scaling up Kernels Beyond 51 × 51 using Sparsity

20世纪20年代的更多ConvNet:使用稀疏性将内核扩展到51×51以上

论文链接:https://arxiv.org/pdf/2207.03620.pdf

代码:https://github.com/VITA-Group/SLaK

Abstract:自从Vision Transformers (ViT) 出现以来,Transformers迅速在计算机视觉领域大放异彩。卷积神经网络 (CNN) 的主导作用似乎受到越来越有效的基于Transformer的模型的挑战。最近,一些先进的卷积模型使用受局部大注意力机制驱动设计了大Kernel的卷积模块进行反击,并显示出吸引人的性能和效率。其中之一,即 RepLKNet,以改进的性能成功地将Kernel-size扩展到 31×31,但与 Swin Transformer 等高级 ViT 的扩展趋势相比,随着Kernel-size的持续增长,性能开始饱和。在本文中,作者探索了训练大于 31×31 的极端卷积的可能性,并测试是否可以通过策略性地扩大卷积来消除性能差距。这项研究最终得到了一个从稀疏性的角度应用超大kernel的方法,它可以平滑地将kernel扩展到 61×61,并具有更好的性能。基于这个方法,作者提出了Sparse Large Kernel Network(SLaK),这是一种配备 51×51 kernel-size的纯 CNN 架构,其性能可以与最先进的分层 Transformer 和现代 ConvNet 架构(如 ConvNeXt 和 RepLKNet,关于 ImageNet 分类以及典型的下游任务。

1 Introduction

自[25,44,45]发明以来,卷积神经网络[42,70,33,35,34,94,75]在过去几十年中一直是机器学习最不可或缺的架构之一。然而,在过去几年中,CNN的主导地位受到Transformer[84]的严重挑战。视觉变换器(VIT)[19、20、80、87、55、83]源于自然语言处理,在各种计算机视觉任务中显示出强大的结果,包括图像分类[19、98]、目标检测[11、55]和分割[93、86、89、7]。与此同时,关于ViTs理解的著作也如火如荼。VIT成功背后可能的原因是更少的归纳偏差[19]、长程依赖[84]、先进的架构[96]和更人性化的表示[82]等。

最近,有一种上升趋势,将ViTs的最高性能归因于捕捉大感受野的能力。与在具有共享权重的小滑动窗口(例如3×3和5×5)中执行卷积的CNN不同,VIT中具有较大窗口大小的全局注意力或局部注意力[55]直接使每一层能够捕捉到较大的感受野。受这一趋势的启发,最近一些关于CNN[56,17]的作品通过设计先进的纯CNN架构并在其中插入大内核进行了反击。例如,RepLKNet[17]成功地将内核大小扩展到31×31,同时获得了与Swin Transformer[55]相当的结果。然而,大核是出了名的难以训练。即使在具有小内核的并行分支的帮助下,与高级VIT(如Swin Transformer)的扩展趋势相比,随着内核大小的不断增加,RepLKNet的性能开始饱和。通过将内核大小进一步扩展到31×31以上,我们是否可以超越基于Transformer的模型,这仍然是个谜。

在本文中,我们试图通过探索人类视觉系统中常见的稀疏性来回答这个研究问题。稀疏性已被视为初级视觉皮层(V1)[78]中最重要的原则之一,其中传入刺激被假设为稀疏编码和选择[13,64,85]。我们广泛研究了大核的可训练性,并揭示了三个主要观察结果:(i)现有方法要么单纯应用大核[56],要么辅助结构重新参数化[17],无法将核大小扩展到31×31以上;(ii)用两个矩形并行内核(M×N和N×M,其中N<M)替换一个大的M×M内核,可以平滑地将内核大小扩展到61×61,并提高性能;(iii)在扩展宽度的同时使用稀疏组进行构建显著提高了性能。

基于这些观察结果,我们提出了SLaK——稀疏大内核网络——一种新的纯CNN架构,其内核大小为51×51。通过各种任务的评估,包括ImageNet分类[12]、ADE20K上的语义分割[103]和PASCAL VOC 2007上的对象检测[23],SLaK比CNN先驱(如ResNe(X)t[33,94]和ConvNeXt[56]以及基于注意力的模型(如ImageNet上的Swin Transformer[55])具有更高的准确性。我们对有效感受野(ERF)的分析表明,当插入最近提出的ConvNeXt时,我们的方法能够覆盖比现有更大的内核范式更大的ERF区域,同时引入类人的外围感应偏差[47,59]。

2 Related Work

2.1 Large Kernel in Attention

自注意力最初是为自然语言处理[84]引入的,并由[19]在计算机视觉中扩展,它可以被视为一个全局深度智能内核,使每一层都有一个全局感受野。Swin Transformer[55]是一种ViTs变体,采用局部注意力和移位窗口方式。与全局注意力相比,局部注意力[67,83,8,54,18]可以极大地提高内存和计算效率,具有诱人的性能。由于注意力窗口的大小至少为7,因此可以将其视为大型内核的替代类。最近的一项工作[28]提出了一种新型的大型内核注意力模块,该模块使用深度堆叠、小卷积、扩展卷积以及逐点卷积来捕获局部和全局结构。

2.2 Large Kernel in Convolution

卷积中的大内核可以追溯到20世纪10年代[43,73,72],如果不是更早的话,也可以追溯到20世纪10年代,在那里应用大内核大小,例如7×7和11×11。全局卷积网络(GCNs)[65]通过使用1×M+M×1和M×1+1×M卷积的组合,将内核大小扩大到15。然而,该方法会导致ImageNet上的性能下降。Inceptions家族[74,72]允许利用不同卷积核大小来学习不同尺度下的空间模式。随着VGG[69]的普及,在过去十年中,使用一堆小内核(1×1或3×3)来获得大的感受野是常见的[33、34、94、36]。直到最近,一些工作开始恢复大内核在CNN中的使用。Han et al.[30]发现了如果我们在SWI Transformer中用前者代替后者,则深度卷积(7×7)的性能与局部注意机制相当,Liu等人[56]模仿了Swin Transformer[55]的设计元素,并使用7×7内核进行设计,超越了前者的性能。RepLKNet[17]首次通过构造一个与之并行的小内核(例如,3×3或5×5),将内核大小扩展到31×31,并实现了与Swin Transformer相当的性能。最近,[6]揭示了大内核对于3D网络也是可行和有益的。

先前的工作探索了并行[65]或堆叠[72]两个互补的M×1和1×M核的想法。然而,它们将短边限制为1,并且内核大小不超过51×51。与现有技术不同,我们将大核分解为两个互补的非平方核(M×N和N×M),提高了大核卷积的可扩展性。

2.3 Dynamic Sparsity

 图2:动态稀疏性。动态稀疏性允许我们从头开始构建和训练初始稀疏神经网络(稀疏核)。在训练过程中,它通过剪枝最不重要的权重并添加新的权重来动态调整稀疏权重。这种动态过程逐渐将稀疏核优化为良好的模式,因此鼓励更精细地捕捉局部特征。

动态稀疏性[60,52,22,61,40,5]是最近出现的一个研究课题,它试图仅使用一小部分参数和触发器从头开始训练本质上稀疏的神经网络(如图2所示)。动态稀疏性的一个理想特性是模型从一开始就是稀疏的,因此训练和推理失败以及内存需求只是密集模型的一小部分。与训练后剪枝不同[62,31,24],使用动态稀疏性构建的模型可以从头开始训练,以匹配其密集对应项,而不涉及任何预训练或密集训练。动态稀疏性源于稀疏进化训练(SET)[60,52],该训练使用Erd˝ os-Rényi拓扑结构[21]随机初始化层之间的稀疏连接,并在训练过程中通过参数修剪和增长方案动态调整稀疏连接。参数剪枝和增长方案允许模型的稀疏结构逐渐进化,比单纯训练静态稀疏网络获得更好的性能[53]。虽然文献中存在许多剪枝标准,但简单的幅度剪枝通常在动态稀疏性领域表现良好。另一方面,用于恢复权重的标准因方法而异,包括随机性[60,61]、动量[14]和梯度[22,50]。在本文中,我们的目标不是找到可以匹配相应密集网络的稀疏网络。受ResNeXt[94,56]–“使用更多组,扩展宽度”原则的激励,我们试图利用动态稀疏性来扩展具有极端核的神经架构。

3 Recipe for Applying Extremely Large Kernels beyond 31×31

我们首先研究了极端核大小大于31×31时的性能,并在这里分享了我们的三个主要观察结果。我们以最近在ImageNet-1K上开发的CNN架构ConvNeXt[56]为基准来进行这项研究。我们遵循最近的工作[56、3、55、17、80],使用混和[100]、剪切混合[99]、随机增强[10]和随机擦除[101]作为数据增强。随机深度[37]和标签平滑[74]用作正则化,其超参数与ConvNeXt[56]中使用的相同。我们使用AdamW训练模型[57]。在本节中,所有模型都针对120个epochs的缩短周期进行训练,以观察大内核大小的缩放趋势。在第5节的后面,我们将采用完整的训练配方,训练300个epochs的模型,以便与最先进的模型进行公平比较。有关更多详细信息,请参阅附录B

Observation #1: existing techniques fail to scale convolutions beyond 31×31

最近,RepLKNet[17]通过结构重新参数化[16,15]成功地将卷积扩展到31×31。我们进一步将内核大小增加到51×51和61×61,看看更大的内核是否可以带来更多增益。按照[17]中的设计,我们依次将每个阶段的内核大小设置为[51、49、47、13]和[61、59、57、13]。测试精度见表1。正如预期的那样,将内核大小从7×7增加到31×31会显著降低性能,而RepLKNet可以克服这个问题,将准确性提高0.5%。然而,这种趋势并不适用于较大的内核,因为将内核大小增加到51×51开始损害性能。

 一个合理的解释是,虽然可以通过使用超大的核(例如51×51和61×61)来扩大感受野,但它可能无法保持某些理想的特性,例如局部性。由于标准ResNet[33]和ConvNeXt中的干细胞导致输入图像的4×降采样,51×51的极端核已经大致等于典型224×224 ImageNet的全局卷积。因此,这种观察是有意义的,因为在类似的ViTs机制中,局部注意力[19,8,18,54]通常优于全局注意力[19]。基于此,我们看到了通过引入局部性来解决这个问题的机会,同时保留了捕捉全局关系的能力。

Observation #2: decomposing a square large kernel into two rectangular, parallel kernels
smoothly scales the kernel size up to 61

虽然使用中等大小的卷积(例如31×31)似乎可以直接避免这个问题,但我们想研究一下,是否可以通过使用(全局)极端卷积来进一步提高CNN的性能。我们这里的方法是用两个并行卷积和矩形卷积的组合来近似大M×M核,其核大小分别为M×N和N×M(其中N<M),如图1所示。在[17]之后,我们将一个5×5层与大核保持平行,并在批处理范数层之后总结其输出。

这种分解不仅继承了大内核捕获长距离依赖关系的能力,而且可以用较短的边缘提取局部上下文特征。此外,现有的大型内核训练技术[56,17]还存在二次计算和内存开销随着核宽度的增加。与之形成鲜明对比的是,这种方法的开销随着Kernel-size线性增加(图 4)。N = 5 的kernel分解的性能在表 2 中报告为“分解”组。由于分解减少了 FLOP,与具有中等kernel的结构重新参数化 (RepLKNet) 相比,预计网络会牺牲一些准确性,即 31×31。然而,随着卷积大小增加到全局卷积,它可以惊人地将Kernel-size扩展到 61 并提高性能。

Observation #3: “use sparse groups, expand more” significantly boosts the model capacity

最近提出的 ConvNeXt 重新访问了ResNeXt中引入的原理,该原理将卷积滤波器分成小但更多的组。ConvNeXt没有使用标准的组卷积,而是简单地使用增加宽度的深度卷积来实现“use more groups, expand width”的目标。在本文中,作者试图从另一个替代的角度来扩展这一原则——“use sparse groups, expand more”。

具体来说,首先用稀疏卷积代替密集卷积,其中稀疏核是基于SNIP的分层稀疏比随机构造的。构建完成后,用动态稀疏度训练稀疏模型,其中稀疏权值在训练过程中通过修剪最小幅值的权值,随机增加相同数量的权值进行动态调整。这样做可以动态地适应稀疏权值,从而获得更好的局部特征。

由于kernel在整个训练过程中都是稀疏的,相应的参数计数和训练/推理流只与密集模型成正比。为了评估,以40%的稀疏度稀疏化分解后的kernel,并将其性能报告为“稀疏分解”组。可以在表2的中间一列中观察到,动态稀疏性显著降低了FLOPs超过2.0G,导致了暂时的性能下降。

接下来,作者证明了上述动态稀疏性的高效率可以有效地转移到模型的可扩展性中。动态稀疏性允许能够友好地扩大模型的规模。例如,使用相同的稀疏性(40%),可以将模型宽度扩展1.3×,同时保持参数计数和FLOPs与密集模型大致相同。这带来了显著的性能提高,在极端的51×51 kernel下,性能从81.3%提高到81.6%。令人印象深刻的是,本文方法配备了61×61内核,性能超过了之前的RepLKNet,同时节省了55%的FLOPs。

4 Sparse Large Kernel Network - SLaK

目前为止,已经发现了本文的方法可以成功地将Kernel-size扩展到61,而不需要反向触发性能。它包括2个受稀疏性启发的设计。在宏观层面上,构建了一个本质稀疏网络,并进一步扩展网络,以提高在保持相似模型规模的同时的网络容量。在微观层面上,将一个密集的大kernel分解为2个具有动态稀疏性的互补kernel,以提高大kernel的可扩展性。与传统的训练后剪枝不同,直接从头开始训练的网络,而不涉及任何预训练或微调。在此基础上提出了Sparse Large Kernel Network(SLaK),这是一种纯CNN架构,使用了极端的51×51 kernelSLaK 是基于 ConvNeXt 的架构构建的。阶段计算比和干细胞的设计继承自ConvNeXt。每个阶段的块数对于 SLaK-T 为 [3, 3, 9, 3],对于 SLaK-S/B 为 [3, 3, 27, 3]。stem cell只是一个具有 kernel-size为4×4和stride=4的卷积层。作者将 ConvNeXt 阶段的Kernel-size分别增加到 [51, 49, 47, 13],并将每个 M×M kernel替换为 M×5 和 5×M kernel的组合,如图 1 所示。作者发现添加在对输出求和之前,直接在每个分解的kernel之后的 BatchNorm 层是至关重要的。遵循 “use sparse groups, expand more”的指导方针,进一步稀疏整个网络,将阶段宽度扩大 1.3 倍,最终得到 SLaK-T/S/B。尽管知道通过调整模型宽度和稀疏度之间的权衡来提高 SLaK 的性能有很大的空间,但为了简单起见,将所有模型的宽度保持为 1.3 倍。所有模型的稀疏度设置为 40%。虽然模型配置了极端的 51×51 kernel,但整体参数计数和 FLOP 并没有增加太多,并且由于RepLKNet提供的出色实现,它在实践中非常有效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值