1. 第一作者:Zhuang Liu
2. 发表年份:2022
3. 发表期刊:CVPR
4. 关键词:ConvNet、Transformers、CNNs、数据集
5. 探索动机:在2020年,视觉Transformers,尤其是Swin Transformers等分层Transformers开始取代ConvNets,成为通用视觉主干的首选。人们普遍认为,视觉Transformers比ConvNets更准确、更高效、更易扩展。但是大量的工作其实是将之前运用在CNN网络结构上的思路改进到Transformers结构当中去。而且现在有更多的数据,更好的数据增强,以及更加合理的优化器等但所以vision Transformers之所以能够取得SOTA的效果,会不会是这些其他因素影响了网络。Transformers到底是厉害在哪了?
6. 工作目标:如果把这些用在transformer上的技巧用在CNN上之后,进而重新设计ConvNet,卷积能达到的效果的极限是在哪里?是否也能得到相似的结果呢?
7. 核心思想:ConvNeXt在ResNet50模型的基础上,仿照Swin Transformers的结构进行改进而得到的纯卷积模型。模型改进可以分为:整体结构改变、层结构改变和细节改变三大部分。
8. 实现方法:
Training Techniques:训练轮数从最初的90个epoch扩展到300个epoch,使用AdamW 优化器,Mixup、Cutmix、RandAugment、Random Erasing等数据增强技术,以及随机深度和标签平滑等正则化方案。仅改变训练方法,ResNet-50模型的性能从76.1%就提高到78.8%。
Macro Design
ResNeXt-ify
ResNeXt相比普通的ResNet而言在FLOPs以及 accuracy之间做到了更好的平衡,核心组成部分是分组卷积,其中卷积滤波器被分成不同的组。作者采用的是更激进的深度卷积(即分组数等于输入通道数),这个技术在之前主要是应用在MobileNet这种轻量级网络中,用于降低计算量。但在这里,作者发现深度卷积由于每个卷积核单独处理一个通道,这种形式跟自注意力机制很相似,都是在单个通道内做空间信息的混合加权。将bottleneck中的3x3卷积替换成深度卷积,再把网络宽度从64增加到96。准确率从79.5到80.5。
Inverted Bottleneck
Inverted Bottleneck是在Resnet网络当中首次提出,即(大维度-小维度-大维度)的形式。
后来在MobileNetV2中提出了inverted bottleneck结构,采用(小维度-大维度-小维度)形式,认为这样能让信息在不同维度特征空间之间转换时避免压缩维度带来的信息损失,后来在Transformers的MLP中也使用了类似的结构,中间层全连接层维度数是两端的4倍。下图a是一个普通的ResNext的网络的结构,下图b是一个经过调整的Inverted Bottleneck结构,可以看到,虽然中间层增加了深度可分离卷积的计算量,但是由于减小了输出的大小,所以整个网络的计算量还是下降了。为了减少计算量,本文将反瓶颈中的中间卷积层移到了最前面,如下图c所示。网络的性能从80.5%提高到80.6%。
Large Kernel Sizes
VGGNet提出,堆叠多个小的卷积核,要比直接使用大的卷积核的效果要更好。Transformers的一个总所周知的厉害之处便是其长距离的相关性,使用窗口大小是7*7甚至12*12,这又是为什么呢?论文对大卷积核进行了进一步的探索,作者把深度卷积的位置进行了调整,放到了反瓶颈的开头。最终结果相近,说明在7x7在相同参数量下效果是一致的。将深度卷积的卷积核大小由3x3改成了7x7,准确率从80.6到80.6。
Micro Design
9. 实验结果:ConvNeXt是一个借鉴Transformers网络的CNN模型,从作者的实验看出,每一点精度的提升都是经过大量的实验。虽然原生模型是一个分类模型,但是其可以作为backbone被应用到任何其它模型中。通过一系列实验比对,在相同的FLOPs下,ConvNeXt相比Swin Transformers拥有更快的推理速度以及更高的精度,在ImageNet 22K上ConvNeXt-XL达到了87.8%的准确率。
10.论文下载:
https://openaccess.thecvf.com/content_iccv_2015/papers/Dosovitskiy_FlowNet_Learning_Optical_ICCV_2015_paper.pdf
摘要
视觉识别的“兴旺的20年代”始于Vision Transformers (ViTs)的首次提出,它迅速取代了ConvNets,成为最先进的图像分类模型。另一方面,普通的ViT在应用于目标检测和语义分割等一般计算机视觉任务时面临很多困难。正是分层 Transformers(例如Swin Transformers)重新引入了几个ConvNet先验,使得 Transformers作为通用视觉主干实际上可行的,并在各类视觉任务上展现出卓越的性能。然而,这种混合方法的有效性在很大程度上仍归功于Transformers的内在优势,而不是卷积固有的归纳偏置。在这项工作中,我们重新检查了设计空间并测试了纯ConvNet所能达到的极限。我们逐渐将标准ResNet将视觉Transformers的设计方向进行“现代化”,并在此过程中发现了造成性能差异的几个关键组件。探索的结果是产生一系列纯ConvNet模型,称为ConvNeXt。ConvNeXts完全由标准ConvNet模块构建,在准确性和可扩展性方面与Transformers可匹敌,取得87.8% ImageNet top-1精度,在COCO检测和ADE20K分割方面优于Swin Transformers,同时保持标准ConvNet的简洁和效率。
图1.在ImageNet-1K分类任务中ConvNets和vision Transformers的对比结果。每个气泡的面积与该模型类型中的变体的FLOPs成正比。ImageNet-1K/22K模型的图像大小分别是224*224/384*384。通过原始论文中改进的训练程序,获得了ResNet和ViT的结果。结构证明了标准的ConvNet模型可以实现与分层vision Transformers相同的可扩展性,同时在设计上要简单得多。
1. 介绍
回顾2010年,这十年以深度学习的巨大进步和影响为标志。主要驱动是神经网络的复兴,特别是卷积神经网络 (ConvNets)。十年来,视觉识别领域成功地从工程特征转向设计(ConvNet)结构。尽管反向传播训练的卷积神经网络的发明可以追溯到1980年代,但直到2012年底我们才看到它在视觉特征学习方面的真正潜力。AlexNet的首次提出加速了“ImageNet 时刻”,开创了计算机视觉的新时代。自此,该领域迅速发展。VGGNet、Inceptions、ResNe(X)t、DenseNet、MobileNet、EfficientNet和RegNet等代表性ConvNet专注于不同方面,如精度、效率和可扩展性,并推广了许多有用的设计原则。
ConvNets在计算机视觉中的完全主导地位并非巧合:在许多应用场景中,“滑动窗口”是视觉处理的固有策略,尤其是在处理高分辨率图像时。ConvNets 有几个内置的归纳偏置,使它们非常适合各种计算机视觉应用。最重要的一个是平移同变性,这是目标检测等任务的理想属性。由于当以滑动窗口方式使用时,计算是共享的,因此ConvNets本质上也是高效的。几十年来,这一直是ConvNets的默认使用,通常用于有限的目标分类,例如数字、人脸和行人。进入2010年,基于区域的检测器进一步将ConvNets提升到成为视觉识别系统中基本构建块的位置。
大约在同一时间,由于Transformers取代了循环神经网络成为主导的主干,结构自然语言处理 (NLP) 的神经网络设计的探索走上了一条截然不同的道路。尽管语言和视觉领域之间感兴趣的任务存在差异,但随着Vision Transformers (ViT) 的引入彻底改变了网络结构设计的局势,在2020年,这两个方向(语言与视觉)令人惊讶地汇合了。除了最开始的“patchify”层将图像分割成一系列图像块之外,ViT没有引入图像特定的归纳偏置,并且对原始NLP Transformers进行了最小的更改。ViT的一个主要关注点是缩放行为:借助更大的模型和数据集大小,Transformers明显优于标准ResNet。这些图像分类任务的结果令人鼓舞,但计算机视觉不仅限于图像分类。如前所述,过去十年中众多计算机视觉任务的解决方案在很大程度上依赖于滑动窗口、全卷积范式。在没有ConvNet归纳偏置的情况下,普通ViT模型在被用作通用视觉主干时面临许多挑战。最大的挑战是ViT的全局注意力设计,它在输入大小方面具有二次复杂度。对于ImageNet分类这是可以接受的,但在处理更高分辨率的输入图像时就会变得非常难以。
分层Transformers采用混合方法来弥补这一差距。例如,“滑动窗口”策略(例如局部窗口内的注意力)被重新引入Transformers,使它们的行为更像ConvNets。Swin Transformers是这个方向发展的里程碑式的工作,它首次证明了Transformers可以被用作通用的视觉主干,并在图像分类之外的一系列计算机视觉任务中实现最先进的性能。Swin Transformers的成功和迅速采用也揭示了一件事:卷积的本质并没有变得无关紧要;相反,它仍然很受欢迎,并且从未褪色。
从这个角度来看,在计算机视觉方面Transformers的许多进步目的都是恢复卷积。然而,这些尝试是有代价的:滑动窗口自注意力的简单实现代价可能会很昂贵;使用循环移位等先进方法,可以优化速度,但系统在设计上变得更加复杂。另一方面,具有讽刺意味的是,ConvNet已经满足了许多所需的属性,尽管是以一种直接、简洁的方式。ConvNets似乎失去动力的唯一原因是(分层)在许多视觉任务中Transformers超过了它们,而性能差异通常归因于Transformers卓越的缩放行为,其中多头自注意力是关键组成部分。
与在过去十年中逐渐改进的ConvNet不同,Vision Transformers的采用是一个飞跃。在最近的文献中,在比较两者时通常采用系统级比较(例如Swin Transformers与ResNet)。ConvNets和分层视觉Transformers同时变得不同和相似:它们都有相似的归纳偏置,但在训练过程和宏观/微观层次的结构设计上存在显着差异。在这项工作中,我们研究了ConvNets和Transformers的结构区别,并在比较网络性能时尝试识别混杂变量。我们的研究旨在弥补ConvNet的前ViT和后ViT时代之间的差距,并测试纯ConvNet所能达到的极限。
为此,我们使用经过改进训练程序的标准ResNet(例如ResNet50)开始。我们逐渐将结构向分层视觉Transformers(例如Swin-T)的构建方式进行“现代化”。我们的探索是由一个关键问题引导的:Transformers中的设计决策如何影响ConvNets的性能?我们发现了几个导致性能差异的关键组成部分。因此,我们提出了一个名为 ConvNeXt的纯ConvNet的用法。在各种视觉任务上我们评估了ConvNeXts,例如ImageNet分类、在COCO上的目标检测/分割和在ADE20K上的语义分割。令人惊讶的是,在所有主要基准测试中完全由标准ConvNet模块构建的ConvNeXts的准确性、可扩展性和鲁棒性等方面都能与Transformers相匹敌。ConvNeXt保持了标准ConvNets的效率,对于训练和测试,完全卷积特性也使其很容易实现。
我们希望新的观察和讨论能够挑战一些共同的信念,并鼓励人们重新思考卷积在计算机视觉中的重要性。
2. ConvNet现代化:路线图
在本节中,我们提供了从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中找到。
在高层次上,我们的探索是为了调查和遵循Swin Transformers的不同设计级别,同时保持网络能够像标准ConvNet一样的简洁。我们的探索路线图如下。我们的起点是ResNet-50模型。我们首先使用用于训练视觉Transformers的类似训练技术对其进行训练,与原始ResNet-50相比获得了很大提高的结果。这将是我们的基准。然后我们研究了一系列设计决策,我们总结为 1) 宏观设计,2) ResNeXt,3) 倒置瓶颈,4) 大核尺寸,以及5) 各种层级微观设计。在图2中,我们展示了我们能够实现“网络现代化”的每一步的过程和结果。由于网络复杂性与最终性能密切相关,因此在探索过程中对FLOPs进行了粗略控制,尽管在中间步骤中,FLOPs可能高于或低于参考模型。所有模型都在ImageNet-1K上进行训练和评估。
图2. 我们以分层视觉Transformers (Swin) 的设计方向将标准ConvNet (ResNet) 现代化,而不引入任何基于注意力的模块。前景条是ResNet-50/Swin-T FLOP机制中的模型精度;ResNet-200/Swin-B方案的结果用灰色条显示。阴影线表示未进行修改。两种机制的详细结果见附录。许多Transformers的结构选择可以合并到ConvNet中,它们会带来更好的性能。最后,我们的纯ConvNet模型,名为ConvNeXt,可以胜过Swin Transformers。
2.1. 训练技巧
除了网络结构的设计,训练过程也会影响最终的性能。视觉Transformers不仅带来了一组新的模块和结构设计的决策,而且还引入了不同的视觉训练技术(例如AdamW优化器)。这主要与优化策略和相关的超参数设置有关。因此,我们探索的第一步是使用视觉Transformers训练程序训练基准模型,在本例中是ResNet50/200。最近的研究表明,一组先进的训练技术可以显着提高简单的ResNet-50模型的性能。在我们的研究中,我们使用了一个接近DeiT和Swin Transformers的训练方法。ResNets的训练从最初的90个epoch扩展到300个epoch。我们使用AdamW优化器、Mixup、Cutmix、RandAugment、Random Erasing等数据增强技术,以及随机深度和标签平滑等正则化方案。我们使用的完整超参数集见附录A.1。就其本身而言,这种增强的训练方法将ResNet-50模型的性能从76.1%提高到78.8% (+2.7%),这意味着传统ConvNet和视觉Transformers之间的很大一部分的性能差异可能是由于训练技巧。我们将在整个“现代化”过程中使用具有相同超参数的固定训练方法。 ResNet-50机制上报告的精度都是通过使用三种不同的随机种子进行训练获得的平均值。
2.2. 宏观设计
首先,本文分析Swin Transformers的宏观网络设计。Swin Transformers延续ConvNets的方法,使用多阶段设计,其中每个阶段具有不同的特征图分辨率。有两个值得关注的设计方案:阶段计算比例和“stem cell”结构。
改变阶段计算比例。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%。值得注意的是,研究人员已经彻底研究了计算的分布,并且可能存在更优化的设计。
从现在开始,我们将使用这个阶段计算比例。
将stem更改为“Patchify”。通常,stem cell的设计关注是在网络开始时如何处理输入图像。由于自然图像中固有的冗余性,在标准ConvNets和视觉Transformers中普通stem cell会积极地将输入图像下采样到适当的特征图大小。标准 ResNet 中stem cell包含一个步长为2的7×7卷积层,然后是一个最大池化,这就对输入图像进行4倍下采样。在Vision Transformers中,stem cell使用了更激进的“patchify”策略,这对应于较大的核尺寸(例如核尺寸=14或16)和非重叠卷积。Swin Transformers使用类似的“patchify”层,但使用更小的大小为4的图像块来适应结构的多阶段设计。我们将ResNet方式的stem cell替换为使用4×4、步幅为4的卷积层(k=s=4)实现的patchify层。精度从79.4%变为79.5%。这表明ResNet中的stem cell可以用按照ViT中的更简单的“patchify”层代替,并产生了类似的性能。
我们将在网络中使用“patchify stem”(4×4非重叠卷积)。
2.3. ResNeXt-ify
在这一部分中,我们尝试采用ResNeXt的思想,它比普通的ResNet具有更好的FLOPs/accuracy的平衡。核心组成部分是分组卷积,其中卷积滤波器被分成不同的组。在较高的层级上,ResNeXt的指导原则是“使用更多的组,扩大宽度”。更准确地说,ResNeXt在瓶颈块中的3×3卷积层采用分组卷积。由于这样的方式显着降低了FLOPs,因此扩展了网络宽度以补偿容量损失。
在我们的例子中,我们使用深度卷积,这是分组卷积的一种特殊情况,其中组数等于通道数。深度卷积已通过MobileNet和Xception得到推广。我们注意到,深度卷积类似于自注意力中的加权求和操作,它在每个通道上进行操作,即仅在空间维度上混合信息。深度conv和1×1 convs的组合导致空间的分离和通道混合,这是Vision Transformers共享的属性,其中每个操作混合空间维度或通道维度的信息,但不能同时混合两者。深度卷积的使用有效地降低了网络FLOPs,并且正如预期的那样准确。按照ResNeXt中提出的策略,我们将网络宽度增加到与Swin-T通道数相同的数量(从64到96)。随着FLOPs (5.3G)的增加,使得网络性能达到80.5%。
我们现在将采用ResNeXt设计。
2.4. 倒置瓶颈结构
每个Transformers块中的一个重要设计是它创建了一个倒置瓶颈,即MLP块的隐藏维度是输入维度的四倍(参见图4)。有趣的是,这种Transformers设计与ConvNets中使用扩展比为4的倒置瓶颈设计思路相通。这个想法被MobileNetV2推广,随后在几个先进的ConvNet结构中得到。
图4.ResNet、Swin Transformers和ConvNeXt的块设计。由于多个专用模块和两个残差连接的存在,Swin Transformers的模块更加复杂。为了简洁性,我们注意到Transformers MLP块中的线性层也是“1×1 convs”,因为它们是等价的。
在此,我们探索倒置瓶颈设计。图3(a)至(b)说明了这些配置。尽管深度卷积层的FLOPs增加了,但由于下采样残差块的直连边1×1卷积层的FLOPs显着减少,这种变化将整个网络的FLOPs减少到4.6G。有趣的是,这会稍微提高性能(从80.5%提高到80.6%)。在ResNet-200/Swin-B方案中,这一步带来了更大的收益(81.9%到82.6%),同时也减少了FLOP。
我们现在将使用倒置瓶颈。
图3.块的修改和结果说明。(a)是一个ResNeXt块;在(b)中,我们创建了一个倒置的瓶颈块,在(c)中,空间深度卷积层的位置向上移动。
2.5. 大卷积核
在这部分探索中,我们关注大卷积核的性能。Vision Transformers最显着的特点之一是它们的非局部自注意力,它使每一层都具有全局感受野。虽然过去 ConvNets使用了较大的核尺寸,但黄金标准(由VGGNet普及)是堆叠小核尺寸(3×3)的卷积层,这在现代GPU上具有高效的硬件实现。尽管Swin Transformers将局部窗口重新引入了自注意力块中,但窗口尺寸至少为7×7,明显大于3×3的ResNe(X)t核尺寸。在这里,我们重新讨论了对于ConvNets使用大核尺寸的卷积。
向上移动深度卷积层。要探索大核,一个前提条件是向上移动深度卷积层的位置(图3(b)到(c))。这一设计决策在Transformers中也很明显:MSA块放置在MLP层之前。由于我们有一个倒置的瓶颈块,这是一个自然的设计选择——复杂/低效的模块(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深度卷积。
至此,我们已经在宏观尺度完成了对网络结构的调研。有趣的是,Vision Transformers中很大一部分的设计选择可以映射到ConvNet实例化中。
2.6. 微观设计
在本节中,我们在微观尺度上研究其他几个结构差异——这里的大部分探索都是在层级完成的,重点是激活函数和归一化层的具体选择。
用GELU代替ReLU。NLP和视觉结构之间的一个差异是使用哪些激活函数这样的细节。随着时间的推移,人们已经开发了许多激活函数,但修正线性单元 (ReLU)由于简洁和效率,仍然在ConvNets中广泛使用。在Transformers论文中ReLU也被用作原始的激活函数。高斯误差线性单元或GELU,可以被认为是ReLU的更平滑变体,被用于最先进的Transformers,包括Google的BERT和OpenAI的GPT-2,和最近大多数的ViT。我们发现在ConvNet中也可以用GELU代替ReLU,尽管精度保持不变(80.6%)。
更少的激活函数。Transformers和ResNet 块之间的一个小区别是Transformers的激活函数较少。考虑一个带有键/查询/值的线性嵌入层、投影层和MLP块中的两个线性层的Transformers块,MLP块中只有一个激活函数。相比之下,通常的做法是在每个卷积层(包括1×1卷积)上附加一个激活函数。在这里,我们调研了当我们坚持相同的策略时性能如何变化。如图4所示,除了两个1×1层之间的一个,我们从残差块中去掉了所有GELU层,复制了Transformers块的样式。这个过程将结果提高了0.7%,达到了81.3%,实际上与Swin-T的性能相当。
我们现在将在每个块中使用单个GELU激活函数。
更少的归一化层。Transformers块通常也具有较少的归一化层。在这里,我们去掉了两个BatchNorm (BN)层,只在conv 1×1层之前留下一个BN层。这进一步将性能提升至81.4%,已经超过了Swin-T的结果。请注意,我们每个块的归一化层比Transformers还要少,因为根据经验,我们发现在块的开头添加一个额外的BN层并不能提高性能。
用LN代替BN。BatchNorm是ConvNets 中的重要组成部分,因为它提高了收敛性并减少了过拟合。然而,BN 也有许多纷繁难懂之处,可能会对模型的性能产生不利影响。在开发替代归一化技术方面已经进行了许多尝试,但BN在大多数视觉任务中仍然是首选选项。另一方面,Transformers 中使用了更简单的层归一化 (LN),因此在不同的应用场景中实现了良好的性能。
在原始ResNet中直接用LN代替BN性能未达最好。随着修改了所有的网络结构和训练技术,在此我们重新思考使用LN代替BN的影响。我们观察到我们的ConvNet模型在使用LN训练时没有任何困难;实际上,性能稍好一些,获得了81.5%的精度。
从现在开始,我们将使用层归一化作为我们每个残差块中的归一化选择。
单独的下采样层。在ResNet中,空间下采样是通过每个阶段开始时的残差块来实现的,使用步长为2的3×3卷积(在直连边处使用步长为2的1×1卷积)。在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。
表9.ResNet-50, ConvNeXt-T和Swin-T的详细结构说明。
结束语。我们已经完成了我们的第一次“演练”,并提出了ConvNeXt,一个纯ConvNet,在这个计算机制中对于ImageNet-1K分类它的性能优于Swin Transformers。值得注意的是,到目前为止讨论的所有设计选择都改编自Vision Transformers。此外,即使在ConvNet文献中,这些设计也并不新颖——在过去十年中,它们都是单独研究的,但不是集中研究的。我们的ConvNeXt模型具有与Swin Transformers大致相同的FLOPs、参数量、吞吐量和内存使用,但不需要专门的模块,例如移位窗口注意力或相对位置偏差。
这些发现令人鼓舞,但尚未完全令人信服——迄今为止,我们的探索仅限于小尺度,但Vision Transformers的缩放行为才是真正让它们与众不同的地方。此外,ConvNet能否在目标检测和语义分割等下游任务上与Swin Transformers竞争的问题才是计算机视觉从业者关注的核心问题。在下一节中,我们将在数据和模型尺寸方面扩展我们的ConvNeXt模型,并在一组不同的视觉识别任务上评估它们。
3. Imagenet上的实验评估
我们构建了不同的ConvNeXt变体,ConvNeXt-T/S/B/L,与Swin-T/S/B/L具有相似的复杂性。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)
我们公布在验证集上ImageNet-1K top-1的精度。我们还在ImageNet-22K上进行了预训练,这是一个包含21841个类(包含1000个ImageNet-1K类)的较大数据集,14M张图像用于预训练,然后在ImageNet-1K上对预训练模型进行微调以进行评估。我们使用224*224分辨率图像进行预训练,并使用224*224和384*384分辨率进行微调。详细的训练设置见附录A。
3.1. 结果
ImageNet-1K。表1(上)显示了近期的两个Transformers变体DeiT和Swin Transformers以及来自结构search - RegNets、EfficientNets和EfficientNetsV2的两个ConvNet结果的比较。在精度-计算平衡以及推断吞吐量方面,ConvNeXt能与两个强大的ConvNet基准(RegNet和EfficientNet)相匹敌。ConvNeXt 的性能也全面优于具有类似复杂性的Swin Transformers,有时具有明显的幅度(例如,ConvNeXt-T为0.8%)。与Swin Transformers 相比,ConvNeXts在没有比如移动窗口或相对位置偏差等专门模块的情况下也享有更高的吞吐量。
结果中的一个亮点是384*384的ConvNeXt-B:它比Swin-B高0.6%(85.1%对84.5%),但推断吞吐量提高了12.5%(95.7 VS 85.1图像/秒)。我们注意到,当分辨率从224*224增加到384*384时,ConvNeXt B相对于Swin-B的FLOPs/吞吐量优势变得更大。此外,当进一步扩展到ConvNeXt-L时,我们观察到了85.5%的改进结果。
表1.在ImageNet-1K的分类精度。与Transformers类似,具有更大容量模型和更大(预训练)数据集时ConvNeXt也显示出更好的缩放性能。遵循[45],在V100 GPU上测量推断吞吐量。在A100 GPU上,ConvNeXt比Swin Transformers有更高的吞吐量。请参阅附录E。ViT的结果是在AugReg进行90epoch的训练的,通过与作者的个人沟通提供。
ImageNet-22K。在表1(下)中我们展示了在ImageNet-22K上预训练后微调的模型的结果。这些实验很重要,因为人们普遍认为ViT具有较少的归纳偏置,因此在大规模预训练时可以比ConvNets表现更好。我们的结果表明,在使用大型数据集进行预训练时,正确设计的ConvNets并不逊于Vision Transformers——ConvNeXts的性能仍然与类似大小的Swin Transformers相当或更好,并且吞吐量略高。此外,我们的ConvNeXt-XL模型达到了87.8%的精度——在处理384*384图像时与ConvNeXt-L相比有了相当大的改进,证明了ConvNeXts是可扩展的结构。
在ImageNet-1K上,通过配备高级模块(如Squeeze-and-Excitation)和渐进式训练程序的搜索结构(EfficientNetV2-L)实现了最佳性能。然而,通过在ImageNet-22K上进行预训练,ConvNeXt能够胜过EfficientNetV2,进一步证明了大规模训练的重要性。
在附录B中,我们讨论了ConvNeXt的鲁棒性和域外泛化结果。
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和MAE用于ViT-L,因为它们采用了在原始ViT上改进的训练程序。ConvNeXt模型使用与以前相同的设置进行训练,但预热epoch更长。在ImageNet-1K 224*224分辨率下的结果如表2所示。我们观察到ConvNeXt的性能通常与ViT相当,这表明我们的ConvNeXt块设计在用于非分层模型时具有竞争力。
表2.各向同性ConvNeXt和ViT的比较。训练内存是在V100 GPU上测量的,每个GPU批大小为32。
4. 下游任务的实验评估
在COCO上目标检测和分割。我们使用ConvNeXt主干在COCO数据集上微调Mask R-CNN和Cascade Mask R-CNN。延续Swin Transformers,我们使用多尺度训练、AdamW优化器和3x计划。更多细节和超参数设置见附录A.3。
表3显示了Swin Transformers、ConvNeXt和传统ConvNet(如ResNeXt)的目标检测和实例分割比较的结果。在不同的模型复杂性中,ConvNeXt的性能与Swin Transformers相当甚至更好。当放大到在ImageNet-22K上预训练的更大模型 (ConvNeXt-B/L/XL)时,在许多情况下,在box和mask AP方面ConvNeXt明显优于Swin Transformers(例如+1.0AP)。
表3.使用Mask-RCNN和Cascade Mask-RCNN 进行COCO目标检测和分割结果。‡表示模型在ImageNet-22K上进行了预训练。ImageNet-1K预训练的Swin结果来自他们的Github存储库。ResNet-50和X101模型的AP编号来自[45]。我们在A100 GPU上测量FPS。FLOPs使用图像尺寸(1280, 800)计算。
ADE20K上的语义分割。我们还使用UperNet在ADE20K语义分割任务上评估 ConvNeXt主干。所有模型变体都经过16万次迭代训练,批大小为16。其他实验设置遵循[6](有关更多详细信息见附录A.3)。在表4中,我们公布了多尺度测试的验证mIoU。ConvNeXt模型可以在不同的模型容量上实现具有竞争力的性能,进一步验证了我们结构设计的有效性。
表4 ADE20K 验证结果使用UperNet。‡表示IN-22K预训练。Swins的结果来自其GitHub存储库。在Swin之后,我们通过多尺度测试报告mIoU结果。FLOP分别基于IN-1K和IN-22K预训练模型的(2048, 512)和(2560, 640)输入大小。
关于模型效率的评论。在类似的FLOPs下,深度卷积的模型比只有密集卷积的ConvNets更慢并且消耗更多的内存。很自然地要问ConvNeXt的设计是否会使其实际上效率低下。正如整篇论文所证明的,ConvNeXts的推断吞吐量与Swin Transformers的相当甚至更好。对于需要更高分辨率输入的分类和其他任务都是如此(有关吞吐量/FPS的比较,见表1,3)。此外,我们注意到训练ConvNeXts比训练Swin Transformers需要更少的内存。例如,训练使用ConvNeXt-B主干的Cascade Mask-RCNN消耗峰值内存17.4GB,每个GPU的批量大小为2,而Swin-B的推断数为18.5GB。
5. 相关工作
混合模型。在ViT之前和之后的时代,有很多人在积极研究结合卷积和自注意力的混合模型。在ViT之前,重点是使用自注意力/非局部模块来增强ConvNet以获得远距离的相关性。最初的ViT首先研究了一种混合配置,并且大量后续工作集中在将卷积先验重新引入ViT,无论是显式还是隐式的方式。
近期基于卷积的研究。Han等人表明局部Transformers注意力等效于非均匀动态深度卷积。然后Swin中的MSA块替换为动态或常规深度卷积,实现与Swin相当的性能。同一时期的工作ConvMixer表明,在小尺度设置中,深度卷积可以用作一种有前途的混合策略。ConvMixer使用更小的图像块尺寸来获得最佳结果,使得吞吐量远低于其他基准。GFNet采用快速傅里叶变换(FFT)进行标记混合。FFT也是卷积的一种形式,但具有全局核尺寸和循环填充。与近期许多的Transformers或ConvNet设计不同,我们研究的一个主要目标是深入了解标准ResNet的现代化过程并实现最先进的性能。
6. 结论
在2020年,Vision Transformers,尤其是Swin Transformers等分层Transformers开始取代ConvNets,成为通用视觉主干的首选。人们普遍认为,Vision Transformers比ConvNets更准确、更高效、更易扩展。我们提出了ConvNeXts,这是一种纯ConvNet模型,可以在多个计算机视觉任务的基准上与最先进的分层Vision Transformers相匹敌,同时保持标准ConvNet的简洁和效率。在某些方面,我们的观察结果令人惊讶,而我们的ConvNeXt模型本身并不是全新的——在过去十年中,许多设计选择都被单独研究过,而没有被集中研究过。我们希望本研究的新结果能够挑战一些广泛持有的观点,并促使人们重新思考卷积在计算机视觉中的重要性。
【论文精读-ConvNeXt】A ConvNet for the 2020shttps://zhuanlan.zhihu.com/p/485303729