P14-CVPR2022-1.0-RepLKNet31

论文地址:https://arxiv.org/abs/2203.06717

代码地址:GitHub - MegEngine/RepLKNet: Official MegEngine implementation of RepLKNet


目录

Abstract

一.Introduction

二.Related Work

2.1Model with Large Kernels

2.2Model Scaling Techniques

2.3Structural Re-Parameterization

三.Guidelines of Applying Large Convolutions

3.1Guideline 1: large depth-wise convolutions can be effi-cient in practice.

3.2Guideline 2: identity shortcut is vital especially for net-works with very large kernels.

3.3Guideline 3: re-parameterizing [31] with small ker-nels helps to make up the optimization issue.

3.4Guideline 4: large convolutions boost downstream tasks much more than ImageNet classification.

3.5Guideline 5: large kernel (e.g., 13×13) is useful even on small feature maps (e.g., 7×7).

四.RepLKNet

4.1Architecture Specification

4.2Making Large Kernels Even Karger

4.3ImageNet Classification

4.4Semantic Segmentation

4.5Object Detection

五.Discussions

5.1Large-Kernel CNNs have Larger ERF than Deep Small-Kernel Models

5.2Large-Kernel Models are More Similar to Human in Shape Bias

5.3Large Kernel Design is a Generic Design Element that Works with ConvNeXt

5.4Large Kernels Outperform Small Kernels with High Dilation Rates

六.Limitations

七.Conclusion

八.Innovation Point


Abstract

  • 翻译

        我们重新审视现代卷积神经网络(CNN)中的大内核设计。受视觉变换器(ViTs)最新进展的启发,在本文中,我们证明了使用几个大卷积核而不是一堆小核可能是一个更强大的范例。我们提出了五个准则,例如:应用重新参数化的大深度卷积,设计高效的高性能大核CNN。根据指导方针,我们提出了RepLKNet,这是一种纯CNN架构,其内核大小高达31×31,而不是常用的3×3。RepLKNet极大地缩小了CNN和ViT之间的性能差距,例如,在ImageNet和一些典型的下游任务上实现与Swin Transformer相当或上级的结果,具有更低的延迟。RepLKNet还显示出对大数据和大型模型的良好可扩展性,在ImageNet上获得了87.8%的top-1准确率,在ADE 20 K上获得了56.0%的mIoU,这在具有类似模型大小的最先进技术中非常具有竞争力。我们的研究进一步表明,与小内核CNN相比,大内核CNN具有更大的有效感受场和更高的形状偏差而不是纹理偏差。

  • 精读

        1.受Vits影响,涉及了五个准则来提高卷积核大小

        2.提出RepLKNet一种纯CNN架构,再下游任务上与Swin Transformer性能相媲美

        3.对大数据和大型模型具有良好的扩展性

        4.再ImgeNet具有87.8%准确率

        5.与小内核CNN相比,大内核CNN具有更大的有效感受场和更高的形状偏差而不是纹理偏差。

一.Introduction

 

 

 

 

  •  翻译

        卷积神经网络(CNNs)曾经是现代计算机视觉系统中常见的视觉编码器选择。然而,近年来,卷积神经网络(CNNs) 受到了Vision Transformers(ViTs)的巨大挑战,ViTs在许多视觉任务上展现出领先的表现,不仅包括图像分类[35, 109]和表示学习,还包括诸如目标检测、语义分割和图像恢复等许多下游任务。那么,ViTs为什么如此强大呢?一些研究认为,ViTs中的多头自注意(MHSA)机制起到了关键作用。他们通过实证结果表明,MHSA更加灵活,能力更强(减少归纳偏见),更能够抵抗失真,或者能够模拟长程依赖性。但是,也有一些研究对MHSA的必要性提出了质疑,他们将ViTs的高性能归因于适当的构建块和或动态稀疏权重,从而挑战了MHSA独自负责ViTs成功的观点。总之,这段文字强调了在计算机视觉领域对于什么因素使得Vit如此强大以及不同研究者如何从不同的角度解释ViTs成功的因素的持续辩论。

        在本工作中,我们关注一个视角:建立大感受野的方式。在ViTs中,MHSA通常被设计为全局性或者是带有大内核的局部性,因此单个MHSA层的每个输出都能从一个大区域中收集信息。然而,在CNNs中并不普遍使用大内核(除了第一层[42])。相反,一种典型的方法是在最先进的CNNs中使用多个小空间卷积层(例如3×3)来扩大感受野。只有一些老式的网络,如AlexNet 、Inception 以及从神经网络架构搜索中派生出的一些架构,将大空间卷积(大小大于5)作为主要部分。以上观点自然引出一个问题:如果我们在传统的CNNs中使用少量的大内核,而不是许多小内核,会发生什么情况?是大内核还是建立大感受野的方式是缩小CNNs和ViTs之间性能差距的关键?

        为了回答这个问题,我们系统地探索了CNN的大内核设计。我们遵循一个非常简单的“哲学”:仅将大的深度方向卷积引入常规网络,其大小范围从3×3到31×31,尽管存在通过单个或几个层引入大的感受野的其他替代方案,例如特征金字塔[96]、扩张卷积[14,106,107]和可变形卷积[24]。通过一系列的实验,我们总结了五个有效使用大卷积的经验准则:

        1)非常大的内核在实践中仍然是有效的;

        2)身份捷径是至关重要的,特别是对于具有非常大的内核的网络;

        3)用小内核重新参数化[31]有助于弥补优化问题;

        4)大卷积比ImageNet更能促进下游任务;

        5)即使在小特征图上,大内核也是有用的。

        基于上述指导方针,我们提出了一种名为RepLKNet的新架构,这是一种pure 2 CNN,其中采用重新参数化的大卷积来建立大的感受野。我们的网络总体上遵循Swin Transformer [61]的宏架构,并进行了一些修改,同时用大深度卷积取代了多头自我关注。我们主要对中型和大型模型进行基准测试,因为ViT曾经被认为在大型数据和模型上超过CNN。在ImageNet分类中,我们的基线(与Swin-B相似的模型大小),其内核大小为31×31,仅在ImageNet 1 K数据集上训练时达到了84.8%的top-1准确率,比Swin-B好0.3%,但在延迟方面更有效。

        更重要的是,我们发现大内核设计在下游任务中特别强大。例如,在类似的复杂性和参数预算下,我们的网络在COCO检测[57]上的性能超过了ResNeXt-101 [104]或ResNet-101 [42]的骨干网络,提高了4.4%,在ADE20K分割[120]上提高了6.1%,这与相对应的Swin Transformers的性能相当甚至更好,但速度更快。在更多的预训练数据(例如73M张图像)和更大的计算预算的情况下,我们的最佳模型在类似模型尺寸的情况下在最先进的方法中获得了非常有竞争力的结果,例如在ImageNet上达到了87.8%的top-1准确率,在ADE20K上达到了56.0%,这展示了在大规模应用方面的出色可扩展性。

        我们认为RepLKNet的高性能主要是因为通过大内核构建的大有效感受野(ERF)[65],如图所示。此外,RepLKNet被证明比传统的CNN利用更多的形状信息,这与人类的认知部分一致。我们希望我们的发现可以帮助理解CNN和ViTs的内在机制。

 

  • 精读

二.Related Work

2.1Model with Large Kernels

 

 

  • 翻译

        正如在引言中提到的,除了一些老式的模型,如Inceptions [81-83],大内核模型在VGG-Net [79]之后变得不受欢迎。一个代表性的工作是全局卷积网络(GCNs)[69],它使用非常大的1×K卷积,然后是K×1来改进语义分割任务。然而,据报道,大内核会损害ImageNet的性能。局部关系网络(LRNet)[47]提出了一种空间聚合算子(LRLayer)来取代标准卷积,它可以被视为动态卷积。LR-Net可以从7×7的内核大小中受益,但性能在9×9时会下降。在内核大小与特征图一样大的情况下,前一名的准确率从75.7%大幅下降至68.4%。

        最近,Swin Transformers [61] 提出使用平移窗口注意力来捕捉空间模式,其窗口大小范围从7到12,这也可以看作是大内核的一种变体。随后的研究[33, 60]使用了更大的窗口大小。受到这些局部变换器的成功启发,最近的一项工作[40]将[61]中的MHSA层替换为静态或动态的7×7深度卷积,但仍保持了可比较的结果。尽管[40]提出的网络与我们的设计模式相似,但动机是不同的:[40]并没有探究ERFs、大内核和性能之间的关系,而是将视觉变换器的优越性能归因于稀疏连接、共享参数和动态机制。另外还有三个典型的作品,分别是Global Filter Networks (GFNets) [74]、CK-Conv [76] 和 FlexConv [75]。GFNet 优化了傅里叶域中的空间连接权重,这等效于空间域中的环形全局卷积。CKConv 将卷积核形式化为连续函数以处理序列数据,可以构建任意大的内核。FlexConv 为不同的层学习不同的内核大小,可以与特征图一样大。尽管它们使用了非常大的内核,但它们并不打算回答我们想要的关键问题:为什么传统的CNN在ViTs之下表现不佳,以及如何在普通的CNN中应用大内核。此外,[40] 和 [74] 都没有将其模型与强大的基准模型进行比较,例如比 Swin-L 还大的模型。因此,大内核CNN是否能像变换器一样进行良好的扩展仍然不清楚。

        ConvMixer [90]使用高达9×9的卷积来取代ViTs [35]或MLP [87,88]的“混合器”组件。MetaFormer [108]建议池化层是自我关注的替代方案。ConvNeXt [62]采用7×7深度卷积来设计强大的架构,推动CNN性能的极限。尽管这些作品显示出出色的性能,但它们没有显示出来自大得多的卷积的益处(例如,31×31)。

  • 精读

        1.曾经的老模型给出一个结论是大尺寸卷积核反而会影响ImageNet性能

        2.受Swin Transformer的平移窗口注意力来捕捉空间模式,其可以看出是大尺寸卷积核的一种变形

        3.曾经有一些网络也提出了大尺寸卷积核,它们都考虑的是Vit性能与稀疏连接,共享参数和动态机制相关,其没有考虑感受野,卷积核和性能关系

        4.GFNet 优化了傅里叶域中的空间连接权重,这等效于空间域中的环形全局卷积

        5.CKConv 将卷积核形式化为连续函数以处理序列数据,可以构建任意大的内核

        6.lexConv 为不同的层学习不同的内核大小,可以与特征图一样大

2.2Model Scaling Techniques

           

  • 翻译

        给定一个小模型,通常的做法是将其扩展以获得更好的性能,因此扩展策略在所得的准确性-效率权衡中起着至关重要的作用。对于CNN,现有的缩放方法通常关注模型深度,宽度,输入分辨率[32,70,84],瓶颈比率和组宽度[32,70]。然而,内核大小往往被忽略。单位:秒3,我们将证明内核大小也是CNN中的一个重要缩放维度,特别是对于下游任务。

2.3Structural Re-Parameterization

        

         

  •  翻译

        结构再参数化(Structural Re-parameterization)是一种通过转换参数来等效地转换模型结构的方法学。例如,RepVGG 针对深度推断时的 VGG 类型模型(例如,无分支的模型),在训练过程中构建了额外的 ResNet 风格的快捷路径,与 3×3 层并行。与难以训练的真实 VGG 类型模型[42] 相比,这些快捷路径帮助模型达到了令人满意的性能。训练后,通过一系列线性变换,这些快捷路径被吸收到平行的 3×3 卷积核中,从而使得得到的模型成为了类似 VGG 的模型。在本文中,我们使用这种方法将一个相对较小的卷积核(例如 3×3 或 5×5)添加到一个非常大的卷积核中。通过这种方式,我们使得非常大的卷积核能够捕捉小尺度的模式,从而提高模型的性能。     

  • 精读

        通过结构再参数优化来实现大卷积核提高性能

三.Guidelines of Applying Large Convolutions

        

  • 翻译 

        将大卷积应用于CNN通常会导致性能和速度低下。在本节中,我们总结了有效使用大型内核的5条准则。

3.1Guideline 1: large depth-wise convolutions can be effi-cient in practice.

        

         

 

  • 翻译

        准则1:大的深度方向卷积在实践中可能是有效的。据信,大核卷积在计算上是昂贵的,因为核大小二次地增加参数和FLOP的数量。该缺点可以通过应用深度方向(DW)卷积来大大克服[18,46]。例如,在我们提出的RepLKNet中(详见表5),将不同阶段的内核大小从[3,3,3,3]增加到[31,29,27,13],仅分别增加了18.6%和10.4%的FLOP和参数数量,这是可以接受的。剩余的1×1卷积实际上主导了大部分复杂性。

        人们可能会担心DW卷积在现代并行计算设备(如GPU)上可能非常低效。对于传统的DW 3×3内核[46,77,114],这是真的,因为DW操作引入了较低的计算比。存储器访问成本[66],这对现代计算架构不友好。然而,我们发现当内核大小变大时,计算密度会增加:例如,在DW 11×11内核中,每次我们从特征映射加载一个值时,它最多只能进行121次乘法运算,而在3×3内核中,这个数只有9次。因此,根据屋顶线模型,当内核大小变得更大时,实际延迟不应增加与FLOP的增加一样多。

        注释1:遗憾的是,我们发现现有的深度学习工具(如PyTorch)对大型DW卷积的支持较差,如表1所示。因此,我们尝试了几种方法来优化CUDA内核。基于FFT的方法[67]似乎是实现大卷积的合理选择。然而,在实践中,我们发现块状(逆)隐式gemm算法是一个更好的选择。该实现已集成到开源框架MegEngine [1]中,此处省略了详细信息。我们还为PyTorch发布了一个高效的实现 [2]。如表1所示,与PyTorch基线相比,我们的实现效率要高得多。通过我们的优化,RepLKNet中DW卷积的延迟贡献从49.5%降低到12.3%,大致与FLOPs占用成比例。

3.2Guideline 2: identity shortcut is vital especially for net-works with very large kernels.

        

         

  • 翻译

        准则2:对于具有非常大内核的网络,恒等快捷方式尤其重要。为了证明这一点,我们使用MobileNet V2 [77]进行基准测试,因为它大量使用DW层,并且有两个已发布的变体(有快捷方式和无快捷方式)。对于大内核的对应模型,我们只是用13×13替换了所有的DW 3×3层。所有模型都在ImageNet上进行训练,训练配置相同,共100个时期(详见附录A)。表2显示,大内核将具有快捷方式的MobileNet V2的准确性提高了0.77%。然而,如果没有快捷方式,大内核将准确性降低至仅为53.98%。
        注释2:这一指导方针也适用于ViTs。最近的一项研究 [34] 发现,如果没有恒等快捷方式,注意力在深度方向上损失的排名会以指数速度增加,导致过度平滑问题。尽管大内核的CNN可能与ViT的退化机制不同,但我们也观察到,如果没有快捷方式,网络很难捕捉局部细节。从与[94]类似的角度来看,快捷方式使模型成为由许多具有不同感受野(RFs)的模型组成的隐式集成,因此它可以从更大的最大RF中受益,同时不失去捕捉小尺度模式的能力。

3.3Guideline 3: re-parameterizing [31] with small ker-nels helps to make up the optimization issue.

        

         

        

  • 翻译

        准则3:使用小内核重新参数化 [31] 有助于弥补优化问题。我们将MobileNet V2的3×3层分别替换为9×9和13×13,同时可选择采用结构性重新参数化 [27,28,31] 方法。具体来说,我们在大内核旁边构建一个与之平行的3×3层,然后在批量归一化(BN)[51] 层之后将它们的输出相加(图2)。训练后,我们将小内核以及BN参数合并到大内核中,因此生成的模型与训练模型等效,但不再具有小内核。表3显示,直接将内核大小从9增加到13会降低准确性,而重新参数化解决了这个问题。

         

        然后我们将在ImageNet上训练的模型转移到Cityscapes上的DeepLabv3+ [16]语义分割任务中。我们只替换了骨干网络,保留了MMSegmentation [20]提供的所有默认训练设置。观察结果与在ImageNet上的观察类似:3×3重新参数化将9×9模型的mIoU提高了0.19,13×13模型的mIoU提高了0.93。通过这种简单的重新参数化,将内核大小从9增加到13不再降低在ImageNet和Cityscapes上的性能。

        注3. 众所周知,ViTs在小型数据集上存在优化问题[35, 59]。常见的解决方法是引入卷积先验,例如,在每个自注意块中添加DW 3×3卷积[19,101],类似于我们的方法。这些策略为网络引入了额外的平移等变性和局部性先验,在小型数据集上更容易优化,而不会丧失一般性。类似于ViT的表现[35],我们还发现当预训练数据集增加到7300万张图像时(请参考下一节的RepLKNet-XL),可以省略重新参数化而不会降低性能。

3.4Guideline 4: large convolutions boost downstream tasks much more than ImageNet classification.

        

         

  • 翻译

        准则4:大卷积在下游任务中的提升远远超过在ImageNet分类任务中的提升。表3(经过重新参数化后)显示,将MobileNet V2的卷积核大小从3×3增加到9×9,ImageNet的准确率提高了1.33%,而Cityscapes上的mIoU提高了3.99%。表5也显示了类似的趋势:随着卷积核大小从[3, 3, 3, 3]增加到[31, 29, 27, 13],ImageNet的准确率仅提高了0.96%,而ADE20K数据集上的mIoU提高了3.12%。这种现象表明,具有相似ImageNet得分的模型在下游任务中可能具有非常不同的能力(就像表5中底部的3个模型)。

        

        备注4. 是什么导致了这种现象?首先,大卷积设计显著增加了有效感受野(ERFs)。许多研究已经证明,“上下文”信息,也就是大的ERFs,在许多下游任务中,如目标检测和语义分割,是至关重要的。我们将在第5节中讨论这个话题。其次,我们认为另一个原因可能是大卷积设计为网络提供了更多的形状偏差。简而言之,ImageNet图像可以根据纹理或形状进行正确分类,正如[8, 36]所提出的。然而,人类主要基于形状线索而不是纹理来识别物体,因此具有更强形状偏差的模型可能在下游任务中传递得更好。最近的一项研究指出,ViTs在形状偏差方面表现出色,这部分解释了为什么ViTs在迁移任务中非常强大。相反,在ImageNet上训练的传统CNN倾向于偏向纹理。幸运的是,我们发现简单地增大CNN中的卷积核大小可以有效地提高形状偏差。请参阅附录C获取详细信息。

3.5Guideline 5: large kernel (e.g., 13×13) is useful even on small feature maps (e.g., 7×7).

        

  • 翻译

        准则5:即使在小特征图(例如7×7)上,大卷积核(例如13×13)也是有用的。为了验证这一点,我们将MobileNet V2最后一个阶段中的DW卷积扩大到7×7或13×13,因此卷积核的大小与特征图大小(默认为7×7)相当甚至更大。根据指南3的建议,我们对大卷积核应用重参数化。表4显示,尽管最后一个阶段的卷积已经涵盖了非常大的感受野,进一步增大卷积核的大小仍然会导致性能提升,尤其是在像Cityscapes这样的下游任务中。

        备注5. 当卷积核大小变大时,请注意CNN的平移等变性不严格成立。如图3所示,相邻空间位置上的两个输出只共享卷积核权重的一小部分,即通过不同的映射进行转换。这种属性也与ViTs的“哲学”一致——放宽对称先验以获得更大的容量。有趣的是,我们发现广泛用于变换器领域的2D相对位置嵌入(RPE)[5,78]也可以视为一个大的深度卷积核,大小为(2H-1)×(2W-1),其中H和W分别是特征图的高度和宽度。大卷积核不仅有助于学习概念之间的相对位置,还由于填充效应而编码绝对位置信息[53]。

  • 精读

        1. 用depth-wise大kernel,完全可以做到相当高效。在我们的优化(已经集成进开源框架MegEngine)下,31x31 depth-wise卷积的用时最低可达3x3卷积的1.5倍,而前者的FLOPs是后者的106倍(31x31/9),这意味着前者的效率是后者的71倍!

        2. 不带identity shortcut,增大kernel会大幅掉点(ImageNet掉了15%);带shortcut,增大kernel才会涨点。

         3. 如果要想进一步加大kernel size,从大kernel到超大kernel,可以用小kernel做结构重参数化(参考文献1)。也就是说,在训练的时候并行地加一个3x3或5x5卷积,训练完成后将小kernel等价合并到大kernel里面去。这样,模型就可以有效捕捉到不同尺度的特征。不过我们发现,数据集越小、模型越小,重参数化越重要。反之,在我们的超大规模数据集MegData73M上,重参数化提升很小(0.1%)。这一发现跟ViT类似:数据规模越大,inductive bias越不重要。

         4. 我们要的是在目标任务上涨点,而不是ImageNet上涨点,ImageNet的精度跟下游任务不一定相关。随着kernel size越来越大,ImageNet上不再涨点,但是Cityscapes、ADE20K语义分割上还能涨一到两个点,而增大kernel带来的额外的参数量和计算量很少,性价比极高!

        5. 有点反直觉的是,在7x7的小feature map上用13x13也可以涨点!也就是说,大kernel模型不一定需要大分辨率来训,跟小kernel模型差不多的训练方法就可以,又快又省!

四.RepLKNet

        

  • 翻译

        根据上述指南,本节中我们提出了RepLKNet,这是一个采用大卷积核设计的纯CNN架构。据我们所知,迄今为止,CNN仍然在小型模型领域占主导地位[113, 115],而视觉变换器被认为在更复杂的复杂度预算下优于CNN。因此,在本文中,我们主要关注相对较大的模型(其复杂度与ResNet-152 [42]或Swin-B [61]相当或更大),以验证大卷积核设计是否能够消除CNN与ViT之间的性能差距。

4.1Architecture Specification

        

         

  • 翻译

        我们在图4中勾勒了RepLKNet的架构:

        

        Stem:这指的是开始的层。由于我们的目标是在下游的密集预测任务中获得高性能,我们希望通过一些卷积层在开始阶段捕捉更多的细节。在第一个3×3的2×下采样之后,我们安排了一个DW 3×3层来捕捉低级别的模式,一个1×1卷积,以及另一个DW 3×3层进行下采样。

        Stages 1-4:每个阶段都包含若干个RepLK块,使用了shortcut(遵循指南2)和DW大卷积核(遵循指南1)。我们在DW卷积前后都使用了1×1卷积,这是常见的做法。请注意,每个DW大卷积使用了一个5×5的卷积核进行重新参数化(遵循指南3),在图4中没有显示。

        ConvFFN Block:除了具有足够的感受野和汇总空间信息的大卷积层外,模型的表示能力还与深度密切相关。为了在通道之间提供更多的非线性和信息传递,我们希望使用1×1层来增加深度。受广泛用于transformers [35, 61]和MLPs [27, 87, 88]的前馈网络(FFN)的启发,我们使用了类似的CNN风格的块,由shortcut、BN、两个1×1层和GELU [43]组成,因此被称为ConvFFN块。与经典的FFN在全连接层之前使用Layer Normalization [3]不同,BN具有一个优势,即可以融合到卷积中进行高效的推理。作为一种常见的做法,ConvFFN块的内部通道数是输入通道数的4倍。简单地遵循ViT和Swin的做法,即交替使用注意力和FFN块,我们在每个RepLK块后放置了一个ConvFFN块。

        Transition Blocks:放置在各个阶段之间,首先通过1×1卷积增加通道维度,然后通过DW 3×3卷积进行2×下采样。

        总之,每个阶段都有三个架构超参数:RepLK块的数量B,通道维度C,和卷积核大小K。因此,RepLKNet的架构由[B1, B2, B3, B4],[C1, C2, C3, C4],[K1,K2,K3,K4]定义。

4.2Making Large Kernels Even Larger

        

         

  • 翻译

        我们继续通过固定B=[2, 2, 18, 2]、C=[128, 256, 512, 1024]并变化K来评估RepLKNet上的大卷积核效果,观察分类和语义分割的性能。在没有精细调整超参数的情况下,我们随意设置卷积核大小为[13, 13, 13, 13]、[25, 25, 25, 13]、[31, 29, 27, 13],并分别称这些模型为RepLKNet-13/25/31。我们还构建了两个小卷积核的基线,卷积核大小都为3或7(RepLKNet-3/7)。

        在ImageNet上,我们使用AdamW [64]优化器训练了120个epoch,采用了RandAugment [23]、mixup [111]、CutMix [110]、Rand Erasing [118]和Stochastic Depth [50]等技巧,遵循了最近的研究工作 [4, 61, 62, 89]。详细的训练配置在附录A中呈现。

        对于语义分割,我们使用ADE20K [120]数据集,这是一个广泛使用的大规模语义分割数据集,包含20K张图像,涵盖了150个类别的训练图像和2K张验证图像。我们使用在ImageNet上训练的模型作为骨干网络,并采用MMSegmentation [20]实现的UperNet [102]进行训练,使用80K迭代的训练设置,并测试单尺度的mIoU。

        表5展示了不同卷积核大小的结果。在ImageNet上,尽管将卷积核大小从3增加到13会提高准确性,但将它们增加到更大却不会带来进一步的改进。然而,在ADE20K上,将卷积核从[13, 13, 13, 13]扩展到[31, 29, 27, 13]会带来0.82的更高mIoU,只增加了5.3%的参数和3.5%的FLOPs,凸显了大卷积核对下游任务的重要性。

        

        在接下来的小节中,我们使用更强的训练配置将RepLKNet-31与ImageNet分类、Cityscapes/ADE20K语义分割和COCO [57]目标检测领域的最新技术进行比较。我们将前面提到的模型称为RepLKNet-31B(B代表基础),并将一个通道更宽的模型(C = [192, 384, 768, 1536])称为RepLKNet-31L(Large)。我们构建了另一个RepLKNet-XL,通道为C = [256, 512, 1024, 2048],并在RepLK块中采用1.5倍反向瓶颈设计(即DW大卷积层的通道数是输入通道数的1.5倍)。

4.2Making Large Kernels Even Karger

        

         

  • 翻译

        我们继续通过固定B=[2, 2, 18, 2]、C=[128, 256, 512, 1024]并变化K来评估在RepLKNet上的大卷积核效果,观察分类和语义分割的性能。在没有精细调整超参数的情况下,我们随意设置卷积核大小为[13, 13, 13, 13]、[25, 25, 25, 13]、[31, 29, 27, 13],并分别称这些模型为RepLKNet-13/25/31。我们还构建了两个小卷积核的基线,卷积核大小都为3或7(RepLKNet-3/7)。

        在ImageNet上,我们使用AdamW [64]优化器训练了120个epoch,采用了RandAugment [23]、mixup [111]、CutMix [110]、Rand Erasing [118]和Stochastic Depth [50]等技巧,遵循了最近的研究工作 [4, 61, 62, 89]。详细的训练配置在附录A中呈现。

        对于语义分割,我们使用ADE20K [120]数据集,这是一个广泛使用的大规模语义分割数据集,包含20K张图像,涵盖了150个类别的训练图像和2K张验证图像。我们使用在ImageNet上训练的模型作为骨干网络,并采用MMSegmentation [20]实现的UperNet [102]进行训练,使用80K迭代的训练设置,并测试单尺度的mIoU。

        表5展示了不同卷积核大小的结果。在ImageNet上,尽管将卷积核大小从3增加到13会提高准确性,但将它们增加到更大却不会带来进一步的改进。然而,在ADE20K上,将卷积核从[13, 13, 13, 13]扩展到[31, 29, 27, 13]会带来0.82的更高mIoU,只增加了5.3%的参数和3.5%的FLOPs,凸显了大卷积核对下游任务的重要性。

        

        在接下来的小节中,我们使用更强的训练配置将RepLKNet-31与ImageNet分类、Cityscapes/ADE20K语义分割和COCO [57]目标检测领域的最新技术进行比较。我们将前面提到的模型称为RepLKNet-31B(B代表基础),并将一个通道更宽的模型(C = [192, 384, 768, 1536])称为RepLKNet-31L(Large)。我们构建了另一个RepLKNet-XL,通道为C = [256, 512, 1024, 2048],并在RepLK块中采用1.5倍反向瓶颈设计(即DW大卷积层的通道数是输入通道数的1.5倍)。

4.3ImageNet Classification

        

         

         

  • 翻译

        由于RepLKNet的整体架构类似于Swin,我们首先希望进行一次比较。对于ImageNet-1K上的RepLKNet-31B,我们将上述训练计划扩展到300个epoch,以进行公平比较。然后我们使用384×384的输入分辨率进行微调,微调总的训练成本远低于从头开始使用384×384训练的Swin-B模型。然后我们在ImageNet-22K上预训练RepLKNet-B/L模型,并在ImageNet-1K上进行微调。RepLKNet-XL在我们的私有半监督数据集MegData73M上进行预训练,该数据集在附录中有介绍。我们还在相同的2080Ti GPU上使用批量大小为64进行测试,呈现吞吐量。训练配置在附录中呈现。

        表6显示,尽管非常大的卷积核并不适用于ImageNet分类,我们的RepLKNet模型在准确性和效率之间实现了有利的权衡。值得注意的是,仅使用ImageNet-1K训练,RepLKNet-31B达到了84.8%的准确率,比Swin-B高出0.3%,而且运行速度更快43%。即使RepLKNet-XL的FLOPs高于Swin-L,它的运行速度也更快,这突显了非常大的卷积核的高效性。

        

4.4Semantic Segmentation

        

  • 翻译

        然后我们将预训练模型用作Cityscapes(表7)和ADE20K(表8)的骨干。具体而言,我们使用MMSegmentation [20]中实现的UperNet [102],使用80K迭代的训练计划进行Cityscapes的训练,使用160K迭代进行ADE20K的训练。由于我们只想评估骨干网络,因此我们不使用任何高级技巧、技巧或自定义算法。

        

         

        在Cityscapes上,ImageNet-1K预训练的RepLKNet-31B在单尺度mIoU上明显优于Swin-B(相差2.7个百分点),甚至优于ImageNet-22K预训练的Swin-L。即使配备了专门用于视觉变换器的技术DiversePatch [38],22K预训练的Swin-L的单尺度mIoU仍然低于我们1K预训练的RepLKNet-31B,尽管前者参数翻倍。

        在ADE20K上,RepLKNet-31B在1K和22K预训练下都优于Swin-B,而且单尺度mIoU的差距尤为显著。在使用我们的半监督数据集MegData73M进行预训练的情况下,RepLKNet-XL的mIoU达到了56.0,显示出在大规模视觉应用方面的可行性。

4.5Object Detection

        

  • 翻译

        对于目标检测,我们使用RepLKNets作为FCOS [86] 和级联Mask R-CNN [9,41] 的骨干,它们代表了一阶段和二阶段检测方法,以及MMDetection [13]中的默认配置。FCOS模型采用2倍(24个epoch)的训练计划进行训练,以便与同一代码库 [20] 中的X101(ResNeXt-101 [104]的简称)基准进行公平比较,而使用级联Mask R-CNN的其他结果均使用3倍(36个epoch)。同样,我们只是简单地替换了骨干网络,并没有使用任何高级技术。表9显示,RepLKNets在性能上优于ResNeXt-101-64x4d,最高可达4.4个mAP,同时具有更少的参数和较低的FLOPs。需要注意的是,采用像HTC [12]、HTC++ [61]、Soft-NMS [7]或6倍(72个epoch)的训练计划等先进技术可能会进一步提高结果。与Swin相比,RepLKNets在具有更少的参数和较低的FLOPs的情况下实现了更高或相当的mAP。值得注意的是,RepLKNet-XL实现了55.5的mAP,再次展示了其可扩展性。

五.Discussions

5.1Large-Kernel CNNs have Larger ERF than Deep Small-Kernel Models

        

         

         

  • 翻译

        我们已经证明了大内核设计可以显著提升CNN的性能(尤其是在下游任务中)。然而,值得注意的是,大内核可以由一系列小卷积来表示 [79],例如,一个7×7卷积可以分解为三个3×3卷积的堆叠,而不会丢失信息(分解后需要更多的通道以保持自由度)。鉴于这一事实,一个自然而然的问题就出现了:为什么常规的CNN,可能包含数十个或数百个小卷积(例如ResNets [42]),仍然表现不如大内核网络?

        我们认为,就获取大感受野而言,单个大内核比许多小内核要有效得多。首先,根据有效感受野(ERF)的理论 [65],ERF与o(KL^1/2)成比例,其中K是内核大小,L是深度,即层数。换句话说,ERF随着内核大小线性增长,但随着深度呈次线性增长。其次,增加深度会引入优化难题 [42]。虽然ResNets似乎克服了这一困境,成功地训练出具有数百层的网络,但一些研究 [26, 94] 表明ResNets可能并没有它们看起来那么深。例如,[94] 表示ResNets的行为类似于浅层网络的集成,这意味着即使深度大大增加,ResNets的ERF仍然可能非常有限。这种现象在以前的研究中也有经验性的观察 [54]。总之,大内核设计需要较少的层次来获得较大的ERF,并避免了由于深度增加带来的优化问题。

        为了支持我们的观点,我们选择了ResNet-101/152和前面提到的RepLKNet-13/31作为小内核和大内核模型的代表,它们都在ImageNet上得到了很好的训练,并使用来自ImageNet验证集的50张图像进行测试,这些图像被调整为1024×1024。为了可视化ERF,我们使用了一个简单但有效的方法(代码发布在[2]),如附录B中所介绍的方法,与[54]类似。简要地说,我们生成了一个聚合的贡献分数矩阵A(1024×1024),其中每个条目a(0≤a≤1)测量了输入图像上的相应像素对最后一层生成的特征图的中心点的贡献。图1显示了ResNet-101的高贡献像素聚集在中心点附近,但外部点的贡献非常低,表明ERF有限。ResNet-152呈现类似的模式,暗示更多的3×3层并没有显著增加ERF。另一方面,图1(C)中的高贡献像素分布更均匀,表明RepLKNet-13关注更多外部像素。使用更大的内核,RepLKNet-31使高贡献像素更均匀地分布,表明ERF更大。

        表格10呈现了定量分析,我们报告了覆盖给定阈值t的贡献分数的最小矩形的高贡献区域比率r。例如,ResNet-101的20%像素贡献(A值)位于一个103×103的区域内,因此区域比率为(103/1024)2 = 1.0%,t = 20%。我们进行了一些有趣的观察。

        

        1)尽管深度显著增加,ResNets的ERF要比RepLKNets小得多。例如,超过99%的ResNet-101的贡献分数位于一个小区域内,该区域仅占总面积的23.4%,而RepLKNet-31的区域比率为98.6%,这意味着大部分像素都对最终预测产生了显著的贡献。

        2)将更多的层次添加到ResNet-101并没有有效地扩大ERF,而将内核扩大可以在较小的计算成本下提高ERF。

        总的来说,这项研究强调了大内核设计在改进计算机视觉模型的性能方面的重要性。通过在不同网络架构和任务上的实验证据,论文提出了一系列指导原则,如使用大内核来增加有效感受野、使用恒等快捷方式、采用小内核重参数化等。此外,研究还探讨了为什么大内核设计在某些情况下比许多小内核更有效,这是因为大内核可以更有效地增加有效感受野,而且不容易引入优化问题。

        值得注意的是,本文提到的表格、图表和实验结果可能在原始论文中具有更多的细节和上下文。如果您对具体内容有更多疑问,我建议您查阅原始论文以获取更详细的信息。

5.2Large-Kernel Models are More Similar to Human in Shape Bias

        

         

  • 翻译

        我们发现 RepLKNet-31B 比 Swin Transformer 和小内核 CNN 具有更高的形状偏差。最近的一项研究 [91] 报告称,视觉转换器更类似于人类视觉系统,因为它们更多地基于对象的整体形状进行预测,而 CNN 更专注于局部纹理。我们遵循其方法,并使用其工具箱 [6] 来获取在 ImageNet-1K 或 22K 上预训练的 RepLKNet-31B 和 Swin-B 的形状偏差(例如,基于形状而不是纹理进行预测的比例),还有两个小内核基线,即 RepLKNet-3 和 ResNet-152。

        图5显示,RepLKNet 的形状偏差高于 Swin。考虑到 RepLKNet 和 Swin 具有相似的整体架构,我们认为形状偏差与有效感受野紧密相关,而不是自注意的具体形式(即查询-键-值设计)。这也解释了以下几点:1)[91] 报告的 ViTs 的高形状偏差(因为 ViTs 使用全局注意力),2)1K 预训练的 Swin 的低形状偏差(在局部窗口内的注意力),以及 3)小内核基线 RepLKNet-3 的形状偏差,该基线非常接近 ResNet-152(两个模型都由 3×3 卷积组成)。

        

 

5.3Large Kernel Design is a Generic Design Element that Works with ConvNeXt

        

  • 翻译

        将ConvNeXt [62]中的7×7卷积替换为大小为31×31的卷积核可以带来显著的改进,例如,ConNeXt-Tiny + 大卷积核 > ConNeXt-Small,以及ConNeXt-Small + 大卷积核 > ConNeXt-Base。

        我们使用最近提出的ConvNeXt [62]作为基准架构,来评估大卷积核作为通用设计元素的效果。我们简单地将ConvNeXt [62]中的7×7卷积替换为大小为31×31的卷积核。在ImageNet(120个epochs)和ADE20K(80K迭代)上的训练配置与第4.2节中展示的结果相同。表格11显示,尽管原始卷积核已经是7×7,进一步增大卷积核的大小仍然带来了显著的改进,特别是在下游任务中:使用大小为31×31的卷积核,ConvNeXt-Tiny优于原始的ConvNeXt-Small,而大卷积核的ConvNeXt-Small优于原始的ConvNeXt-Base。再次,这些现象证明了卷积核大小是一个重要的扩展维度。

5.4Large Kernels Outperform Small Kernels with High Dilation Rates

六.Limitations

        

  • 翻译

        尽管大卷积核设计在ImageNet和下游任务上极大地改进了CNN,然而根据表6,随着数据和模型的规模增加,RepLKNets开始落后于Swin Transformer,例如,RepLKNet-31L的ImageNet top-1准确率比Swin-L低0.7%,并且在使用ImageNet-22K预训练时出现了此现象(尽管下游分数仍然是可比较的)。目前还不清楚这种差距是由于超参数调整不够优化还是当数据/模型规模增大时,CNN的一些其他基本缺陷显现出来。我们正在继续研究这个问题。

                        ​​​​​​​                

七.Conclusion

  • 翻译

        本文重新审视了长期以来在设计CNN架构中被忽视的大卷积核。我们证明,使用少量大卷积核而不是许多小卷积核更有效地扩大了有效感受野,显著提升了CNN在下游任务上的性能,大大缩小了当数据和模型规模增大时CNN与ViTs之间性能差距,并将两者的性能更加接近。我们希望我们的工作能够推动CNN和ViT的研究。一方面,对于CNN社区,我们的发现表明我们应该特别关注有效感受野,这可能是实现高性能的关键。另一方面,对于ViT社区,由于大卷积核可以作为与多头自注意力类似行为的替代方法,这可能有助于理解自注意力的内在机制。

八.Innovation Point

        1. 大卷积核设计的重要性: 论文强调了大卷积核在CNN架构中的重要性,这在过去的设计中常常被忽视。它证明了使用少量大卷积核可以更有效地扩大有效感受野,从而提升CNN在下游任务上的性能。

        2. 下游任务表现提升: 论文通过大量实验证明,在多个下游任务中,将小卷积核替换为大卷积核可以显著提高性能。这种性能提升在图像分类、语义分割和目标检测等任务中都得到了验证。

        3. 性能与复杂性平衡: 论文强调了大卷积核设计可以在不增加太多计算复杂性的情况下改善性能。相对于一些其他复杂的方法,使用大卷积核可以实现更好的性能与复杂性平衡。

        4. 理论解释与实验验证: 论文提供了关于大卷积核的有效感受野的理论解释,并通过实验证明了这一理论观点。它揭示了大卷积核相对于多个小卷积核的优势,以及在不同任务中的表现。

        5. 与ViTs的关系: 论文强调大卷积核的设计可以在一定程度上替代多头自注意力,这对于理解自注意力机制的本质具有重要意义。同时,它在CNN和ViT之间建立了一种联系,帮助两者的研究更加互相启发。

        总之,这篇论文的创新点在于重新探讨大卷积核在CNN架构中的作用,揭示了它对于性能提升的重要性,并通过理论和实验证明了这一观点。这为CNN和ViT的研究提供了新的思路和启发。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于数据湖的多流拼接方案-HUDI概念篇

目录 一、为什么需要HUDI? 1. 传统技术选型存在哪些问题? 2. Hudi有什么优点? 基于 Hudi Payload 机制的多流拼接方案: 二、HUDI的应用场景 1. 什么场景适合使用hudi? 2. 什么场景不适合使用hudi? …

数据分析案例-汽车客户信息数据可视化分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

用加持了大模型的 Byzer-Notebook 做数据分析是什么体验

Byzer-Notebook 是专门为 SQL 而研发的一款 Web Notebook。他的第一公民是 SQL,而 Jupyter 则是是以 Python 为第一公民的。 随着 Byzer 引擎对大模型能力的支持日渐完善, Byzer-Notebook 也在不自觉中变得更加强大。我和小伙伴在聊天的过程中才发现他已…

Android 12 源码分析 —— 应用层 二(SystemUI大体组织和启动过程)

Android 12 源码分析 —— 应用层 二(SystemUI大体组织和启动过程) 在前一篇文章中,我们介绍了SystemUI怎么使用IDE进行编辑和调试。这是分析SystemUI的最基础,希望读者能尽量掌握。 本篇文章,将会介绍SystemUI的大概…

职业技术培训内容介绍

泰迪职业技术培训包括:Python技术应用、大数据技术应用、机器学习、大数据分析 、人工智能技术应用。 职业技术培训-Python技术应用 “Python技术应用工程师”职业技术认证是由工业和信息化部教育与考试中心推出一套专业化、科学化、系统化的人才考核标准&…

行业追踪,2023-08-24

自动复盘 2023-08-24 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

Hadoop分布式计算与资源调度:打开专业江湖的魔幻之门

文章目录 版权声明一 分布式计算概述1.1 分布式计算1.2 分布式(数据)计算模式1.3 小结 二 MapReduce概述2.1 分布式计算框架 - MapReduce2.2 MapReduce执行原理2.3 小结 三 YARN概述3.1 YARN & MapReduce3.2 资源调度3.3 程序的资源调度3.4 YARN的资…

Apache Hudi初探(二)(与flink的结合)--flink写hudi的操作(JobManager端的提交操作)

背景 在Apache Hudi初探(一)(与flink的结合)中,我们提到了Pipelines.hoodieStreamWrite 写hudi文件,这个操作真正写hudi是在Pipelines.hoodieStreamWrite方法下的transform(opName("stream_write", conf), TypeInformation.of(Object.class), operatorFa…

AI加持,创意设计效率百倍提升,探秘背后的数字化魔法

在当今创新潮流不断涌现的时代,人工智能正以惊人的速度和深度赋能各行各业,食品包装设计界也已来到了一个“拼创意、拼二创和拼审美”的时代。有了AI的加入,设计界正迎来一股AI创意风暴,不仅颠覆了设计流程,更为食品包…

全流程R语言Meta分析核心技术高阶应用

查看原文>>>全流程R语言Meta分析核心技术高阶应用 目录 专题一、Meta分析的选题与检索 专题二、Meta分析与R语言数据清洗及统计方法 专题三、R语言Meta分析与作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析 专题六、R语言Meta分析的不确定性 专题…

Linux centos7 bash编程小训练

训练要求: 求比一个数小的最大回文数 知识点: 一个数字正读反读都一样,我们称为回文数,如5、11、55、121、222等。 我们训练用bash编写一个小程序,由我们标准输入一个整数,计算机将显示出一个比这个数小…

最新ai系统ChatGPT程序源码+详细搭建教程+mj以图生图+Dall-E2绘画+支持GPT4+AI绘画+H5端+Prompt知识库

目录 一、前言 二、系统演示 三、功能模块 3.1 GPT模型提问 3.2 应用工作台 3.3 Midjourney专业绘画 3.4 mind思维导图 四、源码系统 4.1 前台演示站点 4.2 SparkAi源码下载 4.3 SparkAi系统文档 五、详细搭建教程 5.1 基础env环境配置 5.2 env.env文件配置 六、环境…

曲面(弧面、柱面)展平(拉直)瓶子标签识别ocr

瓶子或者柱面在做字符识别的时候由于变形,识别效果是很不好的 或者是检测瓶子表面缺陷的时候效果也没有展平的好 下面介绍两个项目,关于曲面(弧面、柱面)展平(拉直) 项目一:通过识别曲面的6个点…

《Go 语言第一课》课程学习笔记(十)

复合数据类型 同构复合类型:从定长数组到变长切片 由多个同构类型(相同类型)或异构类型(不同类型)的元素的值组合而成,这类数据类型在 Go 语言中被称为复合类型。 数组有哪些基本特性? Go 语…

用手势操控现实:OpenCV 音量控制与 AI 换脸技术解析

基于opencv的手势控制音量和ai换脸 HandTrackingModule.py import cv2 import mediapipe as mp import timeclass handDetector():def __init__(self, mode False, maxHands 2, model_complexity 1, detectionCon 0.5, trackCon 0.5):self.mode modeself.maxHands max…

PythonJS逆向解密——实现翻译软件+语音播报

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: python 3.8 pycharm 模块使用: requests --> pip install requests execjs --> pip install PyExecJS ttkbootstrap --> pip install ttkbootstrap pyttsx3 --> pip install pyttsx3 第三…

数据分享|R语言PCA主成分、lasso、岭回归降维分析近年来各国土地面积变化影响...

全文链接:http://tecdat.cn/?p31445 机器学习在环境监测领域的应用,着眼于探索全球范围内的环境演化规律,人类与自然生态之间的关系以及环境变化对人类生存的影响(点击文末“阅读原文”获取完整代码数据)。 课题着眼于…

事件捕获和事件冒泡

事件捕获和事件冒泡与事件流有关系。 以下代码&#xff0c;点击 aa &#xff0c;控制台会打印什么呢&#xff1f; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content&q…

Delphi 开发手持机(android)打印机通用开发流程(举一反三)

目录 一、场景说明 二、厂家应提供的SDK文件 三、操作步骤&#xff1a; 1. 导出Delphi需要且能使用的接口文件&#xff1a; 2. 创建FMX Delphi项目&#xff0c;将上一步生成的接口文件&#xff08;V510.Interfaces.pas&#xff09;引入: 3. 将jarsdk.jar 包加入到 libs中…

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-…