链接:https://www.zhihu.com/question/437495132
编辑:深度学习与计算机视觉
声明:仅做学术分享,侵删
目前已经有基于Transformer在三大图像问题上的应用:分类(ViT),检测(DETR)和分割(SETR),并且都取得了不错的效果。
那么未来,Transformer有可能替换CNN吗,Transformer会不会如同在NLP领域的应用一样革新CV领域?后面的研究思路可能会有哪些呢?
作者:苏拉提
https://www.zhihu.com/question/437495132/answer/1687345496
隐隐觉得,transformer有种开倒车的意思,cnn的提出本质上是为了解决参数量和性能的问题的,通过share weights的方式大大减少了参数量。
深度学习的课程相信大家都有了解,上来就是全连接网络,全连接网络不好吗,信息不够global吗?全连接无疑是global information处理的一个上限。但为什么cv很少用?因为参数太特么多了,多到现有设备难以维持多层fc。所以聪明的人提出了share weights的思想,大大减少了参数量,后续工作也就变成了如何扩大感受野,从而有了加深网络深度,金字塔,或者其他方法。
如果cnn是参数量和性能的折衷,那么某种意义上,我觉得transformer对于cv领域来说就是cnn和fc的折衷,没什么稀奇,只能说有钱了,有设备了,往全局性上去考量很正常。
毫无疑问这种探索是有意义的,未来终究会是全连接网络的时代,网络也终究会成为一个工具。
P.S.老有人觉得transformer概念无敌,那我觉得GCN天下第一。
作者:OpenMMLab
https://www.zhihu.com/question/437495132/answer/1686380553
先直接回答题主的 3 个问题,然后讲一下回答背后的“暴论”
Transformer 有可能替换 CNN 吗?Transformer 和 CNN 都是工具的一种,不会完全互相替代,但是会随着大家对 CV 任务理解的进步而各领风骚。
Transformer 会不会如同在 NLP 领域的应用一样革新 CV 领域?会革新,而且已经在革新了,这是因为大家会或者已经为了使用这个 Transformer,explore 更多的 framework,推动 community 对 CV 的 task 产生新的认识。
后面的研究思路可能会有哪些呢?在有 Transformer 这个新工具的情况下,重新理解 CV 的各个 task,并借助 Transformer 来把新的 framework 验证 work;一步到位,直接做新的 framework。
说好的“暴论”:
根据学术君的观察,CV 领域的创新可以大致概括为两个方面,一个是理解对应的 task 并设计解决方案进行框架上的创新,比如,在 Deep Learning 时代理解 Object Detection,有了 Faster R-CNN,RetinaNet;基于 CNN 理解语义分割,有了 FCN 等一系列后续工作。另一方面,大家也在框架下尝试并改进各种工具,例如大家不断地改进检测器的 neck 部分,提出了 FPG,NAS-FPN 等一系列工作,再如早年为了让 CNN 更 powerful,之前的工作提出了 ResNet、ResNext 等等。
工具和 framework 是螺旋式地相互影响并迭代进步的,也就是说,一段时间内,大家要么在为了exploit 新工具而 explore framework,要么在为了 exploit framework 而去 explore 新工具(这么一看我们好像都是 RL 里的 agent,不是在 fit 框架,就是在 fit 工具)。
为了避免显得口说无凭,举几个例子。如果我们把 CNN 看作最近几年解决各类 AI 问题的一种工具,可以看到我们为了利用这个新工具探索了很多新的 framework。比如为了利用 CNN, Faster R-CNN 和 Mask R-CNN 重新定义了目标检测和实例分割的框架,基于这个框架衍生了一系列经典的工作,比如 Cascade R-CNN 和 HTC。同理,DETR exploit Transformer 重新 explore 了一个 end-to-end 的检测框架,这个新的框架也引出了一系列后续工作,比如 Deformable DETR。DETR 可以说激发了各个 CV 方向 Transformer 化的热潮,然后就引出了题主的一系列问题。
如果认同前面的观点,那么就可以比较自然地得出题主 3 个问题的答案了,我们一个一个来看。
Transformer 有可能替换 CNN 吗?
如果我们仔细看近期各类利用 Transformer 的新工作,会发现不少工作为了使用 Transformer 而对 CV 任务的框架本身有了新的设计和理解。比如 DETR 里基于最小二分匹配的端到端训练框架,但是在这个新框架下,后续的 followup 工作其实是有基于新框架把 Transformer 往 CNN 时代的经典组件修改的趋势的。比如 Deformable DETR 还是用回了 Deformable 和 Multi-scale 特征,Sparse R-CNN 用回了 RoIAlign,OneNet 还是基于 CNN 的但是利用了 DETR 里基于最小二分匹配的端到端训练框架。再比如,SETR 和 ViT-FRCNN 虽然 backbone 用了 Transformer,但是在拿到 Transformer 的表征以后还是用回了 CNN... 所以,更本质的还是任务框架的设计,CNN 和 Transformer 只是一种工具,大家基于对任务的理解会各取所需,Transformer 好用就用 Transformer,需要利用 CNN 的时候就用回 CNN。大家会用脚投票的, Transformer 和 CNN 谁也不用瞧不起谁。
Transformer 会不会如同在NLP领域的应用一样革新 CV 领域?
回答第一个问题的时候已经提到,大家为了使用 Transformer 已经对各个任务进行 rethinking 了。最典型的例子就是 ViT,直接把图像拆成 16x16 的 patch,相信不少人看了都会惊呼这也可以,毕竟我们已经在 CNN 上浸淫了太久。同样还有 SETR 基于 ViT 也把 semantic segmentation 用 Sequence-to-Sequence 的框架给做 work 了。
后面的研究思路可能会有哪些呢?
现在各个领域都呈现出了 Transformer 化的趋势,至少估计今年各个方向都会被 Transformer 来一锤子(拼手速的时候到了)。至少在有 Transformer 这个新工具的情况下,大家会重新理解 CV 的各个 task,并借助 Transformer 的帮助来把新的 framework 验证 work。所以如果想赶 transformer 这波热潮的话,有两种姿势:一个是想想 Transformer 的特点还能对 CV 中的哪些任务有显著的帮助然后赶个早集;另一种姿势是基于受 Transformer 启发定义出的新框架来重新看待一下已有的 framework,做一些 follow up 的工作。当然了,更本质一点,还是应该不拘泥于工具本身去思考 framework,避免陷入“拿着锤子找钉子”的窠臼,思考和探索还有哪些问题没有被现有的 framework 解决,并基于自己的理解提出一个合理的解决方案,这或许是永远不会过时的姿势,学术君与诸君共勉~
作者:齐国君
https://www.zhihu.com/question/437495132/answer/1658559732
CNN和transformer在处理视觉信息上各有优缺点。
CNN网络在提取底层特征和视觉结构方面有比较大的优势。这些底层特征构成了在patch level 上的关键点、线和一些基本的图像结构。这些底层特征具有明显的几何特性,往往关注诸如平移、旋转等变换下的一致性或者说是共变性。比如,一个CNN卷积滤波器检测得到的关键点、物体的边界等构成视觉要素的基本单元在平移等空间变换下应该是同时变换(共变性)的。CNN网络在处理这类共变性时是很自然的选择。
但当我们检测得到这些基本视觉要素后,高层的视觉语义信息往往更关注这些要素之间如何关联在一起进而构成一个物体,以及物体与物体之间的空间位置关系如何构成一个场景,这些是我们更加关心的。目前来看,transformer在处理这些要素之间的关系上更自然也更有效。
从这两方面的角度来看,将CNN在处理底层视觉上的优势和transformer在处理视觉要素和物体之间关系上的优势相结合,应该是一个非常有希望的方向。
作者:陀飞轮
https://www.zhihu.com/question/437495132/answer/1696648400
仅从目标检测这个任务来考虑,不管是CNN还是Transformer,global和local信息都是有用的,只不过local信息的性价比要高于global信息,在local信息满足的情况下,global信息对于检测器的上限的提升是非常有限的,最近的一些文章,都陆陆续续的在DETR的基础上加入了先验(如SMCA、Sparse R-CNN)或者是计算稀疏化(如Deformable DETR),不管是空间先验、计算稀疏化还是anchor、proposal,本质上都是为了更好的关注local信息,加快DETR的收敛速度,侧面证明了local信息性价比更高,未来可能还是local信息为主的基础上,引入一定的global信息,来提升模型的上限(从这个角度看DCN真的是很超前了!历史是螺旋式上升的)。
而之前CNN中加入的各种Attention模块(如DCN、Non-local),也是为了引入更多的global信息,但是DCN、Non-local等Atention模块还是作用在二维图像上,而Transformer是原封不动从nlp中搬到cv中的,是作用在一维序列上的,也就是两者作用在不同的输入模态上,这样会产生一个功能性的根本差异,Transformer天然对多模态输入友好。
作者:沈抟风
https://www.zhihu.com/question/437495132/answer/1658960522
我注意到许多答主都提到了Vit这个纯transformer的视觉应用。
Google Brain确实是十分的鸡贼,不公开的JFT-300M这个3亿图片的数据集,导致现在双盲评审的时候看到用了这个数据集就知道是Google的工作了。很多人都把他当成是transformer的一个需要大规模数据集训练的特征,这个不能说不对,但是在最近Facebook的工作Training data-efficient image transformers& distillation through attention里,就采用了一种新的知识蒸馏策略用ImageNet得到了和卷积方式差不多的表现。不过同时我们要注意到,采用卷积方式作为教师网络的性能是要优于纯使用transformer的
所以我觉得未来可能更多的是transformer和conv的结合的一些工作会占主流,毕竟大家也都是a+b,b+a的排列组合工作做得更顺手嘛(滑稽
作者:谢凌曦
https://www.zhihu.com/question/437495132/answer/1668585924
先说看法:出现在2020年底到2021年初的这波Transformer在CV应用上的大爆发,与其说证明了Transformer有多强,不如说证明了CNN有多弱。
正如许多回答提及的那样,任何一个数据驱动的AI算法,都需要先学习到不变性(invariance)以定义基本单元,再基于此学习更高阶的时空关系(relationship)以建立世界模型。从这种角度看,CNN本就是针对前者设计的,而Transformer是针对后者设计的:两者并不矛盾,也就不应该存在取代关系。
Transformer是从NLP起源的模型。在NLP问题中,由于word几乎是天然的概念,因此invariance的满足度天然地比CV要强得多。在此前提下,学者们很早就开始研究语言模型(针对relationship的建模)并且取得了一定的成绩。深度学习出现以后,word2vec阶段性地解决了embedding的问题,允许学者们更专注于对relationship的研究,随后就出现了Transformer这样集大成的模型。
回到CV,我们必须清楚,CV在invariance上的进度太慢了。CNN作为一种擅长捕捉局部特征的模型,在此方面被人们寄予厚望,在过去5-10年也确实引领了一个时代。虽然大家也清楚其中有许多不足之处,但这波Transformer的爆发,尤其是ViT和DeiT这种纯Transformer模型,毫不留情地揭下了CNN的遮羞布,把invariance方面的不足清楚地展现给所有人看。
虽然是预测,最后还是强调:视觉不太可能纯靠attention获得成功。无论从计算效率还是学习效率上看,我们都需要更好的基础特征抽取算法。基于DETR的一系列工作,都保留了CNN用于特征抽取——但是由于CNN的效率看起来并不高,这个环节可能很快会发生变化。
至于CNN和Transformer的参数量对比,除了实际部署模型以外,并无太大意义。
任重道远啊,各位!
为了避免误解,我需要声明几点:
我并不认为Transformer已经在视觉上超越了CNN。现在大部分基于Transformer的应用,可以理解为在CNN的基础上加了个attention模块,或者换了个loss。这些都没有改变视觉信号学习的本质,所以现在说超越或者取代,都为时过早。
我所说的CNN的遮羞布,指的是以卷积为代表的局部算子。不论是基于词袋还是基于神经网络的视觉模型,都在世纪之交从全局特征转向了局部特征,并且据此取得了重大的发展。按照我的理解,视觉算法最重要的特性有三个:局部性(locality)、层次性(hierarchy)、几何性(geometry)。纯Transformer模型(如ViT)最让我不解的,就是patch以上不需要做局部交互,可以暴力地堆砌全局attention。这说明至少局部性假设可能会松动——如果是这样,就算是扯下遮羞布了。
作者:丶favor
https://www.zhihu.com/question/437495132/answer/1694995674
Transformer和CNN显然不是一个维度的东西。
CNN的功能,说穿了就一个,提特征。而Transformer,提特征只是它的功能之一,显然不仅仅是这项功能带来目标检测等等任务的进步。
先说提特征,CNN和self-attention各有各的好处,参见最近很多local self-attention网络, 比如 exploring self-attention for image classification,性能比CNN略高,但是latency很难超过CNN。而Vit虽然性能刷的很高,但在利用谷歌独门数据集的情况下上,我觉得CNN也完全能达到这个结果。但是非要说谁替代谁,Transformer代替CNN有什么伟大的意义和显而易见的优势吗?并没有,尤其在轻量网络上。
除了提特征,Transformer更重要的是功能性上的创新,cnn和transformer根本没可比性。除了提特征,self-attention可以直接建模序列翻译,跨模态融合等等。本质上,这才是Transformer推动CV发展原因。而CNN就不具备这些功能,比如从图像到bouding box这个过程,cnn的建模需要人为地画好几条“辅助线”(anchor, nms等等)。Transformer这个模型结构从翻译开始,到目标检测,到语义分割,基本上就啥也没改。只要根据任务定义query就完事了。Transformer的功能性,毫无疑问是对CNN的降维打击。
作者:狗着
https://www.zhihu.com/question/437495132/answer/1710478260
看了靠前这么多回答,各种理论解释说明!我就问两个问题:第一,谁能证明cnn浅层提取低级特征(点线面),深层整合成高级特征?第二,谁能解释全链接加softmax就是注意力?
好好想想,是不是觉得大家都这么说,我就这么说了!或者是我看过几篇经典论文是这么写的,还有可视化,所以这么觉得!
这特么不是扯犊子吗?深度学习目前还是一个从现象总结规律的物理发展阶段,拿这些模糊不清的现象作为定理去解释和推论,你们这些半桶水不扯犊子,谁扯犊子?自己多翻翻论文,同一类型实验的,结论相反的!为了灌水,强行自圆其说的!别听风就是雨,科研人带点脑子!
最后,发表一下关于问题的的个人观点。我并不支持的transformer,至少不支持现阶段的!因为它不简洁,我坚信大道至简,如cnn是,resnet是,fcn是,yolo是……但凡一个值得后人去不断填坑的方向,其开辟者都是至凡至简。而 transformer,现阶段不过是各位水友真香的灌水大杀器而已…
作者:lillllllll
https://www.zhihu.com/question/437495132/answer/1670986153
一方面我们看的方法或论文越多,越能让我们有更多的ideas,创造出更多的创新成果。但是啊,往往很多人会跟风似的太忠实于一些大牛的研究报道,被带入到了别人的思想空间,虽然我们能出创新成果但是这种创新毕竟是不足的甚至是微不足道的。比如nasnet模块化的参数学习,attention的各种版本,还有这个transformer,认真研究来看这些方法也是那么的简单但为什么它们很少在国人之中诞生出来呢?是不是我们看论文学东西的时候也有一个范围,不能太多也不能太少。多了反而约束我们创新,少了也使我们功力不足眼高手低,想得到做不到。
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓