过去一年,Transformer在视觉领域的应用越来越广泛,逐渐对CNN构成了挑战。
首先,谷歌的ViT在图像分类方面取得了显著突破,随后微软的Swin Transformer则在目标检测和图像分割上取得了成功。
随着越来越多的学者投身于视觉Transformer的研究,三大视觉任务榜单被Transformer及其混合模型占据。
然而,就在此时,一篇名为《2020年代的卷积网络》的论文发布,介绍了全新的纯卷积模型ConvNeXt,使得这一领域再次引发热议。
全球计算机视觉领域再度掀起了模型架构的讨论,顶尖学者如LeCun等人纷纷参与评论。

该论文指出,ConvNeXt在ImageNet-1k数据集上的表现超越了同规模的Swin Transformer,提升幅度达到0.7%。在COCO和ADE20K数据集上,ConvNeXt也展现出相等或更优的性能。
面对由Facebook与UC伯克利合作完成的这篇论文,深度学习领域的先锋LeCun表示:
卷积模型与视觉Transformer之间的争论愈加激烈!

在GitHub上,ConvNeXt的项目连续多天位居趋势榜首。

在国内,这一特定领域的学术问题一度登上知乎热榜。

在国外,许多高校的研究者以及谷歌、ARM等大型公司的工程师也积极参与讨论,甚至吸引了经典论文的作者们。
ViT的作者以及EfficientNet系列的作者们也纷纷展示自己的最新研究成果,争相比较。

回到LeCun,他并不是单纯为自身成果站台,而是强调模型架构之间的相互借鉴是未来的方向。
你以为我将要说“卷积是你所需的一切”吗?并不是!

实际上,LeCun最喜欢的架构类似于DETR,第一层是卷积,后续层则结合了更多Transformer风格的设计。
虽然ConvNeXt并非完全符合他的构想,但它从Transformer中借鉴了大量技巧,LeCun认为这正是其成功之处。
论文的通讯作者谢赛宁也对这些讨论做出了回应,表示该论文并非旨在争夺排行榜的精度,而是探索卷积模型的设计空间。
在设计过程中,他们团队保持了高度的克制,尽量保持模型的简洁性。

对比谁是最强架构的问题不谈,参与讨论的许多专家对这篇论文有着共同的感受:
图表美观,结构清晰,实验充分,值得一读!
尤其是其中一张精彩的插图,可以说是全文的精华,也是作者提供的“图解理解”。

接下来,我们将介绍这篇论文,了解ConvNeXt所采用的方法及其背景。
为CNN赋予Transformer的特性
先看摘要,其中有一句关键的话阐述了这篇论文的研究初衷。
本文旨在重新审视CNN的设计空间,通过现代方法对ResNet进行优化,并测试纯卷积模型的性能极限。
团队认为,尽管Transformer在视觉任务上取得了成功,但其全局注意力机制的复杂度与输入图像尺寸的平方成正比。
在处理224×224、384×384分辨率的ImageNet图像分类任务时,这种复杂度尚可接受,但在需要高分辨率图像的实际应用中便显得不够理想。
Swin Transformer通过重新引入卷积网络中的滑动窗口等特性来缓解此问题,但也使得Transformer更像CNN。
Swin Transformer的成功使得他们重新认识到卷积的重要性。
因此,这篇论文的研究思路是:
如果让卷积模型借鉴Transformer架构中的各种方法,但始终不引入注意力模块,会有什么效果?
论文最终呈现出的是将标准ResNet逐步改造为更像Transformer的路线图。
也就是之前提到的那张广受好评的图。
条形图中,有颜色的部分代表Swin-T与ResNet-50在各种条件下的模型精度比较。
灰色部分则是更大规模的Swin-B与ResNet-200之间的比较,带阴影的地方表明该方法最终未被采用。
为了公平对比,模型的计算量在整个过程中保持与Swin Transformer相当。
研究团队总结了五个改动方向:
宏观设计、引入ResNeXt、反转瓶颈层、增大卷积核、微观设计。
在详细解释每个改动之前,首先介绍一下训练方法上的改进。
视觉Transformer不仅引入了一套新的模块和架构设计,还采用了与传统CNN不同的训练方法。
论文中采用了与DeIT和Swin Transformer相似的训练方式。
首先将epoch从ResNet的90增加到300,并改用AdaMW优化器。
在数据增强方面,引入了Mixup、CutMix、RandAugment和Random Erasing。
正则化方面则使用了随机深度(Stochastic Depth)和标签平滑(Label Smoothing)。
通过这些方法,Torchvision版ResNet-50的性能提升了2.7%,从76.1%升至78.8%。
这一结果证明,传统卷积模型与视觉Transformer之间的性能差异部分源于训练方法。
接下来,进入模型本身的五大改动的详细介绍。
这部分主要有两项改动,均参考了Swin Transformer。
首先是block数量的比例分配,原版ResNet-50在四个阶段中的分配为(3, 4, 6, 3)。
Swin Transformer借鉴了多阶段的思想,每个阶段输出不同分辨率的特征,但比例改为1:1:3:1。
ConvNeXt按照(3, 3, 9, 3)进行分配,结果使模型精度提高了0.6%,达到了79.4%。
不过根据Facebook团队的两项研究,团队认为可能还存在更优的比例,值得继续探索。
第二项改动是在stem层。
传统ResNet-50采用一个步长为2的7×7卷积加上最大池化,实际对输入图像进行了4倍下采样。
而从ViT开始,输入图像被切分为多个不重叠的patch。
Swin Transformer的patch尺寸为4×4,因此ConvNeXt也设置为步长为4的4×4非重叠卷积。
这一改动使模型精度再次提升0.1%,达到了79.5%。
ResNeXt是本篇论文通讯作者谢赛宁在Facebook何恺明组实习时的研究成果,发表于CVPR 2017。
与原版ResNet相比,ResNeXt在精度与计算量之间的权衡更加合理,因此ConvNeXt决定继承这一优点。
ResNeXt的核心思想是分组卷积,同时为弥补模型容量的损失增加了网络宽度。
此次ConvNeXt直接将分组数设为输入通道数,设为96。
这样每个卷积核处理一个通道,仅在空间维度上进行信息混合,达成与自注意力机制类似的效果。
这一改动使模型精度提升1%,达到了80.5%。

这种方法在MobileNetV2中首次提出,随后在更多轻量化CNN模型中广泛应用。
有趣的是,Transformer中也采用了类似设计,因此ConvNeXt也进行了尝试。
经过反转后,虽然depthwise卷积层的FLOPs增加,但下采样残差块的作用使整个网络的FLOPs反而减少。
模型精度也略微提升0.1%,达到了80.6%。
另外,在以ResNet-200为基础的更大模型中,提升效果更为显著,从81.9%提升至82.6%。
自VGG以来,3×3卷积核已成为黄金标准,小卷积核在硬件上也得到了充分适配。
Swin Transformer引入了类似卷积核的局部窗口机制,但窗口大小至少为7×7。
因此,ConvNeXt计划再次探索不同卷积核大小的效果。
然而,反转瓶颈层后直接增大卷积核会显著增加参数量。
因此,在这之前,还需进行一步操作,在反转瓶颈层的基础上提前depthwise卷积层。
这一操作暂时使模型精度下降到79.9%。
随后对卷积核大小从3×3到11×11进行尝试,在7×7时模型精度回升至80.6%。
进一步增加卷积核大小效果并不明显,在ResNet-200上同样如此,最终卷积核…
