【论文阅读】A Survey on Vision Transformer

 论文原文地址-A Survey on Vision Transformer | IEEE Journals & Magazine | IEEE Xplore

Transformer介绍

        Transformer最早应用于自然语言处理领域是一种主要基于自注意力机制的深度神经网络。在各种视觉基准测试中,基于Transformers的模型的性能类似于或优于其他类型的网络,例如卷积和循环网络。鉴于其高性能和对视觉特定感应偏置的需求较少,Transformer 受到计算机视觉社区的关注越来越

几种神经网络的介绍

        深度神经网络(DNNs)已经成为当今人工智能(AI)系统的基础设施。不同类型的任务通常涉及不同类型的网络。例如,多层感知(MLP)或全连接(FC)网络是经典的神经网络类型,它由多个线性层和非线性激活堆叠在一起。

        卷积神经网络(CNNs)引入卷积层和池化层用于处理位移位不变数据,例如图像。CNN其感受野有限,只能关注局部特征

        递归神经网络(RNNs)利用递归细胞处理序列数据或时间序列数据。RNN只能顺序计算无法并行加速

        Transformer是一种新型的神经网络。它主要利用自注意机制来提取内在特征,在人工智能应用中显示出巨大的广泛应用潜力。transformer可以捕获长程依赖关系,对图片而言就是全局特征。Transformer中的self-attention和FNN可以并行计算,容易加速。

论文重点

        本文通过将这些视觉变压器模型通过执行任务的不同而进行分类,并分析了它们的优缺点,探索的主要类别包括主干网络、高/中级视觉、低级视觉和视频处理,包括高效的Transformer方法,以Transformer运用到基于实际设备的应用程序。此外,本文简要介绍了计算机视觉中的self-attention机制,因为它是变压器中的基本组件。

Section I Introduction

        Transformer首先应用于自然语言处理(NLP)任务,它取得了显著的改进。

        例如,Vaswani等人首先提出了基于注意机制的机器翻译和英语选区解析任务。

        Devlin等人引入了一种名为BERT(来自Transformer的双向编码器表示)的新语言表示模型,该模型对未标记文本进行预训练,考虑到每个单词的上下文(它是双向的)。当BERT发布时,它在11个NLP任务上获得了最先进的性能。

        Brown等人使用1750亿个参数对压缩明文数据进行了45TB的基于Transformer的大型模型GPT-3(生成预训练变压器3的缩写)。它在不同类型的下游自然语言任务上取得了很强的性能,而不需要进行任何微调。这些基于Transformer的模型具有较强的表示能力,在自然语言处理方面取得了重大突破。

        受Transformer架构在自然语言处理领域的重大成功的启发,不少学者最近将Transformer应用于计算机视觉(CV)任务。在视觉应用中,CNNs被认为是基本模块,但现在的Transformer显示它是CNN的一个潜在的替代品。Chen等人训练了一个序列转换器来自动回归预测像素,在图像分类任务上获得了与CNN相当的结果。另一个Visual Transformer模型是最近Dosovitskiy等人提出的ViT,它将一个纯Transformer直接应用于图像补丁序列,并且已经在多个图像识别基准上取得了最先进的性能。除了基本的图像分类外,Transformer还被用于解决各种其他的计算机视觉问题,包括目标检测、语义分割、图像处理和视频理解。由于其卓越的性能,越来越多的研究人员正在提出了基于Transformer的模型,以改进广泛的视觉任务。

        由于基于Transformer的视觉模型数量的快速增加,跟上新进展的速度变得越来越困难。因此,对现有的工程进行调查是紧迫的,并将有利于社区。在本文中,我们重点介绍了Visual Transformer的最新进展的全面概述,并讨论了进一步改进的潜在方向。为了便于未来对不同主题的研究,作者根据Transformer模型的应用场景对Transformer模型进行了分类,如表1所示。主要类别包括骨干网络、高级视觉、低级视觉和视频处理。

        高级视觉处理的是对图像中所看到的东西的解释和使用,而中级视觉处理的是如何将这些信息组织成我们作为物体和表面所体验到的东西。鉴于在基于DNN的视觉系统中,高级和中级视觉之间的差距正变得越来越模糊,作者在文中将它们视为一个单一的类别。解决这些高/中级视觉任务的变压器模型的一些例子包括DETR、用于目标检测的可变形DETR和用于分割的Max-DeepLab。低级图像处理主要处理从图像中提取描述(这种描述通常用图像本身表示)。低级图像处理的典型应用包括超分辨率、图像去噪和样式传输。目前,只有少数工作的在低级视觉中使用变压器,因此需要进一步的研究。

        另一类是视频处理,它是计算机视觉和基于图像的任务的重要组成部分。由于视频的顺序特性,Transformer本质上非常适合用于视频任务,其中它开始执行与传统的CNN和RNN相当。在这里,我们调查了与基于Transformer的视觉模型相关的工作,以跟踪该领域的进展。图1显示了视觉变压器的开发时间表——毫无疑问,未来将会有更多的里程碑。

文章框架

        Section II介绍了transformer和self-attention机制;

        Section III主要介绍transformer在NLP领域的一些进展;

        Section VI是主要内容,主要总结了Transformer在视觉领域的一些基准模型;

        Section V重新介绍self-attention;

        Section VII对全文进行总结,讨论Transformer所面临的挑战及对其未来进行展望

Section II FORMULATION OF TRANSFORMER

        Transformer首次用于机器神经语言处理(NLP)领域的翻译任务。如图2所示,它由一个编码器模块和一个解码器模块以及几个相同架构的编码器/解码器组成。每个编码器和解码器都由一个self-attention层和一个前馈神经网络组成,而每个解码器还包含一个编码器-解码器注意层。在使用Transformer来翻译句子之前,句子中的每个单词都需要嵌入到一个具有dmodel维度的向量中。

 2.1 General Formulation of Self-attention

(公式推导及原理部分暂不翻译)

2.2 Scaled Dot-product Self-Attention

(公式推导及原理部分暂不翻译)

2.3 Other Key Concepts in Transformer

(公式推导及原理部分暂不翻译)

Section III NLP中的Transformer

        在Transformer之前,主要基于RNN网络(GRU,LSTM)等建立语言模型,但是RNN无法并行加速。在提出Transformer后,基于其多头注意力和FFN可以有效的捕捉长程,效果可以媲美RNN,同时使得并行加速成为了可能。

        BERT及其变体是基于多层transformer建立的PTM,BERT会先在大型语料库上进行训练,随后对取成对的句子作为输入,预测是否第二句话是文件中的原文。
经过预训练后,通过增加输出层BERT可以迁移到诸多下游任务中,因此BERT系列当时成为NLP里的SOTA模型。

        GPT则是采取另一种思路,使用的是LTR建模,也在诸多NLP的语言生成任务中取得了优异的性能。

        Table 2展示了基于Transformer的代表性的语言模型的一些信息,包括基本结构、参数量、是否微调等。

        Transformer在生物医学领域也有应用,比如BioBERT,就基于Transformer进行生物文本挖掘任务;ClinicalBERT则是使用transformrt观测、评估临床表现;可以基于临床得到的注意力图进行一些诊断,从而发现不同医学内容之间的关联。

Section IV Transformer

        本节将对transformer在计算机视觉领域的应用进行综述。包括图像分类、高级视觉、低级视觉、视频处理等。

Table 3展示了代表性的CNN网络及Transformer在ImageNet上的表现。


4.1 Backbone for Representation Learning

        与文本相比,图像具有更多维度、还有噪声和各种模态,因此建模更困难。除了CNN,Transformer也可以作为分类网络的backbone。如Wu等人就取ResNet作为基准模型,将最后一阶段的卷积替换为Transformer;此外他们还特别适用CNN提取低级特征,然后馈送至Transformer中;此外他们还是用标记tokens将像素分组,每个标记代表一类语义概念、而这种视觉标记(visual tokens)就可以直接用来做图像分类,详情参见Fig5.

4.1.1 Pure Transformer

         

ViT(Vision Transformer)是纯粹适用Transformer来做图像分类任务。Fig 6展示了ViT的框架结构。

        为了处理二维图像,输入图像被reshape成一系列patch连接而成的序列,patch维度ppc,有效序列长度则是原始图像的hw/p^2。因为Transformer每层输出宽度都一样,可以训练一个线性层用于将提取到的向量映射到维度d,这样就类似输出了word embedding的结果。随后会对做处理之后的输入做embeeding,迁入之后的结果作为图像的表征。此外位置信息可以通过附加1d/2d向量追加。

        ViT仅使用了Transformer中encoder部分,输出效果就已经优于MLP。

4.1.2 Transformer + Convolution

        尽管纯Transformer已经可以用于计算机视觉任务,但是距离一些CNN的性能还有差距,主要原因在于局部信息提取不足,除了前文提到的增强局部信息,还可以结合卷积操作,形成互补-conventional transformer。

        比如CVPT提出使用条件位置编码,编码会考虑自己临近的信息;CvT等则是分析了直接从NLP借鉴Transformer的局限性,提出与卷积操作结合在一起,即在每一个FFN层结合一个卷积层,这样可以融合临近的信息;BoTNet则是将空间卷积替换成了global self-attention,在实例分割和目标检测任务中均取得了优异的性能。

4.1.3 Self-supervised Representation Learning


        图像生成预训练方法由来已久,Chen等人研究了这类方法并与自监督方式结合来扩展基于生成算法的自监督模型-iGPT。

        iGPT包含一个预训练阶段和一个微调阶段,预训练结算,探索了自回归和BERT;然后采用transformer序列因为要完成像素级别的预测;结合早停法,这阶段可以看做是在做初始化或者正则化;
在微调阶段模型中加入了分类用的head,从而可以优化分类目标、适应各种权重。输入像素通过k聚类变成序列数据送入Transformer。


        GPT-2中则是使用了Transformer的decoder模块,一些细节改变是在atention和FFN之间进行的LN,以及引入残差连接微调阶段,会对LN层的输出进行均值池化,提取每个样本前d个维度,将池化后的特征映射为类别概率。

        iGPT和ViT是将transformer应用到视觉任务的开创性工作,但二者在以下三方面存在不同:

        (1)iGPT的输入是序列化后的像素集 ViT系列输出的是patch;

        (2)iGPT是编解码结构,ViT只用了Transformer的encoder部分;

       (3)iGPT训练时使用的是自回归自监督损失函数,ViT则是以分类任务的结果作为损失函数。

4.2高级视觉

        近年来已经有越来越多的研究将Transformer用于一些高级视觉任务,如目标检测、车道线检测、分割、姿态识别等。

4.2.1 目标检测

        传统的目标检测主要基于CNN,但是Transformer在这方面也展示了强大的能力。一些目标检测方法主要利用transformer的自注意力机制来增强特定模块的检测能力,比如特征混合模块或者预测模块;因此基于Transformer的目标检测方法主要分为两类:基于Transformer做预测和基于Transformer做基础网络,详情参见Fig 9

        与基于CNN的探测器相比,基于Transformer的方法在精度和运行速度方面都表现出了很强的性能。Table 4展示了CNN和Transformer在COCO数据集上的对比。

Transformer-based Set Prediction for Detection

        Carion等提出的DETR检测变压器(DETR)是基于Transformer的DETR,重新设计了目标检测的框架。

        DETR是一种简单而完全的端到端对象检测器,它将对象检测任务视为一个直观的集预测问题,消除了传统的手工制作的组件,如锚定生成和非最大抑制(NMS)后处理。

        DETR将目标检测任务视作一系列预测任务,摒弃了传统目标检测中的锚框、非极大值抑制等需人工干预的步骤。

        Fig10展示了DETR的流程图,首先经过CNN进行特征提取,为了给图像特征增加位置信息,有进行了positional embedding;随后将包含位置信息的特征图送入Transformer中。

        
Transformer中decoder取encoder的输出以及学习到的N个位置编码,输出N个嵌入后的结果。N是预定义的参数,通常大于图像中的对象类别。然后将输出送入FFN后得到最终的预测结果。使用的loss函数是二分图匹配算法(匈牙利算法),参见Eq 17:

        DETR与之前的目标检测模型的区别是可以并行输出,其在COCO目标检测数据集上的性能也与Faster R-CNN相媲美。

        虽然DETR显式了基于Trransformer做物体检测的强大能力,并且是端到端的检测模型;但是原始的DETR还存在一定的问题:训练时间冗长、对小物体检测效果不佳。


        为此Deformable DETR使用了deformable attention模块来改善以上问题,主要会关注参考点周围的图像特征,而原始的self-attention会关注图像上的所有空间位置的图像特征。这种方法减少了计算复杂度,能够更快收敛,并且更适合进行多尺度融合。最终Deformable DETR分别降低了10倍计算量,推理加速比为1.6.


        此外,还有学者探究了其他加速DETR收敛的方法,如改善DETR的cross-attention模块,只使用encoder部分,这样确保精度没有太大损失的前提下加快了收敛。还有提出使用金字塔形的特征提取器来提升预测性能(TSP-FCOS和TSP-RCNN),均比原始DETR性能更好。在简化计算复杂度方面,也有诸多学者做了探索。

        考虑到DETR的高计算复杂度,Zheng等人提出使用自适应聚簇Transformer(Adaptive Clustring Transformer.,ACT)来减少DETR预训练结算的计算成本;因为ACT通过局部敏感性哈希(LSH)算法将query特征聚簇,并将注意力广播到所有query上,这种方法在损失较少精度的前提下大大减少了计算成本;结合多任务知识蒸馏,可以进一步减少精度损失。

        因为MTKD可以在微调阶段仅通过较少epoch的训练就可以提取ACT模块。也有学者指出随机初始化是导致DETR decoder层计算较慢、收敛慢的主要原因,因此提出了Efficient DETR,通过一个额外的RPN网络提供预测的先验知识帮助初始化,并且减少decoder部分的层数,这样使得网络更为紧凑,同时也能达到较好的性能。

Transformer-based Backbone for Detection

        前一类主要用Transformer解决一系列预测任务,Beal等人提出将Transformer作为目标检测的通用框架,就像Faster R-CNN一样。


        在ViT-FRCNN中首先输入被分成诸多patch然后送入vision transformer,对于嵌入了特征的输出重新拼接,得到最终的检测结果。此外,也有其他不同的transformer作为backbone做传统的检测框架,如RetinaNet,Cascade-R-CNN,er Swin-Transformer比ResNet获得越4倍的AP增益。

Pre-training for Transformer-based Object Detection

        另一类研究方向是探究不同的预训练方法,如无监督预训练的DETR(UP-DETR),在小型数据集上有效提升了检测精度;如果训练数据足够,在大型数据集上UP-DETR的性能甚至超过了DETR。

        Fang等人则提出将在ImageNet上预训练过的ViT迁移到其他更具挑战性的目标检测任务,称之为YOLOS,首先移除了ViT中的token替换成了待学习的detection tokens,然后使用与训练过后的权重继续训练做检测任务.

4.2.2 Segmentation

        分割也是计算机视觉中的关键任务,包括实例分割、语义分割、全景分割等,Transformer在分割领域也显示出一定的潜力。


Transformer用于全景分割

        通过在DETR的decoder部分附加带mask的head就可以天然的进行全景分割,Max-DeepLab就是直接使用一个mask transformer进行的全景分割,采用的是双流模型,融合了Transformer和CNN提取的结果,损失函数:PQ Style loss。

Transformer用于实例分割

        VisTR是基于Transformer进行视频实例分割的模型,通过输入图像序列获得预测的实例。主要提出了一种将预测结果与GT进行匹配的策略,为了获得每种实例的mask,VisTR使用实例分割模块的结果,从多个帧中积累mask的特征,最终使用3DCNN对mask序列进行分割。

        ISTR采用一种不同于现有的自上而下和自下而上框架的递归细化策略进行检测和分割。会先产生低维的mask然后与GT匹配计算set loss,然后通过迭代的方式不断精炼分割和检测的效果。

        还有的研究聚焦于如何使用Transformer在多目标场景下以半监督的方式进行目标分割。

Transformer用于语义分割

        SETR是基于transformer用于语义分割的模型,使用了ViT类似的encoder结构,随后使用多级特征聚合模块(multi-level feature aggregation)进行像素级别的分割;

        Strudel等人则依赖与图像patch相对应的输出嵌入,并使用逐点的线性解码器或掩码Transformer。解码器从这些嵌入中获取类标签。

        还有Xie等人在Transformer中使用轻量级的MLP decoder,这样避免使用较为复杂的deocder,也能输出多尺度特征。

Transformer用于医学图像分割

        Swin-Unet是一个像UNet的纯Transformer,其用于医学图像分割的网络模型,采用编解码结构和skip connection提取和融合上下文特征;

        Valanarasu研究了将Transformer用于医学图像分割的可行性,并提出一个门控的轴向注意力模型来扩充self-attention的能力。

        Cell-DETR则是基于做全景分割的DETR结构,增加了skip connection增强特征融合。

4.2.3 Pose Estimation

        人体姿态和手势识别也是CV中较为热门的研究方向,如关节姿态估计旨在从输入中预测联合坐标或者一些网络格点,类似于结构化预测任务,因此如何基于Transformer对人体姿态、手势等的整体结构信息建模也有诸多研究。

Transformer用于手势识别

        Huang等人提出了基于Transformer的3D手势姿态估计网络,encoder首先利用PointNet从输入点云中提取像素级别特征,然后送入多头的self-attention模块获得前凸后的结果;还有的进一步改进特征提取模块,如使用PointNet++提取姿态相关的信息,并且加入位置信息送入decoder部分。

        还有的研究(HOT-Net)使用ResNet产生最初的2D预测结果,然后送入3D手势识别网络,借助2D上的外观、位置信息送入Transformer,结合注意力机制对关键点进行分类、输出最终的手势的3D姿态识别。

Transformer用于人体姿态识别(待深入)

        METRO首先通过一个CNN提取图像特征然后将特征图谱与人体mesh信息结合并进行位置信息的编码;随后送入到多层Transformer中的encoder进行下采样,降低维度,最终生成人体关节的坐标。为了提升学习关节之间的非局部关系,METRO还会在训练时随机对一些输入query加掩膜。

        TransPose则是将Transformer与low-level CNN Block结合,其中Transformer用于捕捉长程的关键点信息,同时还对关键点依赖的一些信息进行了解释。还有的演技借助Transformer可以同时无监督的学习姿态和运动信息,从而可以纠正部分或整个框架的不准确预测结果。

4.2.4 其他任务

        Transformer也应用到了高级视觉的一些其他任务,如行人检测、车道线检测、场景理解、跟踪、行人重检测、点云学习。

行人检测

        由于物体在遮挡和人群场景中的分布非常密集,因此当将公共检测网络应用于行人检测任务时,往往需要额外的分析和自适应。如果直接将DETR或可变形的DETR应用于行人检测任务时,稀疏均匀查询和解码器中的弱注意场会导致性能下降。因此提出了行人端端检测器(PED),在PED中使用了一种新的密集查询和整流注意场(DQRF)缓解噪声、narrow attention造成的性能衰减。

车道线检测

        车道线检测类模型称为:LSTR,通过Transformer学习全局特征结合细粒度特征可以更好的对弯曲的车道进行检测;目前性能可以超过PolyLaneNet。场景理解主要就是生成图像的结构化表示,可以清晰的表达物体、位置以及物体之间的关系等。主要路线是从图像中提取图像级别的特征,然后在目标之间传递信息。Graph-RCNN借助self-attention可以有效的将相邻节点之间的信息聚合,借助更丰富的上下文信息生成物体之间的关系。

4.2.5 Discussion

        Transformer在诸多高级视觉任务中展现了强大的性能,应用Transformer前的一个关键问题就是要解决输入嵌入、位置编码和预测损失如何实现。

        目前将Transformer用于高级视觉任务还处在初步阶段,仍有许多值得进一步研究的地方。比如是否有必要在使用Transformer之前加入特征提取模块,如CNN?如何才能像BERT和GPT-3在NLP领域所做的那样,使用大规模的训练前数据集来充分利用 Vision Transformer?是否有可能预先训练单个Transformer模型,并对其进行微调,以针对不同的下游任务进行微调?如何更好的集合先验知识等这些有意义的问题都值得进一步探索。

4.3低级视觉

        还有的研究将Transformer应用于基础视觉任务,如超分辨率、图像生成,而此类任务经常需要输出图像,比分类、分割和检测等高级视觉任务更具挑战性后者的输出是标签或盒子

4.3.1 图像生成

        Image Transformer是第一个将Transformer用于图像生成的探索,主要包含两部分:encoder负责提取图像特征,decoder负责逐点生成像素,通过计算输入像素与前序生成像素的self-attention。

        在SR或图像修复中也使用的这种编解码结构,输入的是低分辨率图像或者损伤的图像,decoder部分再生成图像时还会驶入噪声信息,因此在生成高分辨率图像时使用了self-attention。即只是用最近生成的像素作为decoder的输入,这样可以达到与CNN相当的性能,也证明了基于Transformer在基础视觉任务上的有效性。

        虽然直接通过Transformer生成高分辨率图像存在一定困难,Taming Transformer通过将Transformer与GAN结合有效的解决了这一问题。

         具体结构参见Fig 11,其中VQGAN是VQVAE的变体,使用判别器和感知损失来提升生成质量,图像被表示成一系列具有丰富上下文信息的离散向量,然后将这些向量送入Transfomeer通过自回归的方式获得生成图,因为Transformer可以有效捕获长程依赖,从而获得高质量的HR图像。

        还有学者将Transformer应用于文本-图像生成,任务本分为两步进行,第一阶段使用VAE学习文本对应的视觉内容第二阶段则是对编码后的结果进行解码,这时候就是借助Transformer学习编码后的text与图像之间的关联。TransGAN则是将transformer融入了GAN结构。

        鉴于生成像素级别的HR图像存在困难,则是使用了带有memory的生成器逐渐提升feature map的分辨率;因此也对应设置了不同分辨率的判别器。在训练过程中就引入了self-attention,数据增强、相对位置信息和归一化等措施来稳定训练、提升性能。实验结果也证明基于Trabsformer的GAN在诸多图像生成任务中卓有成效。

【注】:

        ·VQGAN (Vector Quantized Generative Adversarial Network) 是一种基于 GAN 的生成模型,可以将图像或文本转换为高质量的图像。

        ·该模型是由 OpenAI 研究团队在 2021 年发布的。VQGAN 模型使用了两个核心部分:Vector Quantization (VQ) 和 GAN。其中 VQ 是一种数据压缩技术,可以将连续数据表示为离散化的向量。在 VQGAN 中,输入的图像或文本被映射到 VQ 空间中的离散化向量表示。这些离散化向量然后被送到 GAN 模型中进行图像生成。

        ·VQGAN 模型可以用于图像生成、图像编辑和图像检索等任务。为了训练 VQGAN 模型,需要使用大量的图像数据集和一些预处理技术,如数据增强和图像裁剪等。在训练过程中,VQGAN 模型会优化两个损失函数:一个用于量化误差(即离散化向量和连续值之间的误差),另一个用于生成器和判别器之间的对抗损失。

4.3.2 图像处理

        还有的研究避免输入像素级别的数据,而是将一组图像patch作为输入。如TTSR,在超分辨率的参考图像部分使用了Transformer,目的是将LR图像的纹理信息进行迁移,因此是将LR图像和参考图像分别作为Q,K,然后计算每个patch中q,k之间的相关性:

 在选择HR图像特征V时会根据和参考图的相关性来选择,因此hard attention计算公式为

         T是迁移过来的HR,LR中的特性,这些特性会用于生成输出图像,而Transformer就起到了传输纹理信息的作用
        在IPT中则是完全借助在大规模数据集上训练过的Transformer迁移解决多种任务,比如SR,去噪、去水印。

         从Fig 12中可以看到IPT包含多个头,一个Transformer encoder,一个Transformer decoder,以及根据不同任务设置不同的尾部(tail);输入的是图像patch,Transformer则是在ImageNet上预训练后的结果;而且图像被人为的进行了退化,即加入了噪声、增加了遮挡等;而原始图像就是优化的目标。

        为了增强IPT模型的泛化性,还使用了自监督学习;即模型被训练后,会针对不同的任务进行微调。这项研究一方面实现了诸多图像处理任务的性能,同时展示了将Transformer用作图像处理的巨大潜力。

        除了实现单张图像的生成,SceneFormer还将Transformer用于3D的室内场景的生成。在这项工作中将场景视作一系列目标序列,transformer decoder则负责预测各项目标的位置、类别和大小。

4.4 视频处理

        Transformer在处理序列数据上表现出色,尤其是在NLP领域性能优异。在计算机视觉(特别是视频任务)中,空间和时间维度信息被青睐,这导致了越来越多的研究尝试用Transformer处理视觉中的视频人物,如帧合成、动作识别和视频检索。

4.4.1 高级视觉视频处理

Video Action Recognition(视频动作识别

        视频人类行为任务,顾名思义,包括识别和定位视频中的人类行为。Context(如他人和物体)在识别人类行为中起着关键作用。

        Action Transformer就借助Transformer学习关键人物与周围环境之间的关系。I3D中则是将Transformer用于提取高级视觉特征,从中间特征映射中提取的特征(使用RoI池)被视为查询(Q),而键(K)和值(V)是从中间特征中计算出来的。对这三个组成部分应用了自我注意机制,并输出了分类和回归预测。

        Fayyaz和Gall提出时序Transformer可以在弱监督下实现动作识别,可以有效利用动态和静态特征进行动作的预测。

Video Retrieval(视频检索)

        基于内容的视频检索的关键是找到视频之间的相似性。除了利用视频级别的特征,Shao等人还提出借助transformer来学习长程的语义信息关联;这种方法具有精度和速度上的双重优势除此之外,Gebeur还是用多模态的Transformer学习不同特征来表示视频内容。

Video Object Detection(视频目标识别)

        要检测视频中的对象,同时需要提供全局和本地信息。

        MEGA有效的增强了局部和全局信息的聚合用于捕获更多内容信息;

        此外,Yin等人则是提出一个时-空Transformer有效聚合了时间和空间的信息有效进行3D视频中的目标检测任务。

Multi-task Learning多任务学习

        未经修剪的视频往往包含诸多与目标任务无关的帧,为了提取有效信息、去除冗余信息,Seong等人提出了多任务的Transformer框架,主要会借助两个在ImageNet上预训练后的网络提取场景特征和目标特征,然后将不同任务的Transformer堆叠起来进行特征融合。

4.4.2 低级视频处理

Frame/Video Synthesis(帧/视频合成)

        帧合成任务包括在两个连续的帧之间或在一个帧序列之后合成这些帧,而视频合成任务包括合成一个视频。

        Liu等人提出了 ConvTransformer,它由特征嵌入、位置编码、编码器、查询解码器和合成前馈网络五个组成部分组成。与基于LSTM的工作相比,ConvTransformer具有更并行的架构,取得了优越的效果。

        Schatz等人[191]提出了另一种基于Transformer的方法,该方法使用循环变压器网络从新的角度合成人类行为。

Video Inpainting(视频修复)

        视频修复主要任务是修复帧内缺失的区域,这项任务十分具有挑战性,因为需要结合空间和实践信息。

        Zeng等人提出的时-空Transformer对这一任务进行了尝试,会将所有帧作为输入,并行处理,借助空间-时间的对抗损失来进行优化。

4.4.3 Discussions

        与图像相比,视频有一个额外的维度来编码时间信息。利用空间和时间信息有助于更好地理解视频。由于变压器的关系建模能力,通过同时挖掘时空信息,视频处理任务得到了改进。然而,由于视频数据的高复杂性和大量的冗余性,如何有效地、准确地建模空间和时间关系仍然是一个有待解决的问题。

4.5 多模块任务

        VideoBERT中使用CNN先对视频进行预处理,获得表征tokens,随后训练Transformer decoder学习视频到文本的表征,从而完成字幕生成的任务。还有其他探索如VisualBERT\VL-BERT也都是通过Transformer捕获图像与文本之间的关联然后进行VQA,VCR等任务。

4.6 Efficient Transformer

        尽管Transformer模型在各种任务中都取得了成功,但它们对内存和计算资源的高要求阻碍了它们在手机等资源有限的设备上的实现。在本节中,我们回顾了对压缩和加速Transformer模型的研究。这包括网络剪枝、低秩分解、知识蒸馏、网络量化和紧凑的架构设计。表5列出了压缩基于变压器的模型的一些代表性工作。

4.6.1 Pruning and Decomposition(网络剪枝和网络分解)

        在基于Transformer的预训练模型(如BERT)中,并行执行多个各个token之间的attention但是对于特定任务不需要所有的head。例如,Michel等人提出了经验证据,表明在测试时,很大比例的attention head可以被移除,而不会显著影响表现。在不同的层中,所需要的head的数量是不同的——有些层甚至可能只需要一个头。考虑到attention head的冗余,可以通过计算importance head重要性分数选择留下哪些head,去掉冗余的head。

        Dalvi等人[175]从两个角度:一般冗余和任务特定冗余,分析了预先训练好的Transformer模型中的冗余。

        根据彩票假设,Prasanna等人通过投票策略分析了通用任务和特定任务中冗余的部分,发现可以较好解决子任务的模型也在基本的网络模型节骨中,从而减少不相关的FFN层和attention head可以进一步压缩网络模型。


        Tang等人则是提出减少输入patch的冗余性来加速计算,依旧可以有效的捕获特征。还有的学者尝试从减少FFN层和attention模块线性映射的维度方面达到网络瘦身的目的。
除了降低网络宽度,还可以从降低网络深度方面考虑,比如网络的层数就可以有效加速推理时间。
但是不像attention可以并行计算,网络层必须顺序计算。

        因此Fan等人提出一层丢弃策略,训练时会评估不同层的重要性,对于某些层次在测试时直接移除掉。

        Hou等人则是提出一种自适应减少预训练Transformer模型中深度和宽度的策略,这种方法可以同时获得不同大小的多个模型,通过rewiring策略在不同的子网络中共享一些重要的attention head和神经元,从而适应不同计算资源的硬件平台。

4.6.2知识蒸馏

        知识蒸馏主要是通过迁移教师网络的知识来指导学生网络的训练,与教师网络相比,学生网络通常具有更薄、更浅的架构,更容易部署在资源有限的资源上。神经网络的输出特征和中间特征也可以用来将有效的信息从教师传递给学生。

        Mukherjee等人则是使用与预训练的BERT作为教师网络来指导学生网络处理无标签数据;

        Wang等人则是训练学生网络self-attention的输入模仿预训练的教师网络,将value点乘的结果作为提取到的知识来指导学生网络的行为。

        此外,因为Transformer中不同层(自注意力层、嵌入层、预测层)等都不一样,因此需要设计不同的目标函数才能正确的知识从教师网络迁移到学生网络,比如嵌入层通过MSE loss完成对教师网络的模仿;对于预测层,使用KL散度。

4.6.3 Quantization(量化)

        量化是通过减少网络权重及中间特征的表示位数,达到压缩网络规模的目的。在通用的神经网络压缩策略中已经对量化策略进行了较为详细的讨论和研究,近期一大研究热门方向则是对Transformer进行定制化量化。

        例如:Shridhar等人建议将输入编码成为二进制告我向量,然后使用这些输入训练BNN;Cheong等人则是将transformer的权重使用低比特量化(4bit);Zhao等人则是探究了不同的量化策略,最后发现k-means效果最佳;Prato等人则验证了8bit量化的trnasformer模型在翻译任务中不会带来任何精度损失;Liu等人则是使用了训练后量化策略(post-training)减少对存储和计算的需求。

4.6.4 Compact Architecture Design(紧凑结构设计)

        除了将预定义的Transformer模型压缩成更小的模型,一些工作试图直接设计紧凑的模型

        Jiang等人通过提出了一种新的模块——称为span-based dynamic convolution基于跨度的动态卷积)——来简化了self-attention的计算,该模块将全连接层和卷积层结合起来,如图15所示。

         通过卷积运算计算了不同令牌表示之间的局部依赖性,这明显比标准Transformer中的密集全连通层更有效。深度卷积也被用于进一步降低计算成本。

        在《 Is attention better than matrix decomposition?》中提出了有趣的“汉堡”层,使用矩阵分解来代替原始的self-attention。与标准的self-attention操作相比,矩阵分解可以更有效地计算,同时清楚地反映不同标记之间的依赖性。

        Su等人借助NAS自动搜索如何组合不同的components

        如Li等人探索一种自监督搜索策略,搜索到了一个由卷积模块和self-attention模块组成的混合体系结构。

        Transformer中的计算量主要在于self-attention中药计算不同输入之间的点积,时间复杂度为O(N),N为序列长度,因此处理长序列时效率低下。因此Katharopoulos等人提出将self-attention的线性点乘进行映射,通过RNN找到不同token之间的关系。

        Zaheer等人则是将每一个token视作图中的一个顶点,将不同token的内积结果作为顶点之间的边,然后基于图论将问题转化为密集图的计算问题。

 Discussion

        前面的方法在在Transformer模型中识别冗余方面采用了不同的方法(参见图16)。剪枝和分解方法通常需要具有冗余的预定义模型。具体来说,剪枝集中于减少变压器模型中的组件(例如,层、头)的数量,而分解表示一个具有多个小矩阵的原始矩阵。紧凑型模型也可以直接手动设计(需要足够的专业知识)或自动设计(例如,通过NAS)。所得到的紧凑模型可以通过量化方法进一步用低比特表示,以便在资源有限的设备上有效部署。

Section V SELF-ATTENTION FOR COMPUTER VISION

        前面几节回顾了使用Transformer架构来完成视觉任务的方法。self-attention在变压器中起着关键作用。self-attention模块也可以被认为是CNN架构的一个基础模块,它对大的接受域具有低尺度的特性。self-attention被广泛用于网络之上,以捕获远程交互,并增强视觉任务的高级语义特征。在本节中,我们将深入研究基于计算机视觉挑战性任务的模型。这些任务包括语义分割、实例分割、目标检测、关键点检测和深度估计。本文简要总结了现有的计算机视觉应用。

图像分类

        分类任务中使用的注意力可分为两类:hard attention和soft attention.


        hard attention:硬注意力,在注意力分布中以某种采样策略选取部分分量

        soft attention:软注意力,在注意力分布找那个保留所有分量做加权

        Ba等人首先提出了术语“视觉注意”,并利用注意来选择输入图像中的相关区域和位置。这也可以降低所提出的模型关于输入图像大小的计算复杂度。对于医学图像分类,提出了AG-CNN通过注意热图从全局图像中裁剪一个子区域。

        SENet 被提出重新使用软自注意来重新加权卷积特征的通道响应。

        Jetley等人使用相应估计器生成的注意图来重新加权DNN中的中间特征。

        此外,Han等人利用属性意识注意来增强CNN的表征。

语义分割

        PSANet、OCNet、DANet和CFNet是提出在语义分割任务中使用self-attention模块的开创性工作。这些作品考虑并增强了上下文像素之间的关系和相似性。

        DANet 同时利用了空间和通道维度上的自注意模块.

        而A2Net将像素分组为一组区域,然后通过用生成的注意权重聚合区域表示来增强像素表示。

        DGCNet采用对偶图CNN在单一框架内建模坐标空间相似度和特征空间相似度。

        除此之外还有从减少计算量方面进行探索的。如CGNL通过泰勒级数来近似计算像素之间的相似性;CCNet则是通过两个连续的交叉注意力模型来近似self-attention的计算。

目标检测

        Ramachandran提出了一个基于注意力的层,并结合卷积层建立了一个全注意力的detector在COCO数据集上做目标检测,性能超过了RetinaNet。传统的目标检测算法通常利用单一的视觉表示来做预测,如bbox或者角点。Hu等人则通过自注意力同时计算对象之间的外表特征的相互作用;

        RelationNet++则将不同的视觉特征计算self-attention进行融合,将主要特征看做是query然后将其他表征看做要匹配的k,使用这种增强后的特征可以更好的携带各种信息进行检测。

其他视觉任务
        

Zhuang等人提出一个分辨率级别的注意力模块来增强特征图,这样可以在训练不同分辨率网路时获得更精确的人体关键点位置,从而进行姿态识别。

        Chang等人则是基于注意力进行特征融合,目的也是为了提升人体关键点检测模型。

Section VI 总结与讨论

        Transformer具有良好的性能和巨大的潜力,正成为计算机视觉领域的热点。为了发现和利用Transformer的功率,如本文所总结的,近年来已经提出了许多方法。这些方法在广泛的视觉任务中都表现出了良好的性能,包括骨干视觉、高/中水平视觉、低水平视觉和视频处理。然而,Transformer在计算机视觉方面的潜力尚未得到充分的探索,这意味着仍有几个挑战需要解决。在本节中,我们将讨论这些挑战,并提供对未来前景的见解。

6.1 挑战

        虽然研究人员已经提出了许多基于Transformer的模型来处理计算机视觉任务,但这些工作只是这一领域的第一步,仍然有很大的改进空间。例如,ViT中的Transformer架构遵循了NLP的标准Transformer,但专门为CV设计的改进版本仍有待探索。此外,有必要将Transformer应用于除前面提到的更多任务。

        计算机视觉变压器的泛化和鲁棒性也具有挑战性。与CNN相比,纯Transformer缺乏一些归纳偏差,严重依赖大规模数据集进行大规模训练。因此,数据的质量对Transformer的泛化和鲁棒性有显著的影响。虽然ViT在CIFAR和VTAB等下游图像分类任务上表现出优异的性能,但直接将ViT骨干应用于目标检测并没有取得比中枢神经网络更好的结果。要更好地将预先训练过的Transformer推广到更广义的视觉任务上,还有很长的路要走。从业人员关注变压器的鲁棒性(例如,漏洞问题)。虽然已经有不少学者研究了其鲁棒性,但这仍然是一个有待解决的开放问题。

        虽然许多作品已经解释了Transformer在NLP中的使用情况,但要清楚地解释为什么Transformer在视觉任务上工作良好仍然是一个具有挑战性的主题。归纳偏差,包括平移等方差和局部性,都归因于CNN的成功,但Transformer没有任何归纳偏差。目前的文献通常以一种直观的方式来分析其效果。例如,多索维茨基等人声称,大规模的训练可以超越归纳偏差。在图像补丁中添加位置嵌入以保留位置信息,这在计算机视觉任务中非常重要。受Transformer中大量参数使用的启发,过度参数化的可能是vision Transformer可解释性的一个潜在点。

        再者,开发高效的CV-Transformer模型仍然是一个开放性的问题。Transformer模型通常是巨大的,而且计算成本昂贵。例如,基本的ViT模型需要180亿个流量来处理一个图像。相比之下,轻量级CNN模型GhostNet仅用约6亿FLOP就可以实现类似的性能。尽管已经提出了几种压缩反式异构体的方法,但它们仍然非常复杂。这些最初为NLP设计的方法可能不适合CV因此,迫切需要高效的Transformer模型,以便在资源有限的设备上部署vision Transformer

6.2 展望

        为了推动vision Transformer的发展,我们为未来的研究提供了几个潜在的方向。

        一是变压器在计算机视觉中的有效性和效率。目标是开发高效的vision Transformer。具体来说,具有高性能和低资源成本的Transformer。性能决定了该模型是否可以应用于实际世界的应用程序,而资源成本则会影响在设备上的部署。有效性通常与效率相关,因此决定如何在它们之间实现更好的平衡是未来研究的一个有意义的课题

        大多数现有的vision Transformer模型被设计为只处理一个任务。许多NLP模型,如GPT-3,已经演示了变压器如何在一个模型中处理多个任务。CV领域的IPT还能够处理多种低级视觉任务,如超分辨率、图像去噪和脱噪。我们相信,只有一个模型可以涉及到更多的任务。将所有的视觉任务甚至其他任务统一到一个Transformer中(即一个大的统一模型)是一个令人兴奋的话题。

        有各种各样的神经网络,如CNN,RNN,和Transformer。在CV领域,CNN曾经是主流的选择,但现在Transformer变得流行。CNN可以捕获归纳偏差,如翻译等方差和局部性,而ViT使用大规模训练来超过归纳偏差。从目前可用的证据来看,CNN在小数据集上表现良好,而Transformer在大数据集上表现更好

        通过对大数据集的训练,变压器可以在NLP和CV基准测试上达到最先进的性能。神经网络可能需要大数据,而不是归纳偏差。最后,作者提出一个问题:Transformer能否通过一个非常简单的计算范式(例如,只有完全连接的层)和大量的数据训练来获得令人满意的结果?

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值