CVPR 2022: ConvNeXt - FAIR再探纯卷积结构的极限(优于Transformer)

概述

在这里插入图片描述

论文名称: A ConvNet for the 2020s
论文链接: https://arxiv.org/pdf/2201.03545.pdf
开源代码链接: https://github.com/facebookresearch/ConvNeXt
作者单位: FAIR(Facebook AI Research)、 UC Berkeley
3D视觉开发者原文链接: https://mp.weixin.qq.com/s/LcYa19OxbpiyUIFacZJrxQ

无疑,transformer的结构在视觉识别领域内获得了巨大的成功,然而,普通的transformer结构无法应用到某些普遍的视觉任务中,比如说在目标识别以及语义分割任务。针对这样的问题,Swin transformer应用了一些类似于ConvNet的先验知识,使得Transformer能够实际地作为许多网络的backbone,进而在一系列的视觉任务中都取得了令人瞩目的成绩。尽管如此,类似于swin transformer的混合方法,之所以能够取得好成绩,主要的原因还是其transformer的结构,并不是卷积结构的固有特性。

这篇文章的工作则是,重新探究和评估ConvNet的设计空间以及性能上的极限。

文章逐渐地将ResNet”现代化“,或者说,对ResNet进行改进,使得其更接近ViT的版本,并从中提取能够对性能有较大贡献的几个关键组件。探究的结果是一个纯卷积结构所组成的网络,称之为ConvNeXt。尽管全部由卷积结构设计而得,ConvNeXt却能够在精度以及灵活性上均与transformer媲美,甚至更优。具体地,在ImageNet上获得了87.8%的top-1准确度,超过了Swin transformer在COCO检测数据集以及ADE20K分割集上的效果。更难能可贵的是,保持了纯卷积结构的简洁性与高效性。

从ResNet到ConvNeXt的roadmap

在本节中,提供了从ResNet到ConvNet的设计轨迹,该设计轨迹与Transformer有一定的相似性。

从FlOPs的角度出发,考虑了两种模型的size,一个是ResNet-50/Swin-T的模型大小,其FLOPs约为 4.5 ∗ 1 0 9 4.5 * 10^9 4.5109,另一个则是ResNet-200/ Swin-B的模型大小,其FLOPs大约为 15.0 ∗ 1 0 9 15.0 * 10^9 15.0109

出于简洁性的考虑,文章最终会给出相当于ResNet-50/Swin-T的模型结果。

首先使用Swin-Transformer的训练方式对ResNet-50进行训练,作为baseline。
然后研究了一系列的设计技巧对于网络性能的影响,这些性能包括了:
(1)宏观设计(macro design);
(2)ResNetXt化;
(3)倒置的瓶颈(inverted bottleneck);
(4)更大的核大小;
(5)不同的逐层微观设计。

在下图中,示意了将ResNet”现代化“的整个过程及结果:
在这里插入图片描述
在这里插入图片描述

训练技巧 (76.1% -> 78.8%)

除了网络结构的设计,训练策略也将对模型结果产生影响。
实际上,ViT的成果不仅仅给我们带来了在模型结构设计上的启发,其在训练策略上亦有值得我们学习的地方。

因此,探索的第一步就是,使用ViT的训练策略,训练出一个ResNet-50/200作为baseline。

具体地,使用了类似于DeiT以及Swin Transformer的训练策略,有:

  1. 将原训练ResNets的90轮提高至300轮;
  2. 使用AdamW优化器;
  3. 使用数据增强技巧,包括Mixup、Cutmix、RandAugment、Random Erasing;
  4. 正则化技巧,包括Stochastic Depth以及Label Smotthing。

通过这样的训练策略,可以使得ResNet-50的准确率从76.1% 提升至 78.8 %。

在之后的探索中,均采用了一致的训练策略与超参数。每一个结果都是三个随机种子训练得到的结果平均。

宏观设计

我们知道,Swin Transformer的设计是多级的,每一级都有着不同的特征图分辨率,文章提炼出了两个比较有意思的设计思想:

  1. stage compute ratio;
  2. stem cell。

改变stage compute ratio (78.8% -> 79.4%)

原始ResNet在每一个stage中的计算分布实质上是经验性的。
最为繁重的"res4"的设计意图是与某些下游任务,比方说目标减策实现兼容,具体的体现方式为探测头在 14 ∗ 14 14 *14 1414大小的特征平面上进行处理。

Swin-T的设计原则也是类似的,其stage compute ratio 为 1 : 1 : 3 : 1 1:1:3:1 1:131,而对于更大的Swin Transformer来说,其比例为 1 : 1 : 9 : 1 1:1:9:1 1191

考虑到这样的设计原则,我们调整ResNet-50中的stage compute ratio 从 ( 3 , 4 , 6 , 3 ) (3,4,6,3) (3,4,6,3) ( 3 , 3 , 9 , 3 ) (3,3,9,3) (3,3,9,3)。这样的调整,使得ResNet的FLOPs与Swin-T一致。且精度从78.8%进一步地增长到79.4%。

值得注意的是,在这方面或许仍然有增长空间。
在接下来的探究实验中,均采用了这样的比例分配。

将“stem”改为“patchify” (79.4% -> 79.5%)

显然,“stem”的设计更关注怎么在网络开始的时候处理输入图像。考虑到自然影像中存在的冗余信息,不管是ConvNet还是ViT,都会将自然影像下采样到一个合适的特征图尺寸。
在传统的ResNet中,“Stem”表现为stride=2的 7 ∗ 7 7*7 77卷积,且接一个最大池化,因此最终得到一个4倍降采样的size。

而在ViT中,其“Stem”则采用了更为激进的“patchify”策略,即,采用了一个更大的核(14或16),以及非重叠的卷积。

Swin-Transformer采用了一个类似的“patchify”层,不过采用了更小的patch size(4),目的是为了适应其多级的网络结构。

将ResNet中的“stem”换成了一个 4 ∗ 4 4*4 44大小, s t r i d e = 4 stride = 4 stride=4的所谓的patchify的卷积层,精度从 79.4 79.4% 79.4提升到了 79.5 79.5% 79.5

ResNeXt-ify (79.5% -> 80.5%)

相比起普通的ResNet来说,尝试采用ResNeXt中的思想策略。ResNeXt中的核心策略是分组卷积,在这里特指的含义是:将卷积划分为几个组内。
使用了depthwise卷积。
实际上,depthwise卷积与自注意力中的加权和操作非常相似,都是在每一个通道中进行操作。
结合depthwise卷积与1*1卷积,使得空间和通道的信息融合分离开来,这与ViT中的思想非常相似,即,要么融合空间信息,要么融合通道信息,并不会同时进行信息混合。
通过depthwise卷积的使用,大幅降低了网络的FLOPs

考虑到ResNeXt所提到的策略,将网络的通道提到与Swin-T一致,即从64到96。这使得网络的性能提升到80.5%,但同时,FLOPs也增加了5.3G。

Inverted Bottleneck(80.5% -> 80.6%)

在每一个Transformer block中都有一个非常重要的设计,即inverted Bottleneck,换言之,MLP block是输入维度的四倍宽。

在这里插入图片描述
在这里插入图片描述

在图三中,体现了配置的配置设计:
在这里插入图片描述

尽管depthwise卷积层的FLOPs提高了,但由于降采样残差块中shortcut的连接减少,整个网络的FLOPs减少到了4.6G。

这样的设计轻微地提高了精度,即从80.5% 到 80.6%。

而在ResNet-200/Swin-B的机制中,则带来了更大的收益,从81.9%涨到了82.6%。

更大的卷积核

将depthwise卷积层上调 (80.6% -> 79.9%,下降)

为了探索大型卷积核的作用,一个先决条件就是将depthwise的位置上调(见Figure 3(b)到(c))。这在Transformer中也是有迹可循的:MSA在MLP层之前。由于inverted bottleneck的存在,这就变成了一个很自然的选择:复杂的MSA模块有着更少的通道数,而更有效率的密集的1*1的卷积则将会承担更为繁重的工作。
这样的中间步骤将FLOPs减少到了4.1G,但是却暂时的使得精度降低到了79.9%。

提高卷积核的大小 (79.9% -> 80.6%)

在有了先决条件后,实验了 3 , 5 , 7 , 9 , 11 3,5,7,9,11 3,5,7,9,11这几个核的精度。
将核大小变化为 7 ∗ 7 7*7 77后,相对于 3 ∗ 3 3*3 33的卷积,精度从79.9%提升到了80.6%,而FLOPs几乎保持不变。
7 ∗ 7 7*7 77的核大小基本上精度已饱和,再增加核的大小都不会使得精度再有所增益。因此,在之后的实验中均采用 7 ∗ 7 7*7 77大小的核。

微观层面的设计

所谓的微观层面指,基本上在层的颗粒度上进行设计,主要聚焦在一些激活函数以及归一化层的选择上。

将ReLU换成GELU(精度没有变化)

GELU可以视作是ReLU的平滑体,在比较新的研究中有所使用,如BERT、OpenAI中的GPT-2以及ViT等。
然而,将ReLU替换成GELU后在精度上并没有提升。

更少的激活函数(80.6% -> 81.3%)

Transformer与ResNet的block之间还有一个小区别就是Transformer采用了更少的激活函数。
考虑Transformer block内有key/query/value的线性embedding层,投影层,在MLP block中的两个线性层,只有在MLP block中才存在一个激活函数。

作为对比,可以尝试在每一个卷积层后面都添加一个激活函数层。

在Figure 4中,可以看到,尝试从残差块中去除了GELU激活,只保留在两个 1 ∗ 1 1*1 11层之间的GELU,模拟了Transformer中的风格,这样的操作使得精度提升了0.7%,达到了81.3%的精度,此时的精度已经可以媲美Swin-T了。

因此,在接下来的网络评估中,都只采用一个GELU激活。

更少的归一化层(81.3% -> 81.4%)

同样,在Transformer的block中,往往有着更少的归一化层。
同样,这里也去除掉两个BN层,在 1 ∗ 1 1*1 11卷积之间只使用一个BN层,这使得网络的精度进一步提升至81.4%,这已经超过了Swin-Transformer的精度了。

注意到,此时在每一个block中的激活函数已经比Transformer还少了,因此,经验地再在block的最开始处额外地加一个BN层,并不会对精度有所提高。

将BN替换为LN (81.4% -> 81.5%)

之前,直接将ResNet中的BN层替换为LN,会导致网络的精度并非最优。然而,采用之前提到的网络结构以及训练技巧,发现用LN训练并没有什么困难,甚至最后还取得了81.5% 的精度。
因此,在接下来的实验中,在每一个残差块中都采用一个LN层。

分开的降采样层 (81.5% -> 82.0%)

在ResNet中,空间降采样是通过残差块进行实现的。
在Swin Transformer中,在两个stage之间加入了分开的降采样层。

进而,探索了一个类似的策略,即使用两个 2 ∗ 2 2 *2 22的卷积层( s t r i d e = 2 stride = 2 stride=2)进行空间上的降采样,这样的修改导致了不同的训练,在之后的研究中发现,在空间分辨率变化的位置加上归一化层将有助于训练的稳定性。
此外,在Swin-Transformer中,一个LN放在降采样之前,一个LN放在stem之后,还有一个放在最后的全局平均池化之后。
这样的操作使得网络的精度提升到82.0%,大幅高于Swin-Transformer所能达到的81.3%。

因此,使用分开的降采样层,这将形成最终的模型,即,命名为ConvNeXt。

ResNet、Swin以及ConvNeXt的block结构可以见Figure 4.
ResNet-50、Swin-T、ConvNeXt-T的细节结构则见Table 9,即:
在这里插入图片描述

在ImageNet上的经验评估

ConvNeXt变种的精度评估

构建了多个ConvNeXt的变种,有:
在这里插入图片描述
训练细则的介绍暂略,读者可见原文,各变种的结果为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同量级的ConvNeXt与ViT之间的对比

在这里插入图片描述

在下游任务上的评估

在COCO数据集上的目标检测以及分割任务

在这里插入图片描述

在ADE20K上的语义分割结果

在这里插入图片描述

结论

文章以Transformer的一些设计原则以及训练技巧为标的,尽可能地探究纯卷积结构的效果与性能极限。尽管每一个小的技巧并非是创新的,但综合的进行试验时确切地得到了大幅的精度提升,个人认为这也将为广大研究者在模型设计与精度提点的工作中提供启发性的思路。

参考文献

  • convNet:
  1. Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun.
    Deep residual learning for image recognition. In CVPR, 2016.
  2. Karen Simonyan and Andrew Zisserman. Very deep convolutional networks for large-scale image recognition. In ICLR, 2015.
  • 计算分布:
  1. Ilija Radosavovic, Justin Johnson, Saining Xie, Wan-Yen Lo, and Piotr Dollár. On network design spaces for visual recognition. In ICCV, 2019.
  2. Ilija Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He, and Piotr Dollár. Designing network design spaces. In CVPR, 2020.
  • ResNeXt:
  1. Saining Xie, Ross Girshick, Piotr Dollár, Zhuowen Tu, and Kaiming He. Aggregated residual transformations for deep neural networks. In CVPR, 2017.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: CVPR2022计算机视觉领域的顶级国际会议,而Transformer是一种基于自注意力机制的神经网络模型,已经在自然语言处理领域取得了很大的成功。在计算机视觉领域,Transformer也被广泛应用于图像生成、目标检测、图像分割等任务中。因此,CVPR2022中关于Transformer的研究和应用将会是一个热门话题。 ### 回答2: CVPR2022计算机视觉领域内的一场重要学术会议,其中涉及到了许多最新的技术和研究成果。其中,Transformer是一个备受关注的话题。 Transformer是一种基于注意力机制的神经网络结构,最初是被提出作为解决自然语言处理任务的一种方法。但是,后来人们发现Transformer同样适用于计算机视觉领域中的各种任务,如目标检测、图像分割、图像生成等。 在CVPR2022中,许多研究人员展示了他们基于Transformer的新方法和改进。其中,一些新方法表现出了很好的性能,证明了Transformer计算机视觉领域中的应用前景。 另外,还有一些关于Transformer的应用研究值得关注。例如,一些研究人员提出了一种基于Transformer的迁移学习方法,可以将已经训练好的模型应用于新的数据集,从而提高模型的泛化能力。此外,还有一些研究人员探究了Transformer结构在图像内部表示方面的作用,以及如何优化Transformer以提高其计算效率等问题。 总之,Transformer计算机视觉领域中的应用前景十分广阔,CVPR2022中越来越多的研究人员开始关注并致力于Transformer的发展和应用,相信在不久的将来,Transformer将会在计算机视觉领域中扮演更加重要的角色。 ### 回答3: CVPR计算机视觉领域的顶级国际学术会议。每年,来自世界各地的研究人员都会在该会议上展示他们的最新研究成果,并分享他们的见解和经验。CVPR2022 TransformerCVPR2022的一个重要话题,它展示了近年来该领域中的最新技术。 Transformer是一种用于自然语言处理(NLP)和计算机视觉(CV)的深度学习模型。该模型在2017年由谷歌公司提出,并在机器翻译任务中获得了巨大的成功。近年来,Transformer已被广泛应用于计算机视觉领域,并在图像分类、目标检测、图像分割、人体姿势估计等任务上取得了优异的结果。 CVPR2022 Transformer展示了一系列最新的技术和应用。首先,该会议涵盖了Transformer模型的各种变体,包括BERT、RoBERTa、GPT和DeiT等。这些变体旨在通过使用更好的语言和图像表示方法来提高模型的性能。其次,该会议还探讨了Transformer在各种计算机视觉任务中的应用,如自然场景文本识别、物体检测和图像生成等。 与传统的卷积神经网络(CNNs)相比,Transformer模型具有许多优势。首先,Transformers可以捕获长期依赖性,因此它们在处理序列数据时更加有效。其次,Transformers具有自注意力机制,这意味着它们能够高效地对重要信息进行集中处理。最后,Transformers可以通过使用预训练模型来提高其性能,这使得它们更适合于小样本或零样本学习。 总之,CVPR2022 Transformer计算机视觉领域中的一个重要话题,它展示了这一深度学习模型在图像处理中的最新技术和应用。Transformer模型的优越性能使得它成为计算机视觉领域中的一项关键技术,将随着时间的推移变得更加成熟和广泛应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLOWVERSE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值