百科问答小站 logo
百科问答小站 font logo



如何评价FAIR提出的ConvNeXt:CNN匹敌Swin Transformer? 第1页

  

user avatar   huanghaian 网友的相关建议: 
      

首先,MetaAI 这篇 ConvNeXt 论文实验做的非常充分,符合其论文的一贯风格,读起来赏心悦目,推荐大家去读读原文。

从 ResNet 出发通过不断的 Swin Transformer 化验证了 Conv 其实不比 Transformer 差什么。这是一个自然的结论,是一个很容易想到的结论,下面详细说说为啥?

(1) 从 ResNet 到 ViT

ResNet 是一个非常优雅的 ConvNet,采用滑动窗口模式提取特征,并输出多层金字塔特征图,非常适合各种下游任务。相比 ResNet,ViT 采用全局感受野的注意力机制提取特征,从一开始 ViT 就强调相比 ResNet 这种 Conv 局部感受野特征提取操作,全局自注意力模式会更加优异,当数据量巨大时候性能优异度更加明显。

ViT 的这种全局自注意力特征提取模式的优异性,慢慢已经得到了大家的认可,后续的诸多 SOTA 刷榜论文也证明了这点。

(2) 从 ViT 到 MLP-Mixer 到 ConvMixer

随着 Transformer 的发展,上述结论被人质疑,典型的如 MLP-Mixer 和 ConvMixer。

MLP-Mixer 认为其实无需注意力机制 Attention ,仅仅需要 Token-Mixing MLP 和 Channel-Mixing MLP 即可。因为自注意力模块做的事情是 token mixing,而后续的 FNN 模块做的事情是 channel mixing,MLP-Mixer 中证明采用 MLP 实现 token mixing 功能,而无需自注意力模块,性能也是和 ViT 类似。

ConvMixer 也是相同思路,但是他的 Token-Mixing 不再采用自注意力或者 MLP,而是直接用 3x3 DW 卷积即可。

上述两篇论文都间接说明了 ViT 或者 Transformer 中强调的全局自注意力优异性并不成立,ViT 的成功或许来自 Transformer 整体精心设计的架构

相同的观点做法有很多,典型的还有 ResMLP、CycleMLP、gMLP、MetaFormer 和 An Empirical Study of CNN, Transformer, and MLP 等等。

(3) 从 ViT 到 Swin Transformer

在 ViT 的诸多改进中,Swin Transformer 算是一个非常成功的改进。其针对 CV 任务中一般是多尺度图片,且图片分辨率很大的问题,创造性的提出了局部注意力计算模块 LSA,即仅仅在窗口内计算自注意力,相比 ViT,性能也有极大的提升,将 Transformer 实用性提升了一大步。

(4) 从 Swin Transformer 到 ELSA

Swin Transformer 解决了巨大计算量问题,但是依然有自身的问题:

  • 其实现非常复杂,特别是移位的 LSA 计算方式
  • 难以部署,他的 OP 比较特殊,这非常不好
  • 随着诸多最新发现,自注意力和逐深度方向卷积 DW Conv 可以等价,那么 Swin Transformer 和 Conv 结合会咋样,有待研究

解决前两个问题的典型算法是 Imporved MViT、Twin 和 Shuffle Transformer 等等,这类算法都是在考虑如何在去掉移位 LSA OP,而是通过其他方式引入窗口间信息交互。

一个更彻底的研究 Swin Transformer 的算法是 ELSA,其发现一个现象

作者以 Swin Tiny 版本为例,将其中的局部窗口注意力模块 LSA 替换为 DW Conv、decoupled dynamic filter (DDF),从上图可以看出 DWConv 和 DDF 性能都比 LSA 强的,特别是 DW Conv,在参数量和 FLOPs 更小的情况下性能会比 Swin Transformer 高。

这说明 LSA 其实也没有想象中那么好,DW Conv 同样可以胜任。抛开 ELSA 的具体改进不谈,我们从上述诸多论文中可以发现 :

  • 自注意力层可以和 DW Conv 等价,将自注意力层替换为 DW Conv 模块,性能也是非常类似的
  • ViT 等 Transformer 等算法成功的关键在于精心设计的 Transformer 架构


(5) 从 Swin Transformer 到 ConvNeXt

既然 ViT 和 Swin Transformer 等的成功并不是来自所谓的注意力机制,而是精心设计的 Transformer 架构,那么自然会有疑问这个精心设计的架构为啥如此优异,一经提出就超越 ResNet?现在诸多论文都是在探讨 Transformer 架构中的某个部件对整体性能的影响,例如 Patch 切分模式等,而 ConvNeXt 虽然没有正面回答为何 Transformer 性能优异,但是从实践角度,参考 Swin Transformer 架构,升级了 ResNet 架构,提出 ConvNeXt ,从而使得 ResNet 依然如此伟大。


从上述发展来看,从 ResNet 到 ViT,再到 Swin Transformer,最终又回到 ResNet,是一个非常自然的过程。简单来说发展历程是某人突然发现一个非常好的网络架构(一开始没有意识到架构的重要性),然后中间大家一起来魔改,最后大家发现其实都走偏了,现在又有人开始回归架构本身了,而不是所谓的自注意力和 Conv 谁更优异之争。

虽然 ConvNeXt 很优秀,但是依然没有深入探讨 Transformer 架构的伟大之处,或许总有一天能够研究清楚,带领大家认识架构设计的本质吧!

顺便提一句:当时我第一次接触 Transformer 算法时候感叹如此简单的结构(因为核心组件就那几个,堆叠就行),如果 CV 领域能够完全借鉴 NLP 发展,那以后大家就共同发展共同繁荣了,想想就激动(终于可以对外称我也懂 NLP 了)。但是随着 CNN 领域对 Transformer 的改进不断呈现,发现好像不是这样了,大家都在考虑如何对 Transformer 引入 CNN 局部信息来提升性能和收敛速度乐此不疲(当然效果是有的),这种混合 CNN 和 Transformer 的做法其实我是不感冒的,因为觉得违背了设计初衷。但是从现在发展来看,或许 CNN 和 Transformer 本身就没啥好特意区分的,两者在某个角度上其实就是等价的,从这个角度来看,各种混合 CNN 的 Transformer 或许就不那么变扭了。未来也可能出现一种标准架构超越 Transformer,然后大家又可以开心的玩耍了!

当然上述是我一家之言,不一定理解的非常到位!

附加:很高兴看到 MetaAI (前身 FAIR)选择了 MMDetection 来作为算法 base 实现了目标检测部分,作为 MMDetection 维护者,希望大家都能够基于 MMDetection,将其应用于各种场合,不断打磨升级,将易用性提高一大步。目前随着 MMRazor 和 MMDeploy 的发布,从标注到训练到压缩到部署全链条都已经打通,相信会极大的方便用户。如果你觉得不错,欢迎给 Star




  

相关话题

  2021年了,如何评价微软亚研提出的对偶学习(Dual Learning)? 
  TensorFlow 中 padding 的 SAME 和 VALID 两种方式有何异同? 
  如何用python来统计MacPro的圆圈个数? 
  为什么dropout正则化经常在视觉方面使用而不是其他? 
  为什么现在很多人不看好商汤科技? 
  不懂围棋也不明白人工智能,需要了解哪些入门知识才能看这场「人机大战」? 
  2021 年了,机器/深度学习还有哪些坑比较好挖? 
  人工智能在麻将领域能够战胜人类吗? 
  怎样实现强人工智能? 
  Domain Adaptation学术上有哪些方向,还有哪些可做的地方? 

前一个讨论
为什么国内的顶级富豪好像没哪个对航天探索感兴趣?
下一个讨论
transformer 为什么使用 layer normalization,而不是其他的归一化方法?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利