对于Transformer在图像中应用的一些理解

RNN/LSTM/Transformer

原始的RNN/LSTM主要用于NLP当中,前后词虽然是不同时间输入的,但是需要关联起来去理解整个句子的意义,单纯的RNN对前后隐层的关联是比较单一,所以有LSTM,对于要去掉信息,着重注意哪些信息是可以学习的,相比于RNN,LSTM有了更复杂的设计;
RNN的目的在于连接全局信息,不是just local;
LSTM在RNN的基础上,加入更强的注意力机制,对于不同前后不同的隐层,基于不同的注意(权重加成和丢弃);
Transformer 把LSTM的结构改成可以并行的方式,用在图像任务上,其本质上的好处在于:
1.全局信息的结合;
2.基于全图的注意力机制;

关于Transformer在CV领域的应用是否能够取代CNN?
贴上知乎上一些比较有代表性的回答:
作者:Anonymous
链接:https://www.zhihu.com/question/437495132/answer/1804766241
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一、从算子层面上看:Transformer[1]的核心算子是Multi-Head Self-Attention (MHSA);CNN的核心算子是Convolution (Conv)。MHSA和Conv看似不同,但实际上它们有着千丝万缕的关系:单次卷积操作可以看成是一个特殊的MHSA,只不过这个MHSA的感受野是局部的,而且Attention Weights是固定的;反过来,MHSA也可以看作是一个特殊的Conv,只不过这个Conv的窗口大小是整个图片,且其中的求和操作是按照Attention Weights动态加权求和。ICLR2020有论文[2]其实从理论角度分析MHSA可以描述任何卷积层,比如Depth-wise Convolution、Deformable Convolution以及Dilated Convolution。因此,MHSA其实具备一些与Conv类似的性质,且比Conv更灵活。一些更有趣的见解可以深入阅读一下代季峰老师的论文An Empirical Study of Spatial Attention Mechanisms in Deep Networks[3]以及ICLR2020的On the Relationship between Self-Attention and Convolutional Layers[2].不过CNN中依旧有一些特殊的操作,在原始Transformer[1]和ViT [4]里面是没有的:Zero Padding:CNN中Zero Padding可以透露2D图片的位置信息,ICLR 2020有一个工作专门讨论过这个问题[5]。最近美团和沈春华老师的工作[6]也探讨了Zero Padding在Transformer中的应用;Conv的低计算量:因为全局Attention,MHSA需要较大的计算量,很难处理高分辨率的图片。而Conv的感受野通常是3*3,没有这种限制。但是换个思考方式,MHSA是否也可以做成Conv那样局部感受野+滑窗的形式呢?这样的话MHSA虽然损失了全局感受野,但是计算量变得和普通Conv差不多,同时也保留了动态的Attention Weights。
二、从整体框架上看:CNN大多数是金字塔结构的;原始Transformer[1]或者ViT[4]都是柱状结构的。众所周知,图像/特征金字塔在high-level视觉任务(比如:检测和分割)中是非常重要的,而起源于NLP的Transformer在结构设计时并没有考虑到这一点。

作者:罗浩.ZJU
链接:https://www.zhihu.com/question/437495132/answer/1759796604
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Transformer有自己比较好的特性,在NLP任务上取得了很好的成功。前几年Transformer在CV领域主要被用于sequence信息挖掘,例如一些video任务中接在CNN特征后面进行时序特征融合,这时候应该还在Transformer本职范围内。不过去年的ViT论文扩大了Transformer的使用范围,相信大家讨论Transformer也更关心这种Visual Transformer结构对于CNN的替代性。至于是否会替代CNN这种未来的事不好说,但是Visual Transformer有一些自己比较好的特性:long range带来的全局特性。CNN的conv算子一个问题就是感受野比较局限,为了扩大网络的关注区域,需要卷积-池化-堆叠多层这种结构,带来的问题其实是“有效/真实”感受野是以某个中心为原点向外高斯衰减的,因此CNN通常的有效attention就是图中的某一两个比较重要的parts。为了解决这个问题,CNN可以设计attention module来得到更大更均衡的attention map,很多工作也证明了attention module的有效性。而Transformer天然自带的long range特性使得从浅层到深层,都比较能利用全局的有效信息,并且multi-head机制保证了网络可以关注到多个discriminative parts,其实每一个head都是一个独立的attention,这是Transformer与CNN不同的地方之一。更好的多模态融合能力。CNN擅长的是解构图像的信息,卷积核就是以前传统数字图像处理中的滤波操作,当然这使得CNN不擅长融合其他模态的信息,例如文字、标签、语音、时间等等各种信息。通常需要用CNN提取图像特征,再用其他模型对其他模型信息进行embedding后再网络的末端将多模态的embedding进行融合。而Transformer可以在网络的输入端对模态进行融合,因为它的思想是把图像通过conv或者直接对像素进行操作得到初始的embedding放入的Transformer中,不需要保持HWC的feature map结构。就类似position embedding,只要你能编码的信息,都可以非常轻松地利用进来。Multiple tasks能力。其实已经有不少工作证明一个Transformer可以做很多事情,因为attention机制可以让网络对于不同的task进行不同的学习,一个简单的用法就是加一个task ID的embedding就行。更好的表征能力。这里就不多说,很多工作都显示的Transformer网络可以在CV任务上取得更好的结果。
贴一波知乎的链接:
https://www.zhihu.com/question/437495132

猜你喜欢

转载自blog.csdn.net/weixin_39326879/article/details/120745155