社区计算机视觉课程文档
ConvNext——一个为2020年代设计的ConvNet (2022)
并获得增强的文档体验
开始使用
ConvNext——一个为2020年代设计的ConvNet (2022)
简介
最近,视觉Transformer (ViT) 的突破迅速取代了纯CNN模型,成为图像识别领域新的最先进技术。有趣的是,研究发现CNN可以借鉴视觉Transformer设计中的很大一部分选择。ConvNext通过结合受ViT启发的多种技术,显著改进了纯卷积模型,并在准确性和可扩展性方面取得了与ViT相媲美的结果。
关键改进
ConvNeXT论文的作者从一个普通的ResNet (ResNet-50) 开始构建模型,然后逐步现代化和改进架构,以模仿视觉Transformer的层次结构。关键改进包括:
- 训练技术
- 宏观设计
- ResNeXt化
- 倒置瓶颈
- 大核尺寸
- 微观设计
我们将逐一介绍这些关键改进。这些设计本身并非新颖。然而,你可以学习研究人员如何系统地调整和修改设计以改进现有模型。为了展示每项改进的有效性,我们将比较模型在ImageNet-1K上修改前后的准确性。
训练技术
研究人员首先发现,虽然架构设计选择至关重要,但训练过程的质量对性能结果也起着关键作用。受DeiT和Swin Transformers的启发,ConvNext密切借鉴了它们的训练技术。其中一些显著的变化是:
- 周期:将原始的90个周期延长到300个周期。
- 优化器:使用AdamW优化器代替Adam优化器,两者在处理权重衰减方面有所不同。
- Mixup(生成随机图像对的加权组合)、Cutmix(剪切图像的一部分并用另一张图像的补丁替换)、RandAugment(应用一系列随机增强,如旋转、平移和剪切)和Random Erasing(随机选择图像中的一个矩形区域并用随机值擦除其像素)以增加训练数据。
- 正则化:使用Stochastic Depth和Label Smoothing作为正则化技术。
修改这些训练过程使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%。
将起始层更改为分块(Patchify)
通常,在ResNet架构的起始部分,输入会送入一个步长为2的7×7卷积层(stem),然后是一个最大池化层,用于将图像下采样4倍。然而,作者发现用一个核大小为4×4、步长为4的卷积层来替换stem更有效,它能通过非重叠的4x4块进行高效卷积。分块(Patchify)实现了相同的下采样4倍的目的,同时减少了层数。这个分块步骤使模型准确率从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%。
大核尺寸
视觉Transformer卓越性能的一个关键因素是其非局部自注意力机制,它允许图像特征具有更宽广的感受野。在Swin Transformers中,注意力块窗口大小至少设置为7×7,超过了ResNext的3x3核大小。然而,在调整核大小之前,需要重新定位深度可分离卷积层,如下图所示。这种重新定位使得1x1层能够有效地处理计算任务,而深度可分离卷积层则充当更非局部的感受器。通过这种方式,网络可以利用更大核尺寸卷积的优势。实现7x7核大小保持了80.6%的准确率,但降低了模型的整体FLOPs效率。
微观设计
除了上述修改,作者还对模型进行了一些微观设计更改。微观设计指的是低层次的结构决策,例如激活函数的选择和层细节。一些显著的微观变化是:
- 激活函数:用GELU(高斯误差线性单元)替换ReLU激活函数,并从残差块中移除所有GELU层,除了两个1×1层之间的一个。
- 归一化:通过移除两个BatchNorm层并用LayerNorm替换BatchNorm,从而减少归一化层,只在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 上更新