系列文章目录

第一章 AlexNet网络详解

第二章 VGG网络详解

第三章 GoogLeNet网络详解

第四章 ResNet网络详解

第五章 ResNeXt网络详解

第六章 MobileNetv1网络详解

第七章 MobileNetv2网络详解

第八章 MobileNetv3网络详解

第九章 ShuffleNetv1网络详解

第十章 ShuffleNetv2网络详解

第十一章 EfficientNetv1网络详解

第十二章 EfficientNetv2网络详解

第十三章 Transformer注意力机制

第十四章 Vision Transformer网络详解

第十五章 Swin-Transformer网络详解

第十六章 ConvNeXt网络详解

第十七章 RepVGG网络详解

第十八章 MobileViT网络详解

文章目录

  • 0. 摘要
  • 1. 前言
  • 2.   
    • 1.
    • 2.
  • 总结

干货集锦

0、摘要

“咆哮的20年代”视觉识别的开始是Vision Transformers (ViTs)的引入,很快就取代ConvNets成为最先进的图像分类模型。然而,普通的ViT在应用于一般的计算机视觉任务(如物体检测和语义分割)时会遇到困难。而层次化Transformer(例如Swin Transformers)重新引入了几种ConvNet先验知识,使Transformer实际上可行作为通用的视觉支持,并在各种视觉任务中展示了显著的性能。但这种混合方法的有效性仍然很大程度上归功于Transformer intrinsically的优越性,而不是卷积本身所拥有的诱导偏差。在这项工作中,我们重新审视设计空间,并测试纯ConvNet可以实现的极限。我们逐步将标准ResNet “现代化”为视觉Transformer的设计,并在这一过程中发现了几个关键组件,它们对性能差异贡献很大。这次探索的结果是一个被称为ConvNeXt的纯ConvNet模型系列。ConvNeXt完全是由标准ConvNet模块构建的,它在精度和可扩展性方面与Transformers竞争,实现了87.8%的ImageNet top-1精度,并在COCO检测和ADE20K分割中超过了Swin Transformers,同时保持标准ConvNets的简单性和效率。

1.本文旨在重新评估纯卷积神经网络在计算机视觉任务中的作用。

2.本文的研究背景是视觉识别领域的发展,随着Vision Transformers的推出,传统的ConvNets已经被超越。
3.本文的主要论点是单纯的ViT在计算机视觉任务中存在一些困难,而纯卷积神经网络的潜力有待进一步挖掘和研究。
4.以往的研究都集中在ViT和ConvNets的对比分析上,但是在一些通用视觉骨干任务中,ViT还面临着一些挑战。纯卷积神经网络则在转换效率等方面存在局限性。
5.本文提出了一种将ResNet现代化设计为视觉Transformer的独特方法,并测试了其性能。通过逐步更新ResNet的架构,我们发现了一些关键组件。
6.研究发现,经过现代化改进后的纯卷积神经网络与传统的ViT相比更有优势,这对于探索其潜力具有重要意义。但是,本文的研究也有其局限性,如实验设置等方面还需要进一步改进和完善。

1、前言

回顾2010年代,这个十年被深度学习的重大进展和影响所标记。主要推动力是神经网络的复兴,尤其是卷积神经网络(ConvNets)。整个十年,视觉识别领域成功地从设计特征转向设计(ConvNet)架构。尽管反向传播训练的ConvNets的发明可以追溯到上世纪80年代[42],但直到2012年底我们才看到它在视觉特征学习方面的真正潜力。AlexNet [40]的推出引发了“ImageNet时刻”[59],开创了一个新的计算机视觉时代。这个领域自那时以来发展迅速。代表性的ConvNets,如VGGNet [64]、Inceptions [68]、ResNe(X)t [28,87]、DenseNet [36]、MobileNet [34]、EfficientNet [71]和RegNet [54]专注于不同方面的精度、效率和可扩展性,普及了许多有用的设计原则。

(图1:•ConvNets 和◦vision Transformers 在ImageNet-1K分类结果。每个气泡的面积都与模型系列中某个变体的FLOPs成比例。这里的ImageNet-1K/22K模型分别采用2242/3842张图像。ResNet和ViT的结果是通过改进过原论文的训练过程得到的。我们证明了标准的ConvNet模型在设计上要简单得多,但可以实现与分层视觉Transformer相同的可扩展性水平)

ConvNets在计算机视觉领域的全面优势并非偶然:在许多应用场景中,“滑动窗口”策略在视觉处理中是内在的特征,特别是在处理高分辨率图像时。ConvNets具有多种内置的归纳偏见,使它们非常适合于各种计算机视觉应用。其中最重要的是平移等变性,这是像目标检测这样的任务所需要的一种理想特性。由于在滑动窗口方式下使用ConvNets时,计算是共享的,所以ConvNets本质上是高效的[62]。数十年来,ConvNets一直是有限的对象分类,如数字[43]、人脸[58,76]和行人[19,63]的默认使用方式。进入2010年代,基于区域的检测器[23,24,27,57]进一步将ConvNets提升到成为视觉识别系统中的基本构建块的位置。

大约在同一时间,神经网络设计在自然语言处理(NLP)领域和视觉领域分别采取了非常不同的路径,Transformer取代了递归神经网络并成为主导骨干架构。尽管语言和视觉领域的任务差异很大,但两个流派在2020年出现了意想不到的融合,Vision transformer(ViT)的推出完全改变了网络架构设计的格局。除了初始的“图块”层之外,ViT没有引入特定于图像的归纳偏差,并对原始的NLP变压器进行了最小化修改。ViT的一个主要关注点是扩展行为:通过更大的模型和数据集大小,变压器可以在很大程度上优于标准的ResNet。这些图像分类任务的结果是鼓舞人心的,但计算机视觉不仅限于图像分类。正如前面所讨论的,过去十年中解决数以万计的计算机视觉任务的解决方案取决于滑动窗口、完全卷积范式。缺少ConvNet导出的偏差,纯正的ViT模型面临着许多挑战,无法被采用为通用的视觉骨干。最大的挑战是ViT的全局注意设计,它对输入大小具有二次复杂度。在ImageNet分类中,这可能是可以接受的,但在高分辨率输入中很快变得棘手。

分层Transformer采用混合方法来弥补这个差距。例如,“滑动窗口”策略(例如在局部窗口内的自注意力)被重新引入到Transformer中,使它们的行为更类似于ConvNets。 Swin Transformer [45]是这个方向上的一个里程碑性的工作,首次展示了Transformer可以被采用为一种通用的视觉骨干网络,并在图像分类之外的一系列计算机视觉任务中实现领先的性能。 Swin Transformer的成功和快速采用也揭示了一件事情:卷积的本质并没有变得不相关;相反,它仍然非常受欢迎并且从未褪色。 基于这个观点,Transformer在计算机视觉方面的许多进展都旨在重新引入卷积。然而,这些尝试的代价很大:自注意力的单纯实现可能很昂贵[55];通过先进的方法,如循环移位[45],可以优化速度,但系统的设计变得更为复杂。 另一方面,几乎是讽刺的是,ConvNet已经在很多期望实现中满足了这些期望的属性,尽管它采用了一种直截了当且不需要花哨的方式。 ConvNets似乎失去活力的唯一原因是(分层)Transformer在许多计算机视觉任务中优于它们,性能差异通常归因于Transformer出色的缩放行为,其中多头自注意是关键组成部分。

与卷积神经网络不同的是,视觉Transformer的采用是一个重大的变化。在最近的文献中,通常会采用系统级比较(例如Swin Transformer vs.ResNet)来比较这两者。卷积神经网络和分层视觉Transformer同时具有类似的归纳偏差,但它们在训练过程和宏观/微观层面的架构设计上有显著的差异。在这项工作中,我们调查了卷积神经网络和Transformer之间的架构差异,并试图确定网络性能比较中的混淆变量。我们的研究旨在弥合ConvNets的ViT前后时代之间的差距,以及测试纯ConvNet可以实现的极限。为此,我们从标准ResNet(例如ResNet-50)开始,使用改进的过程对其进行训练。我们逐渐“现代化”架构,构建分层视觉Transformer(例如Swin-T)。我们的探索由一个关键问题引导:Transformer中的设计决策如何影响ConvNets的性能?我们在过程中发现了几个影响性能差异的关键组件。因此,我们提出了一系列纯ConvNets,称为ConvNeXt。我们评估了ConvNeXts在各种视觉任务中的表现,例如ImageNet分类[17],COCO上的目标检测/分割[44]以及ADE20K上的语义分割[92]。令人惊讶的是,完全由标准ConvNet模块构建的ConvNeXts,在所有主要基准测试中都能与Transformer竞争,具有准确性、可扩展性和鲁棒性。ConvNeXt保持了标准ConvNets的效率,同时全卷积的性质使其在训练和测试中非常简单易用。我们希望新的观察和讨论能够挑战一些常见的信念,并鼓励人们重新思考卷积在计算机视觉中的重要性。

2.卷积神经网络现代化:一条路线图

在本节中,我们提供了一个从ResNet到类似于Transformers的ConvNet的轨迹。我们考虑两种模型规模的FLOPs,一种是ResNet-50 / Swin-T体制的FLOPs约为4:5×109,另一种是ResNet-200 / Swin-B体制的FLOPs约为15:0×109。为简单起见,我们将使用ResNet-50 / Swin-T复杂模型来呈现结果。对于更高容量模型的结论是一致的,结果可以在附录C中找到。

在高层次上,我们的探索旨在通过保持网络的简洁性作为标准ConvNet,研究和跟踪Swin Transformer的不同层次设计。我们的探索路线如下:我们的起点是一个ResNet-50模型。我们首先用类似于训练视觉Transformer的训练技巧对其进行训练,并获得比原始的ResNet-50更好的结果。这将成为我们的基准线。然后,我们研究了一系列设计决策,总结为

1)宏设计,

2)ResNeXt,

3)反向瓶颈,

4)大内核大小,以及

5)各种逐层微设计。

在图2中,我们展示了“网络现代化”每个步骤所能实现的过程和结果。由于网络复杂性与最终性能密切相关,FLOPs在探索过程中大致控制,尽管在中间步骤中,FLOPs可能会高于或低于参考模型。所有模型均在ImageNet-1K上进行训练和评估。

(图2。我们将标准的ConvNet(ResNet)现代化为分层视觉Transformer(Swin)的设计,而不引入任何基于注意力的模块。前景条表示ResNet-50/Swin-T FLOP范围内的模型准确性;ResNet-200/Swin-B范围的结果以灰色条显示。斜线条表示未采用修改。两种范围的详细结果在附录中给出。许多Transformer的架构选择可以加入ConvNet中,并且它们会导致越来越好的性能。最后,我们的纯ConvNet模型,名为ConvNeXt,可以胜过Swin Transformer)

2. 正文分析

2.1. 训练技术

除了网络架构的设计外,训练过程也会影响最终的性能。视觉Transformer不仅带来了一组新的模块和架构设计决策,还引入了不同的训练技术(例如AdamW优化器)来进行视觉处理。这主要涉及到优化策略和相关的超参数设置。因此,我们探索的第一步是使用视觉Transformer的训练程序训练一个基准模型,即ResNet-50/200。最近的研究表明,一组现代化的训练技术可以显著提升简单ResNet-50模型的性能。在我们的研究中,我们使用了接近DeiT [73]和Swin Transformer [45]的训练方法。对于ResNets,我们将训练周期从原始的90周期延长到300周期。我们使用AdamW优化器[46],数据增强技术,如Mixup [90],Cutmix [89],RandAugment [14],Random Erasing [91],以及包括随机深度 [36]和标签平滑 [69]在内的正则化方案。我们使用的完整的超参数集可以在附录A.1中找到。单独使用这个优化的训练方法将ResNet-50模型的性能从76.1% [1]提升到78.8% (+2.7%),这意味着传统的ConvNets和视觉Transformer之间的性能差异可能很大程度上是由于训练技术造成的。我们将在整个“现代化”过程中使用这个固定的训练方法和相同的超参数。在ResNet-50体系中报告的每个准确率是从使用三个不同的随机种子进行训练中获得的平均值。

2.2. 宏观设计

现在我们分析Swin Transformers的宏观网络设计。Swin Transformers遵循ConvNets [28,65]的多阶段设计,每个阶段具有不同的特征图分辨率。有两个有趣的设计考虑因素:阶段计算比例和“干细胞”结构。改变阶段计算比例。在ResNet的计算分布的最初设计主要是经验性的。沉重的“res4”阶段旨在与对象检测等下游任务兼容,其中检测器头在14×14特征平面上运行。另一方面,Swin-T遵循相同的原则,但阶段计算比例略有不同,为1:1:3:1。对于较大的Swin Transformers,该比例为1:1:9:1。根据这个设计,我们将ResNet-50中每个阶段的块数从(3,4,6,3)调整为(3,3,9,3),同时将FLOPs与Swin-T对齐。这将模型的准确性从78.8%提高到79.4%。值得注意的是,研究人员已经彻底研究了计算分配情况[53,54],可能存在更优化的设计。

从现在开始,我们将使用这个舞台计算比率。

将“stem”改为“Patchify”。

通常,干细胞的设计关注的是输入图像在网络的开始处将如何进行处理。由于自然图像中固有的冗余性,通常的干细胞会对输入图像进行积极的下采样,以得到适当的特征图大小,无论是在标准的ConvNets还是视觉Transformer中。标准ResNet中的干细胞包含一个7×7的步长为2的卷积层,然后是一个最大池化层,从而使输入图像的分辨率下降为原来的四分之一。在视觉Transformer中,干细胞使用了更加积极的“patchify”策略,对应于一个较大的核大小(例如核大小为14或16)和非重叠卷积。Swin Transformer使用了类似的“patchify”层,但使用了更小的4×4的补丁大小以适应该架构的多阶段设计。我们用一个4×4的步长为4的卷积层来实现“patchify”层,来替换ResNet风格的干细胞。精度从79.4%提高到了79.5%。这表明在ResNet中,干细胞可以被简单的“patchify”层(即ViT所使用的方式)所替代,并且会得到类似的性能。

我们将在网络中使用“patchify干细胞”(4×4的非重叠卷积)。

2.3.ResNeXt-ify

在这部分中,我们尝试采用ResNeXt [87]的思想,它在FLOPs/准确性权衡方面比简单的ResNet更好。核心组件是分组卷积,将卷积滤波器分离成不同的组。从高层次上看,ResNeXt的指导原则是“使用更多的组,扩展宽度”。更准确地说,ResNeXt在瓶颈块中采用了分组卷积来进行3×3卷积层。由于这显著减少了FLOPs,网络宽度被扩展以补偿容量损失。在我们的情况下,我们使用了深度卷积,这是分组卷积的一个特例,其中组数等于通道数。深度卷积被MobileNet [34]和Xception [11]广泛使用。我们注意到,深度卷积类似于自注意力中的加权求和操作,它在每个通道的基础上进行操作,即仅在空间维度中混合信息。深度卷积和1×1卷积的组合导致了空间和通道混合的分离,这是视觉Transformer所共享的特性,其中每个操作要么将信息在空间维度上混合,要么在通道维度上混合,而不是同时混合两者。深度卷积的使用有效地减小了网络的FLOPs并且正如预期的那样减小了准确性。按照ResNeXt提出的策略,我们将网络宽度增加到与Swin-T的通道数量相同(从64增加到96)。这将网络性能提升到80.5%,同时增加了FLOPs(5.3G)。

现在我们将采用ResNeXt设计。

2.4. 反向瓶颈

反向瓶颈设计是每个Transformer块中的一个重要设计,即MLP块的隐藏维度是输入维度的四倍(见图4)。有趣的是,这种Transformer设计与在ConvNets中使用的4倍扩张比率的反向瓶颈设计相连。这个想法是由MobileNetV2 [61]推广的,并随后在几个先进的ConvNet架构[70,71]中得到了推广。在这里,我们探索了反向瓶颈设计。图3(a)到(b)展示了配置情况。尽管深度卷积层的FLOPs增加了,但由于下采样残差块中的其余网络FLOPs的显著降低,整个网络FLOPs降低到了4.6G。有趣的是,这带来了稍微提高的性能(从80.5%到80.6%)。在ResNet-200 / Swin-B体系中,这一步骤带来了更大的增益(从81.9%到82.6%),同时FLOPs也减少了。

我们现在将使用反向瓶颈。

(图3.块修改和生成的规格。(a)是一个ResNeXt块;在(b)中我们创建了一个反向瓶颈块,在(c)中将空间深度卷积层的位置向上移动。 图3。块的修改和生成的规格。(a)是一个ResNeXt块;在(b)中我们创建了一个反向瓶颈块,在(c)中将空间深度卷积层的位置向上移动)

2.5.大卷积核

卷积核大小在这一部分的探索中,我们关注大卷积核的行为。视觉Transformer最与众不同的一个方面是它们的非局部自注意力,这使得每层都具有全局接受域。虽然在过去的卷积神经网络(ConvNets)中使用过大的核大小[40,68],但最佳选择(由VGGNet [65]所普及)是堆叠小的核大小(3×3)的卷积层,这在现代GPU上具有高效的硬件实现[41]。虽然Swin Transformer重新引入了局部窗口到自注意块中,但窗口大小至少为7×7,远大于ResNe(X)t核大小为3×3。在这里,我们重新考虑了在ConvNets中使用大核大小的卷积。

向上移动深度卷积层。

为了探索大的核,先决条件是将深度卷积层的位置向上移动(图3(b)到(c))。这也是Transformer中明显的设计决策:在MLP层之前放置MSA块。由于我们有一个倒置的瓶颈块,这是一个自然的设计选择-复杂/低效的模块(MSA、大核卷积)将具有较少的通道,而高效的1×1层将承担主要负担。这个中间步骤将FLOP减少到4.1G,导致临时性能下降到79.9%。

增加卷积核尺寸。

在进行了所有这些准备工作后,采用更大的卷积核尺寸的好处是显著的。我们尝试了几种卷积核尺寸,包括3、5、7、9和11。网络的性能从79.9%(3×3)提高到80.6%(7×7),而网络的FLOPs大致保持不变。此外,我们观察到较大卷积核尺寸的好处在7×7时达到了饱和点。在大容量模型中,我们也验证了这种行为:当我们将卷积核尺寸增加到7×7以上时,ResNet-200模型没有进一步的收益。

我们将在每个块中使用7×7的深度卷积。

在这一点上,我们已经完成了对网络架构的宏观考察。有趣的是,视觉Transformer中所做的设计选择中的一大部分可以映射到卷积神经网络的实例化中。

2.6. 微观设计

在本节中,我们在微观尺度上研究了几种其他体系结构的差异——在这里的大多数探索都是在层级上进行的,重点关注激活函数和归一化层的特定选择。

用GELU替换ReLU

NLP 和视觉体系结构之间的一个不同之处在于使用哪种激活函数的具体细节。随着时间的推移,出现了许多激活函数,但由于其简单性和效率,修正线性单元(ReLU)[49]在卷积网络中仍然广泛使用。ReLU也在原始Transformer论文[77]中作为激活函数使用。高斯误差线性单元(GELU)[32]可以看作是ReLU的一种更平滑的变体,它被用于最先进的Transformer模型,包括Google的BERT [18]和OpenAI的GPT-2[52],以及最近的ViTs。我们发现,在我们的卷积网络中,ReLU可以用GELU替代,尽管准确性保持不变(80.6%)。

较少的激活函数。

Transformer和ResNet块之间的一个小区别是Transformer具有较少的激活函数。考虑一个具有键/查询/值线性嵌入层、投影层和MLP块中的两个线性层的Transformer块。在MLP块中只有一个激活函数。相比之下,通常的做法是在每个卷积层中附加一个激活函数,包括1 × 1的卷积。在这里,我们将研究当我们坚持同样的策略时性能如何变化。如图4所示,我们从残差块中删除了除了两个1 × 1层之间一个之外的所有GELU层,模仿了Transformer块的风格。这个过程将结果提高了0.7%到81.3%,实际上与Swin-T的性能相当。

现在我们将在每个块中使用单个GELU激活函数。

较少的归一化层。

Transformer块通常也具有较少的归一化层。在这里,我们去掉了两个批归一化(BatchNorm)层,只保留了卷积1×1层前面的一个批归一化层。这进一步提升了性能,已经超过了Swin-T的结果,达到了81.4%。需要注意的是,我们每个块中的归一化层比Transformers还要少,实证上我们发现,在块的开头添加一个额外的批归一化层并不会改善性能。

用LN替代BN。

批归一化(BN)是ConvNets中的重要组成部分,它改善了收敛性和降低了过拟合。然而,BN也有许多细节问题,可能对模型的性能产生负面影响。已经有许多尝试开发替代的归一化技术,但在大多数视觉任务中,BN仍然是首选的选项。另一方面,简单的层归一化(LN)已经在Transformers中使用,取得了不错的性能,在不同的应用场景下表现出色。直接用LN替代BN在原始ResNet中会导致性能不佳。在网络架构和训练技术的所有修改中,我们重新考虑了在每个残差块中使用LN代替BN的影响。我们观察到我们的ConvNet模型在使用LN训练时没有任何困难;事实上,性能稍微更好,获得了81.5%的准确率。从现在开始,我们将使用一种LayerNorm作为我们的每个残差块的归一化选择。

(图4. ResNet、Swin Transformer和ConvNeXt的块设计。Swin Transformer的块由于多个专用模块和两个残差连接的存在而更复杂。为简单起见,我们将Transformer MLP块中的线性层也称为“1×1卷积”,因为它们是等效的。)

分离的降采样层。

在ResNet中,空间降采样是通过每个阶段开始的残差块实现的,使用3×3卷积核和步长2进行降采样(在快捷连接处使用1×1卷积核和步长2)。在Swin Transformers中,在各个阶段之间添加了一个独立的降采样层。我们探索了一种类似的策略,使用2×2卷积层和步长2进行空间降采样。这种修改意外地导致了训练发散。进一步的调查显示,在空间分辨率发生改变的地方添加归一化层可以帮助稳定训练。这包括在Swin Transformers中也使用的几个LN层:一个在每个降采样层之前,一个在stem之后,一个在最终的全局平均池化之后。我们可以将准确度提高到82.0%,明显超过Swin-T的81.3%。我们将使用单独的降采样层。这将引导我们来到我们的最终模型ConvNeXt。ResNet、Swin和ConvNeXt块结构的比较可以在图4中找到。ResNet-50、Swin-T和ConvNeXt-T的详细架构规格的比较可以在表格9中找到。

总结陈述。

我们已经完成了我们的第一个“游戏过程”,发现了ConvNeXt,一个纯粹的ConvNet,在这个计算环境中可以胜过Swin Transformer在ImageNet-1K分类中的表现。值得注意的是,目前讨论的所有设计选择都是从视觉Transformer中适应过来的。此外,这些设计在ConvNet的文献中并不新颖-在过去的十年里,它们都是独立研究的。我们的ConvNeXt模型在FLOPs,参数数量,吞吐量和内存使用上与Swin Transformer大致相同,但不需要特殊的模块,如移动窗口注意力或相对位置偏差。

这些发现是令人鼓舞的,但还不完全令人信服-到目前为止,我们的探索仅限于小规模,而视觉Transformer的扩展行为才是真正区别它们的特点。此外,一个ConvNet是否能在目标检测和语义分割等下游任务上与Swin Transformer竞争,是计算机视觉从业者关注的核心问题。在下一节中,我们将在数据和模型大小方面扩展我们的ConvNeXt模型,并在各种视觉识别任务上对其进行评估。

3.根据ImageNet的实证评估

我们构建了不同的ConvNeXt变种,ConvNeXtT/S/B/L,使其与Swin-T/S/B/L [45]具有相似的复杂度。ConvNeXt-T/B是对ResNet-50/200模型进行“现代化”处理后的最终产品。此外,我们构建了一个更大的ConvNeXt-XL来进一步测试ConvNeXt的可扩展性。这些变种仅在通道数C和每个阶段的块数B上有所区别。遵循ResNets和Swin Transformers的设计,每个新阶段的通道数翻倍。我们总结如下配置:

•ConvNeXt-T:C=(96;192;384;768),B=(3;3;9;3)

•ConvNeXt-S:C=(96;192;384;768),B=(3;3;27;3)

•ConvNeXt-B:C=(128;256;512;1024),B=(3;3;27;3)

•ConvNeXt-L:C=(192;384;768;1536),B=(3;3;27;3)

•ConvNeXt-XL:C=(256;512;1024;2048),B=(3;3;27;3)

3.1 设置

ImageNet-1K 数据集包含1000个物体类别和120万张训练图片。我们报告了在验证集上的ImageNet-1K top-1精度。我们还在ImageNet-22K上进行了预训练,这是一个更大的数据集,包含了21841个类别(是1000个ImageNet-1K类别的超集),有大约1400万张图片用于预训练,然后在ImageNet-1K上微调预训练模型进行评估。我们在下面总结了我们的训练设置。更多细节可以在附录A中找到。

在ImageNet-1K上的训练。

我们使用AdamW [46]优化器对ConvNeXts进行了300轮的训练,学习率为4e-3。其中有20轮的线性预热,之后采用余弦衰减的学习率调度。我们使用了批量大小为4096和权重衰减为0.05。对于数据增强,我们采用了常见的方案,包括Mixup [90]、Cutmix [89]、RandAugment [14]和Random Erasing [91]。我们使用了Stochastic Depth [37]和Label Smoothing [69]对网络进行正则化。应用初始值为1e-6的Layer Scale [74]。我们使用指数移动平均(EMA)[51],因为我们发现它减轻了大型模型的过拟合问题。

在ImageNet-22K上的预训练。

我们对ConvNeXts在ImageNet-22K上进行了90轮的预训练,其中包含5轮的预热。我们没有使用EMA。其他设置与ImageNet-1K相同。

在ImageNet-1K上的微调。

我们对ImageNet-22K上预训练的模型在ImageNet-1K上进行了30轮的微调。我们使用了AdamW优化器,学习率为5e-5,采用余弦学习率调度,层级学习率衰减[6,12],没有预热,批量大小为512,权重衰减为1e-8。默认的预训练、微调和测试分辨率为2242。此外,我们还在3842的较大分辨率上对ImageNet-22K和ImageNet-1K上预训练的模型进行了微调。

与ViTs/Swin Transformers相比,ConvNeXts更容易在不同分辨率下进行微调,因为网络是完全卷积的,不需要调整输入补丁大小或插值绝对/相对位置偏差。

3.2. ImageNet-1K的结果。

表格1(上部)展示了与最近两种Transformer变体DeiT [73]和Swin Transformers [45],以及来自架构搜索的两种ConvNets - RegNets [54],EfficientNets [71]和EfficientNetsV2 [72]的结果对比。从准确性和计算效率的角度来看,ConvNeXt与两个强大的ConvNet基线(RegNet [54]和EfficientNet [71])竞争激烈,以及推理吞吐量。相比于类似复杂度的Swin Transformer,ConvNeXt在全面性能上也有出色的表现,有时具有明显优势(例如,ConvNeXt-T为0.8%)。在没有像移位窗口或相对位置偏差这样的专门模块的情况下,ConvNeXt与Swin Transformers相比享有更高的吞吐量。

该结果的一个亮点是ConvNeXt-B在3842上的性能:它比Swin-B表现出优势,差距为0.6%(85.1%对84.5%),同时推理吞吐量高出12.5%(95.7对85.1张/秒)。我们注意到,在分辨率从2242增加到3842时,ConvNeXt B相对于Swin-B的FLOPs/吞吐量优势变得更大。此外,我们观察到,当进一步扩展到ConvNeXt-L.ImageNet-22K时,结果提高了85.5%。我们在表1(下方)展示了从ImageNet-22K预训练微调的模型的结果。这些实验很重要,因为广泛认为视觉Transformer具有更少的归纳偏差,因此在基于更大规模数据集进行预训练时可以表现更好。我们的结果表明,设计良好的ConvNeXts并不逊色于视觉Transformer,在预训练时使用大规模数据集时,ConvNeXts仍然表现相当或更好,且吞吐量略高。此外,我们的ConvNeXt-XL模型在3842上实现了87.8%的准确率,相对于ConvNeXt-L的改进较大,说明ConvNeXts具有可扩展性架构。在ImageNet-1K上,配备了高级模块(如Squeeze-and-Excitation [35])和渐进训练过程的EfficientNetV2-L,实现了最佳性能。然而,通过ImageNet-22K预训练,ConvNeXt能够超越EfficientNetV2,进一步证明了大规模训练的重要性。在附录B中,我们讨论了ConvNeXt的鲁棒性和域外泛化结果。

(表1. 在ImageNet-1K上的分类准确率。与Transformers类似,ConvNeXt在更高容量的模型和更大(预训练)数据集上展现出很有前景的扩展性行为。推断吞吐量是在V100 GPU上进行的测量,遵循文献[45]。在A100 GPU上,ConvNeXt的吞吐量可以比Swin Transformer更高。请参见附录E。通过与作者进行个人交流提供的具有90个epoch的AugReg [67]训练结果的(T)ViT)

3.3. 各向同性 ConvNeXt vs. ViT

在这个割弱实验中,我们检查了我们的ConvNeXt块设计是否适用于ViT风格的各向同性架构,这些架构没有下采样层并且在所有深度上保持相同的特征分辨率(例如14×14)。我们使用与ViT-S/B/L(384/768/1024)相同的特征维度构建各向同性的ConvNeXt-S/B/L。深度设置为18/18/36以匹配参数和计算量(FLOPs)的数量。块结构保持不变(图4)。我们使用DeiT的监督训练结果对ViT-S/B进行训练[73],使用MAE对ViT-L进行训练[26],因为它们在原始的ViTs [20]上采用了改进的训练过程。ConvNeXt模型使用与之前相同的设置进行训练,但是具有更长的预热周期。ImageNet-1K在2242分辨率下的结果如表2所示。我们观察到ConvNeXt在大致与ViT相当的水平上表现出色,表明我们的ConvNeXt块设计在非层次模型中具有竞争力。

(表2.比较各向同性ConvNeXt和ViT。训练内存使用32个每GPU批大小的V100 GPU进行测量)

(表3. 使用Mask-RCNN和级联Mask-RCNN进行的COCO目标检测和分割结果。其中,z表示该模型是在ImageNet-22K上进行了预训练。ImageNet-1K预训练的Swin结果来自于它们的GitHub存储库[3]。ResNet-50和X101模型的AP值来自[45]。我们在A100 GPU上测量FPS。FLOPs是根据图像尺寸(1280,800)计算的)

4.对下游任务的实证评估 目标检测和COCO数据集上的分割。我们使用ConvNeXt骨干网络在COCO数据集上微调Mask R-CNN [27]和Cascade Mask R-CNN [9]。在Swine Transformer [45]指导下,我们使用多尺度训练,AdamW优化器和3×调度。更多细节和超参数设置请参见附录A.3。表3显示了Swin Transformer、ConvNeXt和传统ConvNet(如ResNeXt)在目标检测和实例分割方面的表现。在不同模型复杂性下,ConvNeXt与Swin Transformer的表现相当,甚至更好。当扩展到在ImageNet-22K上预训练的更大模型(ConvNeXt-B/L/XL)时,ConvNeXt在箱子和掩码AP方面往往比Swin Transformer显著更好(例如,+1.0 AP)。

ADE20K上的语义分割。

我们还使用UperNet [85]在ADE20K语义分割任务上评估ConvNeXt骨干网络。所有模型变种训练了160K次迭代,批大小为16。其他实验设置遵循[6](更多细节请参见附录A.3)。在表4中,我们报告了多尺度测试的验证mIoU。ConvNeXt模型在不同的模型容量下都能取得竞争性的性能,进一步验证了我们的架构设计的有效性。

关于模型效率的评论。

在相似的FLOPs下,使用深度卷积的模型比仅使用密集卷积的ConvNet更慢且消耗更多内存。自然而然地,人们会问ConvNeXt的设计是否会使其在实际中变得低效。正如本文所示,ConvNeXt的推理吞吐量与Swin Transformer相比,无论是分类还是其他需要更高分辨率输入的任务,都是相当或超过的(请参见表1、3中吞吐量/FPS的比较)。此外,我们还注意到训练ConvNeXts所需的内存比训练Swin Transformer少。例如,使用ConvNeXt-B骨干训练级联Mask-RCNN的峰值内存消耗为17.4GB,每个GPU批大小为2,而Swin-B的参考数为18.5GB。与基本的ViT相比,ConvNeXt和Swin Transformer都在准确性和FLOPs之间展现出更有利的权衡,这归功于局部计算。值得注意的是,这种改进的效率是ConvNet的归纳偏差的结果,与视觉Transformer中的自注意机制无直接关系。

(表4 使用UperNet [85] 的ADE20K验证结果。z表示IN-22K预训练。Swins的结果来自其GitHub存储库[2]。在Swins之后,我们使用多尺度测试报告mIoU结果。FLOPs基于IN-1K和IN-22K预训练模型的输入尺寸(2048, 512)和(2560, 640))

5.相关工作混合模型。

在ViT出现之前和之后,将卷积和自注意力结合的混合模型一直受到积极研究。在ViT出现之前,重点是通过自注意力/非局部模块[8,55,66,79]增强ConvNet以捕捉远距离依赖关系。最初的ViT [20]首先研究了混合配置,后续大量的研究工作集中于重新引入具有卷积先验的ViT,无论是以显式[15,16,21,82,86,88]还是隐式[45]的方式。最近的基于卷积的方法。Han等人[25]表明,局部Transformer注意力等效于不均匀动态深度卷积。然后,Swin中的MSA块被动态或常规深度卷积所取代,实现了与Swin相当的性能。一项同时进行的研究ConvMixer [4]证明,深度卷积可以作为一种有前途的混合策略,在小规模环境中获得最佳结果。ConvMixer使用较小的补丁大小以实现最佳结果,使吞吐量远低于其他基准。GFNet [56]采用快速傅里叶变换(FFT)用于令牌混合。FFT也是一种卷积形式,但具有全局核大小和循环填充。不同于许多最近的Transformer或ConvNet设计,我们研究的一个主要目标是深入了解现代化标准ResNet的过程,并实现最先进的性能。

附录:

附录

在这个附录中,我们提供进一步的实验细节(§A),鲁棒性评估结果(§B),更多的现代化实验结果(§C)和详细的网络规格(§D)。我们还在A100 GPU上对模型吞吐量进行了基准测试(§E)。最后,我们讨论了我们的工作的局限性(§F)和社会影响(§G)。

A. 实验设置 A.1. ImageNet(预)训练

我们在表5中提供了ConvNeXt的ImageNet-1K训练和ImageNet-22K预训练设置。这些设置用于我们在表1中的主要结果(第3.2节)。所有ConvNeXt变体使用相同的设置,除了随机深度率针对模型变体进行了定制。

对于“现代化ConvNet”部分的实验(第2节),我们还是使用表5的ImageNet-1K设置,只是禁用了EMA,因为我们发现使用EMA会严重损害具有BatchNorm层的模型。对于各向同性的ConvNeXts(第3.3节),我们也采用了表A中ImageNet-1K的设置,但是将预热扩展到50个epochs,并且对于各向同性的ConvNeXt-S/B,禁用了层缩放。各向同性的ConvNeXt-S/B/L的随机深度率为0.1/0.2/0.5。

(表5.ImageNet-1K/22K(预)训练设置。每个模型(例如,ConvNeXt-T/S/B/L)分别设有多个随机深度比例(例如,0.1/0.4/0.5/0.5))

A.2. ImageNet微调

我们在表6中列出了在ImageNet-1K上微调的设置。微调从在预训练中获得的最终模型权重开始,不使用EMA权重,即使在预训练中使用了EMA并报告了EMA准确度。这是因为我们观察到,如果我们使用EMA权重进行微调,没有观察到改进(与[73]中的观察一致)。唯一的例外是在ImageNet-1K上预训练的ConvNeXt-L,该模型的准确度明显低于EMA准确度,这是由于过拟合造成的,并且我们选择其在预训练期间的最佳EMA模型作为微调的起点。在微调中,我们使用逐层学习率衰减[6,12],每3个连续的块形成一组。当模型在3842分辨率上进行微调时,在测试期间我们使用1.0的裁剪比例(即不裁剪),而不是在2242上使用0.875,遵循[2,74,80]的做法。

(表6. ImageNet-1K微调设置。多个数值(例如0.8/0.95)分别对应每个模型(例如ConvNeXt-B/L))

A.3.ADE20K和COCO实验的下游任务中,我们遵循BEiT [6]和Swin [45]中使用的训练设置。我们还使用了MMDetection [10]和MMSegmentation [13]工具包。我们使用Imagenet预训练的最终模型权重(而不是EMA权重)作为网络初始化。我们对COCO实验进行了轻量级扫描,包括学习率{1e-4,2e-4},层级学习率衰减[6]{0.7,0.8,0.9,0.95}和随机深度率{0.3,0.4,0.5,0.6,0.7,0.8}。我们使用相同的扫描在COCO上微调Imagenet-22K预训练的Swin-B/L模型。我们使用官方代码和预训练模型权重[3]。对于ADE20K实验,我们扫描的超参数包括学习率{8e-5,1e-4},层级学习率衰减{0.8,0.9}和随机深度率{0.3,0.4,0.5}。我们使用多尺度测试报告验证mIoU结果。附加的单尺度测试结果在表7中。

B. 鲁棒性评估

对ConvNeXt模型的健壮性评估进行了进一步的评估结果,见表8。我们直接在几个健壮性基准数据集上测试我们在ImageNet-1K上训练/微调的分类模型,如ImageNet-A [33]、ImageNet-R [30]、ImageNet-Sketch [78]和ImageNetC/C¯ [31,48]数据集。我们报告了ImageNet-C的平均损坏错误(mCE),ImageNet-C¯的损坏错误,和所有其他数据集的top-1准确率。ConvNeXt(特别是大规模模型变体)展示了具有潜力的健壮性行为,在几个基准测试中优于最先进的健壮性变压器模型[47]。通过额外的ImageNet-22K数据,ConvNeXtXL展示出强大的领域泛化能力(例如,在ImageNetA/R/Sketch基准测试中分别实现了69.3%/68.2%/55.0%的准确率)。值得注意的是,这些健壮性评估结果是在不使用任何专门的模块或额外的微调过程的情况下获得的。

C.现代化ResNets:详细结果

我们在ResNet-50 / Swin-T和ResNet-200 / Swin-B模式下提供了详细的表格化结果。表格10和11显示了每个步骤的ImageNet-1K top-1准确率和FLOPs。ResNet-50模式实验使用了3个随机种子。对于ResNet-200,在每个阶段的初始块数为(3,24,36,3)。在改变阶段比例的步骤中,我们将其改为Swin-B的(3,3,27,3),这极大地降低了FLOPs,因此同时,我们还将宽度从64增加到84,以保持FLOPs在类似水平上。在采用深度卷积的步骤之后,我们进一步将宽度增加到128(与Swin-B相同)作为一个独立的步骤。对于ResNet-200的观察结果在大部分情况下与主论文中对ResNet-50的描述相一致。一个有趣的差异是,倒转维度在ResNet-200模式下比在ResNet-50模式下有更大的改进(+0.79% vs. +0.14%)。通过增加内核大小获得的性能提升似乎在内核大小为5时饱和,而不是7。与ResNet-50模式相比,使用较少的归一化层也带来了更大的收益(+0.46% vs. +0.14%)。

D.详细架构

我们在表9中对ResNet-50、ConvNeXt-T和Swin-T进行了详细的架构比较。对于不同尺寸的ConvNeXts,仅块的数量和每个阶段的通道数与ConvNeXt-T有所不同(有关详细信息,请参见第3节)。ConvNeXts在视觉识别方面与标准ConvNets相比简单易用,但与Swin Transformers具有竞争力。

E.在A100 GPU上进行基准测试

基于Swin Transformer [45],我们对表1中的ImageNet模型进行了基于V100 GPU的基准测试,其中ConvNeXt在推理方面略快于Swin Transformer,但参数数量相似。我们现在在更先进的A100 GPU上进行了基准测试,该GPU支持TensorFloat32 (TF32)张量核心。我们采用PyTorch [50]版本1.10,并使用最新的“通道最后”内存布局 [22]来进一步提高速度。我们在表12中呈现了结果。Swin Transformers和ConvNeXts的推理吞吐量都超过了V100 GPU,但ConvNeXts的优势现在显著增加,有时提高了多达49%。这项初步研究显示,ConvNeXt采用标准的ConvNet模块和简单的设计,在现代硬件上可能是更高效的模型。

F.限制:

我们展示了一种纯ConvNet模型ConvNeXt,在图像分类、目标检测、实例分割和语义分割任务上可以达到与分层视觉Transformer相当的效果。虽然我们的目标是提供一系列广泛的评估任务,但我们也意识到计算机视觉应用的多样性更加广泛。在某些任务中,ConvNeXt可能更适合,而Transformer在其他任务中可能更灵活。一个例子是多模态学习,在这种情况下,跨注意力模块可能更适合用于建模多个模态之间的特征交互。此外,当用于需要离散化、稀疏或结构化输出的任务时,Transformer可能更灵活。我们认为架构选择应该符合任务需要,同时追求简单性。

G.社会影响:

在2020年代,关于视觉表达学习的研究开始对计算资源提出巨大需求。虽然更大的模型和数据集在各个方面提高了性能,但也带来了一系列挑战。ViT、Swin和ConvNeXt在它们庞大的模型变体上表现最佳。对这些模型设计的研究必然导致碳排放的增加。一个重要的方向和我们论文的动机之一就是力求简单——更复杂的模块会极大地扩展网络的设计空间,掩盖了对性能差异贡献最重要的关键组件。此外,庞大的模型和数据集在模型的稳健性和公平性方面也存在问题。进一步探究ConvNeXt与Transformer的稳健性行为将是一个有趣的研究方向。在数据方面,我们的发现表明ConvNeXt模型从大规模数据集的预训练中受益。虽然我们的方法利用了公开可得的ImageNet-22K数据集,但个人可能希望获取自己的数据进行预训练。需要采取更谨慎和负责任的数据选择方法,避免可能存在的数据偏见引发的担忧。

总结

6.结论在2020年代,特别是层次化的视觉Transformer(如Swin Transformer)开始取代卷积神经网络(ConvNets)成为通用视觉主干的首选。普遍认为,相比ConvNets,视觉Transformer更准确、高效和可扩展。我们提出了ConvNeXts,这是一个纯卷积神经网络模型,可以在多个计算机视觉基准测试中与最先进的层次化视觉Transformer竞争,并保留了标准卷积神经网络的简洁和高效。在某些方面,我们的观察结果令人惊讶,而我们的ConvNeXt模型本身并不是完全新颖的——过去十年中许多设计选择都已经进行了单独的研究,但从未被整体考虑过。我们希望这项研究中报道的新结果能够挑战一些普遍认为的观点,并促使人们重新思考卷积在计i算机视觉中的重要性。

第十六章 ConvNeXt网络详解相关推荐

  1. 深度学习之图像分类(二十六)-- ConvMixer 网络详解

    深度学习之图像分类(二十六)ConvMixer 网络详解 目录 深度学习之图像分类(二十六)ConvMixer 网络详解 1. 前言 2. A Simple Model: ConvMixer 2.1 ...

  2. 深度学习之图像分类(二十五)-- S2MLPv2 网络详解

    深度学习之图像分类(二十五)S2MLPv2 网络详解 目录 深度学习之图像分类(二十五)S2MLPv2 网络详解 1. 前言 2. S2MLPv2 2.1 S2MLPv2 Block 2.2 Spat ...

  3. PHP之十六个魔术方法详解 转自:青叶

    目录 PHP之十六个魔术方法详解 前言 范例 〇.__serialize() 和 __unserialize() 一. __construct(),类的构造函数 二.__destruct(),类的析构 ...

  4. 十六、MySQL 视图详解

    文章目录 一.常见的数据库对象 二.视图概述 2.1 为什么要使用视图? 2.2 视图的理解 2.3 视图的作用 三.视图常用操作 3.1 查看创建视图的权限 3.2 创建视图 3.3 查看视图 3. ...

  5. DevOps实战系列【第六章】:详解Docker私服Nexus3篇

    个人亲自录制全套DevOps系列实战教程 :手把手教你玩转DevOps全栈技术 概述/目标 私服我们很熟悉了,比如docker hub就是官方私服,而有些情况比如我们自建的镜像,不想往外传,就需要考虑 ...

  6. ConvNeXt网络详解

    ConvNeXt 论文名称:A ConvNet for the 2020s 论文下载链接:https://arxiv.org/abs/2201.03545 论文对应源码链接:https://githu ...

  7. PHP之十六个魔术方法详解

    前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destr ...

  8. [k8s] 第六章 Pod控制器详解(Controller-manager)

    本章节主要介绍各种Pod控制器的详细使用. Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kuberne ...

  9. TiDB 源码阅读系列文章(十六)INSERT 语句详解

    在之前的一篇文章 <TiDB 源码阅读系列文章(四)INSERT 语句概览> 中,我们已经介绍了 INSERT 语句的大体流程.为什么需要为 INSERT 单独再写一篇?因为在 TiDB ...

最新文章

  1. MongoDB主从复制介绍(转)
  2. onethink的熟悉
  3. 数学本是非常有趣的,只是教科书呈现的方式太死板
  4. 将字符串添加负数_Go语言实现LeetCode算法:8 字符串转整数
  5. Unity3D 优化相关
  6. javascript取随机数_一些常用Javascript 小技巧,值得你关注
  7. iOS之基于FreeStreamer的简单音乐播放器(模仿QQ音乐)
  8. 预培训个人项目(地铁线路规划)
  9. 快速使用 Tensorflow 读取 7 万数据集!
  10. AppCan移动平台,开发者是这样用的……
  11. OpenERP工作流不同角色看属于自己审批的方法
  12. 马踏棋盘(骑士周游问题)
  13. html里面判断字段显示,HTML特殊字符显示
  14. 《App后台开发运维和架构实践》前言
  15. 工具-常识-证件照使用底色的RGB,红白蓝底色,护眼色
  16. [ahk]解析大智慧自选股blk文件中的股票代码
  17. html怎么搞一个微信图标,微信图标怎么点亮 两步搞定!
  18. 推荐几个容易中的计算机EI源刊(基本百发百中)
  19. 硬石YS-F1Pro开发板HAL库例程持续更新\2. 软件设计之高级裸机例程(HAL库版本)\YSF1_HAL-121. MH-Z14A二氧化碳传感器模块
  20. 怎么下载全国省市县行政区划边界

热门文章

  1. LFSR python实现
  2. [51nod1743]雪之国度
  3. 二十八、安全的用网行为
  4. Kettle数据的导入导出—批量Excel表到数据库
  5. Java API学习(二)javax包
  6. usbasp 和usbisp
  7. 荣耀手机缅甸仰光店开业,只有我觉得缅甸美女比较多吗?
  8. 名帖106 张即之 楷书《书杜诗卷》
  9. 一站式清理垃圾——MacBooster 7 Pro Mac可以做到!
  10. ES6/ES7新特性