【CV】ConvNeXt:A ConvNet for the 2020s

论文名称:A ConvNet for the 2020s
论文下载:https://arxiv.org/abs/2201.03545
论文年份:2022
论文被引:58(2022/05/21)
论文代码:https://github.com/facebookresearch/ConvNeXt

Abstract

The “Roaring 20s” of visual recognition began with the introduction of Vision Transformers (ViTs), which quickly superseded ConvNets as the state-of-the-art image classification model. A vanilla ViT, on the other hand, faces difficulties when applied to general computer vision tasks such as object detection and semantic segmentation. It is the hierarchical Transformers (e.g., Swin Transformers) that reintroduced several ConvNet priors, making Transformers practically viable as a generic vision backbone and demonstrating remarkable performance on a wide variety of vision tasks. However , the effectiveness of such hybrid approaches is still largely credited to the intrinsic superiority of Transformers, rather than the inherent inductive biases of convolutions. In this work, we reexamine the design spaces and test the limits of what a pure ConvNet can achieve. We gradually “modernize” a standard ResNet toward the design of a vision Transformer , and discover several key components that contribute to the performance difference along the way. The outcome of this exploration is a family of pure ConvNet models dubbed ConvNeXt. Constructed entirely from standard ConvNet modules, ConvNeXts compete favorably with Transformers in terms of accuracy and scalability, achieving 87.8% ImageNet top-1 accuracy and outperforming Swin Transformers on COCO detection and ADE20K segmentation, while maintaining the simplicity and efficiency of standard ConvNets.

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

1. Introduction

在这里插入图片描述

回顾 2010 年代,这十年以深度学习的巨大进步和影响为标志。主要驱动力是神经网络的复兴,特别是卷积神经网络 (ConvNets)。十年来,视觉识别领域成功地从工程特征转向设计(ConvNet)架构。尽管反向传播训练的卷积神经网络的发明可以追溯到 1980 年代 [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 在计算机视觉中的完全主导地位并非巧合:在许多应用场景中,“滑动窗口”策略是视觉处理所固有的,尤其是在处理高分辨率图像时ConvNets 有几个内置的归纳偏差 (inductive biases),使它们非常适合各种计算机视觉应用。最重要的一个是平移等方差 (translation equivariance),这是目标检测等任务的理想属性。由于当以滑动窗口方式使用时,计算是共享的 [59],因此 ConvNets 本质上也是高效的。几十年来,这一直是 ConvNets 的默认使用,通常用于有限的目标类别,例如数字 [40]、人脸 [55、71] 和行人 [17、60]。进入 2010 年代,基于区域的检测器 [21, 22, 25, 54] 进一步将 ConvNets 提升到成为视觉识别系统中基本构建块的位置

大约在同一时间,自然语言处理 (NLP) 的神经网络设计之旅走上了一条截然不同的道路,因为 Transformers 取代了循环神经网络成为主导的主干架构。尽管语言和视觉领域之间感兴趣的任务存在差异,但随着视觉Transformer (ViT) 的引入彻底改变了网络架构设计的格局,这两个流在 2020 年令人惊讶地融合了。除了最初的“patchify”层将图像分割成一系列补丁之外,ViT 没有引入图像特定的归纳偏差,并且对原始 NLP Transformer进行了最小的更改。 ViT 的一个主要关注点是缩放行为:借助更大的模型和数据集大小,Transformers 可以显着优于标准 ResNet。这些图像分类任务的结果令人鼓舞,但计算机视觉不仅限于图像分类。如前所述,过去十年中众多计算机视觉任务的解决方案在很大程度上依赖于滑动窗口、全卷积范式。在没有 ConvNet 归纳偏差的情况下,普通 ViT 模型在被用作通用视觉主干时面临许多挑战。最大的挑战是 ViT 的全局注意力设计,它在输入大小方面具有二次复杂度。这对于 ImageNet 分类可能是可以接受的,但很快就会变得难以处理更高分辨率的输入。

分层 Transformer 采用混合方法来弥补这一差距。例如,“滑动窗口”策略(例如局部窗口内的注意力)被重新引入 Transformer,使它们的行为更类似于 ConvNets。 Swin Transformer [42] 是朝这个方向发展的里程碑式的工作,它首次证明了 Transformer 可以被用作通用的视觉骨干,并在图像分类之外的一系列计算机视觉任务中实现最先进的性能。 Swin Transformer 的成功和迅速采用也揭示了一件事:卷积的本质并没有变得无关紧要;相反,它仍然很受欢迎,并且从未褪色

从这个角度来看,Transformers 在计算机视觉方面的许多进步都旨在恢复卷积。然而,这些尝试是有代价的:滑动窗口自注意力的简单实现可能会很昂贵 [52];使用循环移位等先进方法[42],可以优化速度,但系统在设计上变得更加复杂。另一方面,具有讽刺意味的是,ConvNet 已经满足了许多所需的属性,尽管是以一种直接、简洁的方式。 ConvNets 似乎失去动力的唯一原因是(分层的)Transformers 在许多视觉任务中超过了它们,而性能差异通常归因于 Transformers 卓越的缩放行为,多头自注意力是关键组件

与在过去十年中逐渐改进的 ConvNet 不同,Vision Transformers 的采用是一个进步。在最近的文献中,在比较两者时通常采用系统级比较(例如 Swin Transformer 与 ResNet)。 ConvNets 和分层视觉 Transformer 同时变得不同和相似:它们都配备了相似的归纳偏差,但在训练过程和宏观/微观层次的架构设计上存在显着差异。在这项工作中,我们研究了 ConvNets 和 Transformer 之间的架构区别,并在比较网络性能时尝试识别混杂变量。我们的研究旨在弥合 ConvNet 的前 ViT 和后 ViT 时代之间的差距,并测试纯 ConvNet 所能达到的极限

为此,我们从经过改进程序训练的标准 ResNet(例如 ResNet50)开始。我们逐渐将架构“现代化”为构建分层视觉 Transformer(例如 Swin-T)。我们的探索是由一个关键问题引导的:Transformers 中的设计决策如何影响 ConvNets 的性能?我们发现了几个导致性能差异的关键组件。因此,我们提出了一个名为 ConvNeXt 的纯 ConvNet 家族。我们在各种视觉任务上评估 ConvNeXts,例如 ImageNet 分类 [15]、COCO [41] 上的目标检测/分割和 ADE20K [87] 上的语义分割。令人惊讶的是,完全由标准 ConvNet 模块构建的 ConvNeXts 在所有主要基准测试中的准确性、可扩展性和鲁棒性方面都与 Transformers 竞争。 ConvNeXt 保持了标准 ConvNets 的效率,训练和测试的完全卷积特性使其实施起来非常简单。

我们希望新的观察和讨论能够挑战一些共同的信念,并鼓励人们重新思考卷积在计算机视觉中的重要性。

2. Modernizing a ConvNet: a Roadmap

在本节中,我们提供了从 ResNet 到类似于 Transformer 的 ConvNet 的轨迹。我们根据 FLOP 考虑两种模型大小,一种是 ResNet-50 / Swin-T 机制,其 FLOPs 约为 4.5×109,另一种是 ResNet-200 / Swin-B 机制,其 FLOPs 约为 15.0×109。为简单起见,我们将使用 ResNet-50 / Swin-T 复杂度模型展示结果。更高容量模型的结论是一致的,结果可以在附录 C 中找到。

在高层次上,我们的探索旨在调查和遵循 Swin Transformer 的不同设计级别,同时保持网络作为标准 ConvNet 的简单性。我们的探索路线图如下。我们的起点是 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.1. Training Techniques

除了网络架构的设计,训练过程也会影响最终的性能。Vision Transformer不仅带来了一组新的模块和架构设计决策,而且还为视觉引入了不同的训练技术(例如 AdamW 优化器)。这主要与优化策略和相关的超参数设置有关。因此,我们探索的第一步是使用视觉 Transformer 训练程序训练基线模型,在本例中为 ResNet50/200。最近的一篇论文 [76] 展示了一组现代训练技术如何显着提高简单 ResNet-50 模型的性能。在我们的研究中,我们使用了一个接近 DeiT 的 [68] 和 Swin Transformer 的 [42] 的训练方法。训练从 ResNets 的原始 90 个 epoch 扩展到 300 个 epoch。我们使用 AdamW 优化器 [43]、Mixup [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. Macro Design

我们现在分析 Swin Transformers 的宏观网络设计。 Swin Transformers 遵循 ConvNets [26, 62] 使用多阶段设计,其中每个阶段具有不同的特征图分辨率。有两个有趣的设计考虑:阶段计算比率和“干细胞 (stem cell)”结构

改变阶段计算比率 (Changing stage compute ratio)。 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, s3),这也使 FLOPs 与 Swin-T 对齐。这将模型准确率从 78.8% 提高到 79.4%。值得注意的是,研究人员已经彻底研究了计算的分布 [50, 51],并且可能存在更优化的设计。从现在开始,我们将使用这个阶段的计算比率。

将主干改为“Patchify” (Changing stem to “Patchify”)。通常,干细胞设计关注的是在网络开始时如何处理输入图像。由于自然图像中固有的冗余性,普通干细胞会在标准 ConvNets 和视觉 Transformer 中积极地将输入图像下采样到适当的特征图大小。标准 ResNet 中的干细胞包含一个步长为 2 的 7×7 卷积层,然后是一个最大池化,这导致输入图像的 4 倍下采样。在Vision Transformer中,干细胞使用了更激进的“patchify”策略,这对应于较大的内核大小(例如内核大小 = 14 或 16)和非重叠卷积。 Swin Transformer 使用类似的“patchify”层,但使用更小的 4 补丁大小来适应架构的多阶段设计。我们将 ResNet 风格的干细胞替换为使用 4×4、步幅为 4 的卷积层实现的补丁化层。准确率从 79.4% 变为 79.5%。这表明 ResNet 中的干细胞可以用更简单的“patchify”层 à la ViT 代替,这将产生类似的性能

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

2.3. ResNeXt-ify

在这一部分中,我们尝试采用 ResNeXt [82] 的思想,它比普通的 ResNet 具有更好的 FLOPs/accuracy 权衡核心组件是分组卷积,其中卷积滤波器被分成不同的组。在较高的层面上,ResNeXt 的指导原则是“使用更多的组,扩大宽度”。更准确地说,ResNeXt 对瓶颈块中的 3×3 卷积层采用分组卷积。由于这显着降低了 FLOP,因此扩展了网络宽度以补偿容量损失

我们使用深度卷积,这是分组卷积的一种特殊情况,其中组数等于通道数。深度卷积已被 MobileNet [32] 和 Xception [9] 推广。我们注意到,depthwise convolution 类似于 self-attention 中的加权求和操作,它在每个通道的基础上进行操作,即仅在空间维度上混合信息。深度卷积的使用有效地降低了网络 FLOPs,并且正如预期的那样,准确度。按照 ResNeXt 中提出的策略,我们将网络宽度增加到与 Swin-T 相同的通道数(从 64 到 96)。随着 FLOPs (5.3G) 的增加,这使网络性能达到 80.5%。

我们现在将采用 ResNeXt 设计。

2.4. Inverted Bottleneck

每个 Transformer 块中的一个重要设计是它创建了一个倒置瓶颈,即 MLP 块的隐藏维度是输入维度的四倍(参见图 4)。有趣的是,这种 Transformer 设计与 ConvNets 中使用的扩展比为 4 的倒置瓶颈设计有异曲同工之妙。这个想法被 MobileNetV2 [58] 推广,随后在几个先进的 ConvNet 架构 [66, 67] 中获得了关注。
在这里插入图片描述

在这里,我们探索倒置瓶颈设计。图 3 (a) 至 (b) 说明了这些配置。尽管深度卷积层的 FLOPs 增加了,但由于下采样残差块的 1×1 卷积层的 FLOPs 显着减少,这种变化将整个网络的 FLOPs 减少到 4.6G。有趣的是,这会稍微提高性能(从 80.5% 提高到 80.6%)。在 ResNet-200 / Swin-B 方案中,这一步带来了更大的收益(81.9% 到 82.6%),同时也减少了 FLOP。

我们现在将使用倒置瓶颈。

2.5. Large Kernel Sizes

在这部分探索中,我们关注大型卷积核的行为。Vision Transformer最显着的方面之一是它们的非局部自注意力,它使每一层都具有全局感受野。虽然过去 ConvNets [37, 64] 使用了大内核大小,但黄金标准(由 VGGNet [62] 普及)是堆叠小内核大小(3×3)的卷积层,这在现代GPU上具有高效的硬件实现[38]。尽管 Swin Transformers 将局部窗口重新引入了 self-attention block,但窗口大小至少为 7×7,明显大于 3×3 的 ResNe(X)t 内核大小。在这里,我们重新审视了在 ConvNets 中使用大内核大小的卷积。

沿深度方向向上移动conv层 (Moving up depthwise conv layer)。要探索大内核,一个先决条件是向上移动深度卷积层的位置(图 3 (b) 到 ©)。这在Transformer中也很明显:MSA 块放置在 MLP 层之前。由于我们有一个倒置的瓶颈块,这是一个自然的设计选择——复杂/低效的模块(MSA、大内核卷积)将具有更少的通道,而高效、密集的 1×1 层将完成繁重的工作。这个中间步骤将 FLOP 减少到 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 机制模型没有表现出进一步的增益。

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

至此,我们已经完成了对宏观尺度网络架构的检查。有趣的是,视觉 Transformer 中的很大一部分设计选择可能会映射到 ConvNet 实例化。

2.6. Micro Design

在本节中,我们在微观尺度上研究其他几个架构差异——这里的大部分探索都是在层级完成的,重点是激活函数和归一化层的具体选择

用 GELU 代替 ReLU (Replacing ReLU with GELU) NLP 和视觉架构之间的一个差异是使用哪些激活函数的细节。随着时间的推移,已经开发了许多激活函数,但整流线性单元 (ReLU) [46] 由于其简单性和效率,仍然广泛用于 ConvNets。 ReLU 也被用作原始 Transformer 论文 [72] 中的激活函数。高斯误差线性单元,或 GELU [30],可以被认为是 ReLU 的更平滑变体,被用于最先进的 Transformer,包括 Google 的 BERT [16] 和 OpenAI 的 GPT-2 [49],以及最近的大多数 ViTs。我们发现 ReLU 在 ConvNet 中也可以用 GELU 代替,尽管准确率保持不变(80.6%)

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

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

更少的归一化层 (Fewer normalization layers)。 Transformer 块通常也具有较少的归一化层。在这里,我们删除了两个 BatchNorm (BN) 层,在 conv 1 × 1 层之前只留下一个 BN 层。这进一步将性能提升至 81.4%,已经超过了 Swin-T 的结果。请注意,我们每个块的归一化层比 Transformer 还要少,因为根据经验,我们发现在块的开头添加一个额外的 BN 层并不能提高性能

用 LN 代替 BN (Substituting BN with LN)。 BatchNorm [35] 是 ConvNets 中的重要组成部分,因为它提高了收敛性并减少了过拟合。然而,BN 也有许多错综复杂的东西,可能会对模型的性能产生不利影响 [79]。在开发替代规范化 [57, 70, 78] 技术方面已经进行了许多尝试,但 BN 仍然是大多数视觉任务中的首选方案。另一方面,Transformers 中使用了更简单的层规范化 [5] (LN),从而在不同的应用场景中实现了良好的性能

在原始 ResNet 中直接用 LN 代替 BN 将导致性能欠佳 [78]。随着网络架构和训练技术的所有修改,我们在这里重新审视使用 LN 代替 BN 的影响。我们观察到 ConvNet 模型在使用 LN 训练时没有任何困难;实际上,性能稍好一些,获得了 81.5% 的准确率

从现在开始,使用一个 LayerNorm 作为每个残差块的归一化选择

分离下采样层 (Separate downsampling layers)。在 ResNet 中,空间下采样是通过每个阶段开始时的残差块来实现的,使用步长为 2 的 3×3 卷积(在快捷连接处使用步长为 2 的 1×1 卷积)在 Swin Transformers 中,在各个阶段之间添加了一个单独的下采样层。我们探索了一种类似的策略,在该策略中,我们使用步长为 2 的 2×2 卷积层进行空间下采样。这种修改出人意料地导致了不同的训练。进一步的调查表明,在空间分辨率发生变化的地方添加归一化层有助于稳定训练。其中包括 Swin Transformers 中也使用的几个 LN 层:每个下采样层之前有一个,主干之后有一个,以及最终全局平均池化之后的一个。我们可以将准确率提高到 82.0%,大大超过 Swin-T 的 81.3%。

我们将使用单独的下采样层。这将我们带到了我们称之为 ConvNeXt 的最终模型。
在这里插入图片描述
ResNet、Swin 和 ConvNeXt 块结构的比较可以在图 4 中找到。ResNet-50、Swin-T 和 ConvNeXt-T 的详细架构规范的比较可以在表 9 中找到。
在这里插入图片描述
结束语 (Closing remarks)。我们已经完成了我们的第一次“演练”,并发现了 ConvNeXt,一个纯 ConvNet,它在这个计算机制中的 ImageNet-1K 分类性能优于 Swin Transformer。还值得注意的是,到目前为止讨论的设计选项都不是新颖的——在过去十年中,它们都是单独研究的,但不是集体研究的。我们的 ConvNeXt 模型具有与 Swin Transformer 大致相同的 FLOP、#params、吞吐量和内存使用,但不需要专门的模块,例如移位窗口注意力或相对位置偏差

这些发现令人鼓舞,但尚未完全令人信服——迄今为止,我们的探索仅限于小规模,但Vision Transformer的缩放行为才是真正让它们与众不同的地方。此外,ConvNet 能否在目标检测和语义分割等下游任务上与 Swin Transformers 竞争的问题是计算机视觉从业者关注的核心问题。在下一节中,我们将在数据和模型大小方面扩展我们的 ConvNeXt 模型,并在一组不同的视觉识别任务上评估它们。

3. Empirical Evaluations on ImageNet

我们构建了不同的 ConvNeXt 变体,ConvNeXtT/S/B/L,与 Swin-T/S/B/L [42] 具有相似的复杂性。 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. Settings

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

在 ImageNet-1K 上进行训练。我们使用 AdamW [43] 训练 ConvNeXts 300 个 epoch,学习率为 4e-3。之后有一个 20 epoch 的线性预热和一个余弦衰减时间表。我们使用 4096 的批量大小和 0.05 的权重衰减。对于数据增强,我们采用常见的方案,包括 Mixup [85]、Cutmix [84]、RandAugment [12] 和 Random Erasing [86]。我们使用随机深度 [34] 和标签平滑 [65] 对网络进行正则化。应用初始值 1e-6 的层尺度 [69]。我们使用指数移动平均线 (EMA) [48],因为我们发现它可以缓解较大模型的过度拟合

ImageNet-22K 上的预训练。我们在 ImageNet-22K 上预训练 ConvNeXts 90 个 epoch,预热 5 个 epoch。我们不使用 EMA。其他设置遵循 ImageNet-1K。

在 ImageNet-1K 上进行微调。我们在 ImageNet-1K 上对 ImageNet22K 预训练模型进行了 30 个 epoch 的微调。我们使用 AdamW,学习率为 5e-5,余弦学习率计划,逐层学习率衰减 [6, 10],无预热,批量大小为 512,权重衰减为 1e-8。默认的预训练、微调和测试分辨率为 2242。此外,对于 ImageNet-22K 和 ImageNet-1K 预训练模型,我们以 3842 的更大分辨率进行微调

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

3.2. Results

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%)。与 Swin Transformers 相比,ConvNeXts 在没有诸如移位窗口或相对位置偏差等专门模块的情况下也享有更高的吞吐量

结果中的一个亮点是 ConvNeXt-B 为 3842:它比 Swin-B 高 0.6%(85.1% 对 84.5%),但推理吞吐量提高了 12.5%(95.7 对 85.1 图像/秒)。我们注意到,当分辨率从 2242 增加到 3842 时,ConvNeXtB 相对于 Swin-B 的 FLOPs/吞吐量优势变得更大。此外,当进一步扩展到 ConvNeXt-L 时,我们观察到 85.5% 的改进结果。

ImageNet-22K。我们在表 1(下)中展示了从 ImageNet-22K 预训练中微调的模型的结果。这些实验很重要,因为人们普遍认为视觉 Transformer 具有较少的归纳偏差,因此在大规模预训练时可以比 ConvNets 表现更好。我们的结果表明,在使用大型数据集进行预训练时,正确设计的 ConvNets 并不逊于视觉 Transformer——ConvNeXts 的性能仍然与类似大小的 Swin Transformers 相当或更好,吞吐量略高。此外,我们的 ConvNeXt-XL 模型达到了 87.8% 的准确度——在 3842 处比 ConvNeXt-L 有了相当大的改进,证明了 ConvNeXts 是可扩展的架构。

在附录 B 中,我们讨论了 ConvNeXt 的鲁棒性和域外泛化结果。

3.3. Isotropic ConvNeXt vs. ViT

在这个消融中,我们检查我们的 ConvNeXt 块设计是否可推广到没有下采样层并在所有深度保持相同特征分辨率(例如 14×14)的 ViT 风格 [18] 各向同性架构。我们使用与 ViT-S/B/L (384/768/1024) 相同的特征尺寸构建各向同性 ConvNeXt-S/B/L。深度设置为 18/18/36 以匹配参数和 FLOP 的数量。块结构保持不变(图 4)。我们将 DeiT [68] 的监督训练结果用于 ViT-S/B 和 MAE [24] 用于 ViT-L,因为它们采用了比原始 ViT [18] 改进的训练程序。 ConvNeXt 模型使用与以前相同的设置进行训练,但预热时间更长。 ImageNet-1K 在 2242 分辨率下的结果如表 2 所示。我们观察到 ConvNeXt 的性能通常与 ViT 相当,这表明我们的 ConvNeXt 块设计在用于非分层模型时具有竞争力
在这里插入图片描述

4. Empirical Evaluation on Downstream Tasks

COCO 上的目标检测和分割。我们使用 ConvNeXt 主干在 COCO 数据集上微调 Mask R-CNN [25] 和 Cascade Mask R-CNN [7]。在 Swin Transformer [42] 之后,我们使用多尺度训练、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)。

ADE20K 上的语义分割。我们还使用 UperNet [80] 在 ADE20K 语义分割任务上评估 ConvNeXt 主干。所有模型变体都经过 16 万次迭代训练,批量大小为 16。其他实验设置遵循 [6](有关更多详细信息,请参见附录 A.3)。在表 4 中,我们报告了具有多尺度测试的验证 mIoU。 ConvNeXt 模型可以在不同的模型容量上实现具有竞争力的性能,进一步验证了我们架构设计的有效性。
在这里插入图片描述
关于模型效率的评论。在类似的 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。与 vanilla ViT 相比,ConvNeXt 和 Swin Transformer 由于局部计算而表现出更有利的准确性 - FLOPs 权衡。值得注意的是,这种效率的提高是 ConvNet 归纳偏差的结果,与视觉 Transformers 中的自注意力机制没有直接关系

5. Related Work

混合模型。在 ViT 之前和之后的时代,结合卷积和自注意力的混合模型都得到了积极的研究。在 ViT 之前,重点是使用自我注意/非局部模块 [52, 63, 74] 来增强 ConvNet 以捕获远程依赖关系。最初的 ViT [18] 首先研究了一种混合配置,并且大量后续工作集中在将卷积先验重新引入 ViT,无论是显式 [13, 14, 19, 77, 81, 83] 还是隐式 [42]

最近基于卷积的方法

  • [23]表明局部Transformer注意力等效于非均匀动态深度卷积。然后将 Swin 中的 MSA 块替换为动态或常规深度卷积,实现与 Swin 相当的性能
  • ConvMixer [4] 表明,在小规模设置中,深度卷积可以用作一种有前途的混合策略。 ConvMixer 使用更小的补丁大小来获得最佳结果,使得吞吐量远低于其他基线
  • GFNet [53] 采用快速傅里叶变换 (FFT) 进行标记混合。 FFT 也是卷积的一种形式,但具有全局内核大小和循环填充

与许多最近的 Transformer 或 ConvNet 设计不同,我们研究的一个主要目标是深入了解标准 ResNet 的现代化过程并实现最先进的性能。

6. Conclusions

在 2020 年代,Vision Transformer,尤其是 Swin Transformers 等分层Transformer开始取代 ConvNets,成为通用视觉骨干网的首选。人们普遍认为,视觉 Transformer 比 ConvNets 更准确、更高效、更可扩展。我们提出了 ConvNeXts,这是一种纯 ConvNet 模型,可以在多个计算机视觉基准上与最先进的分层视觉 Transformer 竞争,同时保持标准 ConvNet 的简单性和效率。在某些方面,我们的观察结果令人惊讶,而我们的 ConvNeXt 模型本身并不是全新的——在过去十年中,许多设计选择都被单独研究过,但没有被集体研究过。我们希望本研究报告的新结果能够挑战几种广泛持有的观点,并促使人们重新思考卷积在计算机视觉中的重要性。

Appendix

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

A. Experimental Settings

A.1. ImageNet (Pre-)training

我们在表 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 个 epoch,并且各向同性 ConvNeXt-S/B 禁用了层尺度。各向同性 ConvNeXt-S/B/L 的随机深度率为 0.1/0.2/0.5。

A.2. ImageNet Fine-tuning

在这里插入图片描述
我们在表 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. Downstream Tasks

对于 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. Robustness Evaluation

在这里插入图片描述
ConvNeXt 模型的其他鲁棒性评估结果如表 8 所示。我们直接在 ImageNet-A [31]、ImageNet-R [28]、ImageNet- Sketch [73] 和 ImageNetC/¯C [29, 45] 数据集。我们报告 ImageNet-C 的平均损坏误差 (mCE)、ImageNet-¯C 的损坏误差和所有其他数据集的 top-1 Accuracy。

ConvNeXt(特别是大规模模型变体)表现出有希望的鲁棒性行为,在几个基准测试中优于最先进的鲁棒Transformer模型 [44]。借助额外的 ImageNet-22K 数据,ConvNeXtXL 展示了强大的域泛化能力(例如,分别在 ImageNet-A/R/Sketch 基准上实现了 69.3%/68.2%/55.0% 的准确度)。我们注意到,这些稳健性评估结果是在没有使用任何专门模块或额外微调程序的情况下获得的。

C. Modernizing ResNets: detailed results

在这里,我们提供了 ResNet-50 / Swin-T 和 ResNet-200 / Swin-B 方案的现代化实验的详细列表结果。每个步骤的 ImageNet-1K top-1 准确度和 FLOPs 显示在表 10 和 11 中。ResNet-50 机制实验使用 3 个随机种子运行
在这里插入图片描述
对于 ResNet-200,每个阶段的初始块数为 (3, 24, 36, 3)。我们在改变阶段比率的步骤中将其更改为 Swin-B 的 (3, 3, 27, 3)。这大大减少了 FLOP,因此同时,我们还将宽度从 64 增加到 84,以将 FLOP 保持在相似的水平。在采用深度卷积的步骤之后,我们将宽度进一步增加到 128(与 Swin-B 相同)作为单独的步骤。

对 ResNet-200 机制的观察与主要论文中描述的 ResNet-50 的观察结果基本一致。一个有趣的区别是,与 ResNet-50 相比,反转维度在 ResNet-200 机制下带来了更大的改进(+0.79% 对 +0.14%)。通过增加内核大小获得的性能似乎也在内核大小 5 而不是 7 处达到饱和。与 ResNet-50 机制相比,使用更少的归一化层也有更大的收益(+0.46% 对 +0.14%)。

D. Detailed Architectures

我们在表 9 中展示了 ResNet-50、ConvNeXt-T 和 Swin-T 之间的详细架构比较。对于不同大小的 ConvNeXts,只有每个阶段的块数和通道数与 ConvNeXt-T 不同(参见第 3 节细节)。 ConvNeXts 享受标准 ConvNets 的简单性,但在视觉识别方面可以与 Swin Transformers 竞争。

E. Benchmarking on A100 GPUs

在 Swin Transformer [42] 之后,表 1 中的 ImageNet 模型的推理吞吐量使用 V100 GPU 进行了基准测试,其中 ConvNeXt 的推理速度略快于具有相似数量参数的 Swin Transformer。我们现在在更先进的 A100 GPU 上对它们进行基准测试,支持 TensorFloat32 (TF32) 张量核心。我们使用 PyTorch [47] 1.10 版来使用最新的“Channel Last”内存布局 [20] 以进一步加速。
在这里插入图片描述
我们在表 12 中展示了结果。Swin Transformers 和 ConvNeXts 都实现了比 V100 GPU 更快的推理吞吐量,但 ConvNeXts 的优势现在明显更大,有时快 49%。这项初步研究表明,ConvNeXt 与标准 ConvNet 模块一起使用且设计简单,在现代硬件上实际上可能是更有效的模型。

F. Limitations

我们展示了 ConvNeXt,一个纯 ConvNet 模型,可以在图像分类、目标检测、实例和语义分割任务上表现得与分层视觉 Transformer 一样好。虽然我们的目标是提供广泛的评估任务,但我们认识到计算机视觉应用更加多样化。 ConvNeXt 可能更适合某些任务,而 Transformer 可能更灵活地用于其他任务。一个典型的例子是多模态学习,其中交叉注意模块可能更适合于对跨多种模态的特征交互进行建模。此外,当用于需要离散、稀疏或结构化输出的任务时,Transformer 可能更加灵活。我们相信架构选择应该满足手头任务的需求,同时力求简单。

G. Societal Impact

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

猜你喜欢

转载自blog.csdn.net/weixin_39653948/article/details/124894399