魔改ResNet反超Transformer再掀架构之争!作者说“没一处是创新”,这些优化trick值得学...

Posted QbitAl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔改ResNet反超Transformer再掀架构之争!作者说“没一处是创新”,这些优化trick值得学...相关的知识,希望对你有一定的参考价值。

梦晨 发自 凹非寺
量子位 | 公众号 QbitAI

过去一年,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系列作者都来展示自己的最新研究成果,想要一比高下。


ViT论文二作补充了改进训练方法后的结果

EfficientNet系列作者补充了最新v2版本结果

再说回LeCun,这次他还真不是来给自家成果站台的,而是提出模型架构之间相互借鉴是未来的方向。

你以为我接下来要说“Conv is all you need”了吗?不是!

原来LeCun自己最喜欢的架构类似DETR,第一层是卷积,后面与更多Transformer风格的层相结合。

虽然这次的ConvNeXt不是他说的这种,但也从Transformer身上借鉴了大量技巧,LeCun觉得其成功之处就在于此。

这次论文的通讯作者谢赛宁也对这些讨论作出了回应。

他说这并不是一篇想要比拼精度刷榜单的论文,更多的是想探索卷积模型的设计空间。

在设计过程中他们团队非常克制,尽量保持了模型的简洁。

在我看来,所有模型架构都应该是朋友,只有过度复杂才是共同的敌人(如果你认同奥卡姆剃刀原则的话)。

到底谁是最强架构抛开不谈,参与讨论的一众大佬们对这篇论文本身都有一个共同感受:

图表精美,结构清晰,实验充分,值得一读!

特别是其中有一张精美插图,可以说是全文的精华,也是作者自己提供的“一图看懂”。

图中清晰呈现了一步步把ResNet-50从78.8%精度提升到82.0%的全步骤,及所用到的方法。

下面就先来介绍一下这篇论文,了解一下ConvNeXt所用的方法和来龙去脉。

之后再来看架构之争,相信会有不一样的视角~

给CNN披上Transformer的皮

先看摘要,其中有关键的一句话阐明了这篇论文的研究初衷。

……本文旨在重新审视CNN的设计空间,用现代方法在ResNet基础上做优化,测试纯卷积模型的性能极限……

团队认为虽然Transformer在视觉上大获成功,但全局注意力机制的复杂度是与输入图像尺寸的平方呈正比的。

对ImageNet图像分类任务的224×224、384×384分辨率来说还算可以接受,需要高分辨率图像的实际应用场景下就不太理想。

Swin Transformer靠重新引入卷积网络中的滑动窗口等诸多特性弥补了这个问题,但也让Transformer变得更像CNN了

Swin Transformer的成功让他们重新认识到卷积的重要性。

据此,这篇论文的研究思路便是:

如果让卷积模型也借鉴Transformer架构中的各种方法,但始终不引入注意力模块,能取得什么效果?

论文最后所呈现出来的,是把标准ResNet一步步改造得更像Transformer的路线图。

也就是上面提到的那张广受好评的图。

条形图中,有颜色的部分代表Swint-T与ResNet-50在各种条件下的模型精度比较。

灰色部分是更大规模的Swin-B与ResNet-200之间的比较,带阴影的地方说明这个方法最后未被采用。

为了公平对比,模型的计算量在整个过程中也大致保持与Swin Transformer同水平。

研究团队把改动之处总结成五个部分:

宏观设计、引入ResNeXt、反转瓶颈层、增大卷积核、微观设计

不过在详细解释每个部分之前,先要介绍一下训练方法上的改进。

0、训练方法

视觉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%

(使用ImageNet-1k上224x244分辨率图像训练的top 1精度,下同)

这一结果证明,传统卷积模型与视觉Transformer之间的性能差异也有一部分来自训练方法。

接下来进入对模型本身5大项改动的详细介绍。

1、宏观设计

这部分主要有两项改动,参考的也是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的7x7的卷积加上最大池化,相当于对输入图像做了4倍的下采样。

从ViT开始会先把输入图像切成一个个patch,对每个patch的操作不再重叠。

Swin Transformer的patch尺寸是4x4,所以ConvNeXt也设置成步长为4的4x4非重叠卷积。

这项改动给模型精度再度带来0.1%的提升,现在到了79.5%

2、引入ResNeXt

ResNeXt是本篇论文通讯作者谢赛宁在Facebook何恺明组实习时的一作论文,发表在CVPR 2017。

与原版ResNet相比,ResNeXt在精度与计算量之间的权衡做得更好,所以ConvNeXt打算把这个优点继承过来。

ResNeXt的核心思想是分组卷积,同时为弥补模型容量上的损失增加了网络宽度。

这一次的ConvNeXt直接让分组数与输入通道数相等,设为96。

这样每个卷积核处理一个通道,只在空间维度上做信息混合,获得与自注意力机制类似的效果。

这项改动把模型精度再提高1%,来到80.5%

3、反转瓶颈层

这种方法在MobileNetV2中首次提出,随后也在更多轻量化CNN模型中流行开来。

有意思的是,Transformer中采用了相似的设计,所以ConvNeXt也做了尝试。

这样反转以后,虽然depthwise卷积层的FLOPs增加了,但下采样残差块作用下,整个网络的FLOPs反而减少。

模型精度也稍稍提高了0.1%,来到80.6%

另外在以ResNet-200为基础的更大模型中,提升效果也更明显,从81.9%涨到82.6%。

4、增大卷积核

VGG开始,3x3卷积核成为黄金标准,小卷积核在硬件中也得到了充分地适配。

Swin Transformer引入了类似卷积核的局部窗口机制,但大小至少有7x7。

据此,ConvNeXt打算再次对不同卷积核大小的效果重新做探索。

但是,反转瓶颈层之后放大了卷积层的维度,直接增大卷积核会让参数量显著增加。

所以在这之前,还要再做一步操作,在反转瓶颈层的基础上把depthwise卷积层提前(b到c)。

这一步操作暂时将模型精度下降到了79.9%

之后对卷积核大小的试验从3x3到11x11都有尝试,在7x7时模型精度重回80.6%

再往上增加效果则不明显,在ResNet-200上同样如此,最后卷积核大小就定在7x7。

5、微观设计

接下来是层一级上的微观设计,重点放在了激活函数和归一化上。

激活函数上,卷积模型主要使用的是简单高效的ReLU。

GELU比ReLU更平滑,被BERT、GPT-3等NLP模型以及ViT采用。

在ConvNeXt的探索中,使用GELU没有给模型精度带来提高,但也是一种可行方案。

激活函数的数量上,每个Tranformer块中仅MLP块中存在激活函数。

而CNN的普遍做法是每个卷积层后面都附加一个激活函数。

ConvNeXt尝试只保留了两个1x1层之间的GELU激活函数,与Transformer做法保持一致。

这种方法让模型精度涨了0.7%,终于达到81.3% ,与Swin-T同一水平。

归一化层的数量同样做了减少,精度再涨0.1%至81.4%,超过了Swin-T。

下一步是用LN(层归一化)替换BN(批次归一化),这在原版ResNet中会让精度下降。

但有了上面各种改动做基础,ConvNeXt上这个操作让模型精度涨了0.1%,现在达到81.5%。

最后一步是分离下采样层。

在ResNet上,下采样由残差块执行,Swin Transformer则是使用了单独的下采样层。

ConvNeXt也尝试了类似的策略,使用步长为2的2x2卷积执行下采样操作。

结果却造成了训练不稳定。

好在后来找到解决办法,在每个下采样层前面、stem前面和最后的全局平均池化前面都加上LN。

以上所有改动汇总起来,ConvNeXt单个块的结构终于定型。

最终得到的ConvNeXt-T小模型,精度达到82.0%,优于Swin-T的81.3%。

更大模型的对比上ConvNeXt也略高,但优势缩小。

比较有意思的是,团队总结道:

所有这些方法里,没有一项是这篇论文独创的,它们分布在过去十年间的多项研究里。

ConvNeXt只是把这些方法都集中到一起研究,最终却发现了能在ImageNet-1k上胜过Transformer的纯卷积模型。

从FLOPs、参数量、吞吐量和内存使用量上看,每种规模的ConvNeXt都和Swin Transformer保持大致相当。

ConvNeXt的优势还在于,不需要增加额外的移动窗口注意力、相对位置偏置等特殊结构。

保持了模型的简洁性,也意味着更容易部署。

最终,团队希望通过这篇论文挑战一些已被广泛接受和默认的观点。

也是为了促使研究者们重新思考卷积在计算机视觉中的重要性

对于ConvNeXt重新掀起的这场视觉模型架构之争,有更多来自学界和工业界的人提出了不同观点。

回到架构之争

UC伯克利教授马毅表示,对这种表面上的比拼不太认同。

结合他的下一条微博,马毅教授更希望大家多去关注理论基础。

知乎上有一位匿名网友提出,这篇文章对工业界来说价值更大。

此前Transformer效果虽好,但实践上很难部署,大家一直期待着看到卷积方法的最终实力。

其实这也正是ConvNeXt这项研究的初衷。

从论文作者谢赛宁对另一处讨论的回复中可以看出,研究团队认为ImageNet结果并不是重点。

他们更想强调和让大家关注的是卷积模型在目标检测等下游任务中的表现。

对于下游任务,ConvNeXt在COCO和ADE20K上做了验证,与SwinTransformer比也有相当或更好的表现。

后续讨论中还发生一件趣事。

有人提问LeCun,你们部门不应该随着公司改名叫Meta了么,怎么论文署名还是FAIR?

LeCun开了个小玩笑,说这代表Fundamental AI Research(基础AI研究)

也是很幽默了~

作者团队

前面已提到的谢赛宁是FAIR研究员,本科就读于上海交通大学ACM班,博士毕业于UC圣迭戈分校。

谢赛宁读博士时曾在FAIR实习,期间与何恺明合作完成ResNeXt,是该论文一作。

不久前广受关注的何恺明一作论文MAE他也有参与。

本篇ConvNeXt他是通讯作者,巧合的是,这次的一作也是博士期间来实习的。

一作刘壮,博士就读于UC伯克利,清华姚班毕业生。

DenseNet作者,曾获CVPR 2017最佳论文奖。

论文地址
https://arxiv.org/abs/2201.03545

Github地址:
https://github.com/facebookresearch/ConvNeXt

参考链接:
[1]https://twitter.com/ylecun/status/1481194969830498308
[2]https://www.zhihu.com/question/510965760/answer/2306192441

以上是关于魔改ResNet反超Transformer再掀架构之争!作者说“没一处是创新”,这些优化trick值得学...的主要内容,如果未能解决你的问题,请参考以下文章

CNN卷土重来!超越Transformer!FAIR重新设计纯卷积架构:ConvNeXt

ResT解读

ResT解读

把大核卷积拆成三步,清华胡事民团队新视觉Backbone刷榜了,集CNN与ViT优点于一身...

ResNet-RS架构复现--CVPR2021

深度学习 Transformer架构解析