A ConvNet for the 2020s:用卷积达到ViT的性能

A ConvNet for the 2020s

* Authors: [[Zhuang Liu]], [[Hanzi Mao]], [[Chao-Yuan Wu]], [[Christoph Feichtenhofer]], [[Trevor Darrell]], [[Saining Xie]]


初读印象

comment:: 在卷积演变到vision transformer的过程中,找出起到关键作用的组件,构建了一系列被称作ConvNeXt的纯卷积模型,效果和Transformer相似的同时保持了卷积网络的简单性和效率。

动机

卷积神经网络在计算机视觉中的完全主导地位并不是巧合:在许多应用场景中,"滑动窗口"策略对于视觉处理是固有的,特别是在处理高分辨率图像时。卷积神经网络有几个内置的归纳偏差,使其非常适合各种各样的计算机视觉应用。其中最重要的是平移等变性,它是目标检测等任务的理想属性。卷积神经网络本身也是高效的,因为当以滑动窗口的方式使用时,计算是共享的。
在没有ConvNet归纳偏差的情况下,普通的ViT模型作为通用的视觉主干面临许多挑战。最大的挑战是ViT的全局注意力设计,其相对于输入大小具有二次复杂度。这对于ImageNet分类可能是可以接受的,但在高分辨率输入下很快就变得难以解决。
层次化的ViT采用混合方法来弥合这一差距。例如,将"滑动窗口"策略(例如在本地窗口内的注意力)重新引入到Transformers中,使其行为更类似于卷积神经网络。Swin Transformer 是该方向的一个里程碑式的工作,它首次证明Transformers可以作为通用的视觉支柱,并在图像分类之外的一系列计算机视觉任务中实现最先进的性能。Swin Transformer的成功和快速采用也揭示了一件事:卷积的本质并没有变得无关紧要;相反,它仍然是非常理想的,从未消失过。
这项工作中,研究了卷积神经网络和Transformers之间的架构差异,并试图在比较网络性能时识别混淆变量。该研究旨在为卷积神经网络弥合前ViT和后ViT时代之间的差距,以及测试纯ConvNet所能达到的极限。

方法

训练策略

使用了接近DeiT 和Swin Transformer的训练配方。对于深度残差网络,训练由原来的90个历元扩展到300个历元。我们使用Adam W优化器,数据增强技术如Mixup、Cutmix、Rand Augment、Random Erasing,以及正则化方案包括Stochastic Depth和Label Smoothing。

Macro Design

Changing stage compute ratio

将每个阶段的块数从ResNet - 50中的( 3、4、6、3)调整为( 3、3、9、3),同样将FLOPs与Swin - T对齐,使模型精度从78.8 %提高到79.4 %。

Changing stem to “Patchify”

通常,干细胞设计关注的是在网络开始时如何处理输入图像。标准ResNet中的干细胞包含一个7 × 7的步幅为2的卷积层,然后是一个最大池,这导致对输入图像进行4 ×的下采样。在Vision Transformers中,使用了更具侵略性的"补丁化"策略作为干细胞,对应于较大的核尺寸(如kernel_size= 14或16)和非重叠卷积。该研究采用了和Swim Transformer一样的非重叠\(4\times 4\)卷积。准确率从79.4 %变为79.5 %。

ResNeXt-ify

使用了depthwise卷积。深度卷积类似于自注意力中的加权和操作,它在每个通道的基础上操作,即只在空间维度上混合信息。深度卷积和1 × 1卷积的结合导致了空间和通道混合的分离,这是视觉转换器共有的特性,其中每个操作要么混合了空间或通道维度的信息,但不是两者都混合。深度卷积的使用有效地降低了网络的FLOPs,并如预期的那样降低了精度。根据ResNeXt提出的策略,我们将网络宽度增加到与Swin - T的( 64 ~ 96)相同的通道数。随着FLOPs ( 5.3G )的增加,网络性能达到80.5 %。

Inverted Bottleneck

ViT中的隐藏层的维度通常是四倍大于输入,这是一种倒瓶颈设计。在此我们探究倒瓶颈设计。图3 ( a )至( b )说明了构型。尽管深度卷积层的FLOPs有所增加,但由于下采样残差块的快捷方式1 × 1 conv层的FLOPs显著减少,这一变化将整个网络的FLOPs降低到4.6 G。有趣的是,这使得( 80.5 % ~ 80.6 %)的性能略有提升。在ResNet - 200 / Swin - B机制下,该步骤带来了更大的增益( 81.9 % ~ 82.6 %),同时降低了FLOPs。
Pasted image 20230212212225

Large Kernel Sizes

Vit使用了非局部注意力,使得每一层都有全局感受野。Swim Transformer重新将局部窗口引入自注意力中,但是其大小至少是\(7\times 7\)的。
为了减少运算量,将depthwise卷积上移(上图c)并且使用更大的卷积核。7×7的卷积核效果最好。

Micro Design

Replacing ReLU with GELU

将ReLU替换成GELU,但是效果不变。

Fewer activation functions.

从残差块中删除了所有的GELU层,除了两个1 × 1层之间的一个,复制了Transformer块的风格。该过程使结果提高了0.7%到81.3%,与Swin - T的性能基本匹配。

Fewer normalization layers

去掉两个Batch Norm ( BN )层,在conv 1 × 1层之前只留下一个BN层。这进一步将性能提升至81.4 %。

Substituting BN with LN

直接将原始ResNet中的LN替换为BN会导致次优的性能。随着网络结构和训练技术的改变,这里我们重新讨论使用LN代替BN的影响。我们观察到,我们的ConvNet模型在使用LN进行训练时没有任何困难;事实上,性能略好,获得了81.5 %的准确率。

Separate downsampling layers

在Swin Transformers中,级与级之间增加了单独的下采样层。我们探索了一种类似的策略,我们使用2 × 2的conv层和step2进行空间下采样。这种修改令人惊讶地导致了发散训练。进一步的研究表明,在空间分辨率改变的地方增加归一化层可以帮助稳定训练。这些包括Swin Transformers中也使用的几个LN层:每个下采样层之前的一个,主干之后的一个,最后全局平均池化之后的一个。我们可以将准确率提高到82.0 %,大大超过Swin - T的81.3 %。

表现

对比Swin Transformer、ConvNeXt和ResNeXt等传统ConvNet的目标检测和实例分割结果。在不同的模型复杂度下,ConvNeXt取得了与Swin Transformer相当或更好的性能。当放大到ImageNet - 22K上预训练的更大的模型( ConvNeXt-B / L / XL )时,在许多情况下,ConvNeXt在盒子和掩码AP方面明显优于Swin Transformers。
Pasted image 20230213143812

启发

提出了许多卷积网络下提升性能的trick,可以用于自己的模型设计中。

posted @ 2023-12-17 17:01  InunI  阅读(119)  评论(0编辑  收藏  举报