《变压器》在CV领域有可能取代CNN吗?
新智元推荐
来源:极致市场平台知乎
编辑:SF
【新智元导读】变压器有可能取代CNN吗?本文总结了来自知乎的问题:“如何看待变压器在CV上的应用前景,未来是否有可能取代CNN?”在这三个回答下,对变压器在CV领域的未来发展提出了有价值的看法。
目前,Transformer已经应用于三大图像问题:分类(ViT)、检测(DETR)和分割(SETR),并且都取得了很好的效果。那么在未来,Transformer有没有可能取代CNN,Transformer会不会像在NLP领域的应用一样创新CV领域?未来的研究思路是什么?
湃森:要从方法提出的动机来剖析
要回答这个问题,作者认为更合适的是分析方法的动机,即我们为什么需要它;而不是简单的“存在就是合理”,大家都用我也用的风向标。
Why CNN?
首先要明白为什么CNN在图像领域被广泛使用。我们可以从传统方法、模式识别方法和深度学习方法三个要点入手。
1.传统方法在视觉任务中的应用,大多依赖于某一领域经验丰富的专家,为要处理的特定任务设计一组最具代表性的数据表示作为输入特征,从而可以区分特征,典型的是SIFT。
其次,一些特征提取方法也需要人的参与,一些特征提取算子是手工设计的,比如一些经典的边缘检测算子、水平检测、垂直检测等等。
但是,一方面,专家手工设计特征的方式需要大量的先验知识,模型的性能也极其依赖于它所设计的数据表示,不仅费时费力,而且很难针对实际场景中复杂多变的任务设计出合适的算子,不具有普适性。
另一方面,由于数据采集环境和设备的影响,如光照、拍摄角度、遮挡、阴影、背景等。这些因素会严重制约模型的性能,即手工设计的特性不健壮。
2.基于模式识别的方法大多与机器学习有关,如随机森林、支持向量机、感知机等。
与传统方法相比,机器学习的一个显著优势是它可以避免手动设计特征,并且它可以从输入数据表示到输出映射学习一组规则。
例如,自动编码器可以从一组输入中学习另一组数据的表示,尽管生成的结果基本上是模糊的。虽然这些方法都有上述优点,但是如何高效地学习一套更合适的映射规则才是关键。
为了提高效率,以感知器为例,它使用多个MLP学习特征来表征输入数据。但是,这有明显的缺陷。一方面,计算量巨大;另一方面,直接将输入平面作为列向量会破坏图像中目标的原始结构和上下文。
在此基础上,可以继续优化,扩展到更一般的——CNN的表示。MLP其实是CNN的特例。
3.基于深度学习的方法在图像识别领域最典型的应用是CNN。CNN是一个分层的数据表示。高级特征表示依赖于低级特征表示,由浅入深,逐渐抽象提取出具有高级语义信息的特征。
比如第一层倾向于提取边缘、角点、线条等低层特征,第二层提取颜色、纹理等中层特征,第三层提取语义更抽象的高层特征。网络的深度有助于模型提取更抽象的高层特征,网络的宽度有助于模型提取更丰富的特征表示。
这种连接主义 (connectionism)本质上是一种解决问题很好的思路,每一层都学习各自简单的表示,但最后通过连接起来,却形成了强大的(powerful)的特征表征能力!
此外,CNN还具有一个非常重要的特性,它是通过共享卷积核来提取特征,这样一方面可以极大的降低参数量来避免更多冗余的计算从而提高网络模型计算的效率,另一方面又结合结合卷积和池化使网络具备一定的平移不变性(shift-invariant)和平移等变性(equivariance)。
当然,对于分类任务来说,我们是希望网络具备平移不变性的特点,而对于分割任务来说我们则更希望其具备平移等变性,不过这些都是后话,在这里不展开阐述。因此,这便是CNN如何学习高效的学习出一组更合适的映射规则的关键。
虽然CNN具备如此多的优点,但不是一开始就一蹴而就,也并不是完美无瑕的。
以图像分割为例,在全卷积神经网络FCN提出以前,大多数基于CNN的方法都是基于Patch-wise即将图像块作为输入输入到CNN中去进行相应类别预测,这种方式一来计算非常冗余,二来也缺乏充足的上下文信息。
所以为什么FCN会这么有影响力,甚至可以称为是一个mile-stone的网络,就在于它真正意义上将patch-wise做到了pixel-wise,这对于语义分割这种密集型任务来说是至关重要的。
当然,FCN也存在许多的缺点,诸如分割结果粗糙等,当这并不妨碍我们基于它的思想去进行很多的拓展。
比如最近几年提出的很多分割论文都是针对它去进行改进,有人提倡改善编码器利用更强大的卷积模块去提取更具备代表性的特征。
有人热衷于改善解码器,比如引入跳跃连接操作来弥补编码器下采样过程中空间细节信息的丢失从而来实现更精准的定位,关于如何跳跃又是一个问题,有直接连线的Unet。
继而有人又借助语义鸿沟(semantic gap)或者背景噪声干扰这些口去突破,利用多个卷积去消除,结合高级特征的强语义和低级特征丰富的细节信息去指导融合的也有,另外还有借助注意力方式去消除歧义和抑制背景噪声的也大有人在。
除了编解码器之外,我们借用特征金字塔的思想还可以结合多层的结果去融合输出,得到一个更加细化的特征表示。在抛掉模型本身,也可以从任务本身下手,从全监督到半监督,自监督,few-shot learning,ome-shot learning,甚至是无监督域等等也有很多方向可以突破。
其他视觉任务如分类,检测或者low-level的任务如超分,去噪等也可以此类比,很多人写不来论文或者解决不了问题的关键点在于根本没发现问题在哪里,又何谈解决问题。
Why transformer?
目前为止,我们已经简要的总结了CNN为什么会被提出以及它的优势在哪。
尽管CNN存在以上优势,比如它利用卷积核或滤波器不断地提取抽象地高级特征,理论上来说其感受野应该能覆盖到全图,但许多研究表明其实际感受野远小于理论感受野,这不利于我们充分的利用上下文信息进行特征的捕获,虽然我们可以通过不断的堆叠更深的卷积层,但这显然会造成模型过于臃肿计算量急剧增加,违背了初衷。
而transformer的优势就在于利用注意力的方式来捕获全局的上下文信息从而对目标建立起远距离的依赖,从而提取出更强有力的特征。
因此,我们并不需要说一味的抛弃CNN,或许可以转换下思路把两者结合起来,将transformer当做是一种特征提取器利用起来,再结合CNN的一些优势去解决现有的问题。
对于接下来这个方向的思考,笔者推测当过了这把trasformer的新鲜劲,即在各个任务上都利用transformer替代一遍后,未来的工作更多的是结合这两者,来实现一个更优或者说是一个更reasonable的结果,让我们拭目以待。
总的来说,每一种技术的提出,都会受到当时所处环境或多或少的影响,然后通过不断地发现问题,提出问题,再到解决问题这样一步步不停地迭代。
从宏观角度上来看,一个学科技术要发展的更快更好,其中的一个很重要原因便是具备普适性。
个人认为这一点非常重要,普适性意味着入门门槛低,这样涌入这个圈子的人就多,形成的“泡沫”就大,资本才会为其买单,真正意义上潜心研究的专家才能更被凸显出来,才能有更充足的经费和动力去研究,去突破现有的技术将知识的边界不断的拓宽,利用科技造福人类。
当然,这里面必定夹杂着许多鱼龙混杂的人或物,但是只要宏观方向把握得当,制度制定得比较完善,就能够避免“泡沫”的幻灭,整体维持一个健康向上的发展。毕竟,任何事物都具备两面性,发展是一把双刃剑。
唯有寄希望于巨头公司和机构有更大的担当,当好这个时代的领头羊和风向标,在制度的笼子下引领着这个时代朝着健康向上的道路去发展,而不是诸如一窝蜂的跑到菜市场去搞“社区团购”之类的割韭菜活动,而是应该做到真正意义上的“科技向善”。
齐国君:CNN和Transformer在处理视觉信息上各有优缺点
CNN网络在提取底层特征和视觉结构方面有比较大的优势。这些底层特征构成了在patch level 上的关键点、线和一些基本的图像结构。这些底层特征具有明显的几何特性,往往关注诸如平移、旋转等变换下的一致性或者说是共变性。
比如,一个CNN卷积滤波器检测得到的关键点、物体的边界等构成视觉要素的基本单元在平移等空间变换下应该是同时变换(共变性)的。CNN网络在处理这类共变性时是很自然的选择。
但当我们检测得到这些基本视觉要素后,高层的视觉语义信息往往更关注这些要素之间如何关联在一起进而构成一个物体,以及物体与物体之间的空间位置关系如何构成一个场景,这些是我们更加关心的。目前来看,transformer在处理这些要素之间的关系上更自然也更有效。
从这两方面的角度来看,将CNN在处理底层视觉上的优势和transformer在处理视觉要素和物体之间关系上的优势相结合,应该是一个非常有希望的方向。
小小将:足够大的参数+好的训练方法,三层神经网络可以逼近任何一个非线性函数
先简单来看一下transformer在分类,检测和分割上的应用:
(1)分类 ViT: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
把图像分成固定大小的patchs,把patchs看成words送入transformer的encoder,中间没有任何卷积操作,增加一个class token来预测分类类别。
(2)检测 DETR:End-to-End Object Detection with Transformers
先用CNN提取特征,然后把最后特征图的每个点看成word,这样特征图就变成了a sequence words,而检测的输出恰好是a set objects,所以transformer正好适合这个任务。
(3)分割 SETR:Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
用ViT作为的图像的encoder,然后加一个CNN的decoder来完成语义图的预测。
当然,目前基于transformer的模型在分类,检测和分割上的应用绝不止上面这些,但基本都是差不多的思路。
比如ViT-FRCNN:Toward Transformer-Based Object Detection这个工作是把ViT和RCNN模型结合在一起来实现检测的。
关于transformer更多在CV上的工作,可以看最新的一篇综述文章:A Survey on Visual Transformer
这里来谈一下自己几点粗鄙的认识:
(1)CNN是通过不断地堆积卷积层来完成对图像从局部信息到全局信息的提取,不断堆积的卷积层慢慢地扩大了感受野直至覆盖整个图像;但是transformer并不假定从局部信息开始,而且一开始就可以拿到全局信息,学习难度更大一些,但transformer学习长依赖的能力更强。
另外从ViT的分析来看,前面的layers的“感受野”(论文里是mean attention distance)虽然迥异但总体较小,后面的layers的“感受野“越来越大,这说明ViT也是学习到了和CNN相同的范式。
(2)CNN对图像问题有天然的inductive bias,如平移不变性等等,以及CNN的仿生学特性,这让CNN在图像问题上更容易;相比之下,transformer没有这个优势,那么学习的难度很大,往往需要更大的数据集(ViT)或者更强的数据增强(DeiT)来达到较好的训练效果。
好在transformer的迁移效果更好,大的数据集上的pretrain模型可以很好地迁移到小数据集上。还有一个就是ViT所说的,transformer的scaling能力很强,那么进一步提升参数量或许会带来更好的效果(就像惊艳的GPT模型)。
(3)目前我们还看到很大一部分工作还是把transformer和现有的CNN工作结合在一起,如ViT其实也是有Hybrid Architecture(将ResNet提出的特征图送入ViT)。
而对于检测和分割这类问题,CNN方法已经很成熟,难以一下子用transformer替换掉,目前的工作都是CNN和transformer的混合体,这其中有速度和效果的双重考虑。
另外也要考虑到如果输入较大分辨率的图像,transformer的计算量会很大,所以ViT的输入并不是pixel,而是小patch,对于DETR它的transformer encoder的输入是1/32特征这都有计算量的考虑,不过这肯定有效果的影响,所以才有后面改进工作deform DETR。
短期来看,CNN和transformer应该还会携手同行。最新的论文Rethinking Transformer-based Set Prediction for Object Detection,还是把现有的CNN检测模型和transformer思想结合在一起实现了比DETR更好的效果(训练收敛速度也更快):
(4)这我想到了神经网络的本质:一个复杂的非线性系统来拟合你的问题。无论是CNN,RNN或者transformer都是对问题一种拟合罢了,也没有孰优孰劣。
就一个受限的问题来看,可能有个高低之分,但我相信随着数据量的增加,问题的效果可能最终取决于模型的计算量和参数,而不是模型是哪个,因为之前的工作已经证明:一个三层神经网络可以逼近任何一个非线性函数,前提是参数足够大,而且更重要的是你找到一个好的训练方法。
未来虽然很难说,但依然可期!
【1】https://www.zhihu.com/question/437495132/answer/1656908750
【2】https://www.zhihu.com/question/437495132/answer/1658559732
【3】https://www.zhihu.com/question/437495132/answer/1656610825