A ConvNet for the 2020s
Abstract
-
视觉识别的“咆哮的20年代”始于视觉transformer(ViTs)的问世,它迅速取代ConvNets成为最先进的图像分类模型。另一方面,普通的ViT在应用于一般的计算机视觉任务时面临困难,如目标检测和语义分割。 -
正是层次化的transformer(例如Swin transformer)重新引入了几个ConvNet先验,使transformer作为通用的视觉主干实际上可行,并在各种各样的视觉任务中显示出卓越的性能。然而,这种混合方法的有效性仍然很大程度上归功于transformer的内在优势,而不是卷积固有的归纳偏差。 -
在这项工作中,本文重新审视了设计空间,并测试了一个纯粹的ConvNet所能达到的极限。本文逐渐将标准ResNet“现代化”,使其面向vision Transformer的设计,并在此过程中发现了几个导致性能差异的关键组件。 -
这一探索的结果是一个纯ConvNet模型家族,被称为ConvNeXt。ConvNeXts完全由标准ConvNet模块构建,在准确性和可扩展性方面优于transformer,实现了87.8%的ImageNet top-1精度,在COCO检测和ADE20K分割方面优于Swin transformer,同时保持了标准ConvNets的简单和高效。 -
Code: https://github.com/facebookresearch/ConvNeXt -
论文下载:[2201.03545] A ConvNet for the 2020s (arxiv.org) -
回顾近一年,在CV领域发的文章绝大多数都是基于Transformer的,比如2021年ICCV 的best paper Swin Transformer,(本文发表在CVPR2022.)而卷积神经网络已经开始慢慢淡出舞台中央。卷积神经网络要被Transformer取代了吗?也许会在不久的将来。 -
今年(2022)一月份,Facebook AI Research和UC Berkeley一起发表了一篇文章A ConvNet for the 2020s,在文章中提出了ConvNeXt纯卷积神经网络,它对标的是2021年非常火的Swin Transformer,通过一系列实验比对,在相同的FLOPs下,ConvNeXt相比Swin Transformer拥有更快的推理速度以及更高的准确率,在ImageNet 22K上ConvNeXt-XL达到了87.8%的准确率。看来ConvNeXt的提出强行给卷积神经网络续了口命。
Introduction
-
回顾2010年代,这十年见证了深度学习的巨大进步和影响。主要的驱动力是神经网络的复兴,尤其是卷积神经网络(ConvNets)。在过去的十年中,视觉识别领域成功地从工程特征转向设计(ConvNet)架构。虽然反向传播训练的ConvNets的发明可以追溯到20世纪80年代[Backpropagation applied to handwritten zip code recognition],但直到2012年底我们才看到它在视觉特征学习方面的真正潜力。 -
AlexNet的问世,催生了“ImageNet时刻”,开启了计算机视觉的新纪元。自那以后,这一领域发展迅速。代表性的ConvNets如VGGNet、inceptions、ResNe(X)t、DenseNet、MobileNet、EfficientNet和RegNet等,重点关注准确性、效率和可扩展性的不同方面,推广了许多有用的设计原则。 -
ConvNets在计算机视觉领域的完全主导地位并非巧合:在许多应用场景中,“滑动窗口”策略是视觉处理固有的,特别是在处理高分辨率图像时。 -
ConvNets有几个内置的诱导偏差,使它们非常适合各种各样的计算机视觉应用。最重要的一个是翻译等方差,这是一个理想的性质,如目标检测。ConvNets本身也是高效的,因为当以滑动窗口的方式使用时,计算是共享的[Overfeat]。几十年来,这一直是ConvNets的默认用途,通常用于有限的对象类别,如数字,面孔和行人。进入2010年代后,基于区域的探测器进一步将ConvNets提升为视觉识别系统的基本组成部分。 -
大约在同一时期,用于自然语言处理(NLP)的神经网络设计经历了一条非常不同的道路,transformer取代了循环神经网络,成为了主导的骨干架构。尽管语言和视觉领域之间的兴趣任务存在差异,但随着视觉transformer(ViT)的引入,这两种流在2020年出人意料地融合在一起,彻底改变了网络架构设计的格局。 -
除了最初的“补丁”层(将图像分割为一系列补丁)外,ViT没有引入针对图像的感应偏差,并且对原始的NLP transformer做了最小的更改。ViT的一个主要焦点是伸缩行为:在更大的模型和数据集大小的帮助下,transformer的性能可以大大超过标准ResNets。这些结果对图像分类任务具有启发意义,但计算机视觉并不局限于图像分类。 -
如前所述,在过去十年中,许多计算机视觉任务的解决方案很大程度上依赖于滑动窗口、完全卷积范式。如果没有ConvNet归纳偏差,一个普通的ViT模型在被采用为通用的视觉主干时面临许多挑战。最大的挑战是ViT的全局注意力设计,它的输入大小具有二次元复杂度。对于ImageNet分类,这可能是可以接受的,但是对于更高分辨率的输入,这很快就变得难以处理。 -
分层transformer采用一种混合的方法来弥补这一差距。例如,“滑动窗口”策略(例如,关注局部窗口)被重新引入到变形金刚中,使它们的行为更类似于ConvNets。Swin Transformer是这个方向的一个里程碑式的工作,首次表明transformer可以作为通用的视觉骨干,并在图像分类以外的一系列计算机视觉任务中实现最先进的性能。Swin Transformer的成功和快速采用也揭示了一件事:卷积的本质并没有变得无关紧要;相反,人们对它的渴望从未消退。 -
从这个角度来看,transformer在计算机视觉方面的许多进步都旨在恢复卷积。然而,这些尝试是有代价的:滑动窗口自我注意的原始实现可能是昂贵的;采用先进的方法,如cyclic shifting,可以优化速度,但系统在设计上变得更加复杂。 -
另一方面,几乎具有讽刺意味的是,ConvNet已经满足了许多这些期望的特性,尽管是以一种直截了当的、不加修饰的方式。ConvNets失去动力的唯一原因是(分层)transformer在许多视觉任务上超过了它们,而这种性能差异通常归因于transformer的高级缩放行为,多头自我注意是关键组成部分。 -
与ConvNets不同的是,ConvNets在过去十年中逐渐得到改进,视觉transformer的采用是一个步骤的改变。在最近的文献中,通常采用系统级比较(例如Swin Transformer和ResNet)来比较两者。ConvNets和分层transformer同时变得不同和相似:它们都具有相似的归纳偏差,但在训练程序和宏观/微观层次的架构设计上存在显著差异。 -
在这项工作中,本文研究了ConvNets和transformer之间的架构差异,并试图在比较网络性能时识别混淆变量。本文的研究旨在为ConvNet弥合前vit和后vit时代之间的差距,并测试一个纯ConvNet所能达到的极限。 -
为了做到这一点,本文从一个标准的ResNet(例如ResNet50)开始,它经过改进的程序的训练。本文逐渐将架构“现代化”,以构建一个分层的视觉transformer(例如Swin-T)。本文的探索是由一个关键问题引导的:transformer的设计决策如何影响ConvNets的性能? -
在此过程中,本文发现了几个导致性能差异的关键组件。因此,提出了一个纯ConvNets家族,称为ConvNeXt。在各种视觉任务上评估了ConvNeXts,如ImageNet分类,COCO上的目标检测/分割,以及ADE20K上的语义分割。令人惊讶的是,完全由标准ConvNet模块构建的ConvNeXts在所有主要基准测试中,在准确性、可扩展性和鲁棒性方面都能与transformer相媲美。ConvNeXt保持了标准ConvNets的效率,而且训练和测试的完全卷积特性使其实现极为简单。 -
ConvNeXt使用的全部都是现有的结构和方法,没有任何结构或者方法的创新。而且源码也非常的精简,100多行代码就能搭建完成,相比Swin Transformer简直不要太简单。之前看Swin Transformer时,滑动窗口,相对位置索引,不光原理理解起来有些吃力,源码多的也挺让人绝望的(但无法否认Swin Transformer的成功以及设计的很巧妙)。 -
为什么现在基于Transformer架构的模型效果比卷积神经网络要好呢?论文中的作者认为可能是随着技术的不断发展,各种新的架构以及优化策略促使Transformer模型的效果更好。那么使用相同的策略去训练卷积神经网络也能达到相同的效果吗?抱着这个疑问作者就以Swin Transformer作为参考进行一系列实验。 -
-
ImagiteNet-1K分类结果。每个气泡的面积与一个模型族中的一个变体的FLOPs成正比。ImageNet-1K/22K模型在这里分别拍摄了
22
4
2
/
38
4
2
224^2 /384^2
2242/3842张图像。ResNet和ViT的结果是通过改进的训练程序获得的。本文证明了一个标准的卷积模型net可以实现与分层视觉transformer相同的可扩展性,同时在设计上要简单得多。
Modernizing a ConvNet: a Roadmap
-
在本节中,提供了一个从ResNet到ConvNet的轨迹,它类似于transformer。考虑了两种模型大小的FLOPs,一个是ResNet-50 / Swin-T体制,FLOPs大约在
4.5
×
1
0
9
4.5×10^9
4.5×109,另一个是ResNet-200 / Swin-B体制,FLOPs大约在
15.0
×
1
0
9
15.0 ×10^9
15.0×109。为了简单起见,本文将使用ResNet-50 / Swin-T复杂性模型展示结果。对于更高容量模型的结论是一致的,结果可以在附录C中找到。 -
在高水平上,本文的探索是为了调查和遵循Swin transformer的不同层次的设计,同时保持网络作为标准ConvNet的简单性。本文的探索路线图如下。本文的起点是ResNet-50模型。首先使用类似于训练视觉transformer的训练技术来训练它,并获得了比原始ResNet-50有很大提高的结果。这将是本文的基线。 -
然后,研究了一系列的设计决策,总结为
-
1)宏观设计, -
2)ResNeXt, -
3)反向瓶颈, -
4)大内核大小, -
5)各种分层的微观设计。 -
在下图中,展示了“网络现代化”的每一步所能实现的过程和结果。由于网络复杂性与最终性能密切相关,在勘探过程中,FLOPs大致受到控制,但在中间阶段,FLOPs可能高于或低于参考模型。所有模型都在ImageNet-1K上进行训练和评估。 -
-
将一个标准的ConvNet (ResNet)现代化,以设计一个分层视觉transformer(Swin),而不引入任何基于注意力的模块。前景条是ResNet-50/Swin-T FLOP模式的模型精度;ResNet-200/Swin-B的结果显示为灰色条。一个孵出的条表示修改没有被采用。两种制度的详细结果见附录。许多Transformer架构选择可以合并到ConvNet中,它们可以带来越来越好的性能。最后,本文的纯ConvNet模型,命名为ConvNeXt,可以超过Swin transformer。 -
论文的整体思路是从原始的ResNet出发,通过借鉴Swin Transformer的设计来逐步地改进模型。论文共选择了两个不同大小的ResNet模型:ResNet50和ResNet200,其中ResNet50和Swin-T有类似的FLOPs(4G vs 4.5G),而ResNet200和Swin-B有类似的FLOPs(15G)。首先做的改进是调整训练策略,然后是模型设计方面的递进优化:宏观设计->ResNeXt化->改用Inverted bottleneck->采用large kernel size->微观设计。由于模型性能和FLOPs强相关,所以在优化过程中尽量保持FLOPs的稳定。 ?
Training Techniques
-
除了网络架构的设计之外,训练过程也会影响最终的性能。视觉 transformer不仅带来了一套新的模块和架构设计决策,而且还引入了不同的训练技术(如AdamW优化器)。 -
这主要涉及到优化策略和相关的超参数设置。因此,本文探索的第一步是用vision Transformer训练程序训练一个基线模型,在本例中是ResNet50/200。最近的研究[Revisiting resnets: Improved training and scaling strategies,Resnet strikes back: An improved training procedure in timm]表明,一套现代训练技术可以显著提高简单的ResNet-50模型的性能。 -
在本文的研究中,使用的训练配方接近DeiT的和Swin Transformer的。ResNets的培训从最初的90个epoch扩展到300个epoch。我们使用AdamW优化器,数据增强技术如Mixup, Cutmix, RandAugment, Random Erasing,正则化方案包括随机深度和标签平滑。 -
本文使用的完整超参数集可以在附录A.1中找到。就其本身而言,这种增强的训练配方将ResNet-50模型的性能从76.1%提高到78.8%(+2.7%),这意味着传统ConvNets和视觉transformer之间的性能差异的很大一部分可能是由于训练技术。 -
将在整个“现代化”过程中使用这个具有相同超参数的固定训练配方。ResNet-50系统上的每一个报告的精度都是用三种不同的随机种子训练得到的平均值。
Macro Design
-
现在来分析Swin transformer的宏观网络设计。Swin transformer遵循ConvNets使用多阶段设计,其中每个阶段具有不同的特征映射分辨率。有两个有趣的设计考虑:阶段计算比率和“stem”结构。 -
Changing stage compute ratio.
- 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%。值得注意的是,研究人员对计算分布进行了深入研究[On network design spaces for visual recognition,Designing network design spaces],可能存在更优化的设计。
-
Changing stem to “Patchify”.
-
通常,干细胞的设计与网络开始时输入的图像如何处理有关。由于自然图像中固有的冗余,在标准ConvNets和视觉transformer中,普通的干细胞会对输入图像进行积极的降采样,以达到合适的特征地图大小。 -
标准ResNet中的干细胞包含一个stride 2的7×7卷积层,然后是一个max pool,这导致输入图像的4×下采样。在视觉transformer中,一个更激进的“补丁”策略被用作干细胞,它对应一个大的内核大小(例如:核大小= 14或16)和非重叠卷积。 -
Swin Transformer使用类似的“补丁”层,但补丁大小更小,为4,以适应架构的多阶段设计。本文将resnet风格的stem替换为使用4×4, stride 4卷积层实现的补丁层。准确率从79.4%提高到79.5%。这表明ResNet中的stem可以用一个更简单的“补丁”层à la ViT取代,这将导致类似的性能。
Inverted Bottleneck
-
每个Transformer块的一个重要设计是,它会产生一个反向瓶颈,即MLP块的隐藏维度比输入维度宽4倍(见下图)。有趣的是,这种Transformer设计与ConvNets中使用的扩展比为4的反向瓶颈设计相连接。这个想法被MobileNetV2推广开来,随后在几个先进的ConvNet架构中获得了支持。
-
这里本文探索反向瓶颈设计。下图 (a)到(b)说明了这些配置。尽管深度卷积层的FLOPs增加了,但由于下采样残差块的旁路方式1×1 conv层的FLOPs显著减少,这一变化将整个网络的FLOPs减少到4.6G。有趣的是,这略微提高了性能(80.5%到80.6%)。在ResNet-200 / Swin-B模式中,这一步带来了更多的收益(81.9% - 82.6%),也减少了FLOPs。
ResNeXt-ify
-
在这一部分中,本文尝试采用ResNeXt的思想,它比普通的ResNet有更好的FLOPs/准确性权衡。核心组件是分组卷积,其中卷积滤波器被分成不同的组。在较高的层次上,ResNeXt的指导原则是“使用更多的组,扩展宽度”。更准确地说,ResNeXt在瓶颈块的3×3 conv层中使用了分组卷积。由于这大大减少了FLOPs,因此网络宽度将扩大以补偿容量损失。 -
在本文的例子中,使用了深度卷积,这是分组卷积的一种特殊情况,其中组的数量等于信道的数量。MobileNet和Xception推广了深度卷积。本文注意到,深度卷积类似于自我注意中的加权和操作,它以每个通道为基础进行操作,即只混合空间维度的信息。 -
深度卷积和1 × 1卷积的结合导致了空间和信道混合的分离,这是视觉 transformer共有的特性,其中每个操作要么跨空间或信道维混合信息,但不是同时跨空间或信道维混合信息。深度卷积的使用有效地减少了网络故障,并如预期的那样,提高了精度。遵循ResNeXt中提出的策略,本文将网络宽度增加到与Swin-T相同的信道数(从64到96)。这使网络性能提高了80.5%,并增加了FLOPs次数(5.3G)。
Large Kernel Sizes
-
在本部分的探索中,本文主要关注大型卷积核的行为。视觉transformer最显著的特点之一是它们的非局部自我注意,这使得每一层都有一个全局的接受野。虽然过去在ConvNets中已经使用了大的内核大小,但黄金标准(由VGGNet推广)是对小的内核大小(3×3)的conv层进行堆栈,这些层在现代gpu上具有高效的硬件实现。虽然Swin transformer重新将本地窗口引入到自我注意块,但窗口大小至少为7×7,明显大于3×3的ResNe(X)t内核大小。在这里,本文重新讨论ConvNets中使用大的核级卷积。 -
Moving up depthwise conv layer .
- 要研究大型内核,一个先决条件是向上移动深度conv层的位置(下图 (b)到?)。这是一个在transformer中也很明显的设计决策:MSA块被放置在MLP层之前。由于本文有一个倒置的瓶颈块,这是一个自然的设计选择——复杂/低效的模块(MSA,大内核conv)将有更少的通道,而高效、密集的1×1层将做繁重的工作。这个中间步骤将FLOPs降低到4.1G,导致性能暂时下降到79.9%。
-
Increasing the kernel size.
- 通过所有这些准备工作,采用更大的内核大小的卷积的好处是显著的。本文尝试了几种内核大小,包括3、5、7、9和11。网络的性能从79.9% (3×3)提高到80.6% (7×7),而网络的FLOPs次数大致保持不变。此外,观察到,更大的内核大小的好处在7×7上达到了饱和点。也在大容量模型中验证了这种行为:当将内核大小增加到7×7以外时,ResNet-200模式并没有表现出进一步的增长。
-
至此,本文已经结束了对宏观尺度上的网络架构的研究。有趣的是,在vision Transformer中所采取的设计选择的很大一部分可能被映射到ConvNet实例化。
Micro Design
-
将从微观角度研究其他几个体系结构差异—这里的大多数研究都是在层级别上完成的,重点关注激活函数和规范化层的特定选择。 -
Replacing ReLU with GELU
- NLP和视觉架构之间的一个不同之处在于具体使用哪一个激活函数。随着时间的推移,已经开发了许多激活函数,但修正线性单元(ReLU)由于其简单和高效仍被广泛应用于ConvNets中。在Transformer的原始论文中也使用了ReLU作为激活函数。高斯误差线性单元,或GELU,可以被认为是ReLU的一个更平滑的变体,被用于最先进的transformer,包括谷歌的BERT和OpenAI的GPT-2,以及最近的vit。发现,在ConvNet中,GELU也可以替代ReLU,但精度保持不变(80.6%)。
-
Fewer activation functions.
-
Transformer和ResNet块之间的一个小区别是,Transformer的激活函数更少。考虑一个具有键/查询/值线性嵌入层、投影层和MLP块中的两个线性层的Transformer块。在MLP块中只有一个激活函数。相比之下,通常的做法是在每个卷积层附加一个激活函数,包括1 × 1个卷积。 -
下面来看看当本文坚持同样的策略时,效果会发生怎样的变化。如上图所示,从残差块中除去所有GELU层,除了两个1 × 1层之间的一个层,复制了Transformer块的样式。该工艺使结果提高了0.7% 到 81.3%,与Swin-T的性能基本相当 -
Fewer normalization layers.
-
Substituting BN with LN.
-
BatchNorm是ConvNets的一个重要组成部分,它提高了收敛性,减少了过拟合。然而,BN也有许多错综复杂的问题,这些问题会对模型的性能产生不利影响。已经有许多尝试来发展替代的归一化技术[Weight normalization: A simple reparameterization to accelerate training of deep neural networks.,Instance normalization: The missing ingredient for fast stylization,Group normalization],但BN仍然是大多数视觉任务的首选。另一方面,transformer中使用了更简单的层归一化(LN),在不同的应用场景中具有良好的性能。 -
在原ResNet中直接用LN代替BN会导致性能次优。在对网络架构和训练技术进行了所有的修改之后,在这里回顾一下用LN代替BN的影响。观察到本文的ConvNet模型在LN训练中没有任何困难;实际上,该方法的性能略好,准确率为81.5% -
Separate downsampling layers.
-
在ResNet中,空间下采样是通过每个阶段开始的残差块实现的,使用3×3 conv和stride 2(和1×1 conv与stride 2在旁路连接)。在Swin transformer中,在各个阶段之间添加一个单独的下采样层。探索了一个类似的策略,其中本文使用2×2 conv层与stride 2进行空间下采样。令人惊讶的是,这种修改导致了分散的训练。进一步的研究表明,在空间分辨率发生变化的地方添加归一化层有助于稳定训练。 -
这包括Swin transformer中也使用的几个LN层:一个在每个下采样层之前,一个在stem之后,一个在最终的全球平均池之后。可以将准确率提高到82.0%,明显超过Swin-T的81.3%。 -
Closing remarks.
-
已经完成了第一次“playthrough”,并发现了ConvNeXt,一个纯粹的ConvNet,它可以在这个计算体系中超过ImageNet-1K分类的Swin Transformer。值得注意的是,到目前为止讨论的所有设计选择都改编自视觉 transformer。 -
此外,这些设计即使在ConvNet文献中也并不新颖——它们都是在过去十年中单独研究的,而不是共同研究的。本文的ConvNeXt模型几乎有相同的FLOPs,#参数。,吞吐量和内存使用作为Swin Transformer,但不需要专门的模块,如shifted window attention 和 relative position biases。
Empirical Evaluations on ImageNet
Settings
-
ImageNet-1K数据集由1000个对象类和1.2M训练图像组成。本文报告了验证集上的ImageNet-1K top-1精度。还在ImageNet-22K上进行了预训练,ImageNet-22K是一个更大的数据集,有21841个类(1000个ImageNet-1K类的超集),有大约14M张图像用于预训练,然后在ImageNet-1K上对预训练模型进行微调以进行评估。在下面总结了本文的训练设置。更多的细节可以在附录A中找到。 -
Training on ImageNet-1K.
- 使用AdamW对ConvNeXts进行300个epoch的训练,学习率为4e-3。有一个20个epoch的线性预热和余弦衰减计划之后。使用4096的批大小和0.05的重量衰减。对于数据增强,常用的方案有Mixup、Cutmix,RandAugment和Random Erasing。用随机深度和标签平滑来正则网络。应用初值1e-6的Layer Scale。使用指数移动平均线(EMA),因为本文发现它减轻了较大模型的过拟合。
-
Pre-training on ImageNet-22K.
- 本文在ImageNet-22K上对ConvNeXts进行90个epoch的预训练,并进行5个epoch的warmup。不使用EMA。其他设置遵循ImageNet-1K。
-
Fine-tuning on ImageNet-1K.
-
在ImageNet-1K上对ImageNet22K预训练模型进行了30个epoch的微调。使用AdamW,学习率为5e-5,使用余弦学习率调度,分层学习率衰减,无需warmup,批量大小为512,权重衰减为1e-8。默认的训练前、微调和测试分辨率是
22
4
2
224^2
2242。此外,将ImageNet-22K和ImageNet-1K预训练模型的分辨率调整为更大的
38
4
2
384^2
3842。 -
与ViTs/Swin transformer相比,ConvNeXts在不同分辨率下的微调更简单,因为网络是完全卷积的,不需要调整输入patch的大小,也不需要插值绝对/相对位置偏差。
Results
-
ImageNet-1K.
-
下表(上)显示了与两种最近的Transformer变体DeiT和Swin Transformer,以及来自架构搜索的两种ConvNets - RegNets , EfficientNets和EfficientNetsV2的比较结果。在精度-计算权衡和推断吞吐量方面,ConvNeXt与两种强ConvNet基线(RegNet和EfficientNet)竞争得很好。 -
-
ImageNet-1K上的分类精度。与transformer类似,ConvNeXt也显示出了具有较高容量的模型和更大(训练前)数据集的可伸缩性行为。推理吞吐量在V100 GPU上测量,在[Swin transformer]之后。在A100 GPU上,ConvNeXt可以拥有比Swin Transformer更高的吞吐量。参见附录E. 90 epochAugReg训练的ViT结果,通过与作者的个人交流提供。 -
ConvNeXt的表现也优于Swin Transformer的类似复杂性的全面,有时有很大的增益(例如,ConvNeXt- t的0.8%)。没有专门的模块,如shifted windows或相对位置偏差,ConvNeXts也享有比Swin transformer更好的吞吐量。 -
结果中的亮点是
38
4
2
384^2
3842的ConvNeXt-B:它比Swin-B高出0.6% (85.1% vs. 84.5%),但具有12.5%的更高推断吞吐量(95.7 vs. 85.1图像/s)。本文注意到,当分辨率从
22
4
2
224^2
2242增加到
38
4
2
384^2
3842时,ConvNeXt B相对于Swin-B的FLOPs/吞吐量优势变得更大。此外,本文观察到,当进一步扩展到ConvNeXt-L时,改善了85.5%的结果。 -
ImageNet-22K.
-
上表(下)展示了从ImageNet-22K训练前调整的模型的结果。这些实验很重要,因为人们普遍认为,视觉transformer具有更少的诱导偏差,因此在更大规模的预先训练时,可以比卷积网络表现得更好。 -
本文的结果表明,当使用大数据集进行预训练时,适当设计的ConvNets并不逊色于视觉transformer——ConvNeXts的性能仍然与类似大小的Swin transformer相当或更好,吞吐量略高。此外,本文的ConvNeXt-XL模型实现了87.8%的精度-比
38
4
2
384^2
3842的ConvNeXt-L有一个不错的改进,表明convnext是可伸缩的架构。 -
在ImageNet-1K上,使用了先进模块(如squeez -and dexcitation)和渐进训练程序的搜索架构EfficientNetV2-L取得了最好的成绩。然而,通过ImageNet-22K的预训练,ConvNeXt能够超过EfficientNetV2,进一步证明了大规模训练的重要性。
Isotropic ConvNeXt vs. ViT
-
在这次消融中,检查了本文的ConvNeXt块设计是否可推广到vit-style各向同性架构,该架构没有下采样层,并在所有深度保持相同的特征分辨率(例如14×14)。使用与viti - s /B/L(384/768/1024)相同的特征维度构建了各向同性的ConvNeXt-S/B/L。 -
深度设置为18/18/36,以匹配参数和FLOPs的数量。块结构保持不变。本文使用来自DeiT的ViTs /B和MAE的vitl的监督训练结果,因为它们采用了比原来的ViTs改进的训练程序。ConvNeXt模型的训练设置与之前相同,但有更长的预热期。
22
4
2
224^2
2242分辨率下的ImageNet-1K结果见下表。 -
-
各向同性ConvNeXt与ViT的比较。训练内存是在V100 gpu上测量的,每个gpu有32个批大小。 -
本文观察到,ConvNeXt的性能基本上与ViT相当,这表明本文的ConvNeXt块设计在非层次模型中使用时是有竞争力的。
Empirical Evaluation on Downstream Tasks
-
Object detection and segmentation on COCO.
-
利用ConvNeXt主干对COCO数据集上的Mask R-CNN和Cascade Mask R-CNN进行微调。在Swin Transformer之后,使用多尺度训练、AdamW优化器和3×调度。更多的详细信息和超参数设置可以在附录A.3中找到。 -
下表展示了Swin Transformer、ConvNeXt和传统的ConvNet(如ResNeXt)的对象检测和实例分割结果。在不同的模型复杂性中,ConvNeXt实现了与Swin Transformer相同或更好的性能。当放大到更大的模型(ConvNeXt- b /L/XL)在ImageNet-22K上预训练,在许多情况下,ConvNeXt在盒和掩码AP方面显著优于Swin transformer(例如+1.0 AP) -
Semantic segmentation on ADE20K.
-
本文还利用supernet在ADE20K语义分割任务上评估了ConvNeXt主干。所有模型变体训练为160K次迭代,批大小为16。其他实验设置遵循[BEiT: BERT pretraining of image transformers]。在下表中,本文用多尺度测试报告了验证mIoU。在不同的模型容量下,ConvNeXt模型能够实现具有竞争力的性能,进一步验证了本文架构设计的有效性。 -
-
使用supernet的ADE20K验证结果。?表示IN-22K预训练。Swins的结果来自它的GitHub库。在Swin之后,本文报告了mIoU的多尺度测试结果。FLOPs是基于IN-1K和IN-22K预训练模型的输入大小分别为(2048,512)和(2560,640)。 -
Remarks on model efficiency.
-
在类似的FLOPs情况下,已知具有深度卷积的模型比只有密集卷积的ConvNets更慢,消耗更多内存。人们很自然地会问,ConvNeXt的设计是否会使它实际上效率低下。正如本文所证明的,ConvNeXts的推理吞吐量与Swin transformer相当或超过。这对于分类和其他需要更高分辨率输入的任务都是如此(吞吐量/FPS的比较见表。 -
此外,本文注意到训练ConvNeXts比训练Swin transformer需要更少的内存。例如,使用ConvNeXt-B骨干训练Cascade Mask-RCNN消耗17.4GB峰值内存,每个gpu批处理大小为2,而Swin-B的参考编号为18.5GB。 -
与普通的ViT相比,由于本地计算,ConvNeXt和Swin Transformer都表现出了更有利的准确性- flops权衡。值得注意的是,这种效率的提高是ConvNet诱导偏差的结果,与视觉transformer中的自我注意机制没有直接关系。
Related Work
Conclusions
-
在21世纪20年代,视觉transformer,特别是像Swin transformer这样的等级transformer,开始取代ConvNets成为通用视觉骨干的首选。人们普遍认为,视觉transformer比ConvNets更准确、高效和可扩展。本文提出了ConvNeXts,一个纯ConvNet模型,可以在多个计算机视觉基准上与最先进的分层视觉变形器竞争,同时保持标准ConvNets的简单和高效。 -
在某种程度上,本文的观察结果是令人惊讶的,而本文的ConvNeXt模型本身并不是全新的——在过去的十年中,许多设计选择都被单独地检验过,但没有一起检验过。本文希望这项研究报告的新结果将挑战一些广泛持有的观点,并促使人们重新思考卷积在计算机视觉中的重要性。 -
从创新上看,ConvNeXt并没有太多的新意,看起来就是把vision transformer一些优化搬到了CNN上,而且之前也有很多类似的工作,但很多人认为ConvNeXt是一个很好的工作,因为做了比较全面的实现,而且ConvNeXt在工业部署上更有价值,因为swin transformer的实现太过tricky。从CNN到vision transformer再到CNN,还包括中间对MLP的探索,或许越来越能得出结论:架构没有优劣之分,在同样的FLOPs下,不同的模型的性能是接近的。但在实际任务上,受限于各种条件,可能看到不同模型上的性能差异,这就需要具体问题具体分析了(算法工程师的价值)。
Appendix
A. Experimental Settings
A.3. Downstream Tasks
-
对于ADE20K和COCO实验,我们遵循BEiT和Swin中使用的训练设置。本文还使用MMDetection和MMSegmentation工具箱。本文使用ImageNet预训练的最终模型权重(而不是EMA权重)作为网络初始化。 -
本文对COCO实验进行了轻量扫描,包括学习率{1e-4, 2e-4},分层学习率衰减{0.7,0.8,0.9,0.95}和随机深度率{0.3,0.4,0.5,0.6,0.7,0.8}。本文在COCO上使用相同的扫描微调ImageNet-22K预训练的swing - b /L。本文使用官方代码和预先训练的模型权重。 -
本文为ADE20K实验扫描的超参数包括学习率{8e-5, 1e-4},分层学习率衰减{0.8,0.9}和随机深度率{0.3,0.4,0.5}。本文使用多尺度测试报告了mIoU的验证结果。额外的单尺度测试结果见下表。
-
-
ADE20K单尺度测试验证结果。
B. Robustness Evaluation
-
下表给出了ConvNeXt模型的其他鲁棒性评估结果。本文直接在几个健壮基准数据集上测试本文的ImageNet-1K训练/微调分类模型,如ImageNet-A , ImageNet-R , ImageNet-Sketch和ImageNetC/ˉC数据集。 -
-
ConvNeXt的鲁棒性评价。不使用任何专门的模块或额外的微调过程。 -
本文报告ImageNet-C的均值损坏错误(mCE), ImageNet-C的损坏错误,以及所有其他数据集的top-1精度。
C. Modernizing ResNets: detailed results
-
在这里,本文为现代化实验提供了详细的表格结果,在ResNet-50 / Swin-T和ResNet-200 / Swin-B体制。每个步骤的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-50相比,反向维度在ResNet-200模式中带来了更大的改进(+0.79% vs. +0.14%)。通过增加内核大小获得的性能似乎在内核大小为5而不是7时饱和。与ResNet-50模式相比,使用更少的规范化层也有更大的收益(+0.46% vs. +0.14%)。
D. Detailed Architectures
-
本文在下表中给出了ResNet-50、ConvNeXt-T和Swin-T之间的详细架构比较。对于大小不同的convnext,只有每个阶段的块数和通道数与ConvNeXt-T不同(详见第3节)。ConvNeXts享受标准ConvNets的简单,但在视觉识别方面与Swin transformer竞争。 -
-
ResNet-50, ConvNeXt-T和Swin-T的详细架构规范。
E. Benchmarking on A100 GPUs
-
在Swin Transformer之后,第一张表中的ImageNet模型的推断吞吐量使用V100 GPU进行基准测试,其中ConvNeXt在推断方面略快于Swin Transformer,参数数量类似。我们现在在更高级的A100 gpu上对它们进行基准测试,该gpu支持TensorFloat32 (TF32)张量内核。使用PyTorch版本1.10来使用最新的“Channel Last”内存布局来进一步加速。 -
本文在下表中展示了结果。Swin transformer和ConvNeXts都实现了比V100 gpu更快的推理吞吐量,但现在ConvNeXts的优势明显更大,有时高达49%的速度。初步研究表明,采用标准的ConvNet模块和设计简单的ConvNeXt可以在现代硬件上成为实际上更有效的模型。
F. Limitations
-
本文证明了纯ConvNet模型ConvNeXt在图像分类、目标检测、实例和语义分割等任务上可以与分层视觉转换器媲美。虽然本文的目标是提供广泛的评估任务,但本文认识到计算机视觉的应用甚至更加多样化。ConvNeXt可能更适合某些任务,而transformer可能对其他任务更灵活。 -
一个恰当的例子是多模态学习,其中交叉注意模块可能是跨许多模态建模特征交互的首选。此外,在需要离散化、稀疏化或结构化输出的任务中,transformer可能更灵活。本文相信体系结构的选择应该满足手头任务的需要,同时力求简单。
G. Societal Impact
-
在21世纪20年代,视觉表征学习的研究开始对计算资源提出巨大的需求。虽然更大的模型和数据集全面提高了性能,但它们也带来了一系列的挑战。ViT, Swin和ConvNeXt都表现最佳与他们的巨大的模型变体。 -
研究这些模型设计不可避免地会导致碳排放的增加。一个重要的方向,也是我们这篇论文的一个动机,是追求简单——随着更复杂的模块,网络的设计空间大大扩展,掩盖了导致性能差异的关键组件。 -
此外,大型模型和数据集在模型健壮性和公平性方面也存在问题。进一步研究了ConvNeXt与。transformer将是一个有趣的研究方向。在数据方面,本文的研究结果表明,ConvNeXt模型受益于大规模数据集的预训练。 -
虽然本文的方法使用了公开的ImageNet-22K数据集,但个人可能希望获得自己的数据用于训练前的准备。需要更谨慎和负责任的方法来选择数据,以避免数据偏差的潜在问题。 视觉表征学习的研究开始对计算资源提出巨大的需求。虽然更大的模型和数据集全面提高了性能,但它们也带来了一系列的挑战。ViT, Swin和ConvNeXt都表现最佳与他们的巨大的模型变体。
|