您现在的位置是:首页 >学无止境 >论文分享 A ConvNet for the 2020s网站首页学无止境
论文分享 A ConvNet for the 2020s
摘要
视觉识别的“咆哮的 20 年代”始于 Vision Transformers (ViTs) 的引入,它迅速取代了 ConvNets,成为最先进的图像分类模型。另一方面,vanilla ViT 在应用于对象检测和语义分割等一般计算机视觉任务时面临困难。正是层次化的 Transformers(例如 Swin Transformers)重新引入了几个 ConvNet 先验,使得 Transformers 作为通用视觉骨干实际上可行,并在各种视觉任务上展示了卓越的性能。然而,这种混合方法的有效性在很大程度上仍然归功于 Transformers 的内在优势,而不是卷积固有的归纳偏差。
在这项工作中,我们重新检查设计空间并测试纯 ConvNet 可以达到的极限。我们逐步“现代化”标准 ResNet 以设计视觉 Transformer,并发现几个导致性能差异的关键组件。这一探索的成果是一系列被称为 ConvNeXt 的纯 ConvNet 模型。 ConvNeXts 完全由标准的 ConvNet 模块构建而成,在准确性和可扩展性方面与 Transformers 相得益彰,在 COCO 检测和 ADE20K 分割方面实现了 87.8% 的 ImageNet top-1 准确性并优于 Swin Transformers,同时保持了标准 ConvNets 的简单性和效率。
图 1. 紫圈 ConvNets 和 黄圈 vision Transformers 的 ImageNet-1K 分类结果。每个气泡的面积与模型系列中变体的 FLOPs 成正比。此处的 ImageNet-1K/22K 模型分别使用
22
4
2
/
38
4
2
224^2 / 384^2
2242/3842 尺寸图像。 ResNet 和 ViT 结果是通过改进原始论文的训练程序获得的。我们证明了标准的 ConvNet 模型可以实现与分层视觉 Transformer 相同级别的可扩展性,同时在设计上要简单得多。
2. 现代化 ConvNet:路线图
我们探索的路线图如下。我们的起点是 ResNet-50 模型。我们首先使用用于训练视觉 Transformers 的类似训练技术对其进行训练,并获得比原始 ResNet-50 有很大改进的结果。这将是我们的基准。然后,我们研究了一系列设计决策,我们将其总结为
- 宏设计,2) ResNeXt,3) 倒置瓶颈,4) 大内核大小,以及 5) 各种分层微设计。
在图 2 中,我们展示了“网络现代化”的每一步我们能够实现的过程和结果。由于网络复杂性与最终性能密切相关,因此在探索过程中可以大致控制 FLOP,但在中间步骤中,FLOP 可能高于或低于参考模型。所有模型都在 ImageNet-1K 上进行训练和评估。
图 2. 我们将标准 ConvNet (ResNet) 现代化以设计分层视觉 Transformer (Swin),而不引入任何基于注意力的模块。前景条是 ResNet-50/Swin-T FLOP 体系中的模型精度; ResNet-200/Swin-B 方案的结果用灰色条显示。阴影条表示未采用修改。两种制度的详细结果见附录。许多 Transformer 架构选择可以合并到 ConvNet 中,它们会带来越来越好的性能。最后,我们名为 ConvNeXt 的纯 ConvNet 模型可以胜过 Swin Transformer。
2.1 训练技巧
除了网络架构的设计,训练过程也会影响最终的性能。 Vision Transformers 不仅带来了一组新的模块和架构设计决策,而且还向视觉引入了不同的训练技术(例如 AdamW 优化器)。这主要与优化策略和相关的超参数设置有关。因此,我们探索的第一步是使用视觉 Transformer 训练程序训练基线模型,在本例中为 ResNet50/200。最近的研究 [7, 81] 表明,一组现代训练技术可以显着提高简单 ResNet-50 模型的性能。在我们的研究中,我们使用了接近 DeiT 的 [73] 和 Swin Transformer 的 [45] 的训练方法。训练从 ResNets 最初的 90 个时期扩展到 300 个时期。我们使用 AdamW 优化器 [46]、数据增强技术,例如 Mixup [90]、Cutmix [89]、RandAugment [14]、随机擦除 [91],以及包括随机深度 [36] 和标签平滑 [69] 在内的正则化方案.我们使用的完整超参数集可以在附录 A.1 中找到。
就其本身而言,这种增强的训练方法将 ResNet-50 模型的性能从 76.1% [1] 提高到 78.8% (+2.7%),这意味着传统 ConvNet 和视觉 Transformer 之间的性能差异很大一部分可能是由于训练技巧。我们将在整个“现代化”过程中使用具有相同超参数的固定训练方法。 ResNet-50 机制的每个报告准确度都是从使用三个不同随机种子的训练中获得的平均值。
2.2.宏设计
我们现在分析 Swin Transformers 的宏观网络设计。 Swin Transformers 遵循 ConvNets [28, 65] 使用多阶段设计,其中每个阶段都有不同的特征图分辨率。有两个有趣的设计考虑因素:阶段计算比率和“起始层(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%。值得注意的是,研究人员已经彻底研究了计算的分布 [53、54],并且可能存在更优化的设计。从现在开始,我们将使用这个阶段计算比率。
“补丁化”起始层。通常,起始层设计关注的是在网络开始时如何处理输入图像。由于自然图像固有的冗余性,普通起始层会在标准 ConvNet 和视觉 Transformer 中积极地将输入图像下采样到适当的特征图大小。标准 ResNet 中的起始层包含一个步幅为 2 的 7×7 卷积层,后跟一个最大池化,这导致输入图像的 4× 下采样。在 Vision Transformers 中,更激进的“patchify”策略被用作起始层,这对应于较大的内核大小(例如内核大小 = 14 或 16) 和非重叠卷积。Swin Transformer 使用类似的“补丁化”层,但补丁大小更小,为 4,以适应架构的多阶段设计。我们用使用 4×4、步长 4 的卷积层实现的“补丁化“”层替换 ResNet 风格的起始层。准确率从 79.4% 变为 79.5%。这表明 ResNet 中的起始层可以用更简单的“补丁化”层代替,这将导致类似的性能。我们将在网络中使用“补丁化起始层”(4×4 非重叠卷积)。
2.3. ResNeXt-ify
在这一部分中,我们尝试采用 ResNeXt [87] 的想法,它比普通的 ResNet 具有更好的 FLOPs/accuracy 权衡。核心组件是分组卷积,其中卷积滤波器被分成不同的组。在高层次上,ResNeXt 的指导原则是“使用更多组,扩大宽度”。更准确地说,ResNeXt 对瓶颈块中的 3×3 卷积层采用分组卷积。由于这显着减少了 FLOP,因此扩展了网络宽度以补偿容量损失。
在我们的例子中,我们使用深度卷积,这是分组卷积的一种特殊情况,其中组数等于通道数。 Depthwise conv 已被 MobileNet [34] 和 Xception [11] 推广。我们注意到 depthwise convolution 类似于 self-attention 中的加权求和操作,它在每个通道的基础上操作,即仅在空间维度上混合信息。depthwise conv 和 1 × 1 convs 的结合导致了空间和通道混合的分离,这是视觉 Transformers 共有的一个属性,其中每个操作要么混合空间或通道维度的信息,但不能同时混合两者。深度卷积的使用有效地降低了网络的 FLOPs,并且如预期的那样降低了准确性。
按照 ResNeXt 中提出的策略,我们将网络宽度增加到与 Swin-T 相同的通道数(从 64 增加到 96)。随着 FLOPs (5.3G) 的增加,这使网络性能达到 80.5%。我们现在将采用 ResNeXt 设计。
2.4. 倒置瓶颈
每个 Transformer 块中的一个重要设计是它会产生一个倒置瓶颈,即 MLP 块的隐藏维度比输入维度宽四倍(见图 4)。有趣的是,这种 Transformer 设计与 ConvNet 中使用的扩展率为 4 的倒置瓶颈设计相关联。这个想法由 MobileNetV2 [61] 推广,随后在几个高级 ConvNet 架构 [70、71] 中获得了关注。
图 4. ResNet、Swin Transformer 和 ConvNeXt 的模块设计。由于存在多个专用模块和两个残差连接,Swin Transformer 的块更加复杂。为简单起见,我们将 Transformer MLP 块中的线性层也称为“1×1 convs”,因为它们是等价的。
在这里,我们探索倒置瓶颈设计。图 3 (a) 至 (b) 说明了这些配置。尽管深度卷积层的 FLOPs 增加了,但由于下采样残差块的快捷 1×1 conv 层的 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 [40, 68] 过去曾使用大内核大小,但黄金标准(由 VGGNet [65] 推广)是堆叠小内核大小 (3×3) 的卷积层,这在硬件上具有高效的硬件实现现代 GPU [41]。尽管 Swin Transformers 将局部窗口重新引入到自注意力块中,但窗口大小至少为 7×7,明显大于 ResNe(X)t 内核大小的 3×3。在这里,我们重新审视了 ConvNets 的大核尺寸卷积的使用。
向上移动深度卷积层。要探索大内核,一个先决条件是将深度卷积层的位置上移(图 3 (b) 至 ©)。这是一个在 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 depthwise conv。
至此,我们已经结束了对宏观网络架构的研究。有趣的是,在视觉 Transformer 中采用的很大一部分设计选择可能会映射到 ConvNet 实例。
2.6.微设计
在本节中,我们在微观尺度上研究了其他几个架构差异——这里的大部分探索都是在层级完成的,重点是激活函数和归一化层的特定选择。
用 GELU 替换 ReLU。 NLP 和视觉架构之间的一个差异是使用哪些激活函数的细节。随着时间的推移,已经开发出许多激活函数,但整流线性单元 (ReLU) [49] 由于其简单和高效,仍广泛用于 ConvNets。 ReLU 在原始的 Transformer 论文 [77] 中也被用作激活函数。高斯误差线性单元,或 GELU [32],可以被认为是 ReLU 的更平滑的变体,被用于最先进的 Transformer,包括谷歌的 BERT [18] 和 OpenAI 的 GPT-2 [52],并且,大多数最近,ViTs。我们发现 ReLU 也可以在我们的 ConvNet 中用 GELU 代替,尽管准确率保持不变 (80.6%)。
更少的激活函数。 Transformer 和 ResNet 块之间的一个小区别是 Transformers 具有更少的激活函数。考虑一个具有键/查询/值线性嵌入层、投影层和 MLP 块中的两个线性层的 Transformer 块。 MLP 块中只有一个激活函数。相比之下,通常的做法是将激活函数附加到每个卷积层,包括 1×1 卷积层。在这里,我们研究了当我们坚持相同的策略时性能如何变化。如图 4 所示,我们从残差块中消除了所有 GELU 层,除了两个 1×1 层之间的一个,复制了 Transformer 块的样式。此过程将结果提高 0.7% 至 81.3%,几乎与 Swin-T 的性能相匹配。我们现在将在每个块中使用单个 GELU 激活。
更少的归一化层。 Transformer 块通常也有较少的归一化层。这里我们移除了两个 BatchNorm (BN) 层,在 conv 1×1 层之前只留下一个 BN 层。这进一步将性能提升到 81.4%,已经超过了 Swin-T 的结果。请注意,我们每个块的归一化层比 Transformer 更少,因为根据经验我们发现在块的开头添加一个额外的 BN 层不会提高性能。
用 LN 代替 BN。 BatchNorm [38] 是 ConvNets 中的重要组成部分,因为它可以提高收敛性并减少过度拟合。然而,BN 也有许多复杂性,可能会对模型的性能产生不利影响 [84]。在开发替代规范化 [60、75、83] 技术方面进行了多次尝试,但 BN 仍然是大多数视觉任务中的首选。另一方面,Transformer 中使用了更简单的层归一化 [5] (LN),从而在不同的应用场景中获得了良好的性能。在原始 ResNet 中直接用 LN 代替 BN 会导致性能不佳 [83]。随着网络架构和训练技术的所有修改,我们在这里重新审视使用 LN 代替 BN 的影响。我们观察到我们的 ConvNet 模型在使用 LN 进行训练时没有任何困难;事实上,性能稍微好一点,获得了 81.5% 的准确率。从现在开始,我们将使用一个 LayerNorm 作为每个残差块中归一化的选择。
分离的下采样层。在 ResNet 中,空间下采样是通过每个阶段开始时的残差块实现的,使用步幅为 2 的 3×3 conv(在快捷连接处使用步幅为 2 的 1×1 conv)。在 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 中找到。
结束语
我们已经完成了我们的第一个“演练”并发现了 ConvNeXt,一个纯 ConvNet,在这个计算机制中它可以胜过 Swin Transformer 的 ImageNet-1K 分类。值得注意的是,到目前为止讨论的所有设计选择都改编自视觉Transformer 。此外,即使在 ConvNet 文献中,这些设计也并不新颖——在过去十年中,它们都是单独研究的,而不是集中研究的。我们的 ConvNeXt 模型具有与 Swin Transformer 大致相同的 FLOPs、#params.、吞吐量和内存使用,但不需要专门的模块,例如移位窗口注意力或相对位置偏差。
这些发现令人鼓舞,但尚未完全令人信服——到目前为止,我们的探索仅限于小规模,但 Vision Transformers 的缩放行为才是真正与众不同的地方。此外,ConvNet 是否可以在目标检测和语义分割等下游任务上与 Swin Transformers 竞争是计算机视觉从业者关注的中心问题。在下一节中,我们将在数据和模型大小方面扩展我们的 ConvNeXt 模型,并在一组不同的视觉识别任务上对其进行评估。
3. ImageNet 上的实证评估
我们构建了不同的 ConvNeXt 变体,ConvNeXtT/S/B/L,其复杂性与 Swin-T/S/B/L [45] 相似。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.设置
ImageNet-1K 数据集由 1000 个对象类和 120 万张训练图像组成。我们在验证集上报告了 ImageNet-1K top-1 准确率。我们还在 ImageNet-22K 上进行了预训练,这是一个包含 21841 个类(1000 个 ImageNet-1K 类的超集)的更大数据集,具有约 14M 图像用于预训练,然后在 ImageNet 上微调预训练模型- 1K 用于评估。我们在下面总结了我们的培训设置。可以在附录 A 中找到更多详细信息。
在 ImageNet-1K 上训练。我们使用学习率为 4e-3 的 AdamW [46] 训练 ConvNeXts 300 个时期。之后有 20 个 epoch 的线性预热和余弦衰减策略。我们使用 4096 的批量大小和 0.05 的权重衰减。对于数据扩充,我们采用常见的方案,包括 Mixup [90]、Cutmix [89]、RandAugment [14] 和 Random Erasing [91]。我们使用随机深度 [37] 和标签平滑 [69] 对网络进行正则化。应用初始值 1e-6 的Layer Scale [74]。我们使用指数移动平均线 (EMA) [51],因为我们发现它可以缓解较大模型的过度拟合。在 ImageNet-22K 上进行预训练。我们在 ImageNet-22K 上预训练 ConvNeXts 90 个 epochs,预热 5 个 epochs。我们不使用 EMA。其他设置遵循 ImageNet-1K。
在 ImageNet-1K 上进行微调。我们在 ImageNet-1K 上微调 ImageNet22K 预训练模型 30 个时期。我们使用 AdamW,学习率为 5e-5,余弦学习率计划,逐层学习率衰减 [6, 12],无预热,批量大小为 512,权重衰减为 1e-8。默认的预训练、微调和测试分辨率为 2242 。此外,对于 ImageNet-22K 和 ImageNet-1K 预训练模型,我们以更大的分辨率 3842 进行微调。
与 ViTs/Swin Transformers 相比,ConvNeXts 在不同分辨率下更容易微调,因为网络是全卷积的,不需要调整输入块大小或插入绝对/相对位置偏差。
3.2.结果
ImageNet-1K。表 1(上)显示了与两个最近的 Transformer 变体 DeiT [73] 和 Swin Transformers [45],以及来自架构搜索的两个 ConvNets - RegNets [54],EfficientNets [71] 和 EfficientNetsV2 [72] 的结果比较。 ConvNeXt 在准确性计算权衡以及推理吞吐量方面与两个强大的 ConvNet 基线(RegNet [54] 和 EfficientNet [71])竞争有利。 ConvNeXt 的性能也全面优于具有类似复杂性的 Swin Transformer,有时还具有可观的利润率(例如,ConvNeXt-T 为 0.8%)。与 Swin Transformers 相比,ConvNeXts 在没有移动窗口或相对位置偏差等专门模块的情况下也享有更高的吞吐量。
结果中的一个亮点是 ConvNeXt-B 在 38 4 2 384^2 3842:它比 Swin-B 高 0.6%(85.1% 对 84.5%),但推理吞吐量高 12.5%(95.7 对 85.1 图像/秒)。我们注意到,当分辨率从 22 4 2 224^2 2242 增加到 38 4 2 384^2 3842时,ConvNeXt B 相对于 Swin-B 的 FLOPs/throughput 优势变得更大。此外,当进一步扩展到 ConvNeXt-L 时,我们观察到 85.5% 的改进结果。
表 1.ImageNet-1K 上的分类精度。与 Transformers 类似,ConvNeXt 还展示了具有更高容量模型和更大(预训练)数据集的有前途的缩放行为。按照 [45],在 V100 GPU 上测量推理吞吐量。在 A100 GPU 上,ConvNeXt 可以比 Swin Transformer 具有更高的吞吐量。请参阅附录 E。 ViT 结果与 90-epoch AugReg [67] 培训,通过与作者的个人交流提供。
ImageNet-22K。我们在表 1(下)中展示了从 ImageNet-22K 预训练中微调的模型的结果。这些实验很重要,因为广泛持有的观点是,视觉 Transformer 具有较少的归纳偏差,因此在进行更大规模的预训练时可以比 ConvNet 表现更好。
我们的结果表明,在使用大型数据集进行预训练时,正确设计的 ConvNets 并不逊色于视觉 Transformers——ConvNeXts 的性能仍然与类似大小的 Swin Transformers 相当或更好,吞吐量略高。此外,我们的 ConvNeXt-XL 模型达到了 87.8% 的准确率——比 38 4 2 384^2 3842 的 ConvNeXt-L 有了不错的改进,表明 ConvNeXts 是可扩展的架构。在 ImageNet-1K、EfficientNetV2-L 上,配备高级模块(例如 Squeeze-andExcitation [35])和渐进式训练程序的搜索架构实现了最佳性能。然而,通过 ImageNet-22K 预训练,ConvNeXt 能够胜过 EfficientNetV2,进一步证明了大规模训练的重要性。在附录 B 中,我们讨论了 ConvNeXt 的稳健性和域外泛化结果。
3.3.各向同性 ConvNeXt 与 ViT
在此消融中,我们检查我们的 ConvNeXt 块设计是否可推广到 ViT 风格 [20] 各向同性架构,这些架构没有下采样层并在所有深度保持相同的特征分辨率(例如 14×14)。我们使用与 ViT-S/B/L (384/768/1024) 相同的特征维度构建各向同性 ConvNeXt-S/B/L。深度设置为 18/18/36 以匹配参数和 FLOP 的数量。块结构保持不变(图 4)。我们对 ViT-S/B 使用 DeiT [73] 的监督训练结果,对 ViT-L 使用 MAE [26] 的监督训练结果,因为它们在原始 ViTs [20] 上采用了改进的训练程序。 ConvNeXt 模型使用与之前相同的设置进行训练,但预热时间更长。 ImageNet-1K 在 22 4 2 224^2 2242 分辨率下的结果如表 2 所示。我们观察到 ConvNeXt 的性能通常与 ViT 相当,表明我们的 ConvNeXt 块设计在用于非分层模型时具有竞争力。
表 2. 比较各向同性 ConvNeXt 和 ViT。训练内存是在 V100 GPU 上测量的,每个 GPU 批大小为 32。
4. 下游任务的实证评估
COCO 上的目标检测和分割。我们使用 ConvNeXt 骨干在 COCO 数据集上微调 Mask R-CNN [27] 和 Cascade Mask R-CNN [9]。在 Swin Transformer [45] 之后,我们使用多尺度训练、AdamW 优化器和 3× schedule。可以在附录 A.3 中找到更多详细信息和超参数设置。
表 3 显示了比较 Swin Transformer、ConvNeXt 和传统 ConvNet(如 ResNeXt)的对象检测和实例分割结果。在不同的模型复杂性中,ConvNeXt 实现了与 Swin Transformer 相当或更好的性能。当放大到在 ImageNet-22K 上预训练的更大模型 (ConvNeXt-B/L/XL) 时,在许多情况下,ConvNeXt 在框和掩码 AP 方面明显优于 Swin Transformers(例如 +1.0 AP)。
表 3. 使用 Mask-RCNN 和 Cascade Mask-RCNN 的 COCO 目标检测和分割结果。 ‡ 表示该模型已在 ImageNet-22K 上预训练。 ImageNet-1K 预训练的 Swin 结果来自他们的 Github 存储库 [3]。 ResNet-50 和 X101 模型的 AP 编号来自 [45]。我们在 A100 GPU 上测量 FPS。 FLOP 是根据图像大小 (1280, 800) 计算的。
ADE20K 上的语义分割。我们还使用 UperNet [85] 在 ADE20K 语义分割任务上评估 ConvNeXt 主干。所有模型变体都经过 160K 次迭代的训练,批量大小为 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. 相关工作
混合模型。在 ViT 之前和之后的时代,结合卷积和自注意力的混合模型得到了积极的研究。在 ViT 之前,重点是用自注意力/非本地模块 [8、55、66、79] 来增强 ConvNet 以捕获远程依赖性。最初的 ViT [20] 首先研究了一种混合配置,大量后续工作专注于将卷积先验重新引入 ViT,无论是显式 [15, 16, 21, 82, 86, 88] 还是隐式 [45 ] 时尚。
最近基于卷积的方法。 Han 等人 [25] 表明局部 Transformer 注意力等同于非均匀动态深度转换。然后将 Swin 中的 MSA 块替换为动态或常规深度卷积,实现与 Swin 相当的性能。并行工作 ConvMixer [4] 表明,在小规模设置中,深度卷积可以用作一种有前途的混合策略。 ConvMixer 使用较小的 patch size 来获得最好的结果,使得吞吐量远低于其他基线。 GFNet [56] 采用快速傅立叶变换 (FFT) 进行token混合。 FFT 也是一种卷积形式,但具有全局内核大小和圆形填充。与许多最近的 Transformer 或 ConvNet 设计不同,我们研究的一个主要目标是深入了解标准 ResNet 现代化和实现最先进性能的过程。
6. 结论
在 2020 年代,视觉 Transformers,尤其是像 Swin Transformers 这样的层次结构,开始取代 ConvNets 成为通用视觉主干的首选。人们普遍认为,视觉 Transformer 比 ConvNet 更准确、高效和可扩展。我们提出了 ConvNeXts,这是一种纯 ConvNet 模型,可以在多个计算机视觉基准测试中与最先进的分层视觉 Transformer 竞争,同时保留标准 ConvNet 的简单性和效率。在某些方面,我们的观察结果令人惊讶,而我们的 ConvNeXt 模型本身并不是全新的——在过去十年中,许多设计选择都被单独检查过,但没有一起检查过。我们希望这项研究报告的新结果将挑战几个广泛持有的观点,并促使人们重新思考卷积在计算机视觉中的重要性。