Vit,全称 Vision Transformer,是Transformer在CV方向的应用,是NLP与CV的相互联系、相互促进、相互影响。
自Transformer应用进计算机视觉领域以来,与其相结合的新模型大都表现出了不错的效果。但是,这个过程仍然存在很多值得改进的空间,借鉴其它论文,看看他们是如何思考并改进的。
论文:Vision Transformer with Progressive Sampling(ICCV2021)
源码
ViT采用的是一种直接明了的标记化(tokenization)方案,该方案将一幅图像分割成一系列规则间隔的patches,这些patches被线性投影到tokens中。通过这种方式,图像被转换成数百个视觉tokens。
这样的方法有以下的问题:
改进思路
人类视觉系统以一种完全不同的方式组织视觉信息,而不是一次不加区别地处理整个场景。取而代之的是,它循序渐进地、选择性地将注意力集中在视觉空间的有趣部分,无论何时何地需要它,而忽略不感兴趣的部分,随着时间的推移,结合来自不同注视的信息来理解场景。
受上述过程的启发,论文提出了一种新的基于transformer的渐进采样(Progressive Sampling)模块,该模块能够学习从哪里看图像,以缓解ViT中简单的tokens化方案带来的问题。
**论文提出的模块不是从固定位置采样,而是以迭代的方式更新采样位置。**在每次迭代中,当前采样步骤的tokens被馈送到transformer编码层,并预测一组采样偏移量以更新下一步的采样位置。该机制利用transformer的能力来捕获全局信息,通过结合本地上下文和当前tokens的位置来估计对感兴趣区域的偏移量。这样,注意力就会像人类视觉一样,一步一步地集中到图像的可辨别区域。
论文:Rethinking and Improving Relative Position Encoding for Vision Transformer(ICCV2021)
源码
思考
transformer位置表示的编码方法主要有两类。一个是绝对的,另一个是相对的。
绝对方法将输入tokens的绝对位置从1编码到最大序列长度。也就是说,每个位置都有单独的编码向量。然后将编码向量与输入Tokens组合,以将位置信息输入给模型。
相对位置方法对输入tokens之间的相对距离进行编码,并学习tokens之间的成对关系。相对位置编码(relative position encoding, RPE)通常通过具有与self-attention模块中的 query 和 key 交互的可学习参数的查询表来计算。这样的方案允许模块捕获Tokens之间非常长的依赖关系。
相对位置编码在自然语言处理中被证明是有效的。然而,在计算机视觉中,这种效果仍然不清楚。最近很少有文献对其进行阐述,但在Vision Transformer方面却得出了有争议的结论。
例如,Dosovitski等人观察到相对位置编码与绝对位置编码相比没有带来任何增益。相反,Srinivaset等人发现相对位置编码可以诱导明显的增益,优于绝对位置编码。此外,最近的工作声称相对位置编码不能和绝对位置编码一样好用。这些工作对相对位置编码在模型中的有效性得出了不同的结论,这促使我们重新审视和反思相对位置编码在Vision Transformer中的应用。
另一方面,语言建模采用原始相对位置编码,输入数据为一维单词序列。但对于视觉任务,输入通常是2D图像或视频序列,其中像素具有高度空间结构。目前尚不清楚:从一维到二维的扩展是否适用于视觉模型;方向信息在视觉任务中是否重要?
改进思路
关于Encoder的改进,大部分都是在将transformer用于具体任务时,针对各个任务的特点或出现的问题进行改进的。虽然不一定是一个通用的模型,但其在改进过程体系的改进思路仍值得学习和借鉴。
TransFER
论文:TransFER: Learning Relation-Aware Facial Expression Representations With Transformers(ICCV2021)
表情识别具有类内相似性小、类间相似性大的特点。同时,需要提取不同的局部表征来对不同的表情进行分类。即使某些局部块(patches)不可见,更多样化的局部块也可以发挥作用。同时,不同的局部块可以相互补充。
如图所示,仅根据嘴巴区域(列2)很难区分惊讶(第1行)和愤怒(第2行)。我们提出的TransFER模型探索了不同的关系感知面部部位,如眼睛(第3列,第1行)和眉毛之间的区域(第3列,第2行),这有助于区分这些不同的表情。
因此,应该在全局范围内探索不同局部块(patches)之间的关系,突出重要的块(patches),抑制无用的块(patches)。
改进思路
论文提出了TransFER模型来学习不同关系感知的FER局部表示。
结合新的MAD和MASD模块,提出了最终的体系架构,称为TransFER。
论文:SOTR: Segmenting Objects with Transformers(ICCV2021)
源码
目前来看,transformer用于语义分割方面还在一些不足。一方面,transformer在提取低层特征时表现不佳,导致对小目标的错误预测。另一方面,由于特征映射的广泛性,需要大量的内存和时间,特别是在训练阶段。
改进思路
为了克服这些缺点,论文提出了一种创新的自下而上的模型SOTR,该模型结合了CNN和transformer的优点。
论文:PnP-DETR: Towards Efficient Visual Analysis With Transformers
源码
将transformer网络应用于图像特征映射可能在计算上代价高昂,这主要是由于对长展平的特征向量的注意操作。这些特征可能是冗余的:除了感兴趣的对象之外,自然图像通常包含巨大的背景区域,这些背景区域可能在相应的特征表示中占据很大一部分;而且,一些区分特征向量可能已经足以检测对象。
现有的提高transformer效率的工作主要集中在加速注意操作上,很少考虑上面讨论的空间冗余。
改进思路
为了解决上述局限性,论文开发了一个可学习的轮询和池化(Poll and Pool, PnP)采样模块。它的目的是将图像特征图压缩成由精细特征向量和少量粗略特征向量组成的抽象特征集。
从输入特征图中确定性地采样精细特征向量,以捕捉精细前景信息,这对于检测目标是至关重要的。粗略特征向量聚合来自背景位置的信息,所产生的上下文信息有助于更好地识别和定位对象。然后,transformer对细粗特征空间内的信息交互进行建模,并获得最终结果。
由于抽象集比直接扁平化的图像特征图短得多,因此transformer的计算量大大减少,并且主要分布在前景位置(即大概率为有效的空间位置信息)。这种方法与提高transformer效率的方法是正交的,可以进一步与它们结合得到更有效的模型。
论文:Rethinking Spatial Dimensions of Vision Transformers
源码
CNN 以大空间尺寸和小通道尺寸的特征开始,并逐渐增加通道尺寸,同时减小空间尺寸。由于称为空间池化的层,这种维度转换是必不可少的。现代
CNN 架构,包括 AlexNet、ResNet和 EfficientNet,都遵循这一设计原则。池化层与每一层的感受野大小密切相关。 一些研究表明,池化层有助于网络的表现力和泛化性能。 然而,与 CNN 不同的是**,ViT
不使用池化层,而是在所有层中使用相同大小的空间**。
改进思路
论文验证了 CNN 上池化层的优势。实验表明,池化层证明了 ResNet 的模型能力和泛化性能。为了将池化层的优势扩展到 ViT,论文提出了一种基于池化的视觉transformers (PiT)。
PiT 是一种与池化层相结合的transformer架构。它可以像在 ResNet 中一样减少 ViT 结构中的空间大小。
最后,为了分析 ViT 中池化层的效果,论文测量了 ViT 的空间交互比,类似于卷积架构的感受野大小。论文展示了池化层具有控制自注意力层中发生的空间交互大小的作用,这类似于卷积架构的感受野控制。
论文:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
源码
论文试图扩展Transformer的适用性,使其可以作为计算机视觉的通用主干,就像它在NLP中所做的那样,也可以像CNNs在视觉中所做的那样。
论文提到,将transformer在语言领域的高性能转换到视觉领域的重大挑战可以用这两种模式之间的差异来解释。这些不同之处之一涉及到规模。
与作为语言transformer中处理的基本元素的单词tokens不同,视觉元素在尺度上可以有很大的变化,这是一个在诸如目标检测之类的任务中受到关注的问题。在现有的基于transformer的模型中,tokens都是固定比例的,这一特性不适合这些视觉应用。
另一个不同之处在于,与文本段落中的文字相比,图像中像素的分辨率要高得多。存在许多视觉任务,如语义分割,需要在像素级别进行密集预测,这对于高分辨率图像上的Transformer来说是很困难的,因为它的self-attention的计算复杂度是图像大小的二次方。
改进思路
为了克服这些问题,论文提出了一种通用的Transformer骨干网,称为Swin Transformer,它构造了分层的特征映射,并且计算复杂度与图像大小成线性关系。
如图1(A)所示,Swin Transformer通过从小块(灰色轮廓)开始,逐渐合并更深的Transformer层中的相邻块来构建分层表示。
有了这些分层的特征图,Swin Transformer模型可以方便地利用先进的技术进行密集预测,如特征金字塔网络(FPN)或U-Net。线性计算复杂度是通过在分割图像(红色轮廓)的非重叠窗口内局部计算self-attention来实现的。每个窗口中的patches数量是固定的,因此复杂度与图像大小成线性关系。
这些优点使得Swin Transformer适合作为各种视觉任务的通用主干,而不是以前基于Transformer的架构,后者生成单一分辨率的特征地图,并且具有二次方复杂性。
Swin Transformer的一个关键设计元素是窗口分区在连续的self-attention层之间的移动,如图2所示。移动的窗口桥接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力。
这种策略在实际延迟方面也是有效的:一个窗口内的所有query patch都共享相同的key集,这便于硬件中的内存访问。相反,较早的基于滑动窗口的self-attention方法由于不同query像素的不同key集而在一般硬件上受到低延迟的影响。
实验表明,所提出的移位窗口方法比滑动窗口方法具有更低的延迟,但在建模能力上是相似的。事实证明,移位窗口方法对于全MLP体系结构也是有益的。
论文:Is Space-Time Attention All You Need for Video Understanding?
源码
视频理解与NLP有很多的相似的地方。首先,视频和语句都具有序列性;而且,一个字只能与语句中其它字联系才能理解,在视频行为中一个片段也需要与视频的上下文相关联。于是,论文期望NLP中这种long-range self-attention模型可以在视频模型中也有很高的表现。
在视频领域,2D或3D卷积是用来提取时空特征的主流操作,但卷积操作比较明显的一个问题是感受野是有限的,若要获得全局感受野,需要堆叠很多层卷积层,它们的信息传播路径比较长。而self-attention这种操作可以很轻松地获得全局感受野,捕获局部和长范围的依赖关系。
卷积操作的另一个问题是受到内存的限制,特别是视频领域,往往需要在高分辨率和长范围帧之间权衡。而最近几年一些研究者的工作指出Transformer可以比CNN获得更快的训练和推理,因此在同样计算量预算下,transformer可以使用更大学习容量。
标准的self-attention需要计算所有tokens相互之间的相似性,这样的做法就是计算量比较大,因此需要考虑如何利用self-attention来处理图像块。论文比较了这方面的几种处理方式:Joint
Space-Time Attention、Sparse Local Global Attention 和Axial
Attention。这几种方式的共同点是采用ViT中的方式将图像进行分块,而它们之间的区别在于如何用self
attention来处理这些块。论文提出Divided attention的方式具有最好的表现。
论文:End-to-End Object Detection with Transformers
源码
详细请见:详情链接
本文仅作学习记录和分享,侵权请联系删除。
让我坚定自己的选择,在自己的感兴趣的、喜欢的道路上越走越远,不断进步、不断深挖吧!