当前位置: 首页 > news >正文

InceptionNeXt:When Inception Meets ConvNeXt论文翻译

论文名称:InceptionNeXt:WhenInceptionMeetsConvNeXt

论文地址:https://arxiv.org/pdf/2303.16900.pdf

摘要:

受视觉Transformer(ViTs)长距离建模能力的启发,大核卷积因能扩大感受野、提升模型性能而受到广泛研究与应用,例如采用7×7深度卷积的杰出工作ConvNeXt。尽管此类深度算子仅消耗少量浮点运算(FLOPs),但由于高内存访问成本,其在强算力设备上的实际效率显著降低。例如,ConvNeXt-T与ResNet-50的FLOPs相近,但在A100 GPU全精度训练时吞吐量仅为后者的60%。虽然减小卷积核尺寸可提升速度,但会导致显著的性能下降,这提出了一个关键挑战:如何在保持大核CNN模型性能的同时提升其速度?为此,受Inception网络启发,我们提出将大核深度卷积沿通道维度分解为四个并行分支——小方形核、两个正交带状核和恒等映射。基于这一创新的Inception深度卷积,我们构建了InceptionNeXt系列网络,其不仅具有高吞吐量,同时保持卓越性能。例如,InceptionNeXt-T的训练吞吐量较ConvNeXt-T提升1.6倍,并在ImageNet-1K上实现0.2%的top-1准确率提升。我们期待InceptionNeXt能成为未来架构设计的经济型基线,助力减少碳足迹。

1 Introduction

        回顾深度学习的发展史[35],卷积神经网络(CNN)[33, 34]无疑是计算机视觉领域最受欢迎的模型。2012年AlexNet[32]在ImageNet竞赛中取得历史性突破,这一分水岭事件标志着CNN在计算机视觉领域开启了新纪元[11, 32, 54]。此后,大量具有影响力的CNN模型相继涌现,如Network In Network[37]、VGG[56]、Inception网络[58]、ResNe(X)t[22, 74]、DenseNet[27]以及其他高效模型[25, 55, 61, 62, 84]。

        受到Transformer在NLP领域巨大成就的激励,研究者们尝试将其模块或块集成到视觉CNN模型中[2,4,28,70],如Non-local Neural Networks[70]、DETR[4]等代表作品,甚至将自注意作为独立的原语[50,85]。 此外,受语言生成预训练[46]的启发,Image GPT (iGPT)[6]将像素作为token,采用纯Transformer进行视觉自监督学习。 然而,由于计算成本的限制,iGPT在处理高分辨率图像时面临限制。 Vision Transformer (ViT)[16]实现了突破,该算法将图像patch作为token,利用纯Transformer作为主干,经过大规模监督图像预训练,在图像分类方面表现出了显著的性能。

        显然,ViT[16]的成功进一步点燃了人们对Transformer在计算机视觉领域应用的热情。 许多ViT变体[15,36,39,64,67,75,79],如DeiT[64]和Swin[39],被提出并在广泛的视觉任务中取得了显着的性能。 类维特模型优于传统cnn的表现(例如,swun - t的81.2% vs . ResNet-50在ImageNet上的76.1%[11,22,39,54])使许多研究人员相信变形金刚最终将取代cnn并主导计算机视觉领域。

        现在是CNN反击的时候了。 通过DeiT[64]和Swin[39]中先进的训练技术,“ResNet反击”[72]的工作表明,ResNet50的性能可以提高2.3%,达到78.4%。 此外,ConvNeXt[40]表明,使用像GELU[23]激活这样的现代模块和类似于注意力窗口大小[39]的大内核大小,CNN模型可以在各种设置和任务中始终优于Swin Transformer[39]。 ConvNeXt并不孤单:越来越多的研究也显示了类似的观察结果[14,18,24,38,51,68,76,78],如RepLKNet[14]和SLaK[38]。 在这些现代CNN模型中,共同的关键特征是大的接受场,通常通过大核尺寸(例如7 × 7)的深度卷积[7,43]来实现。

        然而,尽管它的flop很小,深度卷积实际上是一个“昂贵的”运算符,因为它带来了很高的内存访问成本,并且可能成为强大的计算设备(如gpu[42])的瓶颈。 此外,正如在[14]中所观察到的那样,更大的内核大小会显著降低速度。 如图1所示,默认内核大小为7 × 7的ConvNeXt-T比内核大小较小的3×3慢1.4倍,比ResNet-50慢1.8倍,尽管它们具有相似的flop。 然而,使用较小的内核大小限制了接受域,这可能导致性能下降。 例如,在ImageNet-1K数据集上,与ConvNeXt-T/k7相比,ConvNeXt-T/k3的性能下降了0.6%,其中kn表示内核大小为n × n。

        这就提出了一个具有挑战性的问题:如何在保持大内核CNN性能的同时加速它们? 在本文中,我们的目标是通过ConvNeXt为基础并改进深度卷积模块来解决这个问题。 通过我们基于ConvNeXt的初步实验(见表1),我们发现并不是所有的输入通道都需要进行计算代价高昂的深度卷积运算[42]。 因此,我们建议保留一些通道不变,只对部分通道进行深度卷积操作。 接下来,我们提出将深度卷积的大核以Inception的方式分解成几组小核[58-60]。 具体来说,对于处理通道,1/3的通道以3×3内核进行处理,1/3的通道以1×k内核进行处理,1/3的通道以k×1内核进行处理。 有了这个新的简单而廉价的运算符,称为“Inception深度卷积”,我们构建的模型InceptionNeXt在准确性和速度之间实现了更好的权衡。 例如,如图1所示,InceptionNeXt-T实现了比ConvNeXtT更高的准确率,同时享有与ResNet-50相似的1.6倍的训练吞吐量加速。

        本文的贡献是双重的。 首先,我们确定了ConvNeXt的速度瓶颈,如图1所示。 为了在保证精度的同时解决这一速度瓶颈,我们提出了Inception深度卷积,它将代价高昂的深度卷积分解为三个小核卷积分支和一个恒等映射分支。 其次,大量的图像分类和语义分割实验表明,我们的模型InceptionNeXt比ConvNeXt具有更好的速度和精度权衡。 我们希望InceptionNeXt可以作为一个新的CNN基线来加速神经架构设计的研究。

2 Related work

2.1 Transformer v.s. CNN

        Transformer[66]于2017年被引入NLP任务,因为它具有并行训练和比LSTM更好的性能。 然后在Transformer上建立了许多著名的NLP模型,包括GPT系列[3,44,46,47],BERT [12], T5[49]和OPT[83]。 对于Transformer在视觉任务中的应用,vision Transformer (ViT)绝对是开创性的工作,它表明Transformer在经过大规模监督训练后可以取得令人印象深刻的性能。 Swin[39]等后续工作[20,52,53,64,67,69,79]不断提高模型性能,在各种视觉任务上取得了新的进展。 这些结果似乎告诉我们“注意力是你所需要的”[66]。

        但事情并没有那么简单。 像DeiT这样的ViT变体通常采用现代训练程序,包括各种先进的数据增强技术[9,10,80,82,86]、正则化[26,59]和优化器[30,41]。 Wightman等人发现,通过类似的训练程序,ResNet的性能可以得到很大的提高。 此外,Yu等人[77]认为在模型性能中起关键作用的是通用架构而不是注意力。 Han等人发现,通过用规则或动态深度卷积代替Swin中的注意力,模型也可以获得相当的性能。 ConvNeXt[40]是一项了不起的工作,它利用vit的一些设计将ResNet现代化为高级版本,并且由此产生的模型始终优于Swin[39] 其他诸如RepLKNet[14]VAN[18]FocalNets[76]HorNet[51]SLKNet[38]ConvFormer[78]Conv2Former[24]InternImage[68]等工作不断提高CNN的性能。 尽管这些模型获得了很高的性能,但忽略了效率,表现出比ConvNeXt更低的速度。 实际上,与ResNet相比,ConvNeXt也不是一个高效的模型。 我们认为CNN模型应该保持原有的效率优势。 因此,在本文中,我们的目标是在保持高性能的同时提高cnn的模型效率。

2.2 Convolution with large kernel

        知名的作品,如AlexNet[32]和Inception v1[58]已经分别使用了高达11×11和7×7的大型内核。 为了提高大核的效率,VGG[56]提出对3×3卷积进行大量叠加,而Inception v3[59]则将k × k卷积依次分解为1 × k和k × 1卷积。 对于深度卷积,MixConv[63]将核分成3 × 3到k × k的几组。此外,Peng等人发现大核对于语义分割很重要,他们分解的大核类似于Inception v3[59]。 目睹了Transformer在视觉任务中的成功[16,39,67],大核卷积得到了更多的重视,因为它可以为模仿注意力提供一个大的接受场[21,40]。 例如,ConvNeXt默认采用深度卷积的内核大小为7×7。 为了使用更大的内核,RepLKNet[14]建议利用结构重新参数化技术[13,81]将内核大小扩展到31×31; VAN[18]将大核深度卷积(DW-Conv)和深度扩展卷积依次叠加,得到21 × 21的接受域; FocalNets[76]采用门控机制从深度卷积叠加中融合多层特征; SegNeXt[17]通过下注1 × k和k × 1的多个分支学习多尺度特征。 最近,SLaK[38]将大内核k ×k分解为两个小的非平方内核(k × s和s×k,其中s < k)。与这些工作不同,我们的目标不是扩展更大的内核。 相反,我们的目标是提高效率,并以一种简单且对速度友好的方式分解大型内核,同时保持相当的性能。

3 Method

3.1 MetaNeXt

图2。 MetaFormer, MetaNext, ConvNeXt和InceptionNeXt的框图。 类似于MetaFormer块[77],MetaNeXt是从ConvNeXt[40]抽象出来的通用块。 MetaNeXt可以看作是MetaFormer通过合并两个剩余子块而获得的一个更简单的版本。 值得注意的是,MetaNeXt中使用的令牌混合器不能太复杂(例如,自关注[66]),否则它可能无法训练收敛。 通过将令牌混合器指定为深度卷积或Inception深度卷积,模型被实例化为ConvNeXt或InceptionNeXt块。 与ConvNeXt相比,InceptionNeXt更高效,因为它将昂贵的大核深度卷积分解为四个高效的并行分支。

MetaNeXt块的配方。 在ConvNeXt[40]中,对于它的每个ConvNeXt块,首先对输入X进行深度卷积处理,沿空间维度传播信息。 我们遵循MetaFormer[77]将深度卷积抽象为负责空间信息交互的令牌混合器。 因此,如图2中的第二个子图所示,ConvNeXt被抽象为MetaNeXt块。 形式上,在MetaNeXt块中,它的输入X首先被处理为

式中,X,X′∈RB×C×H×W,其中B, C, H, W分别表示批量大小,通道号,高度和宽度。 然后将令牌混频器的输出归一化:

归一化后[1,29],将特征输入到一个MLP模块中,该模块由两个完全连接的层组成,层之间有一个激活函数,与Transformer[66]中的前馈网络相同。 两个完全连接的层也可以通过1 × 1的卷积来实现。 也采用快捷连接方式[22,57]。 这个过程可以表示为:

与MetaFormer块的比较。 如图2所示,可以发现MetaNeXt块与MetaFormer块[77]有相似的模块,如token mixer和MLP。 然而,两种模型之间的关键区别在于快捷连接的数量[22,57]。 MetaNeXt块实现一个快捷连接,而MetaFormer块包含两个,一个用于令牌混合器,另一个用于MLP。 从这个角度来看,MetaNeXt块可以看作是合并了MetaFormer的两个剩余子块的结果,从而简化了整个体系结构。 因此,与MetaFormer相比,MetaNeXt架构表现出更高的速度。 然而,这种简单的设计有一个限制:MetaNeXt中的令牌混频器组件不能复杂(例如,Attention),如我们的实验(表5)所示。

        实例化到ConvNeXt。 如图2所示,在ConvNeXt中,令牌混频器仅通过深度卷积实现:

3.2 Inception depthwise convolution

ConvNeXt-T的初步实验。 我们首先基于ConvNeXt-T进行了初步实验,结果如表1所示。 首先,将深度卷积的核大小从7×7减小到3×3。 与内核大小为7 × 7的模型相比,内核大小为3 × 3的模型的训练吞吐量提高了1.4倍,但性能从82.1%下降到81.5%。 接下来,受ShuffleNet V2[42]的启发,我们只将部分输入通道馈送到深度卷积中,其余通道保持不变。 处理的输入通道的数量由一个比率控制。 研究发现,当比值从1降低到1/4时,在性能基本保持不变的情况下,可以进一步提高训练吞吐量。 总之,这些初步实验传达了ConvNeXt的两个发现。 发现1:大核深度卷积是速度瓶颈。 发现2:在单深度卷积层[42]中处理部分通道已经足够好了。

公式化表达。基于上述发现,我们提出一种新型卷积结构以兼顾精度与效率。根据发现2,我们保留部分通道不作处理,将其设为恒等映射分支;受发现1启发,对需要处理的通道,我们采用Inception风格[58-60]的深度可分离卷积分解方案。Inception网络[58]原本采用多分支结构并行处理不同尺寸卷积核(如3×3和5×5),我们同样保留3×3分支,但鉴于大尺寸方形核的实际运行效率较低,转而借鉴Inception v3[59]的分解策略,将kh×kw大核分解为1×kw和kh×1两个正交带状核。具体实现上,对于输入特征图X,我们沿通道维度将其划分为四组:

具体来说,对于输入X,我们沿着通道维度将其分成四组,

InceptionNeXt块的示例如图2所示。 此外,其PyTorch[45]代码在算法1中进行了总结。

3.3 InceptionNeXt

        基于InceptionNeXt块,我们可以构建一系列名为InceptionNeXt的模型。 由于ConvNeXt[40]是我们主要的比较基线,所以我们主要按照它来构建几种尺寸的模型[71]。 具体来说,与ResNet[22]和ConvNeXt类似,InceptionNeXt也采用了4stage框架。 与ConvNeXt相同,大尺寸的4个级的编号为[2,2,6,2],小尺寸的编号为[3,3,9,3],基本尺寸的编号为[3,3,27,3]。 我们采用批归一化,因为本文强调速度。 与ConvNeXt的另一个区别是,InceptionNeXt在第4阶段使用3的MLP比率,并将保存的参数移动到分类器,这可以帮助减少一些FLOPs(例如,3%的基本大小)。 详细的模型配置如表3所示。

4 Experiment

4.1 ImageNet classification

设置:在图像分类任务中,ImageNet-1K[11,54]是最常用的基准数据集之一,其训练集包含约130万张图像,验证集包含5万张图像。为了与广泛使用的基线模型(如Swin[39]和ConvNeXt[40])进行公平比较,我们主要遵循DeiT[65]的训练超参数,不使用蒸馏。具体来说,模型通过AdamW[41]优化器训练,学习率为lr = 0.001×batchsize/1024(本文中使用lr = 4e-3和batchsize=4096,与ConvNeXt相同)。遵循DeiT,数据增强包括标准随机裁剪、水平翻转、RandAugment[10]、Mixup[83]、CutMix[81]、随机擦除[87]和颜色抖动。正则化方法采用标签平滑[60]、随机深度[26]和权重衰减。与ConvNeXt类似,我们还使用LayerScale[66]技术来帮助训练深层模型。我们的代码基于PyTorch[45]和timm[72]。

表4. 在ImageNet-1K上训练的模型性能。吞吐量在配备TF32(TensorFloat-32)的A100 GPU(PyTorch 1.13.0和CUDA 11.7.1)以及配备FP32的2080Ti GPU(PyTorch 1.8.1和CUDA 10.2)上测量。吞吐量基准测试的批量大小初始设为128,并逐步减小直至GPU能够承载。报告了“通道优先”和“通道最后”内存布局的较优结果。

结果:我们将InceptionNeXt与各种最先进的模型进行比较,包括基于注意力和基于卷积的模型。如表4所示,InceptionNeXt在取得极具竞争力性能的同时,还具有更高的速度。InceptionNeXt始终比ConvNeXt[40]拥有更好的精度-速度权衡。例如,InceptionNeXt-T不仅比ConvNeXt-T的准确率高0.2%,而且在A100上的训练/推理吞吐量分别是ConvNeXt-T的1.6倍/1.2倍,与ResNet-50相近。也就是说,InceptionNeXt-T兼具ResNet-50的速度和ConvNeXt-T的精度。此外,遵循Swin和ConvNeXt的做法,我们将在224×224分辨率下训练的InceptionNeXt-B微调至384×384分辨率,训练30个 epoch。可以看到,InceptionNeXt-B在保持竞争力精度的同时,训练和推理吞吐量均高于ConvNeXt-B。

值得注意的是,轻量级模型的速度提升更为显著,而随着模型规模增大,提升幅度逐渐减小。原因在于深度wise卷积和Inception深度wise卷积的计算复杂度与通道数呈线性关系(即O(C),其中C为通道数),而MLP的计算复杂度为O(C^2)。对于更大的模型(更大的C),其计算主要由MLP主导。由于仅改进了深度wise卷积,当模型规模增大时,速度提升幅度会变小。

除了4阶段框架[22,39,57],另一个值得注意的是ViT风格[16]的各向同性架构(仅包含一个阶段)。为了匹配DeiT-S的参数和MACs,我们按照ConvNeXt-S(iso.)[40]构建了InceptionNeXt-S(iso.)。具体来说,将嵌入维度设置为384,块数设置为18。此外,我们构建了一个名为MetaNeXt-Attn的模型,该模型通过将自注意力指定为Token Mixer从MetaNeXt块实例化而来,目的是研究是否可以将Transformer块的两个残差子块合并为一个。实验结果如表5所示,可以看到InceptionNeXt在各向同性架构下也能表现良好,表明InceptionNeXt在不同框架下具有良好的泛化能力。值得注意的是,MetaNeXt-Attn无法训练收敛,仅取得3.9%的准确率。这一结果表明,与MetaFormer中的Token Mixer不同,MetaNeXt中的Token Mixer不能过于复杂,否则模型可能无法训练。

4.2 Semantic Segmentation

设置:我们使用ADE20K[88](一个常用的场景解析基准数据集)来评估模型在语义分割任务上的表现。ADE20K包含150个细粒度语义类别,训练集和验证集分别包含2万和2千张图像。在ImageNet-1K[11]上以224分辨率训练的检查点用于初始化骨干网络。遵循Swin[39]和ConvNeXt[40],我们首先使用UperNet[74]评估InceptionNeXt。模型通过AdamW[41]优化器训练,学习率为6e-5,批量大小为16,训练16万次迭代。遵循PVT[68]和PoolFormer[78],InceptionNeXt也通过Semantic FPN[31]进行评估。在常规实践[5,31]中,8万次迭代的设置下批量大小为16。遵循PoolFormer[78],我们将批量大小增加到32并将迭代次数减少到4万次以加快训练速度。采用AdamW[30,41]优化器,学习率为2e-4,使用幂次为0.9的多项式衰减策略。我们的代码基于PyTorch[45]和mmsegmentation[8]。

结果:使用UperNet[74]进行分割的结果如表6所示。可以看出,对于不同模型规模,InceptionNeXt始终优于Swin[39]和ConvNeXt[40]。在Semantic FPN[31]方法中(如表7所示),InceptionNeXt显著超越了其他骨干网络,如PVT[68]和PoolFormer[78]。这些结果表明,InceptionNeXt在密集预测任务上也具有很高的潜力。

4.3 Ablation Studies

我们以InceptionNeXt-T为基线,在ImageNet-1K[11,54]上从以下方面进行消融研究。

分支:Inception深度wise卷积包含四个分支:三个卷积分支和一个恒等映射分支。当移除水平或垂直带状核的任何一个分支时,性能从82.3%显著下降到81.9%,证明了这两个分支的重要性。这是因为这两个带状核分支可以扩大模型的感受野。对于3×3小方形核分支,移除它仍能达到82.0%的top-1准确率,并带来更高的吞吐量。这启示我们,如果更注重模型速度,可以采用不含3×3方形核的简化版InceptionNeXt。对于带状核,Inception v3大多采用顺序排列方式。我们发现这种组合方式也能获得相似性能,甚至略微提升模型速度。可能的原因是PyTorch/CUDA对顺序卷积进行了良好优化,而我们仅在高层实现了并行分支(见Algorithm 1)。我们相信,当并行方法得到更好优化时会更快,因此默认采用带状核的并行方法。

带状核大小:实验发现,当核大小从7增加到11时性能提升,但增加到13时性能下降。这种现象可能由优化问题导致,可通过结构重参数化[13,14]等方法解决。为简单起见,除Atto尺寸外,默认将核大小设置为11。

卷积分支比例:当比例从1/8增加到1/4时,性能未观察到提升。Ma等人[42]也指出,并非所有通道都需要进行卷积。但当比例降低到1/16时,性能严重下降,因为较小的比例会限制Token混合程度,导致性能下降。因此,除Atto尺寸外,默认将卷积分支比例设置为1/8。

归一化:当将Batch Normalization[29]替换为Layer Normalization[1]时,性能提升0.1%,但训练和推理吞吐量均下降。由于本文关注效率,InceptionNeXt采用Batch Normalization。

5 Conclusion and future work

在这项工作中,我们提出了一种高效的CNN架构InceptionNeXt,其在实际速度和性能之间的权衡优于以往的网络架构。InceptionNeXt将大核深度wise卷积沿通道维度分解为四个并行分支,包括恒等映射、小方形核和两个正交带状核。这四个分支在实际计算中都比大核深度wise卷积高效得多,且能共同提供大的空间感受野以实现良好性能。大量实验结果证明了InceptionNeXt的优越性能和高实用效率。

补充材料

A. 超参数

 A.1 ImageNet-1K图像分类

在ImageNet-1K[11,54]分类基准上,遵循ConvNeXt[40]和通过timm[72]训练的ConvNeXt-A,我们采用表9所示的超参数在224²输入分辨率下训练InceptionNeXt,并在384²分辨率下对其进行微调。我们的代码基于PyTorch[45]和timm库[72]实现。

 A.2 语义分割

对于ADE20K[88]语义分割任务,我们以ConvNeXt为骨干网络,使用UperNet[74](遵循Swin[39]的配置)和FPN[31](遵循PVT[68]和PoolFormer[78]的配置)。骨干网络通过在ImageNet-1K上以224²分辨率预训练的检查点进行初始化。InceptionNeXt骨干网络的峰值随机深度率如表10所示。我们的实现基于PyTorch[45]和mmsegmentation库[8]。

B. 定性结果

使用Grad-CAM[56]可视化在ImageNet-1K上训练的不同模型的激活图,包括RSB-ResNet-50[22,73]、Swin-T[39]、ConvNeXt-T[40]和我们的InceptionNeXt-T。结果如图4所示。与其他模型相比,InceptionNeXt-T能更准确地定位关键部分,且激活区域更小。

相关文章:

  • ML:Sigmoid 饱和函数
  • C++第1讲:基础语法;通讯录管理系统
  • ROS云课三分钟-差动移动机器人巡逻报告如何撰写-评分良好
  • python:获取某路径下所有图片的名称
  • 拉普拉斯变换
  • COMSOL 与人工智能融合的多物理场应用:28个案例的思路、方法与工具概述
  • 【C++ 多态】—— 礼器九鼎,釉下乾坤,多态中的 “风水寻龙诀“
  • Springboot JPA 集成ShardingSphere
  • 复活之我会二分
  • Python 上下文管理器(Context Manager)详解
  • 小行星轨道预测是怎么做的?从天文观测到 AI 模型的完整路径
  • linux下编译Websocketpp,适用x86和armv8
  • Three.js 系列专题 6:后处理与特效
  • XELA机器人多种“形态和玩法”的Uskin磁性阵列式三轴触觉传感器,你使用过了吗?
  • 【区块链安全 | 第三十四篇】合约审计之重入漏洞
  • 39常用控件_QWidget的geometry属性
  • OpenCV 图形API(18)用于执行两个矩阵(或数组)的逐元素减法操作函数sub()
  • 机器学习——ROC曲线、PR曲线
  • 剖析AI与5G:是夸大其词,还是时代变革的引擎?-优雅草卓伊凡
  • Hook javascipt 获取的时间 -- xyctf 2025 ez_puzzle wp
  • 中国最大的建站网站/免费b站推广网站
  • 做模具的都有什么网站/百度2022第三季度财报
  • 好的室内设计网站推荐/科学新概念外链平台
  • 做阿里巴巴网站图片大全/上海今天刚刚发生的新闻
  • vps内存wordpress优化/厦门seo屈兴东
  • 泉州网站建设学徒招聘/市场调研报告内容