ConvNext - 2020 年代的卷积网络 (2022)
简介
最近,视觉 Transformer (ViT) 的突破迅速超越了纯粹的 CNN 模型,成为图像识别的最新技术。有趣的是,研究发现 CNN 可以采用 ViT 中的大部分设计选择。ConvNext 通过结合受 ViT 启发的技术,对纯卷积模型进行了重大改进,在准确性和可扩展性方面取得了与 ViT 相当的结果。
主要改进
ConvNeXT 论文的作者首先使用常规 ResNet (ResNet-50) 来构建模型,然后逐步现代化和改进架构,以模仿视觉 Transformer 的层次结构。主要改进是
- 训练技术
- 宏观设计
- ResNeXt-ify
- 倒置瓶颈
- 大内核尺寸
- 微观设计我们将逐一介绍每个关键改进。这些设计本身并不新颖。但是,您可以了解研究人员如何系统地调整和修改设计以改进现有模型。为了展示每个改进的有效性,我们将在 ImageNet-1K 上比较模型修改前后的准确性。
训练技术
研究人员首先发现,虽然架构设计选择至关重要,但训练过程的质量也对影响性能结果起着至关重要的作用。受 DeiT 和 Swin Transformer 的启发,ConvNext 紧密地调整了它们的训练技术。一些值得注意的变化是
- 时期:将时期从最初的 90 个时期延长到 300 个时期。
- 优化器:使用 AdamW 优化器而不是 Adam 优化器,两者在处理权重衰减的方式上有所不同。
- 正则化:使用随机深度和标签平滑作为正则化技术。
- Mixup(生成随机图像对的加权组合)、Cutmix(剪切图像的一部分并用另一幅图像的补丁替换)、RandAugment(应用一系列随机增强,例如旋转、平移和剪切)和随机擦除(随机选择图像中的矩形区域并用随机值擦除其像素)以增加训练数据。修改这些训练程序使 ResNet-50 的准确率从 76.1% 提高到 78.8%。
- 正则化:使用随机深度和标签平滑作为正则化技术。修改这些训练程序使 ResNet-50 的准确率从 76.1% 提高到 78.8%。
宏观设计
宏观设计是指在系统或模型中做出的高级结构决策和考虑因素,例如层级的排列、不同阶段的计算负载分配以及整体结构。研究人员检查了 Swin Transformer 的宏观网络,确定了两个值得注意的设计考虑因素,它们有利于 ConvNext 的性能。
阶段计算比
阶段计算比是指神经网络模型的各阶段之间的计算负载分配。ResNet-50 有四个主要阶段,具有 (3, 4, 6, 3) 个块,这意味着它的计算比为 3:4:6:3。为了遵循 Swin Transformer 的计算比 1:1:3:1,研究人员将 ResNet 每个阶段的块数量从 (3, 4, 6, 3) 调整为 (3, 3, 9, 3)。更改阶段计算比使模型准确率从 78.8% 提高到 79.4%。
将 stem 更改为 Patchify
通常,在 ResNet 架构的开始,输入会被送入一个步长为 2 的 7×7 卷积层,后面跟着一个最大池化层,用于将图像下采样 4 倍。然而,作者发现用一个具有 4×4 核大小和步长为 4 的卷积层来替代 stem 层更有效,有效地将它们通过不重叠的 4x4 图块进行卷积。Patchify 实现了与下采样图像 4 倍相同的目的,同时减少了层数。这种 Patchify 步骤略微提高了模型精度,从 79.4% 提高到 79.5%。
ResNeXt-ify
ConvNext 也采用了 ResNeXt 的理念,在上一节中已解释。ResNeXt 展示了与标准 ResNet 相比,在浮点运算次数 (FLOPs) 和精度之间改进的权衡。通过使用深度卷积和 1 × 1 卷积,我们将实现空间和通道混合的分离——这也是视觉 Transformer 中的一个特征。使用深度卷积可以减少 FLOPs,但也会降低精度。然而,通过将通道数从 64 增加到 96,精度高于原始 ResNet-50,同时保持相似的 FLOPs 数。这种修改将模型精度从 79.5% 提高到 80.5%。
Inverted Bottleneck
每个 Transformer 块中一个常见的理念是使用倒置瓶颈,其中隐藏层的维度远大于输入维度。这个理念也被 MobileNetV2 用于计算机视觉并广为普及。ConvNext 采用了这个理念,其输入层有 96 个通道,并将隐藏层增加到 384 个通道。通过使用这种技术,它将模型精度从 80.5% 提高到 80.6%。
Large Kernel Sizes
视觉 Transformer 性能优异的一个关键因素是其非局部自注意力机制,它允许图像特征具有更广阔的感受野。在 Swin Transformer 中,注意力块的窗口大小至少设置为 7×7,超过了 ResNext 中 3x3 核的大小。但是,在调整核大小之前,有必要重新定位深度卷积层,如下图所示。这种重新定位使 1x1 层能够有效地处理计算任务,而深度卷积层充当更非局部的感受器。通过这样做,网络可以利用结合更大核尺寸卷积的优势。实现 7x7 核尺寸可以保持 80.6% 的精度,但会降低模型的整体 FLOPs 效率。
Micro Design
除了上面提到的修改,作者还对模型进行了一些微设计调整。微设计是指低级别的结构决策,例如激活函数的选择和层细节。一些值得注意的微设计调整包括:
- 激活函数:用 GELU (高斯误差线性单元) 替换 ReLU 激活函数,并将残差块中的所有 GELU 层(除了两个 1×1 层之间的 GELU 层)都移除。
- 归一化:通过移除两个 BatchNorm 层并将 BatchNorm 替换为 LayerNorm,减少了归一化层的数量,只在卷积 1 × 1 层之前保留一个 LayerNorm 层。
- 下采样层:在 ResNet 阶段之间添加一个单独的下采样层。这些最终的修改将 ConvNext 的精度从 80.6% 提高到 82.0%。最终的 ConvNext 模型超过了 Swin Transformer 的 81.3% 的精度。
Model Code
你可以访问 HuggingFace 文档,了解如何将 ConvNext 管线集成到你的代码中。
References
这篇名为“面向 2020 年代的卷积神经网络”的论文在 2022 年由 Facebook 人工智能研究院的一组研究人员提出,包括 Zhuang Liu、Hanzi Mao、Chao-Yuan Wu、Christoph Feichtenhofer、Trevor Darrell 和 Saining Xie。该论文可以在 此处 找到,GitHub 仓库可以在 此处 找到。
< > 在 GitHub 上更新