A ConvNet for the 2020s

研究背景

重铸卷积荣光,我辈义不容辞。

设计思路

Training Techniques

除了网络架构的设计,训练过程也会影响最终性能。vision transformer不仅带来了一组新的模块和架构设计决策,而且他们还引入了不同的训练技术(例如AdamW优化器)。这主要涉及优化策略和相关的超参数设置。因此,我们探索的第一步是用vision Transformer训练程序训练一个基线模型。在我们的研究中,我们使用的训练方法接近DeiT和Swin Transformer。训练从ResNets最初的90个epoch扩展到300个epoch。我们使用AdamW优化器、数据增强技术(如Mixup、Cutmix、RandAugment、Random Erasing)和正则化方案(包括Random Depth和Label Smoothing)。就其本身而言,这种增强训练方法将ResNet-50模型的性能从76.1%提高到78.8%(+2.7%),这意味着传统卷积神经网络和视觉变形金刚之间的性能差异很大一部分可能是由于训练技术。

Marco Design

Changing stage compute ratio

以ResNet50为例,每个stage中blocks的堆叠比例是3:4:6:3,Swin-Transformer有着相似的结构,但在Swin-T中为1:1:3:1,在Swin-L中为1:1:9:1。按照这种设计,我们将ResNet50的3:4:6:3调整为3:3:9:3,这将模型的精度从78.8%提高到79.4%。
image.png

Changing stem to “Patchify”

将ResNet50的stem中的7x7的4倍下采样替换为Swin-Transformer中的4x4的stride=4的4倍下采样,准确率从79.4%提高到79.5%。

ResNeXt-ify

在这一部分中,作者尝试采用ResNeXt的思想],核心部分是分组卷积,ResNeXt的指导原则是“使用更多的组,扩大宽度”。更准确地说,ResNeXt对bottleneck中的3×3 conv层使用了分组卷积。因此,可以通过扩大网络宽度来弥补容量损失。在作者的例子中,使用depth-wise卷积,这是分组卷积的一种特殊情况,分组的数量等于通道的数量。按照ResNeXt中提出的策略,我们将网络宽度增加到与Swin-T相同的通道数量(从64个增加到96个)。这使得网络性能达到80.5%。

Inverted Bottleneck

image.png

在Transformer中,MLP的hidden dimension是input dimension的四倍,在MobileNetV2中也有类似的思想,图a为ResNet50的bottleneck,图b为MobileNetV2的Inverted Bottlenck。尽管深度卷积层的FLOPs增加了,但这一变化使整个网络FLOPs减少到4.6G。有趣的是,这会略微提高性能(从80.5%提高到80.6%)。

Large Kernel Sizes

在主流卷积神经网络中,通常使用小卷积核堆叠而不是使用大卷积核,在Swin-Transformer中,虽然引入了local window到self-attention中,但大小最小也是7x7。

Moving up depthwise conv layer

为了更好研究大卷积核的作用,作者将depth-wise卷积放在最前面,这也是效仿了Transformer中将MSA放置与MLP之前,但这个中间步骤导致性能暂时下降到79.9%。

Increasing the kernel size

作者实验了几种内核大小,包括3、5、7、9和11。网络的性能从79.9% (3×3)提高到80.6% (7×7)。此外,我们观察到较大内核大小的好处在7×7达到饱和点。至此,我们已经结束了在宏观尺度上对网络架构的研究。有趣的是,视觉Transformer中很大一部分的设计选择可以映射到ConvNet实例化。

Micro Design

Replacing ReLU with GELU

在Transformer中,激活函数大部分使用的是GELU,作者尝试将ConNext中的ReLU全部替换成GELU,发现精度不变,还是80.6%。

Fewer activation functions

与ResNet不同,Swin-Transformer的激活函数很少,在MLP中只有一个GELU,与之相比,ResNet Block中每一个卷积后面都接有ReLU。如下图所示,从ResNet Block中消除了所有激活函数,除了两个1x1层之间的一个,复制了Transformer块的样式。这将结果提高了0.7%,达到81.3%,与Swin-T的性能相当。
image.png

Fewer normalization layers

与上一小节动机相同,只留下一个BN层,这进一步提升了性能,达到了81.4%的精度,已经超过了Swin-T。

Substituting BN with LN

直接用LN代替原来ResNet中的BN会导致性能不佳。但随着网络架构和训练技术的所有修改,作者观察到卷积神经网络模型在LN的训练中没有任何困难;实际上,该算法的性能略好,达到了81.5%的精度。

Separate downsampling layers

ResNet中Bottleneck的下采样是由其中的3x3卷积完成的,而Swin-Transformer是单独有一个下采样层。作者探索了一个类似的策略,使用2x2 conv层和stride=2进行空间下采样。进一步的研究表明,在空间分辨率发生变化的地方增加归一化层有助于稳定训练。在每个下采样之前,Stem之后以及最后的全局平均池化之后添加LN。我们可以将准确率提高到82.0%,显著超过Swin-T的81.3%。

实验结果

image.png

image.png

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值