过去一年,TRansfoRMeR频频跨界视觉领域,大有抢CNN饭碗之势。
先是图像分类上被谷歌VIT突破,后来目标检测和图像分割又被微软Swin TRansfoRMeR拿下。
随着投身视觉TRansfoRMeR研究的学者越来越多,三大任务榜单皆被TRansfoRMeR或两种架构结合的模型占据头部。
但就在此时,一篇《2020年代的卷积网络》横空出世,带来全新纯卷积模型ConvNeXt,一下又热闹起来。
全世界CV圈再次掀起模型架构之争,LeCun等一众顶级学者都下场评论的那种。
论文指出,ConvNeXt性能反超同等规模的Swin TRansfoRMeR,在imageNet-1k上超过后者0.7%。
COCO、ADE20K上,ConvNeXt也做到同等规模更好或相当水平。
面对这篇由FACEbook与UC伯克利联手打造的论文,深度学习三巨头之一的LeCun直言:
卷积模型与视觉TRansfoRMeR间的争论愈演愈烈了!
GitHub上,ConvNeXt连续多天排在趋势榜第一。
在国内,如此垂直的学术问题甚至一度登上知乎全站热榜。
在国外,不少高校学者和谷歌、ARM等大厂工程师都来参与讨论,甚至捕捉到一些经典论文作者。
VIT作者、EFFicientNet系列作者都来展示自己的最新研究成果,想要一比高下。
再说回LeCun,这次他还真不是来给自家成果站台的,而是提出模型架构之间相互借鉴是未来的方向。
你以为我接下来要说“Conv is all you need&Rdquo;了吗?不是!
原来LeCun自己最喜欢的架构类似DETR,第一层是卷积,后面与更多TRansfoRMeR风格的层相结合。
虽然这次的ConvNeXt不是他说的这种,但也从TRansfoRMeR身上借鉴了大量技巧,LeCun觉得其成功之处就在于此。
这次论文的通讯作者谢赛宁也对这些讨论作出了回应。
他说这并不是一篇想要比拼精度刷榜单的论文,更多的是想探索卷积模型的设计空间。
在设计过程中他们团队非常克制,尽量保持了模型的简洁。
到底谁是最强架构抛开不谈,参与讨论的一众大佬们对这篇论文本身都有一个共同感受:
图表精美,结构清晰,实验充分,值得一读!
特别是其中有一张精美插图,可以说是全文的精华,也是作者自己提供的“一图看懂&Rdquo;。
下面就先来介绍一下这篇论文,了解一下ConvNeXt所用的方法和来龙去脉。
给CNN披上TRansfoRMeR的皮
先看摘要,其中有关键的一句话阐明了这篇论文的研究初衷。
本文旨在重新审视CNN的设计空间,用现代方法在ResNet基础上做优化,测试纯卷积模型的性能极限。
团队认为虽然TRansfoRMeR在视觉上大获成功,但全局注意力机制的复杂度是与输入图像尺寸的平方呈正比的。
对imageNet图像分类任务的224&tiMes;224、384&tiMes;384分辨率来说还算可以接受,需要高分辨率图像的实际应用场景下就不太理想。
Swin TRansfoRMeR靠重新引入卷积网络中的滑动窗口等诸多特性弥补了这个问题,但也让TRansfoRMeR变得更像CNN了。
Swin TRansfoRMeR的成功让他们重新认识到卷积的重要性。
据此,这篇论文的研究思路便是:
如果让卷积模型也借鉴TRansfoRMeR架构中的各种方法,但始终不引入注意力模块,能取得什么效果?
论文最后所呈现出来的,是把标准ResNet一步步改造得更像TRansfoRMeR的路线图。
也就是上面提到的那张广受好评的图。
条形图中,有颜色的部分代表Swint-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之间的性能差异也有一部分来自训练方法。
接下来进入对模型本身5大项改动的详细介绍。
这部分主要有两项改动,参考的也是Swin TRansfoRMeR。
首先是block数量的比例分配,原版ResNet-50的4个阶段中是按(3, 4, 6, 3)分配。
Swin TRansfoRMeR借鉴了多阶段的,每个阶段输出不同分辨率的y思想,但比例改成了1:1:3:1。
ConvNeXt跟随这个比例按(3,3,9,3)分配,结果是模型精度提高了0.6%,到达79.4%。
不过根据此前FACEbook团队的两项研究,团队认为更优的比例也可能存在,有待继续探索。
这部分的第二项改动是在steM层。
传统ResNet-50的做法是一个步长为2的7×7的卷积加上最大池化,相当于对输入图像做了4倍的下采样。
从VIT开始会先把输入图像切成一个个patch,对每个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卷积层提前(b到c)。
这一步操作暂时将模型精度下降到了79.9%。
之后对卷积核大小的试验从3×3到11×11都有尝试,在7×7时模型精度重回80.6%。
再往上增加效果则不明显,在ResNet-200上同样如此,最后卷积核