A ConvNet for the 2020s
原文地址:https://arxiv.org/abs/2201.03545
https://github.com/facebookresearch/ConvNeXt

摘要:视觉识别的“轰鸣20年代”始于视觉Transformer(VIT)的引入,它很快取代了ConvNets,成为最先进的图像分类模型。另一方面,普通ViT在应用于一般的计算机视觉任务(如目标检测和语义分割)时面临困难。正是层次Transformer(例如,SwinTransformer)重新引入了几个ConvNet Prior,使Transformer作为一个通用的视觉中枢切实可行,并在各种视觉任务中表现出卓越的性能。然而,这种混合方法的有效性在很大程度上仍然归功于Transformer的固有优势,而不是卷积固有的归纳偏置。在这项工作中,我们重新审视了设计空间,并测试了纯ConvNet所能达到的极限。我们逐步将标准ResNet“现代化”到视觉Transformer的设计中,并发现了几个关键组件,这些组件在这一过程中会导致性能差异。这次探索的结果是一系列纯ConvNet模型,称为ConvNeXt。ConvNeXts完全由标准的ConvNet模块构成,在精确度和可扩展性方面与Transformers竞争,达到87.8%的ImageNet top-1精确度,在COCO检测和ADE20K分割方面优于Swin Transformers,同时保持了标准ConvNet的简单性和效率。

1.导言
回顾20世纪10年代,这十年的标志是深刻学习的巨大进步和影响。主要驱动因素是神经网络的复兴,尤其是卷积神经网络(ConvNets)。在过去的十年里,视觉识别领域成功地从工程特征转向了设计(ConvNet)架构。尽管反向传播训练网络的发明可以追溯到20世纪80年代[39],但直到2012年底,我们才看到它在视觉特征学习方面的真正潜力。AlexNet[37]的引入催生了“ImageNet时刻”[56],开启了计算机视觉的新时代。此后,这一领域的发展速度很快。VGGNet[61]、Inceptions[64]、ResNe(X)t[26,82]、DenseNet[33]、MobileNet[32]、EfficientNet[67]和RegNet[51]等具有代表性的ConvNet专注于准确性、效率和可扩展性的不同方面,并推广了许多有用的设计原则。
ConvNets在计算机视觉中的完全主导地位并非巧合:在许多应用场景中,“滑动窗口”策略是视觉处理的固有特性,尤其是在处理高分辨率图像时。ConvNet有几个内置的归纳偏置,使其非常适合各种计算机视觉应用。其中最重要的是平移等变性,这是目标检测等任务所需要的特性。由于以滑动窗口的方式使用时,计算是共享的,因此convnet本身也是高效的[59]。几十年来,这一直是convnet的默认使用,通常用于有限的对象类别,如数字[40]、人脸[55,71]和行人[17,60]。进入20世纪10年代,基于区域的探测器[21,22,25,54]进一步将ConvNet提升到了视觉识别系统的基础构建块的位置。
大约在同一时间,自然语言处理(NLP)神经网络设计的奥德赛(odyssey of neural network design for natural language processing,简称NLP)走了一条截然不同的道路,因为Transformer取代了递归神经网络,成为主导的主干架构。尽管语言和视觉领域之间的兴趣任务存在差异,但随着视觉Transformer(ViT)的引入完全改变了网络体系结构设计的格局,这两条流在2020年惊人地融合在一起。除了最初的“patch”层(将图像分割为一系列patch)之外,ViT没有引入图像特定的归纳偏置,并且对原始NLPTransformer进行了最小的更改。ViT的一个主要关注点是伸缩行为:借助更大的模型和数据集大小,Transformers可以大大超过标准Resnet。这些关于图像分类任务的结果令人鼓舞,但计算机视觉并不局限于图像分类。如前所述,在过去十年中,许多计算机视觉任务的解决方案在很大程度上依赖于滑动窗口,完全协同进化范式。如果没有ConvNet归纳偏差,香草ViT模型在被用作通用视觉主干时面临许多挑战。最大的挑战是ViT的全局注意力设计,它的输入大小具有二次复杂性。对于ImageNet分类来说,这可能是可以接受的,但对于更高分辨率的输入,这很快就会变得难以处理。
分级Transformer采用混合方法来弥补这一差距。例如,“滑动窗口”策略(例如,局部窗口内的注意力)被重新引入到Transformer中,使它们的行为更类似于convnet。Swin Transformer[42]是这一方向上的一项里程碑式的工作,首次证明了Transformers可以被用作通用视觉主干,并在图像分类之外的一系列计算机视觉任务中实现最先进的性能。Swin Transformer的成功和迅速采用也揭示了一件事:卷积的本质并没有变得无关紧要;相反,它仍然是人们渴望的,从未褪色。
从这个角度来看,计算机视觉Transformer的许多进步都是为了恢复卷积。然而,这些尝试是有代价的:滑动窗口自注意的简单实现可能代价高昂[52];使用循环换档等先进方法[42],可以优化速度,但系统在设计上变得更加复杂。另一方面,几乎具有讽刺意味的是,ConvNet已经满足了许多所需的属性,尽管是以一种简单、不虚饰的方式。ConvNets似乎失去动力的唯一原因是(分层)Transformer在许多视觉任务中超过了它们,而性能差异通常归因于Transformer优越的缩放行为,多头自注意是关键因素。
与过去十年逐步改善的ConvNets不同,视觉Transformer的采用是一个渐进的变化。在最近的文献中,在比较两者时,通常采用系统级比较(例如,SwinTransformer与ResNet)。ConvNet和分层视觉Transformer同时变得不同和相似:它们都配备了相似的归纳偏置,但在训练程序和宏观/微观架构设计方面存在显著差异。在这项工作中,我们调查了ConvNet和Transformer之间的架构差异,并试图在比较网络性能时确定混淆变量。我们的研究旨在弥合ConvNet在ViT前和ViT后的差距,并测试纯ConvNet所能达到的极限。
为了做到这一点,我们从一个标准的ResNet(例如ResNet-50)开始,用改进的程序进行训练。我们逐步将架构“现代化”,以构建一个层次化的视觉Transformer(如SWN-T)。我们的探索以一个关键问题为指导:Transformer的设计决策如何影响ConvNet的性能?在此过程中,我们发现了几个关键组件,它们对性能差异起到了作用。因此,我们提出了一个名为ConvNeXt的纯ConvNet家族。我们评估了ConvNeXts在各种视觉任务上的表现,如ImageNet分类[15]、COCO上的目标检测/分割[41]和ADE20K上的语义分割[87]。令人惊讶的是,完全由标准ConvNet模块构建的ConvNeXts在所有主要基准测试中,在准确性、可扩展性和健壮性方面都与Transformers竞争。ConvNeXt保持了标准ConvNets的效率,而训练和测试的完全卷积特性使其实现起来极其简单。
我们希望新的观察和讨论能够挑战一些共同的信念,并鼓励人们重新思考卷积在计算机视觉中的重要性。
2.ConvNet的现代化:路线图
在本节中,我们将提供一个从ResNet到ConvNet的轨迹,该轨迹类似于Transformer。我们考虑两个模型大小的FLOPs,一个是ReNET-50/SWT-T区间,FLOPs约4.5×109,另一个是ReNET-200 / SW-B区间,FLOPs约15×109。为了简单起见,我们将用ResNet-50/Swin-T复杂度模型给出结果。高容量模型的结论是一致的,结果见附录C。
在高层次上,我们的探索旨在调查和遵循SwinTransformer的不同设计水平,同时保持网络作为标准ConvNet的简单性。我们探索的路线图如下。我们的出发点是ResNet-50型号。我们首先使用类似的训练技术训练它,用于训练视觉Transformer,与原始的ResNet-50相比,获得了更高的效果。这将是我们的基线。然后,我们研究了一系列设计决策,总结为1)宏观设计、2)重新下一步、3)反向瓶颈、4)大核尺寸和5)各种分层微观设计。在图2中,我们展示了“网络现代化”的每一步所能实现的过程和结果。由于网络复杂度与最终性能密切相关,在勘探过程中,FLOPs大致受到控制,尽管在中间步骤,FLOPs可能高于或低于参考模型。所有模型均在ImageNet-1K上进行训练和评估。

2.1. 训练技巧
除了网络架构的设计之外,训练程序也会影响最终的性能。vision Transformers不仅带来了一组新的模块和架构设计决策,还向vision引入了不同的训练技术(例如AdamW优化器)。这主要与优化策略和相关的超参数设置有关。因此,我们探索的第一步是使用vision Transformer训练程序训练基线模型,在本例中是ResNet-50/200。最近的一篇论文[76]展示了一套现代训练技术如何显著提高简单ResNet-50模型的性能。在我们的研究中,我们使用了一种接近DeiT[68]和Swin Transformer[42]的训练配方。训练从最初的90轮扩展到300轮。我们使用AdamW优化器[43],数据增强技术,如混和[85]、Cutmix[84]、RandAugment[12]、随机擦除[86],以及正则化方案,包括随机深度[33]和标签平滑[65]。我们使用的整套超参数见附录A.1。就其本身而言,这种增强的训练方法将ResNet-50模型的性能从76.1%[1]提高到了78.8%(+2.7%),这意味着传统ConvNet和视觉Transformer之间的性能差异很大一部分可能是由于训练技术。在整个“现代化”过程中,我们将使用相同超参数的固定训练配方。在ResNet-50模式中,每个报告的准确度都是从三个不同的随机种子训练中获得的平均值。
2.2. 宏观设计
现在,我们来分析Swin Transformers的宏网络设计。Swin Transformers遵循ConvNets[26,62]使用多级设计,其中每一级具有不同的特征图分辨率。有两个有趣的设计考虑:阶段计算比率和“stem cell”结构。
改变阶段计算比率。
ResNet中各阶段计算分布的原始设计主要是经验设计。重型“res4”级旨在与目标检测等下游任务兼容,其中探测头在14×14特征平面上工作。另一方面,Swin-T遵循相同的原则,但阶段计算比率略有不同,为1:1:3:1。对于较大的SwinTransformer,比率为1:1:9:1。在设计之后,我们将每个阶段中的块数从ResNet-50中的(3,4,6,3)调整为(3,3,9,s3),这也将FLOPs与Swin-T对齐。这将模型精度从78.8%提高到79.4%。值得注意的是,研究人员已经彻底调查了计算的分布[50,51],并且可能存在一个更优化的设计。从现在开始,我们将使用这个阶段计算比率。
将stem更改为“Patchify”。
通常,stem cell设计关注的是在网络开始时如何处理输入图像。由于自然图像固有的冗余性,在标准ConvNets和视觉Transformer中,一个普通的stem cell会积极地将输入图像的采样减少到适当的特征图大小。标准ResNet中的stem cell包含一个7×7的卷积层,步幅为2,然后是一个最大池,这导致输入图像的下采样为4倍。在视觉Transformer中,stem cell使用了一种更积极的“Patchify”策略,它对应于较大的核大小(例如,核大小=14或16)和非重叠卷积。Swin Transformer使用了类似的“patch”层,但patch大小较小,为4,以适应体系结构的多阶段设计。我们用一个4×4、跨步4的卷积层实现的patch层替换ResNet型stem cell。准确率从79.4%变为79.5%。这表明ResNet中的stem cell可以被一个更简单的“patch”层替代,这将产生类似的性能。
我们将在网络中使用“patch stem”(4×4非重叠卷积)。
2.3. ResNeXt-ify
在这一部分中,我们尝试采用ResNeXt[82]的思想,它比普通的ResNet具有更好的FLOPs/精度权衡。核心部分是分组卷积,其中卷积滤波器被分成不同的组。在高层次上,ResNeXt的指导原则是“使用更多组,扩大宽度”。更准确地说,ResNeXt对瓶颈块中的3×3 conv层采用分组卷积。由于这大大减少了FLOPs,网络宽度被扩展以补偿容量损失。
在我们的例子中,我们使用深度卷积,这是分组卷积的一种特殊情况,其中组的数量等于通道的数量。Depthwise conv已被MobileNet[32]和Exception[9]普及。我们注意到,深度卷积类似于自注意中的加权和运算,它基于每个通道进行操作,即仅混合空间维度中的信息。深度卷积的使用有效地减少了网络FLOPs,并如预期的那样,降低了精度。按照ResNeXt中提出的策略,我们将网络宽度增加到与Swin-T相同的信道数(从64个增加到96个)。这将使网络性能达到80.5%,并增加了FLOPs(5.3G)。
我们现在将采用下一个设计。
2.4. 倒瓶颈
每个Transformer块的一个重要设计是,它会产生一个反向瓶颈,即MLP块的隐藏尺寸比输入尺寸宽四倍(见图4)。有趣的是,这种Transformer设计与ConvNet中使用的膨胀比为4的反向瓶颈设计相连接。这一想法在MobileNet V2[58]中得到了推广,随后在几个先进的ConvNet体系结构[66,67]中得到了推广。
在这里,我们将探讨反向瓶颈设计。图3(a)至(b)说明了这些配置。尽管深度卷积层的FLOPs增加,但由于下采样剩余块的捷径1×1 conv层中的FLOPs显著减少,这种变化将整个网络的FLOPs减少到4.6G。有趣的是,这会略微提高性能(80.5%到80.6%)。在ResNet-200/Swin-B系统中,这一步带来了更大的增益(81.9%到82.6%),同时也减少了FLOPs。


我们现在将使用反向瓶颈。
2.5. 大核大小
在探索的这一部分中,我们重点关注大卷积核的行为。视觉Transformer最显著的一个方面是它们的非局部自注意,这使每一层都有一个全局感受域。虽然过去ConvNets[37,64]使用了较大的核大小,但黄金标准(由VGGNet[62]推广)是堆叠较小的核大小(3×3)的conv层,这些层在现代GPU上有高效的硬件实现[38]。尽管Swin Transformers将局部窗口重新引入了自注意块,但窗口大小至少为7×7,明显大于ResNe(X)t核大小3×3。在这里,我们将再次讨论convnet中使用大型核大小的卷积。
向上移动纵深conv层。
要探索大核,一个先决条件是向上移动depthwise conv层的位置(图3(b)到(c))。这一设计决策在Transformer中也很明显:MSA块放置在MLP层之前。由于我们有一个反向瓶颈块,这是一个自然的设计选择——复杂/低效的模块(MSA、大型核conv)将拥有较少的通道,而高效、密集的1×1层将完成繁重的工作。这个中间步骤将FLOPs减少到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深度转换。
至此,我们结束了对网络体系结构的宏观研究。有趣的是,vision Transformer中的大部分设计选择都可能映射到ConvNet实例。
2.6. 微设计
在本节中,我们将在微观层面上研究其他几个架构差异——这里的大部分探索都是在层级别上进行的,重点是激活函数和规范化层的特定选择。
用GELU替换ReLU
NLP和vision体系结构之间的一个差异是要使用哪些激活功能的细节。随着时间的推移,已经开发出了许多激活函数,但校正线性单元(ReLU)[46]由于其简单高效,仍然广泛用于CONVNET。ReLU在原始Transformer文件[72]中也用作激活函数。高斯误差线性单位,或GELU[30],可以被认为是ReLU的一个更平滑的变体,在最先进的Transformer中使用,包括谷歌的伯特[16]和OpenAI的GPT-2[49],以及最近的ViTs。我们发现,在我们的ConvNet中,ReLU也可以用GELU替代,尽管准确率保持不变(80.6%)。
更少的激活功能。
Transformer和ResNet块之间的一个小区别是Transformer的激活功能较少。考虑具有关键/查询/值线性嵌入层、投影层和MLP块中的两个线性层的Transformer块。MLP块中只有一个激活功能。相比之下,通常的做法是在每个卷积层(包括1×1 conv)上附加一个激活函数。在这里,我们研究当我们坚持相同的策略时,性能是如何变化的。如图4所示,我们消除了剩余块中的所有GELU层,除了两个1×1层之间的一层,复制了Transformer块的样式。这一过程将结果提高了0.7%至81.3%,实际上与Swin-T的性能相当。
现在,我们将在每个区块中使用一个GELU激活。
更少的标准化层。
Transformer块通常也有较少的规范化层。在这里,我们移除了两个BatchNorm(BN)层,在conv 1×1层之前只留下一个BN层。这进一步将性能提升到81.4%,已经超过了Swin-T的结果。请注意,我们每个块的标准化层比Transformers更少,因为根据经验,我们发现在块的开头添加一个额外的BN层并不能提高性能。
用LN代替BN。
BatchNorm[35]是ConvNets中的一个重要组成部分,因为它提高了收敛性,减少了过度拟合。然而,BN还有许多复杂之处,可能会对模型的性能产生不利影响[79]。在开发替代标准化技术[57,70,78]方面已经有过无数次尝试,但BN仍然是大多数视觉任务的首选选项。另一方面,更简单的层规范化[5](LN)已在Transformer中使用,从而在不同的应用场景中获得了良好的性能。
在原始ResNet中直接用LN代替BN将导致次优性能[78]。在对网络架构和训练技术进行了所有修改后,我们在这里重新讨论了使用LN代替BN的影响。我们观察到,我们的ConvNet模型在LN训练方面没有任何困难;事实上,性能稍好一些,准确率为81.5%。
从现在起,我们将在每个剩余块中使用一个LayerForm作为标准化选项。
分离下采样层。
在ResNet中,空间下采样是通过在每个阶段开始时使用3×3 conv和步幅2(以及在快捷连接处使用1×1 conv和步幅2)的剩余块实现的。在SwinTransformer中,在级之间添加单独的下采样层。我们探索了一种类似的策略,即使用2×2 conv层和步长2进行空间下采样。这种修改令人惊讶地导致了训练的分歧。进一步的研究表明,在空间分辨率发生变化的地方添加归一化层有助于稳定训练。其中包括几个也用于SWITransformer的LN层:每个下采样层之前一个,stem之后一个,以及最终全局平均池之后一个。我们可以将准确度提高到82.0%,大大超过Swin-T的81.3%。
我们将使用单独的下采样层。这就引出了我们的最终模型,我们称之为ConvNeXt。
图4显示了ResNet、Swin和ConvNeXt区块结构的比较。ResNet-50、SWN-T和ConvNeXt-T的详细架构规范比较见表9。
闭幕词。
我们已经完成了我们的第一个“playthrough”,并发现了纯ConvNeXt,它可以在这种计算模式下优于用于ImageNet-1K分类的Swin Transformer。同样值得注意的是,迄今为止讨论的设计方案都不是新颖的——在过去十年中,它们都是单独研究的,但不是集体研究的。我们的ConvNeXt模型具有大致相同的FLOPs#params。,吞吐量和内存用作Swin Transformer,但不需要特殊模块,如移动窗口注意或相对位置偏差。
这些发现令人鼓舞,但尚未完全令人信服——到目前为止,我们的探索仅限于小规模,但视觉Transformer的缩放行为才是它们的真正区别。此外,ConvNet能否在诸如目标检测和语义分割等下游任务上与Swin Transformers竞争是计算机视觉从业者关注的一个核心问题。在下一节中,我们将在数据和模型大小方面放大ConvNeXt模型,并在一组不同的视觉识别任务中对其进行评估。
3.ImageNet的实证评估
我们构建了不同的ConvNeXtT变体,即ConvNeXtT/S/B/L,其复杂性与Swin-T/S/B/L相似[42]。ConvNeXt-T/B分别是ResNet-50/200系统“现代化”程序的最终产品。此外,我们还构建了一个更大的ConvNeXt XL,以进一步测试ConvNeXt的可扩展性。这些变体仅在每个阶段中通道C的数量和块B的数量上有所不同。继RESNET和SwinTransformer之后,每个新阶段的通道数量将增加一倍。我们总结了以下配置:
• 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类的超集)的较大数据集,具有∼14M图像进行预训练,然后在ImageNet-1K上微调预训练模型进行评估。下面我们总结一下我们的训练设置。更多细节见附录A。
在ImageNet-1K上进行训练。
我们使用AdamW[43]以4e-3的学习率为300轮训练Convenxts。接下来是20轮的线性热身和余弦衰减时间表。我们使用的批量为4096,重量衰减为0.05。对于数据增强,我们采用了常见的方案,包括Mixup[85]、Cutmix[84]、RandAugment[12]和随机擦除[86]。我们用随机深度[34]和标签平滑[65]对网络进行正则化。应用初始值1e-6的层比例[69]。我们使用指数移动平均(EMA)[48],因为我们发现它可以缓解较大模型的过度拟合。
ImageNet-22K的预训练。
我们在ImageNet-22K上对Convenxts进行了90个阶段的预训练,并进行了5个阶段的热身。我们不使用EMA。其他设置遵循ImageNet-1K。
在ImageNet-1K上进行微调。
我们在ImageNet-1K上对ImageNet-22K预训练模型进行了30轮的微调。我们使用AdamW,学习率为5e-5,余弦学习率计划,分层学习率衰减[6,10],无预热,批量大小为512,重量衰减为1e-8。默认的预训练、微调和测试分辨率为2242。此外,对于ImageNet-22K和ImageNet-1K预训练模型,我们以3842的更高分辨率进行微调。
与ViTs/SWNTransformer相比,ConvNeXts在不同分辨率下更易于微调,因为网络是完全卷积的,无需调整输入面片大小或插值绝对/相对位置偏差。
3.2. 后果
ImageNet-1K。
表1(上)显示了与两个最新的Transformer变体DeiT[68]和Swin Transformers[42]以及架构搜索中的两个ConvNet(RegNets[51]和EfficientNets[67])的结果比较。
ConvNeXt在精度计算权衡和推理能力方面与两个强大的ConvNet基线(RegNet[51]和EfficientNet[67])竞争。ConvNeXt的整体性能也优于具有类似复杂度的Swin Transformer,有时有很大的利润(例如,ConvNeXt-T的利润率为0.8%)。与SwinTransformer相比,ConvNeXts没有特殊的模块,如移动窗口或相对位置偏差,其吞吐量也有所提高。
结果中的一个亮点是ConvNeXt-B达到3842:它比Swin-B高出0.6%(85.1%对84.5%),但推理吞吐量高出12.5%(95.7对85.1图像/秒)。我们注意到,当分辨率从2242增加到3842时,ConvNeXtB相对于Swin-B的FLOPs/吞吐量优势变得更大。此外,我们观察到,当进一步扩展到CONVEXT-L时,结果改善了85.5%。
ImageNet-22K。
我们在表1(下表)中展示了从ImageNet-22K预训练中微调的模型的结果。这些实验很重要,因为人们普遍认为,视觉Transformer的归纳偏置较小,因此在大规模预训练时,其性能优于ConvNet。我们的结果表明,当预先训练大数据集时,适当设计的VNETE并不劣于视觉Transformer——ConvNeXts仍然以PAR或优于类似大小的SWINTransformer执行,其吞吐量略高。此外,我们的ConvNeXt XL模型实现了87.8%的精度,这比ConvNeXt-L 3842的精度有了相当大的提高,证明了ConvNeXt是可扩展的体系结构。

在附录B中,我们讨论了ConvNeXt的稳健性和域外泛化结果。
3.3. 各向同性ConvNeXt vs.ViT
在本次试验中,我们将检验我们的ConvNeXt区块设计是否可推广到ViT风格[18]的各向同性结构,该结构没有下采样层,并且在所有深度保持相同的特征分辨率(例如14×14)。我们使用与ViT-S/B/L(384/768/1024)相同的特征维数来构造各向同性CONVEXT-S/B/L。深度设置为18/18/36,以匹配参数和FLOPs的数量。块结构保持不变(图4)。我们使用DeiT[68]对ViT-S/B的监督训练结果,以及MAE[24]对ViT-L的监督训练结果,因为它们采用了比原始ViT改进的训练程序[18]。ConvNeXt模特的训练设置与之前相同,但热身时间更长。ImageNet-1K在2242分辨率下的结果如表2所示。我们观察到VISNEXT可以执行与VIT一般PAR,表明我们的下一个块设计是有竞争力的,当在非分层模型中使用。

4.对下游任务的实证评估
COCO上的目标检测和分割。
我们在COCO数据集上使用ConvNeXt主干对Mask R-CNN[25]和Cascade Mask R-CNN[7]进行了微调。遵循Swin Transformer[42],我们使用多尺度训练、AdamW优化器和3倍时间表。更多详细信息和超参数设置见附录A.3。
表3显示了比较Swin Transformer、ConvNeXt和ResNeXt等传统ConvNet的对象检测和实例分割结果。在不同的型号复杂性中,ConvNeXt的性能与Swin Transformer相当或更好。当放大到在ImageNet-22K上预先训练过的更大型号(ConvNeXt-B/L/XL)时,在许多情况下,ConvNeXt在 box 和 mask AP方面明显优于SwinTransformer(例如+1.0 AP)。

ADE20K上的语义分割 。
我们还使用Supernet[80]评估了ADE20K语义分段任务中的ConvNeXt主干。所有模型变量都经过160K迭代的训练,批量大小为16。其他实验设置如下[6](详见附录A.3)。在表4中,我们报告了多尺度测试的验证mIoU。ConvNeXt模型可以在不同的模型容量中实现有竞争力的性能,进一步验证了我们架构设计的有效性。

关于模型效率的评论。
在类似的FLOPs情况下,已知具有深度卷积的模型比仅具有密集卷积的ConvNet更慢,消耗更多内存。人们自然而然地会问,ConvNeXt的设计是否会导致它实际上效率低下。正如整篇论文所展示的,ConvNeXts的推理能力相当于或超过了Swin Transformers的推理能力。对于需要更高分辨率输入的分类和其他任务来说都是如此(吞吐量/FPS的比较见表1,3)。此外,我们注意到,训练ConvNeXts比训练Swin Transformers需要更少的内存。例如,使用ConvNeXt-B主干网的训练级联 mask RCNN消耗17.4GB的峰值内存,每个GPU的批大小为2,而Swin-B的参考号为18.5GB。与vanilla ViT相比,由于局部计算,ConvNeXt和Swin Transformer都表现出更有利的精度FLOPs权衡。值得注意的是,这种效率的提高是ConvNet归纳偏置的结果,与视觉Transformer中的自注意机制没有直接关系。
5.相关工作
混合模式。
在ViT前后,卷积和自注意相结合的混合模型都得到了积极的研究。在ViT之前,重点是通过自注意/非局部模块[52、63、74]来增强ConvNet,以捕获长期依赖性。最初的ViT[18]首先研究了一种混合构型,大量后续研究集中于以显式[13,14,19,77,81,83]或隐式[42]的方式将卷积先验重新引入ViT。
最近基于卷积的方法。
Han等人[23]表明,局部Transformer注意力相当于非均匀动态深度卷积。然后,用动态或规则深度卷积替换SWN中的MSA块,实现与SWN相当的性能。ConvMixer[4]的并行工作表明,在小规模环境中,深度卷积可以用作一种很有前途的混合策略。ConvMixer使用较小的patch大小来实现最佳效果,使吞吐量远低于其他基线。GFNet[53]采用快速傅立叶变换(FFT)进行令牌混合。FFT也是卷积的一种形式,但具有全局核大小和循环填充。与许多最近的Transformer或ConvNet设计不同,我们研究的一个主要目标是深入了解标准ResNet的现代化过程,并实现最先进的性能。
6.结论
在20世纪20年代,视觉Transformer,尤其是像Swin Transformers这样的等级Transformer,开始取代ConvNet成为通用视觉主干的首选。人们普遍认为,视觉Transformer比ConvNet更准确、更高效、更可扩展。我们提出了ConvNeXts,这是一个纯ConvNet模型,可以在多个计算机视觉基准上与最先进的分层视觉Transformer竞争,同时保持标准ConvNet的简单性和效率。在某些方面,我们的观察结果令人惊讶,而我们的ConvNeXt模型本身并不是全新的——在过去十年中,许多设计选择都是单独检查的,但不是整体检查的。我们希望这项研究报告的新结果将挑战一些广泛持有的观点,并促使人们重新思考卷积在计算机视觉中的重要性。
致谢。我们感谢Kaiming He, Eric Mintun, Xingyi Zhou, Ross Girshick, and Yann LeCun 的宝贵讨论和反馈。
附录
在本附录中,我们提供了进一步的实验细节(§A)、稳健性评估结果(§B)、更现代化的实验结果(§C)和详细的网络规范(§D)。我们进一步在100 GPU(§E)上对模型吞吐量进行基准测试。最后,我们讨论了我们工作的局限性(§F)和社会影响(§G)。
A.实验设置
A.1。ImageNet(预)训练
我们在表5中提供了ConvNeXts的ImageNet-1K训练和ImageNet-22K训练前设置。这些设置用于表1(第3.2节)中的主要结果。所有ConvNeXt变体都使用相同的设置,但随机深度速率是为模型变体定制的。
对于“使ConvNet现代化”的实验(第2节),我们也使用表5中ImageNet-1K的设置,但EMA被禁用,因为我们发现使用EMA会严重损害具有BatchNorm层的模型。
对于各向同性ConvNeXts(第3.3节),也采用表A中ImageNet-1K的设置,但预热扩展到50个时段,各向同性ConvNeXt-S/B禁用层比例。各向同性ConvNeXt-S/B/L的随机深度率为0.1/0.2/0.5。

A.2。ImageNet微调
我们在表6中列出了ImageNet-1K上的微调设置。微调从预训练中获得的最终模型权重开始,而不使用EMA权重,即使在预训练中使用了EMA并报告了EMA精度。这是因为如果我们微调EMA权重(与[68]中的观察结果一致),我们不会观察到改善。唯一的例外是在ImageNet-1K上预训练的ConvNeXt-L,由于过度拟合,模型精度显著低于EMA精度,我们在预训练期间选择其最佳EMA模型作为微调的起点。
在微调中,我们使用逐层学习速率衰减[6,10],每3个连续块形成一个组。当模型以3842分辨率进行微调时,我们在[2,69,75]之后的测试中使用1.0的裁剪比(即不裁剪),而不是2242时的0.875。

A.3。下游任务
对于ADE20K和COCO实验,我们遵循BEiT[6]和Swin[42]中使用的训练设置。我们还使用MMDetection[8]和MMSegmentation[11]工具箱。我们使用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[31]、ImageNet-R[28]、ImageNet Sketch[73]和ImageNetC/`C[29,45]数据集。我们报告了ImageNet-C的平均损坏误差(mCE),ImageNet-C的损坏误差,以及所有其他数据集的最高精度。
ConvNeXt(尤其是大型模型变体)表现出了良好的鲁棒性行为,在多个基准上优于最先进的鲁棒Transformer模型[44]。凭借额外的ImageNet-22K数据,ConvNeXtXL展示了强大的领域泛化能力(例如,在ImageNetA/R/Sketch基准上分别达到69.3%/68.2%/55.0%的精度)。我们注意到,这些稳健性评估结果是在不使用任何专门模块或额外微调程序的情况下获得的。

C.使RESNET现代化:详细结果
在这里,我们提供了在ResNet-50/Swin-T和ResNet-200/Swin-B两种状态下现代化实验的详细列表结果。ImageNet-1K top-1每一步的精度和FLOPs如表10和表11所示。用3个随机种子进行ResNet-50试验。


对于ResNet-200,每个阶段的初始块数为(3,24,36,3)。在改变级比的步骤中,我们将其更改为Swin-B(3,3,27,3)。这大大减少了FLOPs的次数,所以在同一时间,我们也将宽度从64增加到84,以保持FLOPs在一个类似的水平。在采用深度卷积的步骤之后,我们进一步将宽度增加到128(与Swin-B相同),作为一个单独的步骤。
如主要论文所述,对ResNet-200的观测结果与对ResNet-50的观测结果基本一致。一个有趣的区别是,与ResNet-50模式相比,ResNet-200模式的反向维度带来了更大的改善(+0.79%对+0.14%)。通过增加核大小获得的性能似乎在核大小为5而不是7时达到饱和。与ResNet-50相比,使用更少的标准化层也有更大的增益(+0.46%对+0.14%)。
D.详细的架构
我们在表9中给出了ResNet-50、ConvNeXt-T和Swin-T之间的详细架构比较。对于不同大小的ConvNeXt,只有每个阶段的块数和通道数与ConvNeXt-T不同(详见第3节)。ConvNeXts享受标准ConvNets的简单性,但在视觉识别方面与Swin Transformers竞争。

E.在100 GPU上进行基准测试
继Swin Transformer[42]之后,表1中ImageNet模型的推理能力使用V100 GPU进行基准测试,其中ConvNeXt的推理速度略快于参数数量相似的Swin Transformer。我们现在在更高级的A100 GPU上对它们进行基准测试,该GPU支持TensorFloat32(TF32)tensor核。我们采用PyTorch[47]版本1.10,使用最新的“Channel Last”内存布局[20],以进一步提高速度。
我们在表12中给出了结果。Swin Transformers和ConvNeXts都实现了比V100 GPU更快的推理吞吐量,但ConvNeXts的优势现在明显更大,有时快49%。这项初步研究表明,与标准ConvNet模块一起使用且设计简单的ConvNeXt可以成为现代硬件上实际上更有效的模型。

F.限制
我们证明了纯ConvNet模型ConvNeXt在图像分类、对象检测、实例和语义分割任务上的性能与分层视觉Transformer相当。虽然我们的目标是提供广泛的评估任务,但我们认识到计算机视觉应用更加多样化。ConvNeXt可能更适合某些任务,而Transformers可能更适合其他任务。多模式学习就是一个很好的例子,在多模式学习中,交叉注意模块可能更适合于跨多个模式建模特征交互。此外,当用于需要离散、稀疏或结构化输出的任务时,Transformer可能更灵活。我们认为,架构的选择应该满足手头任务的需要,同时力求简单。
G.社会影响
2020s,视觉表征学习的研究开始对计算资源提出巨大的需求。虽然大型模型和数据集可以全面提高性能,但它们也带来了一系列挑战。ViT、Swin和ConvNeXt都以其大型模型表现最佳。调查这些模型设计不可避免地会导致碳排放量增加。一个重要的方向,也是我们论文的一个动机,是力求简单——通过更复杂的模块,网络的设计空间大大扩展,掩盖了导致性能差异的关键组件。此外,大型模型和数据集在模型稳健性和公平性方面存在问题。进一步研究ConvNeXt与Transformer的鲁棒性行为将是一个有趣的研究方向。在数据方面,我们的研究结果表明,ConvNeXt模型受益于大规模数据集的预训练。虽然我们的方法使用了公开的ImageNet-22K数据集,但有些人可能希望用自己的数据进行预训练( 原文:individuals may wish to acquire their own data for pre-training)。为了避免潜在的数据偏差问题,需要对数据选择采取更谨慎、更负责任的方法。
网友评论