论文链接:https://arxiv.org/abs/2201.03545
项目链接:https://github.com/facebookresearch/ConvNeXt
视觉识别的“咆哮的20年代”始于视觉Transformer(ViT)的引入,它很快取代了卷积神经网络,成为最先进的图像分类模型。另一方面,vanilla ViT在应用于一般的计算机视觉任务(如对象检测和语义分割)时面临困难。分层Transformer(例如,Swin Transformer)重新引入了几个卷积神经网络先验,使Transformer作为通用视觉主干实际上可行,并在各种视觉任务上表现出卓越的性能。然而,这种混合方法的有效性仍然很大程度上归功于Transformer的内在优势,而不是卷积固有的归纳偏差。在这项工作中,我们重新审视了设计空间,并测试了纯卷积神经网络所能达到的极限。我们逐渐将标准ResNet“现代化”,以实现视觉Transformer的设计,并在此过程中发现了几个导致性能差异的关键组件。这一探索的结果是一组被称为ConvNeXt的纯ConvNet模型。ConvNeXt完全由标准ConvNet模块构建,在精度和可扩展性方面与Transformer竞争,达到87.8%的ImageNet top-1精度,在COCO检测和ADE20K分割方面优于Swin transformer,同时保持了标准ConvNet的简单性和效率。
回顾2010年代,这十年的特点是深度学习取得了巨大的进步和影响。主要的驱动因素是神经网络的复兴,特别是卷积神经网络(ConvNet)。近十年来,视觉识别领域成功地从工程特征转向设计(卷积神经网络)架构。尽管反向传播训练ConvNet的发明可以追溯到20世纪80年代[42],但直到2012年末,我们才看到它在视觉特征学习方面的真正潜力。AlexNet的引入[40]促成了“ImageNet时刻”[59],开启了计算机视觉的新时代。此后,这一领域迅速发展。VGGNet[64]、Inception[68]、ResNe(X)t[28,87]、DenseNet[36]、MobileNet[34]、Effentnet[71]和RegNet[54]等代表性的卷积神经网络侧重于准确性、效率和可扩展性的不同方面,并推广了许多有用的设计原则。
卷积神经网络在计算机视觉领域的完全统治地位并非巧合:在许多应用场景中,“滑动窗口”策略是视觉处理的内在特征,特别是在处理高分辨率图像时。卷积神经网络有几个内置的归纳偏差,使它们非常适合各种各样的计算机视觉应用。其中最重要的是平移等变性(translation equivariance),这是目标检测等任务所需的特性。卷积神经网络本身也是高效的,因为当以滑动窗口的方式使用时,计算是共享的[62]。几十年来,这一直是卷积神经网络的默认用途,通常用于有限的对象类别,如数字[43]、人脸[58,76]和行人[19,63]。进入2010年代,基于区域的检测器[23,24,27,57]进一步将卷积神经网络提升到视觉识别系统的基本构建模块的地位。
大约在同一时间,用于自然语言处理(NLP)的神经网络设计的探索过程走上了一条非常不同的道路,因为Transformer取代了循环神经网络,成为占主导地位的骨干架构。尽管语言和视觉领域之间的兴趣任务存在差异,但随着视觉Transformer(ViT)的引入彻底改变了网络架构设计的格局,这两个流在2020年出人意料地融合在一起。除了初始的“patchify”层(将图像分割成一系列补丁)之外,ViT没有引入特定于图像的感应偏置,并且对原始NLP Transformer进行了最小的更改。ViT的一个主要焦点是缩放行为:在更大的模型和数据集大小的帮助下,Transformer可以大大优于标准Resnet。这些在图像分类任务上的结果是鼓舞人心的,但计算机视觉并不局限于图像分类。如前所述,在过去十年中,许多计算机视觉任务的解决方案在很大程度上依赖于滑动窗口,全卷积范式。如果没有ConvNet的归纳偏差,vanilla ViT模型在被采用为通用视觉主干方面面临许多挑战。最大的挑战是ViT的全局注意力设计,其复杂度相对于输入大小是二次的。这对于ImageNet分类可能是可以接受的,但是对于更高分辨率的输入很快就变得棘手了。
分层Transformer采用混合方法来弥补这一差距。例如,“滑动窗口”策略(例如,局部窗口内的注意力)被重新引入到Transformer中,使它们的行为更类似于卷积神经网络。Swin Transformer[45]是该方向的里程碑式工作,首次证明了Transformer可以作为通用视觉主干,并在图像分类以外的一系列计算机视觉任务中实现最先进的性能。Swin Transformer的成功和迅速普及也揭示了一件事:卷积的本质并没有变得无关紧要;相反,它仍然很受欢迎,从未逐渐消失。
从这个角度来看,Transformer在计算机视觉方面的许多进步都旨在恢复卷积。然而,这些尝试是有代价的:滑动窗口自注意的缺乏经验的实现可能是昂贵的[55];采用循环移位等先进方法[45],可以优化速度,但系统在设计上变得更加复杂。另一方面,具有讽刺意味的是,卷积神经网络已经满足了许多期望的属性,尽管是以一种直接的、没有多余的方式。卷积神经网络似乎失去动力的唯一原因是(分层)Transformer在许多视觉任务中超过了它们,而性能差异通常归因于Transformer优越的缩放行为,多头自关注是关键组成部分。
与过去十年中逐步改进的卷积神经网络不同,视觉Transformer的采用是一个步骤变化。在最近的文献中,在比较两者时通常采用系统级比较(例如Swin Transformer vs. ResNet)。卷积神经网络和层次 视觉Transformer同时变得不同和相似:它们都具有相似的归纳偏差,但在训练过程和宏观/微观层面的架构设计上有很大的不同。在这项工作中,我们研究了ConvNet和Transformer之间的架构差异,并试图在比较网络性能时识别混淆变量。我们的研究旨在弥合前ViT和后ViT时代之间的差距,以及测试纯ConvNet所能达到的极限。
要做到这一点,我们从一个标准的ResNet(例如ResNet50)开始,用改进的程序进行训练。我们逐渐将体系结构“现代化”,以构建一个分层视觉Transformer(例如Swin-T)。我们的探索是由一个关键问题引导的:Transformer中的设计决策如何影响卷积神经网络的性能?我们发现了几个导致性能差异的关键组件。因此,我们提出了一个纯卷积神经网络家族,称为ConvNeXt。我们在各种视觉任务上评估ConvNeXt,如ImageNet分类[17],COCO上的对象检测/分割[44],ADE20K上的语义分割[92]。令人惊讶的是,ConvNeXt完全由标准ConvNet模块构建,在所有主要基准测试中,在准确性、可扩展性和鲁棒性方面都能与Transformer竞争。ConvNeXt保持了标准ConvNet的效率,并且训练和测试的全卷积性质使其非常容易实现。
我们希望新的观察和讨论能够挑战一些普遍的信念,并鼓励人们重新思考卷积在计算机视觉中的重要性。
在本节中,我们提供了一个从ResNet到ConvNet的轨迹,它与Transformer类似。我们在FLOPs方面考虑了两种模型尺寸,一种是FLOPs约为4.5×109的ResNet-50 / Swin-T体系,另一种是FLOPs约为15.0 ×109的ResNet-200 / Swin-B体系。为简单起见,我们将使用ResNet-50 / Swin-T复杂性模型来展示结果。高容量模型的结论是一致的,结果见附录C。
在高层次上,我们的探索旨在调查和遵循Swin Transformer的不同设计级别,同时保持网络作为标准ConvNet的简单性。我们探索的路线图是这样的,我们的起点是一个ResNet-50模型。我们首先使用与训练 视觉Transformer类似的训练技术对其进行训练,并获得比原始ResNet-50更好的结果。这是我们的基线。然后,我们研究了一系列设计决策,我们将其总结为1) 宏观设计,2) ResNeXt, 3) 反向bottleneck,4) 大核尺寸,以及5) 各种分层微设计。在图2中,我们展示了“网络现代化”的每个步骤能够实现的过程和结果。由于网络复杂性与最终性能密切相关,因此FLOPs在整个探索过程中大致受到控制,尽管在中间步骤中FLOPs可能高于或低于参考模型。所有模型都在ImageNet-1K上进行训练和评估。
除了网络体系结构的设计,训练过程也会影响最终的性能。视觉Transformer不仅带来了一套新的模块和架构设计决策,而且还引入了不同的训练技术(例如AdamW优化器)。这主要与优化策略和相关的超参数设置有关。因此,我们探索的第一步是用视觉Transformer训练过程训练基线模型,在本例中为ResNet50/200。最近的研究[7,81]表明,一组现代训练技术可以显著提高简单ResNet-50模型的性能。在我们的研究中,我们使用了一个接近DeiT[73]和Swin Transformer[45]的训练配方。ResNet的训练从原来的90个epoch扩展到300个epoch。我们使用AdamW优化器[46]、数据增强技术,如Mixup[90]、Cutmix[89]、RandAugment[14]、Random erase[91],以及正则化方案,包括随机深度[36]和标签平滑[69]。我们使用的超参数的完整集合可以在附录A.1中找到。就其本身而言,这种增强的训练配方将ResNet-50模型的性能从76.1%[1]提高到78.8%(+2.7%),这意味着传统ConvNet和视觉Transformer之间的性能差异很大一部分可能是由于训练技术。我们将在整个“现代化”过程中使用具有相同超参数的固定训练配方。在ResNet-50方案中,每个报告的准确率都是通过使用三种不同的随机种子进行训练获得的平均值。
现在我们分析Swin Transformer的宏观网络设计。Swin tTransformer遵循ConvNet[28,65]使用多级设计,其中每级具有不同的特征图分辨率。有两个有趣的设计考虑:阶段计算比率和“stem cell”结构。
改变阶段计算比率。在ResNet中,跨阶段计算分布的原始设计在很大程度上是经验的。沉重的“res4”阶段意味着与下游任务兼容,如物体检测,其中检测器头在14×14特征平面上操作。另一方面,Swin-T遵循相同的原理,但阶段计算比例略有不同,为1:1:3:1。对于较大的Swin Transformer,比例为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”。通常情况下,stem cell设计关注的是如何在网络开始时处理输入图像。由于自然图像中固有的冗余性,在标准ConvNet和视觉Transformer中,普通stem cell将积极地将输入图像下采样到适当的特征图大小。标准ResNet中的stem cell包含一个stride为2的7×7卷积层,然后是一个max池,这导致输入图像的4倍下采样。在视觉Transformer中,一种更激进的“修补”策略被用作stem cell,它对应于一个大的核尺寸(例如,核大小= 14或16)和非重叠卷积。Swin Transformer使用了类似的“patch”层,但为了适应架构的多阶段设计,使用了较小的4个patch大小。我们将ResNet风格的stem cell替换为使用4×4,跨步4卷积层实现的patch层。准确率从79.4%提高到79.5%。这表明ResNet中的stem cell可以用更简单的“补patch”层(如ViT)代替,这将产生类似的性能。
我们将在网络中使用“patchify stem”(4×4非重叠卷积)。
在这一部分中,我们尝试采用ResNeXt[87]的想法,它比普通ResNet具有更好的FLOPs/精度权衡。核心组件是分组卷积,其中卷积滤波器被分成不同的组。在高层次上,ResNeXt的指导原则是“多用组,扩大宽度”。更准确地说,ResNeXt在bottleneck块中的3×3卷积层使用分组卷积。由于这大大减少了FLOPs,因此可以扩展网络宽度以补偿容量损失。
在我们的例子中,我们使用深度卷积,这是分组卷积的一种特殊情况,其中分组的数量等于通道的数量。深度卷积已经被MobileNet[34]和Xception[11]推广。我们注意到深度卷积类似于自注意力中的加权和运算,它在每个通道的基础上操作,即只混合空间维度的信息。深度卷积和1 × 1卷积的结合导致了空间和通道混合的分离,这是视觉Transformer所共有的特性,其中每个操作要么跨空间维度混合信息,要么跨通道维度混合信息,但不能同时混合信息。深度卷积的使用有效地降低了网络的FLOPs,并如预期的那样提高了精度。按照ResNeXt中提出的策略,我们将网络宽度增加到与Swin-T相同的通道数量(从64个增加到96个)。这使得网络性能达到80.5%,FLOPs增加(5.3G)。
现在我们将采用ResNeXt设计。
每个Transformer块中的一个重要设计是,它创建了一个反向bottleneck,即MLP块的隐藏尺寸比输入尺寸宽四倍(参见图4)。有趣的是,这种Transformer设计与卷积网络中使用的扩展比为4的倒瓶颈设计相连接。这个想法是由MobileNetV2推广的[61],随后在几个先进的ConvNet架构中获得了牵引性[70,71]。
在这里,我们探讨反向bottleneck设计。图3 (a)到(b)说明了这些配置。尽管深度卷积层的FLOPs增加了,但这一变化使整个网络的FLOPs减少到4.6G,这是由于下采样残差块的快捷方式1×1卷积层的FLOPs显著减少。有趣的是,这会略微提高性能(从80.5%提高到80.6%)。在ResNet-200 / Swin-B方案中,这一步骤带来了更多的增益(81.9%至82.6%),并且FLOPs也降低了。
现在我们将使用反向bottleneck。
在这一部分的探索中,我们专注于大卷积核的行为。视觉Transformer最显著的特点之一是它们的非局部自注意力,这使得每一层都有一个全局的感受野。虽然大核尺寸在过去已经被用于卷积神经网络[40,68],但黄金标准(由VGGNet[65]推广)是堆栈小的核大小的卷积层(3×3),这在现代GPU上具有高效的硬件实现[41]。虽然Swin Transformer在自注意力块中重新引入了局部窗口,但窗口大小至少为7×7,明显大于ResNe(X)t核大小3×3。在这里,我们重新审视大核卷积在卷积网络中的使用。
向上移动深度卷积层。要探索大核,一个先决条件是将深度卷积层的位置向上移动(图3 ( b )到( c ))。这是一个设计决策,在Transformer中也很明显:MSA块被放置在MLP层之前。由于我们有一个反向bottleneck块,这是一个自然的设计选择——复杂/低效的模块(MSA,大核卷积)将拥有更少的通道,而高效、密集的1×1层将完成繁重的工作。这个中间步骤将FLOPs减少到4.1G,导致暂时的性能下降到79.9%。
增加核尺寸。有了所有这些准备工作,采用更大的核大小卷积的好处是显著的。我们试验了几种核大小,包括3、5、7、9和11。网络的性能从79.9% (3×3)增加到80.6% (7×7),而网络的flop大致保持不变。此外,我们观察到更大核尺寸的好处在7×7达到饱和点。我们也在大容量模型中验证了这种行为:当我们将核大小增加到7×7以上时,ResNet-200状态模型不会显示出进一步的增益。
我们将在每个块中使用7×7深度卷积。
至此,我们已经结束了对宏观网络架构的考察。有趣的是,在视觉Transformer中采取的设计选择的重要部分可能映射到ConvNet实例。
在本节中,我们将在微观尺度上研究其他几种架构差异——这里的大多数探索都是在层级别上完成的,重点是激活函数和规范化层的具体选择。
用GELU代替ReLU NLP和视觉体系结构之间的一个差异是使用哪种激活函数的细节。随着时间的推移,已经开发了许多激活函数,但由于其简单和高效,整流线性单元(ReLU)[49]仍然广泛用于卷积神经网络。在Transformer的原始论文[77]中,ReLU也被用作激活函数。高斯误差线性单元,或GELU[32],它可以被认为是ReLU的一个更平滑的变体,被用于最先进的Transformer,包括Google的BERT[18]和OpenAI的GPT-2[52],以及最近的vViT。我们发现在我们的ConvNet中,ReLU也可以用GELU代替,尽管准确率保持不变(80.6%)。
更少的激活函数。Transformer和ResNet块之间的一个小区别是Transformer具有较少的激活函数。考虑一个Transformer块,它具有键/查询/值线性嵌入层、投影层和MLP块中的两个线性层。在MLP块中只有一个激活函数。相比之下,通常的做法是为每个卷积层附加一个激活函数,包括1×1卷积。在这里,我们将研究当我们坚持相同的策略时,性能是如何变化的。如图4所示,除了两个1×1层之间的一个层,我们从残差块中消除了所有的GELU层,复制了Transformer块的样式。该工艺将结果提高了0.7%至81.3%,几乎与Swin-T的性能相当。
现在,我们将在每个块中使用单个GELU激活。
更少的归一化层。Transformer块通常也有更少的归一化层。这里我们移除两个BatchNorm (BN)层,在1 × 1卷积层之前只留下一个BN层。这进一步将性能提高到81.4%,已经超过了Swin-T的结果。请注意,我们每个块的归一化层甚至比Transformers更少,因为根据经验,我们发现在块的开头添加一个额外的BN层并不能提高性能。
用LN代替BN。BatchNorm[38]是ConvNet的重要组成部分,因为它提高了收敛性并减少了过拟合。然而,BN也有许多复杂性,可能对模型的性能产生不利影响[84]。已经有许多尝试开发替代归一化技术[60,75,83],但BN仍然是大多数视觉任务的首选。另一方面,更简单的层归一化[5] (LN)已经在Transformer中使用,在不同的应用场景中都有很好的性能。
在原始ResNet中直接用LN代替BN会导致性能次优[83]。随着网络架构和训练技术的所有修改,这里我们重新审视使用LN代替BN的影响。我们观察到我们的ConvNet模型在LN训练中没有任何困难;实际上,性能稍微好一些,获得了81.5%的准确率。
从现在开始,我们将在每个残差块中使用一个LayerNorm作为我们的归一化选择。
分离下采样层。在ResNet中,空间下采样是通过每个阶段开始时的残差块实现的,使用3×3 卷积和步幅2(在快捷连接处使用1×1 卷积和步幅2)。在Swin Transformer中,在各阶段之间添加了一个单独的下采样层。我们探索了一个类似的策略,其中我们使用2×2卷积层,步幅为2,用于空间下采样。这种修改令人惊讶地导致了发散训练。进一步的研究表明,在空间分辨率发生变化的地方添加归一化层可以帮助稳定训练。这包括在Swin transformer中也使用的几个LN层:在每个下采样层之前一个,在系统之后一个,在最终的全局平均池化之后一个。我们可以将准确率提高到82.0%,显著超过Swin-T的81.3%。
我们将使用单独的下采样层。这就引出了我们的最后一个模型,我们称之为ConvNeXt。
ResNet、Swin和ConvNeXt块结构的比较可以在图4中找到。ResNet-50、Swin-T和ConvNeXt-T的详细体系结构规范的比较见表9。
Closing remarks。我们已经完成了第一个“playthrough”,并发现了ConvNeXt,这是一个纯ConvNet,在这种计算机制下,它可以在ImageNet-1K分类方面胜过Swin Transformer。值得注意的是,到目前为止讨论的所有设计选择都改编自视觉Transformer。此外,即使在卷积神经网络文献中,这些设计也并不新颖——在过去的十年中,它们都是单独研究的,而不是一起研究的。我们的ConvNeXt模型具有大致相同的FLOPs, #params.,吞吐量和内存使用的Swin Transformer,但不需要专门的模块,如移位窗口注意或相对位置偏差。
这些发现令人鼓舞,但还不能完全令人信服——我们的探索到目前为止还局限于小范围,但视觉Transformer的缩放行为是它们真正的区别。此外,卷积神经网络能否在下游任务(如目标检测和语义分割)上与Swin transformer竞争是计算机视觉从业者关注的中心问题。在下一节中,我们将在数据和模型大小方面扩大我们的ConvNeXt模型,并在不同的视觉识别任务集上对它们进行评估。
我们构建了不同的ConvNeXt变体,ConvNeXtT/S/B/L,其复杂性与Swin-T/S/B/L相似[45]。ConvNeXt-T/B分别是ResNet-50/200制度“现代化”应用的最终产品。此外,我们构建了一个更大的ConvNeXt-XL来进一步测试ConvNeXt的可扩展性。变体只是在每个阶段的通道C的数量和块B的数量上有所不同。继ResNet和Swin Transformer之后,每个新阶段的通道数量都会翻倍。我们总结如下配置:
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)
ImageNet-1K数据集由1000个对象类和1.2M张训练图像组成。我们在验证集上报告了ImageNet-1K的top-1精度。我们还在ImageNet-22K上进行预训练,ImageNet-22K是一个包含21841个类的更大数据集(1000个ImageNet-1K类的超集),使用约14M张图像进行预训练,然后在ImageNet-1K上微调预训练模型进行评估。我们在下面总结我们的训练设置。详情见附录A。
ImageNet-1K的训练。我们使用AdamW[46]训练ConvNeXts 300个epoch,学习率为4e-3。有一个20 epoch的线性预热和余弦衰减时间表之后。我们使用批量大小为4096,权重衰减为0.05。对于数据增强,我们采用了常见的方案,包括Mixup[90]、Cutmix[89]、RandAugment[14]和Random erase[91]。我们使用随机深度[37]和标签平滑[69]对网络进行正则化。应用初始值为1e-6的Layer Scale[74]。我们使用指数移动平均线(EMA)[51],因为我们发现它缓解了较大模型的过拟合。
ImageNet-22K的预训练。我们在ImageNet-22K上预训练ConvNeXts 90次,预热5次。我们不使用EMA。其他设置遵循ImageNet-1K。
ImageNet-1K的微调。我们在ImageNet-1K上对ImageNet22K预训练模型进行了30个epoch的微调。我们使用AdamW,学习率为5e-5,余弦学习率调度,分层学习率衰减[6,12],无预热,批大小为512,权值衰减为1e-8。默认的预训练、微调和测试分辨率是2242。此外,对于ImageNet-22K和ImageNet-1K预训练模型,我们在3842的更大分辨率下进行微调。
与ViT/Swin Transformer相比,ConvNeXt在不同分辨率下更容易微调,因为网络是全卷积的,不需要调整输入patch大小或插入绝对/相对位置偏差。
ImageNet-1K。表1(上)显示了两个最近的Transformer变体DeiT[73]和Swin Transformer[45]的结果比较,以及来自架构搜索的两个ConvNet—RegNets[54]、EfficientNets[71]和EfficientNetsV2[72]。在精度-计算权衡以及推理吞吐量方面,ConvNeXt与两个强大的ConvNet基线(RegNet[54]和EfficientNet[71])竞争有利。ConvNeXt也全面优于类似复杂性的Swin Transformer,有时有相当大的幅度(例如ConvNeXt-T为0.8%)。没有专门的模块,如移位窗口或相对位置偏置,与Swin Transformer相比,ConvNeXt还享有更高的吞吐量。
结果中的一个亮点是3842的ConvNeXt-B:它比Swin-B高0.6%(85.1%对84.5%),但推理吞吐量高12.5%(95.7对85.1图像/s)。我们注意到,当分辨率从2242增加到3842时,ConvNeXtB比Swin-B的FLOPs/吞吐量优势变得更大。此外,当进一步缩放到ConvNeXt-L时,我们观察到85.5%的改进结果。
ImageNet-22K。我们在表1(下)中展示了从ImageNet-22K预训练中微调的模型的结果。这些实验很重要,因为一个广泛持有的观点是,视觉Transformer有更少的归纳偏差,因此在更大的规模上进行预训练时,可以比卷积神经网络表现得更好。我们的结果表明,当使用大型数据集进行预训练时,适当设计的卷积神经网络并不逊于视觉Transformer——卷积神经网络的性能仍然与类似大小的Swin Transformer相当或更好,吞吐量略高。此外,我们的ConvNeXt-XL模型达到了87.8%的准确率——比ConvNeXt-L的3842有了很大的提高,这表明ConvNeXt是可扩展的架构。
在ImageNet-1K、EfficientNetV2-L上,配备了高级模块(如Squeeze-and-Excitation[35])和渐进式训练程序的搜索架构达到了最高的性能。然而,通过ImageNet-22K预训练,ConvNeXt能够胜过EfficientNetV2,进一步证明了大规模训练的重要性。
在附录B中,我们讨论了ConvNeXt的鲁棒性和域外泛化结果。
在这个消融中,我们检查我们的ConvNeXt块设计是否可推广到viti风格[20]的各向同性架构,该架构没有下采样层,并在所有深度保持相同的特征分辨率(例如14×14)。我们使用与ViT-S/B/L(384/768/1024)相同的特征维度构建了各向同性的ConvNeXt-S/B/L。深度设置为18/18/36,以匹配参数数量和FLOPs。块结构保持不变(图4)。我们对ViT-S/B使用DeiT[73]的监督训练结果,对ViT-L使用MAE[26]的监督训练结果,因为它们采用了比原始ViT[20]改进的训练程序。ConvNeXt模型使用与以前相同的设置进行训练,但预热时间更长。2242分辨率下ImageNet-1K的结果如表2所示。我们观察到ConvNeXt的性能与ViT相当,这表明我们的ConvNeXt块设计在非分层模型中具有竞争力。
我们在带有ConvNeXt主干的COCO数据集上对Mask R-CNN[27]和Cascade Mask R-CNN[9]进行了微调。继Swin Transformer[45]之后,我们使用了多尺度训练、AdamW优化器和3x时间表。进一步的细节和超参数设置可以在附录A.3中找到。
表3显示了Swin Transformer、ConvNeXt和传统ConvNet(如ResNeXt)的对象检测和实例分割结果。在不同的模型复杂性中,ConvNeXt实现了与Swin Transformer相当或更好的性能。当放大到在ImageNet-22K上预训练的更大的模型(ConvNeXt-B/L/XL)时,在许多情况下,ConvNeXt在box和mask AP方面明显优于Swin Transformers(例如+1.0 AP)。
我们还在使用UperNet的ADE20K语义分割任务上评估了ConvNeXt骨干网[85]。所有的模型变体都训练了160K次迭代,批大小为16。其他实验设置如下[6] (详见附录A.3)。在表4中,我们报告了多尺度测试的验证mIoU。ConvNeXt模型可以在不同的模型容量之间实现竞争性的性能,进一步验证了我们架构设计的有效性。
在类似的FLOPs下,深度卷积的模型比只有密集卷积的ConvNets速度更慢,并且消耗更多的内存。人们自然会问,ConvNeXt的设计是否会使它实际上效率低下。正如整篇论文所证明的那样,ConvNeXt的推理吞吐量与Swin Transformer相当或超过Swin Transformer。这对于分类和其他需要更高分辨率输入的任务都是正确的(参见表1,3的吞吐量/FPS比较)。此外,我们注意到训练ConvNeXt比训练Swin Transformer需要更少的内存。例如,使用ConvNeXt-B骨干网训练Cascade Mask-RCNN,每个GPU批处理大小为2,消耗17.4GB的峰值内存,而Swin-B的参考数量为18.5GB。与普通ViT相比,由于局部计算,ConvNeXt和Swin Transformer都表现出更有利的精度-FLOPs权衡。值得注意的是,这种效率的提高是ConvNet感应偏置的结果,与视觉Transformer中的自注意机制没有直接关系。
混合模型。在前ViT时代和后ViT时代,卷积和自关注相结合的混合模型得到了积极的研究。在ViT之前,重点是用自关注/非局部模块来增强ConvNet,以捕获远程依赖关系[8,55,66,79]。最初的ViT[20]首先研究了一种混合构型,随后大量的工作集中于以显式[15,16,21,82,86,88]或隐式[45]的方式将卷积先验重新引入ViT。
最近的基于卷积的方法。Han等[25]表明,局部Transformer注意等价于非均匀动态深度卷积。然后用动态或规则的深度卷积代替Swin中的MSA块,实现与Swin相当的性能。一项并行工作ConvMixer[4]表明,在小规模环境中,深度卷积可以作为一种很有前途的混合策略。ConvMixer使用较小的patch大小来获得最佳结果,使吞吐量远低于其他基线。GFNet[56]采用快速傅里叶变换(FFT)进行token混合。FFT也是卷积的一种形式,但是具有全局核大小和圆形填充。与许多最近的Transformer或ConvNet设计不同,我们研究的一个主要目标是深入研究标准ResNet的现代化过程并实现最先进的性能。
在21世纪20年代,视觉Transformer,特别是像Swin Transformer这样的分层Transformer,开始取代卷积神经网络,成为通用视觉主干的首选。人们普遍认为,视觉变形比卷积神经网络更准确、更高效、更可扩展。我们提出了ConvNeXt,这是一种纯ConvNet模型,可以在多个计算机视觉基准测试中与最先进的分层视觉Transformer竞争,同时保留了标准ConvNets的简单性和效率。在某些方面,我们的观察结果令人惊讶,虽然我们的ConvNeXt模型本身并不是全新的------在过去的十年里,许多设计选择都是单独研究过的,而不是共同研究过的。我们希望本研究报告的新结果将挑战一些广泛持有的观点,并促使人们重新思考卷积在计算机视觉中的重要性。
在本附录中,我们提供了进一步的实验细节(§A),鲁棒性评估结果(§B),更多的现代化实验结果(§C)和详细的网络规范(§D)。我们进一步在A100 GPU上对模型吞吐量进行基准测试(§E)。最后,我们讨论了我们工作的局限性(§F)和社会影响(§G)。
我们证明了纯ConvNet模型ConvNeXt在图像分类、目标检测、实例和语义分割任务上的表现与分层视觉Transformer一样好。虽然我们的目标是提供广泛的评估任务,但我们认识到计算机视觉应用更加多样化。ConvNeXt可能更适合某些任务,而Transformer可能对其他任务更灵活。一个恰当的例子是多模态学习,其中交叉注意模块可能更适合为跨许多模态的特征交互建模。此外,当用于需要离散、稀疏或结构化输出的任务时,Transformer可能更加灵活。我们认为,体系结构的选择应该满足手头任务的需要,同时力求简单。
在21世纪20年代,视觉表示学习的研究开始对计算资源提出巨大的需求。虽然更大的模型和数据集全面提高了性能,但它们也带来了一系列挑战。ViT、Swin和ConvNeXt在其巨大的模型变体中都表现得最好。研究这些模型设计不可避免地会导致碳排放的增加。一个重要的方向,也是我们论文的动机,是力求简单——使用更复杂的模块,网络的设计空间会极大地扩展,模糊了导致性能差异的关键组件。此外,大型模型和数据集在模型鲁棒性和公平性方面存在问题。卷积神经网络鲁棒性进一步研究。Transformer将是一个有趣的研究方向。在数据方面,我们的研究结果表明,ConvNeXt模型受益于大规模数据集的预训练。虽然我们的方法使用了公开可用的ImageNet-22K数据集,但个人可能希望获取自己的数据进行预训练。需要更谨慎和负责任的数据选择方法,以避免对数据偏差的潜在担忧。