社区计算机视觉课程文档
ConvNext - 2020 年代的 ConvNet (2022)
并获得增强的文档体验
开始使用
ConvNext - 2020 年代的 ConvNet (2022)
导论
最近,Vision Transformers (ViT) 的突破迅速取代了纯 CNN 模型,成为图像识别领域新的最先进技术。有趣的是,研究发现 CNN 可以采纳 Vision Transformers 中很大一部分设计选择。ConvNext 通过融入 ViT 的启发性技术,代表了对纯卷积模型的重大改进,并在准确性和可扩展性方面取得了与 ViT 相当的结果。
主要改进
ConvNeXT 论文的作者从常规 ResNet (ResNet-50) 开始构建模型,然后逐步现代化和改进架构,以模仿 Vision Transformers 的分层结构。主要改进包括
- 训练技巧
- 宏观设计
- ResNeXt 化
- 倒置瓶颈
- 大卷积核尺寸
- 微观设计
我们将逐一介绍每个主要改进。这些设计本身并不新颖。然而,您可以学习研究人员如何系统地调整和修改设计以改进现有模型。为了展示每个改进的效果,我们将比较模型在 ImageNet-1K 上修改前后的准确率。
训练技巧
研究人员首先认识到,虽然架构设计选择至关重要,但训练过程的质量也对影响性能结果起着关键作用。受到 DeiT 和 Swin Transformers 的启发,ConvNext 密切地采用了它们的训练技巧。一些值得注意的改变包括
- 轮数:将轮数从最初的 90 轮扩展到 300 轮。
- 优化器:使用 AdamW 优化器代替 Adam 优化器,两者在处理权重衰减的方式上有所不同。
- Mixup(生成随机图像对的加权组合)、Cutmix(剪切图像的一部分并用另一张图像的补丁替换)、RandAugment(应用一系列随机增强,例如旋转、平移和剪切)和 Random Erasing(随机选择图像中的矩形区域并用随机值擦除其像素)以增加训练数据。
- 正则化:使用随机深度和标签平滑作为正则化技术。
修改这些训练过程已将 ResNet-50 的准确率从 76.1% 提高到 78.8%。
宏观设计
宏观设计指的是在系统或模型中做出的高层结构决策和考虑,例如层的排列、计算负载在不同阶段的分布以及整体结构。通过检查 Swin Transformers 的宏观网络,作者们发现了两个值得注意的设计考虑,这些考虑有利于 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 架构的开始阶段,输入被馈送到一个 stem 7×7 卷积层,步幅为 2,然后是一个最大池化层,用于将图像下采样 4 倍。然而,作者发现用一个具有 4×4 卷积核尺寸和 4 的步幅的卷积层替换 stem 更有效,有效地通过非重叠的 4x4 补丁进行卷积。Patchify 的作用与下采样图像 4 倍相同,同时减少了层数。这个 Patchifying 步骤略微将模型准确率从 79.4% 提高到 79.5%。
ResNeXt 化
ConvNext 还采用了上一节中解释的 ResNeXt 的思想。与标准 ResNet 相比,ResNeXt 展示了浮点运算次数 (FLOPs) 和准确率之间更好的权衡。通过使用深度可分离卷积和 1×1 卷积,我们将实现空间和通道混合的分离——这也是视觉 Transformer 中发现的一个特征。使用深度可分离卷积会减少 FLOPs 和准确率。然而,通过将通道数从 64 增加到 96,准确率高于原始 ResNet-50,同时保持相似的 FLOPs 数量。此修改将模型准确率从 79.5% 提高到 80.5%。
倒置瓶颈
每个 Transformer 块中的一个常见想法是使用倒置瓶颈,其中隐藏层比输入维度大得多。这个想法也被 MobileNetV2 在计算机视觉中采用和推广。ConvNext 采用了这个想法,输入层有 96 个通道,并将隐藏层增加到 384 个通道。通过使用这项技术,模型准确率从 80.5% 提高到 80.6%。
大卷积核尺寸
Vision Transformer 卓越性能的一个关键因素是非局部自注意力,它允许更广泛的图像特征感受野。在 Swin Transformers 中,注意力块窗口大小设置为至少 7×7,超过了 ResNext 的 3x3 卷积核尺寸。然而,在调整卷积核尺寸之前,有必要重新定位深度可分离卷积层,如下面的图像所示。这种重新定位使 1x1 层能够有效地处理计算任务,而深度可分离卷积层则充当更非局部的感受器。这样,网络就可以利用结合更大卷积核尺寸卷积的优势。实现 7x7 卷积核尺寸将准确率保持在 80.6%,但降低了模型的整体 FLOPs 效率。
微观设计
除了上述修改之外,作者还对模型添加了一些微观设计更改。微观设计指的是低层结构决策,例如激活函数的选择和层细节。一些值得注意的微小更改包括
- 激活:用 GELU(高斯误差线性单元)激活替换 ReLU 激活,并从残差块中移除所有 GELU 层,除了两个 1×1 层之间的一个。
- 归一化:通过移除两个 BatchNorm 层并将 BatchNorm 替换为 LayerNorm 来减少归一化层,仅在 conv 1×1 层之前保留一个 LayerNorm 层。
- 下采样层:在 ResNet 阶段之间添加一个单独的下采样层。这些最终修改将 ConvNext 的准确率从 80.6% 提高到 82.0%。最终的 ConvNext 模型超过了 Swin Transformer 的 81.3% 的准确率。
模型代码
您可以访问 此 HuggingFace 文档,了解如何将 ConvNext 管道集成到您的代码中。
参考文献
论文《A ConvNet for the 2020s》于 2022 年由 Facebook AI Research 的一个研究团队提出 ConvNext 架构,该团队成员包括 Zhuang Liu、Hanzi Mao、Chao-Yuan Wu、Christoph Feichtenhofer、Trevor Darrell 和 Saining Xie。论文可以在这里找到,GitHub 仓库可以在这里找到。
< > 在 GitHub 上更新