[Transformer]A Survey on Vision Transformer

A Survey on Vision Transformer
视觉Transformer综述

Abstract:

Transformer是一种基于自注意力机制的深度神经网络,最初被用于NLP,由于其强大的特征表征能力,也逐步被应用于计算机视觉任务中去。在一些计算机视觉的基准任务中,基于Transformer的模型取得了与CNN或RNN网络等相近甚至更优越的性能。鉴于其优越的性能,同时无需过多的输入所需的先验知识,Transformer越来越多的被用于计算机视觉领域。
本文对Transformer在计算机视觉领域的应用进行综述,探讨按照以下类别:主干网络、高/中级视觉处理、低级视觉处理及视频处理。
本文也包含了对高效Transformer、Transformer部署到实际设备等工作的探讨。更进一步,本文还对Transformer和核心部件-self-attention机制进行了简要的探讨;文末本文还对Transformer存在的挑战、未来的方向进行了展望。

Section I Introduction

深度神经网络已经成为当今AI系统的标配,会设计不同种类的网络解决不同类型的任务。比如多层感知机和全连接层是神经网络中经典的结构,包含多个线性层和非线性激活层;CNN则引入了卷积层和池化层,用于处理平移不变性的图像;RNN则通过单元的迭代处理序列数据,如语音、时序数据。
Transformer是一种新的神经网络,主要基于自注意力机制提取特征,并且在AI诸多领域展现了巨大的应用潜力。 Transformer最初提出被用于NLP领域,比如用于机器翻译、文本解析等任务;如BERT中使用了预训练的transformer这样可以将每个单词都考虑其中。 GPT-3中则是先在一个大型语料库上预训练了Transformer,然后迁移到下游任务中,在下游任务中达到了强悍的性能。
以上这些基于Transformer的模型由于具有强大的特征提取能力,在NLP领域已经取得了重大突破。 在CV领域,CNN一直是标配,但现在Transformer大有取而代之之势。Chen等人训练了一个序列Transformer来自动回归预测像素,在图像分类任务上和CNN接近,ViT则是直接使用Transformer在一系列图像patch;还有将Transformer用于物体检测、语义分割、图像处理和视频理解等。鉴于其有益的iX脑功能,越来越多的研究者开始基于transformer用于视觉任务。
随着这方面的研究越来越多,本文对transformer用于视觉方面的研究进行综述,按照其应用场景进行分类。High-level在于如何解释图像,mid-level在于如何组织物体、表层信息进行物体检测、分割等,但在深度神经网络处理这类任务时这两者的界限已经越来越模糊,因此本文将其归为一类。

Low-level主要聚焦于如何从图像中提取描述,常用于超分辨率、去噪、风格迁移等任务。目前将transformer应用low-level还比较少,值得进一步研究。另一个大方向是视频处理,因为transformer天然就适合处理序列,因此非常适合处理视频等序列数据。
Fig 1展示了transformer几个关键的里程碑式研究,其中红色的是视觉Transformer相关。

[Transformer]A Survey on Vision Transformer

Section II介绍了transformer和self-attention机制,Section III主要介绍transformer在NLP领域的一些进展,Section VI是主要内容,主要总结了Transformer在视觉领域的一些基准模型。Section V重新介绍self-attention。最后一节主要是总结全文,介绍未来的方向与挑战。

; Section II Transformer

Transformer最初被用于NLP领域,进行机器翻译任务。Fig 2展示了Transformer的一般处理流程,包含encoder和decoder部分,每一个encoder模块中都包含self-attention层和一个前馈神经网络,在decoder模块中则是self-attention层和cross attention层以及前馈网络。

[Transformer]A Survey on Vision Transformer

Part A Self-attention

自注意力机制通过计算每一个位置之间的注意力分组,将相似的位置聚合在一起,可以看做是一种non-local filtering的操作:

[Transformer]A Survey on Vision Transformer

上述公式会计算当前位置与其他所有位置之间的关联(如相似度),然后归一化之后的结果。其中f配对函数可以灵活选择,比如选择高斯函数:

[Transformer]A Survey on Vision Transformer

随后再经过softmax得到最终输出:

[Transformer]A Survey on Vision Transformer

通常,在CV任务中self-attention的输出最终会被处理成:

[Transformer]A Survey on Vision Transformer

; Part 2 Dot-Product Self-Attention

在self-attention层,输入向量首先被转换成三类向量:q,k,v,不同输入得到的是不同的q,k,v,随后会经过以下步骤计算self-attention:

[Transformer]A Survey on Vision Transformer

Step 1:计算q,k之间的分数(如score),分数代表了编码当前位置单词时给予其他单词的注意程度;
Step 2:归一化以提升稳定性
Step 3:softmax将输出转化为概率
Step 4:将每个value乘以概率 求和作为输出,具有较大概率的向量会从其它层获得额外的关注。
在Decoder部分的attention计算方法类似,但是计算的是cross attention,k,v来自于Encoder,Q来自前层。 在计算过程中也能看出,self-attention的计算过程每个词的位置时不变的,意味着self-attention无法捕捉句子中单词的位置信息,但在句子中单词的次序是至关重要的。为了解决这一问题,往往通过在输入后边append位置向量或者嵌入位置信息。
Multi-head Attention
多头注意力可以进一步提升self-attention的性能;单头注意力会关注一个或多个特定的位置,但不会影响到其他位置;但对给定的序列我们经常希望同时关注到序列中多个单词,可以通过在不同子空间计算attention实现。不同头的q,k,v矩阵不一样,可以将输入投影到不同空间。 比如head数目为h,首先输入会编码成q,k,v矩阵,每组矩阵包含h个矩阵堆叠在一起。

[Transformer]A Survey on Vision Transformer

Part 3 Transformer

其他关键概念 残差连接 Fig 4展示了Transformer中每一层decoder与encoder之间的残差连接,这样增强了之间的信息流;随后再经过layer normalization FFN 每一次self-attention层后都会跟一个FFN前馈神经网络,主要包括含两层线性变换和一层非线性变换 Decoder的最后一层 Decoder的最后一层包含线性层和softmax层,会将堆叠的特征向量转换回单词,获得最终的概率输出。

[Transformer]A Survey on Vision Transformer

将Transformer应用到计算机视觉任务中,其encoder部分往往无需改变,可以将transformer看做是一种新的特征提取器。CNN其感受野有限,只能关注局部特征,transformer可以捕获长程依赖关系,对图片而言就是全局特征。 与RNN相比,RNN只能顺序计算,而Transformer中的self-attention和FNN可以并行计算,容易加速。

; Section III NLP中的Transformer

在Transformer之前,主要基于RNN网络(GRU,LSTM)等建立语言模型,但是RNN无法并行加速。Transformer被剔除后,基于其多头注意力和FFN可以有效的捕捉长程,效果可以媲美RNN,同时使得并行加速成为了可能。
BERT及其变体是基于多层transformer建立的PTM,BERT会先在大型语料库上进行训练,随后对取成对的句子作为输入,预测是否第二句话是文件中的原文。 经过预训练后,通过增加输出层BERT可以迁移到诸多下游任务中,因此BERT系列当时成为NLP里的SOTA模型。
GPT则是采取另一种思路,使用的是LTR建模,也在诸多NLP的语言生成任务中取得了优异的性能。

[Transformer]A Survey on Vision Transformer

Table 2展示了基于Transformer的代表性的语言模型的一些信息,包括基本结构、参数量、是否微调等。 Transformer在生物医学领域也有应用,比如BioBERT,就基于Transformer进行生物文本挖掘任务;ClinicalBERT则是使用transformrt观测、评估临床表现;可以基于临床得到的注意力图进行一些诊断,从而发现不同医学内容之间的关联。

Section VI Transformer

本节将对transformer在计算机视觉领域的应用进行综述。包括图像分类、高级视觉、低级视觉、视频处理等。
Table 3展示了代表性的CNN网络及Transformer在ImageNet上的表现。

[Transformer]A Survey on Vision Transformer

; Part 1 Backbone

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

[Transformer]A Survey on Vision Transformer

1.1 Pure Transformer
ViT(Vision Transformer)是纯粹适用Transformer来做图像分类任务。Fig 6展示了ViT的框架结构。
为了处理二维图像,输入图像被reshape成一系列patch连接而成的序列,patch维度p _p_c,有效序列长度则是原始图像的hw/p^2。因为Transformer每层输出宽度都一样,可以训练一个线性层用于将提取到的向量映射到维度d,这样就类似输出了word embedding的结果。

[Transformer]A Survey on Vision Transformer
ViT仅使用了Transformer中encoder部分,输出效果就已经由于MLP。 通常情况下ViT会在大型数据及上预训练之后迁移到规模较小的下游数据;做的改动就是移除最后做prediction的head,而是换成FFN层;微调阶段使用更高分辨率的输入效果更好。
虽然ViT理论上可以处理无限厂的序列,但是有可能那个时候的位置编码就已经没意义了。以及只在调整resolution、切patch的时候引入了bias. 在中型数据集如ImageNet,ViT效果略逊于ResNet,主要是因为缺乏CNN包含的一些先验知识,比如局部性、平移不变性等,从而在中小数据集上效果不佳;当训练样本充足时,Transformer效果会有很大提升。
比如在JFT-300M与训练后ViT可以达到甚至超过绝大多数图像识别的benchmark。 DeiT也是完全基于Transformer不借助任何CNN的结构,本文作者还发现借助CNN作为teacher可以指导Transformer具有更高的性能。 ViT的变体: 主要包括增强局部性喜、改进self-attention以及结构上的设计。 原始的ViT善于捕获长程信息,但由于拼成了patch序列丢失了局部信息。
TNT等工作则聚焦于提升局部信息的能力,比如通过将patch进一步切分并在Transformer中引入Transformer,外部Transformer捕获patch之间的关联,内部teansformer捕获单块patch内部的特征;
Twins和CAT则是替换了attention层,使之可以分别捕获局部和全局注意力。
SwinTransformer则是基于窗函数获取局部注意力,同时使用一种基于位移的窗口化分方法来完成跨窗口的连接。
Shuffle Transformer则是使用shuffle的方式替换shift window。 Transformer中核心的self-attention层可以有效的捕获全局特征,因此如何优化self-attention的计算也引起了诸多学者的兴趣。 DeepViT提出多头交互从而丰富attention map;KVT则是基于knn的思想来聚合attention从而抑制一些噪声等。 在self-attention层,如何简化计算、提升attention的精确度是主要的优化方向。
另一方面在于结构的优化。原始的ViT只是简单堆叠了transformer,因此也有诸多学者在结构上做了诸多探索。如搭建金字塔形的结构(PVT,HVT,SwinTransformer);以及搭建双流结构或U型结构的网络;还有使用NAS搜索更优的Transformer结构。
1.2Transformer + Convolution
尽管纯Transformer已经可以用于计算机视觉任务,但是距离一些CNN的性能还有差距,主要原因在于局部信息提取不足,除了前文提到的增强局部信息,还可以结合卷积操作,形成互补-conventional transformer。

比如CVPT提出使用条件位置编码,编码会考虑自己临近的信息;CvT等则是分析了直接从NLP借鉴Transformer的局限性,提出与卷积操作结合在一起,即在每一个FFN层结合一个卷积层,这样可以融合临近的信息;BoTNet则是将空间卷积替换成了global self-attention,在实例分割和目标检测任务中均取得了优异的性能。
此外还有学者提出Trnasformer更容易过拟合,可能会受到优化器、超参数、训练过程等的影响。比如有比较在不同训练策略下CNN和Transformer的性能差异,都会影响网络的收敛。其中attention的计算是唯一会混合输入元素的地方,为了保证训练时有效聚焦在物体上,Chen等人在attention上增加了一个上三角型的mask掩膜,使用BERT时不使用mask,训练的时候则使用mask。

1.3 Self-supervised Representation Learning
1-生成算法
图像生成预训练方法由来已久,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则是以分类任务的结果作为损失函数。

Part 2 高级视觉

已经有越来越多的研究将Transformer用于一些高级视觉任务,如目标检测、车道线检测、分割、姿态识别等。
2.1目标检测
传统的目标检测主要基于CNN,但是Transformer在这方面也展示了强大的能力。一些目标检测方法主要利用transformer的自注意力机制增模块的检测能力,比如特征混合模块或者预测模块;因此Transformer也主要增强这两方面:基于Transformer做预测和基于Transformer做基础网络,详情参见Fig 9.

而且基于Transformer做目标检测在精度和速度上均优于CNN。

[Transformer]A Survey on Vision Transformer

Table 4展示了CNN和Transformer在COCO数据集上的对比。
Transformer-based Set Prediction for Detection
DETR是使用transformer做detector的先驱探索,DETR将目标检测任务视作一系列预测任务,摒弃了传统目标检测中的锚框、非极大值抑制等需人工干预的步骤。

[Transformer]A Survey on Vision Transformer

Fig10展示了DETR的流程图,首先经过CNN进行特征提取,为了给图像特征增加位置信息,有进行了positional embedding;随后将包含位置信息的特征图送入Transformer中。
Transformer中decoder取encoder的输出以及学习到的N个位置编码,输出N个嵌入后的结果。N是预定义的参数,通常大于图像中的对象类别。然后将输出送入FFN后得到最终的预测结果。使用的loss函数是二分图匹配算法(匈牙利算法),参见Eq 17:

[Transformer]A Survey on Vision Transformer

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性能更好。 在简化计算复杂度方面,也有诸多学者做了探索。
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,对于嵌入了特征的输出重新拼接,得到最终的检测结果。此外,也有其他不同的transformrt作为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,然后使用与训练过后的权重继续训练做检测任务。

; 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增强特征融合。

2.3Pose 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可以同时无监督的学习姿态和运动信息,从而可以纠正部分或整个框架的不准确预测结果。

2.4其他任务

Transformer也应用到了高级视觉的一些其他任务,如行人检测、车道线检测、场景理解、跟踪、行人重检测、点云学习。
行人检测
难点在于人群场景中存在人群密集、遮挡严重的问题,如果直接应用DETR或Deformable DETR,由于query较为稀疏或者一致,有的计算的attention比较弱,会导致性能下降的比较严重;因此在PED中使用了Dense Queries Rectified Attention filed缓解噪声、narrow attention造成的性能衰减。
车道线检测
车道线检测类模型称为:LSTR,通过Transformer学习全局特征结合细粒度特征可以更好的对弯曲的车道进行检测;目前性能可以超过PolyLaneNet。 场景理解 场景理解主要就是生成图像的结构化表示,可以清晰的表达物体、位置以及物体之间的关系等。主要路线是从图像中提取图像级别的特征,然后在目标之间传递信息。Graph-RCNN借助self-attention可以有效的将相邻节点之间的信息聚合,借助更丰富的上下文信息生成物体之间的关系。

2.5 Discussion

Transformer在诸多高级视觉任务中展现了强大的性能,应用Transformer前的一个关键问题就是要解决输入嵌入、位置编码和预测损失如何实现。
目前将Transformer用于高级视觉任务还处在初步阶段,仍有许多值得进一步研究的地方。比如是否有必要在使用Transformer之前加入特征提取模块,如CNN?如何更好地利用Transformer在大规模数据集上预训练之后的结果?是否有可能一种与训练结果可以适应到各种子任务上?如何更好的集合先验知识等这些有意义的问题都值得进一步探索。

Part 3基础视觉

还有的研究将Transformer应用于基础视觉任务,如超分辨率、图像生成,而此类任务经常需要输出图像,比高级视觉中输出类别或box等更具挑战性。

3.1图像生成

Image Transformer是第一个将Transformer用于图像生成的探索,主要包含两部分:encoder负责提取图像特征,decoder负责逐点生成像素,通过计算输入像素与前序生成像素的self-attention。
在SR或图像修复中也使用的这种编解码结构,输入的是低分辨率图像或者损伤的图像,decoder部分再生成图像时还会驶入噪声信息,因此在生成高分辨率图像时使用了self-attention。即只是用最近生成的像素作为decoder的输入,这样可以达到与CNN相当的性能,也证明了基于Transformer在基础视觉任务上的有效性。
虽然直接通过Transformer生成高分辨率图像存在一定困难,Taming Transformer通过将Transformer与GAN结合有效的解决了这一问题。

[Transformer]A Survey on Vision Transformer

具体结构参见Fig 11,其中VQGAN是VQVAE的变体,使用判别器和感知损失来提升生成质量,图像被表示成一系列具有丰富上下文信息的离散向量,然后将这些向量送入Transfomeer通过自回归的方式获得生成图,因为Transformer可以有效捕获长程依赖,从而获得高质量的HR图像。
还有学者将Transformer应用于文本-图像生成,任务本分为两步进行,第一阶段使用VAE学习文本对应的视觉内容;第二阶段则是对编码后的结果进行解码,这时候就是借助Transformer学习编码后的text与图像之间的关联。 TransGAN则是将transformer融入了GAN结构。
鉴于生成像素级别的HR图像存在困难,则是使用了带有memory的生成器逐渐提升feature map的分辨率;因此也对应设置了不同分辨率的判别器。在训练过程中就引入了self-attention,数据增强、相对位置信息和归一化等措施来稳定训练、提升性能。实验结果也证明基于Trabsformer的GAN在诸多图像生成任务中卓有成效。

; 3.2图像处理

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

[Transformer]A Survey on Vision Transformer

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

[Transformer]A Survey on Vision Transformer

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

[Transformer]A Survey on Vision Transformer

从Fig 12中可以看到IPT包含多个头,一个Transformer encoder,一个Transformer decoder,以及根据不同任务设置不同的尾部(tail);输入的是图像patch,Transformer则是在ImageNet上预训练后的结果;而且图像被人为的进行了退化,即加入了噪声、增加了遮挡等;而原始图像就是优化的目标。 为了增强IPT模型的泛化性,还使用了自监督学习;即模型被训练后,会针对不同的任务进行微调。这项研究一方面实现了诸多图像处理任务的性能,同时展示了将Transformer用作图像处理的巨大潜力。

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

Part 4 视频处理

鉴于Transformer在处理序列数据,尤其是在NLP领域性能优异,因此也有越来越多的研究尝试用Transformer处理视觉中的视频人物,如帧合成、动作识别和视频检索。

4.1高级视觉视频处理

视频动作识别
包括对视频中人类的行为、动作等进行识别。
Action Transformer就借助Transformer学习关键人物与周围环境之间的关系;I3D中则是将Transformer用于提取高级视觉特征,提取的特征做为Q,然后再从中间特征图中计算K,V;通过计算Q,K,V的自注意力得到最终分类的结果,可以有效减少类内差异、增加类间差异。
还有学者提出时序Transformer可以在弱监督下实现动作识别,可以有效利用动态和静态特征进行动作的预测。
视频检索
视频检索的关键是要找到视频内容之间的相似之处,除了利用视频级别的特征,Shao等人还提出借助transformer来学习长程的语义信息关联;这种方法具有精度和速度上的双重优势。
除此之外,Gebeur还是用多模态的Transformer学习不同特征来表示视频内容。
视频目标识别
为了在视频中实现目标识别,需要同时结合全局和局部信息。
MEGA有效的增强了局部和全局信息的聚合用于捕获更多内容信息;Yin等人则是提出一个时-空Transformer有效聚合了时间和空间的信息有效进行3D视频中的目标检测任务。
多任务学习
未经修剪的视频往往包含诸多与目标任务无关的帧,为了提取有效信息、去除冗余信息,Seong等人提出了多任务的Transformer框架,主要会借助两个在ImageNet上预训练后的网络提取场景特征和目标特征,然后将不同任务的Transformer堆叠起来进行特征融合。

4.2低级视频处理

帧/视频合成
帧合成指的是在两个连续帧内或者在帧序列后合成新的帧。在这方面ConvTransformer通过组合以下5部分:特征嵌入、位置编码、encoder,query decoder,FFN网络达到了与LSTM相近的性能;也有的研究借助recurrent的思想来合成视频中的人体动作。
视频修复
视频修复主要任务是修复帧内缺失的区域,这项任务十分具有挑战性,因为需要结合空间和实践信息。Zeng等人提出的时-空Transformer对这一任务进行了尝试,会将所有帧作为输入,并行处理,借助空间-时间的对抗损失来进行优化。
小结:
与图像相比,视频还需要考虑时间轴上的信息,需要同时利用时间和空间特征才能更好的理解视频内容。而借助Transformer强大的建模能力,在视频处理任务展现了优异的性能。但是鉴于计算的复杂性以及需要处理大量的视频冗余信息,未来还需进一步探索如何在建模、提取时空信息时更加高效和准确。

Part 5 多模态任务

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

Part 6 Efficient Transformer

尽管Transformer已经在诸多领域大放异彩,但是其对内存和计算资源的消耗限制了其在一些资源有限平台上的应用,如手机。本节主要介绍如何精简、加速Transformer这方面的工作。
主要包括:网络剪枝、低秩近似、知识蒸馏、网络量化、紧凑网络设计等。Table 5展示了一些代表性工作。

[Transformer]A Survey on Vision Transformer

; 6.1网络剪枝和网络分解

Transformer的预训练模型中,为了捕获不同token之间的依赖关系需要并行计算各个token之间的attention,但是对于特定任务不需要所有的head。 Michel等人就验证了相当大一部分attention head在测试时可以被移除,并不会带来显著的性能下降;同时不同层所需的head数目也不同,有的层一个head就够了。 因此可以通过计算importance head重要性分数选择留下哪些head,去掉冗余的head。
Prasanna等人则是通过投票策略分析了通用任务和特定任务中冗余的部分,发现可以较好解决子任务的模型也在基本的网络模型节骨中,从而减少不相关的FFN层和attention head可以进一步压缩网络模型。
Tang等人则是提出减少输入patch的冗余性来加速计算,依旧可以有效的捕获特征。还有的学者尝试从减少FFN层和attention模块线性映射的维度方面达到网络瘦身的目的。 除了降低网络宽度,还可以从降低网络深度方面考虑,比如网络的层数就可以有效加速推理时间。 但是不像attention可以并行计算,网络层必须顺序计算。
因此Fan等人提出一层丢弃策略,训练时会评估不同层的重要性,对于某些层次在测试时直接移除掉。 Hou等人则是提出一种自适应减少预训练Transformer模型中深度和宽度的策略,这种方法可以同时获得不同大小的多个模型,通过rewiring策略在不同的子网络中共享一些重要的attention head和神经元,从而适应不同计算资源的硬件平台。

6.2知识蒸馏

知识蒸馏主要是通过迁移教师网络的知识来指导学生网络的训练,一般来说学生网络结构更精简,更适合资源受限的一些平台。
Mukherjee等人则是使用与预训练的BERT作为教师网络来指导学生网络处理无标签数据;Wang等人则是训练学生网络self-attention的输入模仿预训练的教师网络,将value点乘的结果作为提取到的知识来指导学生网络的行为。 此外,因为Transformer中不同层(自注意力层、嵌入层、预测层)等都不一样,因此需要设计不同的目标函数才能正确的知识从教师网络迁移到学生网络,比如嵌入层通过MSE loss完成对教师网络的模仿;对于预测层,使用KL散度。

6.3量化

量化是通过减少网络权重及中间特征的表示位数,达到压缩网络规模的目的。在通用的神经网络压缩策略中已经对量化策略进行了较为详细的讨论和研究,近期一大研究热门方向则是对Transformer进行定制化量化。
Shridhar等人建议将输入编码成为二进制告我向量,然后使用这些输入训练BNN;Cheong等人则是将transformer的权重使用低比特量化(4bit);Zhao等人则是探究了不同的量化策略,最后发现k-means效果最佳;Prato等人则验证了8bit量化的trnasformer模型在翻译任务中不会带来任何精度损失;Liu等人则是使用了训练后量化策略(post-training)减少对存储和计算的需求。

6.4紧凑结构设计

除了将定义好的Transformer压缩或量化成更精简的网络,另一种策略是从设计之初就遵循紧凑的设计原则。Jiang等人通过使用span-based dynamic convolution来简化self-attention的计算,FIG 15展示了span-based dynamic convolution的计算流程,将不同token局部依赖的计算通过卷积计算,比使用FC更高效;还有使用深度可分离卷积进一步简化计算的。

[Transformer]A Survey on Vision Transformer

此外还有借助矩阵分解的思路来简化self-attention层的计算;借助NAS自动搜索如何组合不同的components。
如Li等人探索以一种自监督的搜索策略,搜索到了一种由卷积模块和self-attention模块组成的复合结构。 Transformer中的计算量主要在于self-attention中药计算不同输入之间的点积,时间复杂度为O(N),N为序列长度,因此处理长序列时效率低下。因此Katharopoulos等人提出将self-attention的线性点乘进行映射,通过RNN找到不同token之间的关系。Zaheer等人则是将每一个token视作图中的一个顶点,将不同token的内积结果作为顶点之间的边,然后基于图论将问题转化为密集图的计算问题。

[Transformer]A Survey on Vision Transformer

小结:
Fig 16以图表的形式展示了精简Transformer的一些方向,其中剪枝和分解类方法通常针对的是有一定冗余的网络;其中剪枝针对的是transformer内部的一些组件,如层数、head数目;分解则是将原始的矩阵分解为众多更小的矩阵。 紧凑型网络设计则既可以手动设计也可以自动搜索,搜索出的网络还可以通过量化进一步压缩。

; Section V 计算机视觉中的self-attention

self-attention是Transformer至关重要的一个环节,self-attention也可以被认为是CNN中一个基础模块,可以用于捕获长程依赖信息,增强视觉任务中的高级语义特征。
图像分类
分类任务中使用的注意力可分为两类:hard attention和soft attention.

hard attention:硬注意力 在注意力分布中以某种采样策略选取部分分量
soft attention:软注意力 在注意力分布找那个保留所有分量做加权
Ba等人首次提出视觉注意力(visual attention)这一概念,使用注意力来选择输入图像中相关的位置和区域,这样可以有效减少计算量;
在AG-CNN中则是提出基于计算出的注意力对输入的图像进行裁剪,用裁剪的子区域进行分类;而SE-Net则是提出通道注意力的概念,即重新根据卷积特征计算不同通道的权重,这属于一种软注意力。
语义分割
PSANet,OCNet,DANet,CFNet等工作都将自注意力模块用于语义分割任务。DANet同时在空间和通道维度计算自注意力;DGCNet则使用两个图CNN来计算空间和特征相似性。 除此之外还有从减少计算量方面进行探索的。如CGNL通过泰勒级数来近似计算像素之间的相似性;CCNet则是通过两个连续的交叉注意力模型来近似self-attention的计算。
目标检测
Ramachandran提出了一个基于注意力的层,并结合卷积层建立了一个全注意力的detector在COCO数据集上做目标检测,性能超过了RetinaNet. 传统的目标检测算法通常利用单一的视觉表示来做预测,如bbox或者角点。Hu等人则通过自注意力同时计算对象之间的外表特征的相互作用;RelationNet++则将不同的视觉特征计算self-attention进行融合,将主要特征看做是query然后将其他表征看做要匹配的k,使用这种增强后的特征可以更好的携带各种信息进行检测。
其他视觉任务
Zhuang等人提出一个分辨率级别的注意力模块来增强特征图,这样可以在训练不同分辨率网路时获得更精确的人体关键点位置,从而进行姿态识别。 Chang等人则是基于注意力进行特征融合,目的也是为了提升人体关键点检测模型。

Section VI 结语

6.1挑战

虽然Transformer已经应用于 诸多计算机视觉任务,但这只是万里长征第一步,仍有进一步研究的广阔天地。比如ViT遵循了trnasformer在NLP领域中的基本结构,但是针对CV任务的改进仍有待进一步探索。同时还可以研究将Transformer应用于本文中未提及的其他视觉任务。
此外,将Transformer应用于CV的泛化性、鲁棒性仍然十分具有挑战性。因为原始Transformer缺乏一些先验知识的输入、高度依赖于大型数据集的训练,因此数据质量会严重影响Transformer模型的乱并行和泛化性。虽然一些预训练后的模型在CIFAR和VTAB等数据集上取得了较好的结果,但是仍然需要进一步探索预训练后泛化性能更好、鲁棒性更佳的模型。
此外,Transformer在CV任务中有效的原因仍缺乏可解释性,目前的研究大多通过实验结果进行一些直观的解释。 如何设计更高效的Transformer也是一个值得探索的方向。比如基础的ViT为一百八十亿FLOPs,而GhostNet在达到相似性能下仅为六亿FLOPs。以及能用于NLP的简化计算的方法也不适合于CV。因此迫切需要更高效的Transformer从而可以用于资源受限的一些设备上。

6.2展望未来

(1)设计更高效、更有效的Transformer模型。 尤其是高性能低功耗的模型,更适合实际应用场景。
(2)设计综合性的Transformer模型。
目前大多Transformer只能解决某个任务或特定一类任务。在NLP领域,如GPT-3已经实现了一个模型处理多个任务;CV领域IPT已经可以处理多个基础视觉任务,如超分辨率、图像去噪和图像修复。因此继续探究处理多种任务的综合模型仍是一个值得研究的方向。
目前CV领域存在多种网络架构,如CNN,RNN,Transformer。其中CNN善于捕获局部特征,ViT则在大型数据集上表现良好,善于捕获长程依赖关系,因此未来一个值得探索的是到底使用CNN还是Transformer。
在大型数据集上训练后,Transformer在NLP.CV等领域均取得了优异的性能。这启发我们,是否大数据比归纳偏差、先验知识等对网络更为重要。
最后,留一个问题供读者思考:是否能够通过简单的计算(如仅使用全连接层)搭建起的Transformer,但经过海量数据的训练,就达到令人满意的效果呢?

Original: https://blog.csdn.net/qq_37151108/article/details/120790854
Author: 黄小米吖
Title: [Transformer]A Survey on Vision Transformer

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531325/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球