transformer最早应用于自然语言处理领域,是一种主要基于自注意机制的深度神经网络。由于其强大的表示能力,研究人员正在寻找将transformer应用于计算机视觉任务的方法。在各种可视化基准测试中,基于transformer的模型的性能类似于或优于其他类型的网络,如卷积和循环神经网络。由于transformer具有较高的性能和较少的视觉特异性感应偏置(inductive bias)需求,越来越受到计算机视觉界的关注。
在本文中,我们通过对这些视觉transformer模型在不同任务中的分类,并分析它们的优缺点,对它们进行了综述。我们探讨的主要类别包括主干网络、高/中级视觉、低级视觉和视频处理。我们还包括高效的transformer方法,将transformer推向实际的基于设备的应用程序。此外,我们还简要介绍了计算机视觉中的自注意机制,它是transformer的基础部件。在本文的最后,我们讨论了视觉transformer面临的挑战,并提出了进一步的研究方向。
论文地址:[2012.12556] A Survey on Vision Transformer (arxiv.org)
华为诺亚方舟实验室联合北大和悉大整理了业界第一篇视觉Transformer综述入选TPAMI 2022.MindSpore官网
在学习的时候另一篇VIT的综述研究也蛮不错的,[2111.06091] A Survey of Visual Transformers (arxiv.org)
深度神经网络(DNNs)已经成为当今人工智能(AI)系统的基础设施。不同类型的任务通常涉及不同类型的网络。例如,多层感知器(MLP)或全连接(FC)网络是神经网络的经典类型,它由多个线性层和非线性激活叠加在一起。卷积神经网络(cnn)引入了卷积层和池化层来处理平移不变数据,如图像。循环神经网络(RNNs)利用循环单元来处理顺序数据或时间序列数据。transformer是一种新型的神经网络。它主要利用自注意机制来提取内在特征,在人工智能应用中显示出巨大的应用潜力。
Transformer首先应用于自然语言处理(NLP)任务,并取得了显著的改进。例如,[Attention is all you need.]首次针对机器翻译和英语选区解析任务提出了基于注意机制的transformer。[Bert]引入了一种新的语言表示模型,称为BERT(来自transformer的双向编码器表示形式的缩写),它在未标记的文本上预先训练一个transformer,考虑到每个单词的上下文,因为它是双向的。当BERT发布时,它在11个NLP任务上获得了最先进的性能。[Language models are few-shot learners]在45tb的压缩明文数据上使用1750亿个参数预训练了一个名为GPT-3(生成式预训练transformer3的缩写)的基于transformer3的大型模型。它在不需要任何微调的情况下,在不同类型的下游自然语言任务上取得了强大的性能。这些基于transformer3的模型具有很强的表示能力,在自然语言处理方面取得了重大突破。
受NLP领域transformer架构的重大成功的启发,研究人员最近将transformer应用于计算机视觉(CV)任务。在视觉应用中,CNN被认为是的基本组件,但现在transformer显示它是CNN的潜在替代品。[Generative pretraining from pixels]训练了一个序列transformer来自回归预测像素,实现了与cnn在图像分类任务上相当的结果。另一种视觉transformer模型是ViT,它直接对图像补丁序列应用纯transformer对完整图像进行分类。Dosovitskiy等人最近提出[End-to-end object detection with transformers],它已经在多个图像识别基准上实现了最先进的性能。除了图像分类,transformer还被用于解决各种其他视觉问题,包括物体检测[Deformable detr],语义分割[Rethinking semantic segmentation from a sequence-tosequence perspective with transformers],图像处理和视频理解。由于其出色的性能,越来越多的研究人员提出了基于transformer的模型来改善广泛的视觉任务。
由于基于transformer的视觉模型的数量迅速增加,跟上新进展的速度变得越来越困难。因此,迫切需要对现有工程进行勘测,这对社会是有益的。在这篇论文中,我们重点提供了视觉transformer的最新进展的全面概述,并讨论了进一步改进的潜在方向。为了便于今后对不同主题的研究,我们根据应用场景对transformer模型进行分类,如下表所示。主要包括骨干网络、高/中水平视觉、低水平视觉和视频处理。高级视觉处理的是对图像中所看到的东西的解释和使用,而中级视觉处理的是如何将这些信息组织成我们所体验到的物体和表面。
鉴于在基于dnn的视觉系统,高级和中级视力之间的差距越来越模糊,我们在这里将它们作为一个单独的类别来对待。解决这些高/中级视觉任务的transformer模型的一些例子包括DETR,用于物体检测的可变形DETR和用于分割的Max-DeepLab。低级图像处理主要处理从图像中提取描述(这些描述通常表示为图像本身)。底层图像处理的典型应用包括超分辨率、图像去噪和风格转移。目前,只有[Pre-trained image processing transformer]、[Image transformer]少数作品在低级视觉中使用transformer,产生了进一步调查的需要。另一类是视频处理,这是计算机视觉和基于图像的任务的重要组成部分。由于视频的顺序特性,transformer天生就非常适合用于视频任务,在这些任务中,transformer的性能开始与传统的cnn和rnn相当。在这里,我们调查了与基于transformer的可视化模型相关的工作,以跟踪这一领域的进展。下图显示了视觉转换器的开发时间表——毫无疑问,在未来会有更多的里程碑。
本文的其余部分组织如下。第二节讨论了标准transformer的制定和自注意机制。第4节是本文的主要部分,总结了骨干视觉、高/中水平视觉、低水平视觉和视频任务的视觉transformer模型。我们还简要介绍了有效的transformer方法,因为它们与我们的主要主题密切相关。在最后一部分,我们给出了我们的结论,并讨论了几个研究方向和挑战。由于篇幅限制,我们在补充材料中描述了NLP中transformer的方法,因为研究经验可能对视觉任务有帮助。在补充材料中,我们还回顾了CV作为视觉transformer模型补充的自注意机制。在本次调查中,由于arXiv上预印本作品较多,篇幅有限,无法全部收录,所以我们主要选取了代表性作品。
如何将 Transformer 应用于计算机视觉(CV)任务,引起了越来越多研究人员的兴趣。在过去很长一段时间内,CNN 成为视觉任务中的主要模型架构,但如今 Transformer 呈现出巨大的潜力,有望在视觉领域中打败 CNN 的霸主地位。谷歌提出了 ViT 架构,首先将图像切块,然后用纯 Transformer 架构直接应用于图像块序列,就能完成对图像的分类,并在多个图像识别基准数据集上取得了优越的性能。
除图像分类任务之外,Transformer 还被用于解决其他视觉问题,包括目标检测(DETR),语义分割(SETR),图像处理(IPT)等等。由于其出色的性能,越来越多的研究人员提出了基于 Transformer 的模型来改进各种视觉任务。为了让大家对视觉 Transformer 在这两年的飞速发展有一个清晰的感受,上图展示了视觉 Transformer 的发展里程碑,从图像分类到目标检测,从图片生成到视频理解,视觉 Transformer 展现出了非常强的性能。
transformer首先用于机器翻译任务的自然语言处理(NLP)领域。如下图所示,它由一个编码器和一个解码器以及几个具有相同架构的transformer块组成。编码器生成输入的编码,而解码器获取所有编码并使用它们所包含的上下文信息来生成输出序列。每个transformer块由多头注意层、前馈神经网络、快捷连接和层归一化组成。下面,将详细描述transformer的每个组件。
在自我注意层,首先将输入向量转换为三个不同的向量:查询向量q、键向量k和值向量v,维数dq = dk = dv = dmodel = 512。然后将不同输入得到的V向量打包成Q、K、V三个不同的矩阵,计算不同输入向量之间的注意力函数如下(如图左):
步骤1:用 S = Q ⋅ K T S = Q·K^T S=Q⋅KT计算不同输入向量之间的得分;
步骤2:将梯度稳定性分数归一化, S n = S / d k S_n = S/\sqrt{d_k} Sn=S/dk;
步骤3:用softmax函数 P = s o f t m a x ( S n ) P = softmax(S_n) P=softmax(Sn)将得分转化为概率;
步骤4:得到 Z = P ⋅ V Z = P·V Z=P⋅V的加权值矩阵。
该过程可以统一为一个函数:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q ⋅ K T d k ) ⋅ V , ( 1 ) Attention(Q,K,V)=softmax(\frac{Q·K^T}{\sqrt{d_k}})·V,(1) Attention(Q,K,V)=softmax(dkQ⋅KT)⋅V,(1)
公式1背后的逻辑很简单。步骤1计算每对不同向量之间的分数,这些分数决定了我们在当前位置编码单词时给予其他单词的注意程度。步骤2将分数归一化以增强梯度稳定性以改进训练,步骤3将分数转换为概率。最后,每个值向量乘以概率的和。具有较大概率的V向量从以下层获得额外的关注。
解码器模块中的编码器-解码器注意层与编码器模块中的自注意层类似,但有以下例外:关键矩阵K和值矩阵V源自编码器模块,查询矩阵Q源自上一层。
请注意,前面的过程对每个单词的位置都是不变的,这意味着自我注意层缺乏捕获句子中单词位置信息的能力。然而,语言中句子的顺序性质要求我们在编码中包含位置信息。为了解决这个问题,并允许获得单词的最终输入向量,将维度为dmodel的位置编码添加到原始输入嵌入中。具体来说,该位置由以下公式编码:
P E ( p o s , 2 i ) = s i n ( p o s 1000 0 2 i / d m o d e l ) , ( 2 ) P E ( p o s , 2 i + 1 ) = c o s ( p o s 1000 0 2 i / d m o d e l ) , ( 3 ) PE(pos,2i)=sin(\frac{pos}{10000^{2i/d_{model}}}),(2)\\ PE(pos,2i+1)=cos(\frac{pos}{10000^{2i/d_{model}}}),(3)\\ PE(pos,2i)=sin(100002i/dmodelpos),(2)PE(pos,2i+1)=cos(100002i/dmodelpos),(3)
其中pos表示单词在句子中的位置,i表示位置编码的当前维度。通过这种方式,位置编码的每个元素都对应于一个正弦信号,并且它允许transformer模型在推理过程中学习通过相对位置来参与并外推到更长的序列长度。除了vanilla transformer中的固定位置编码外,各种模型[Bert]、[vit]中还使用了习得的位置编码和相对位置编码。
多头的注意。多头注意是一种机制,可以用来提高原本自我注意层的性能。请注意,对于一个给定的参考词,我们在读句子时经常想要关注其他几个词。单头自我注意层限制了我们专注于一个或多个特定位置而不影响同时关注其他同等重要位置的能力。这是通过赋予注意层不同的表示子空间来实现的。具体来说,不同的头部使用不同的查询矩阵、键矩阵和值矩阵,这些矩阵由于随机初始化,可以在训练后将输入向量投影到不同的表示子空间中。
为了更详细地说明这一点,给定一个输入向量和正面数h,输入向量首先转换为三个不同的向量组:查询组、键组和值组。每组中有h个维数为 d q ′ = d k ′ = d v ′ = d m o d e l / h = 64 d_{q'} = d_{k'}=d_{v'}= d_{model}/h = 64 dq′=dk′=dv′=dmodel/h=64的向量。从不同输入得到的向量被打包成三组不同的矩阵: { Q i } i = 1 h , { K i } i = 1 h , { V i } i = 1 h \{Q_i\}^h_{i=1},\{K_i\}^h_{i=1},\{V_i\}^h_{i=1} {Qi}i=1h,{Ki}i=1h,{Vi}i=1h。多头注意过程如下所示:
前馈网络。在每个编码器和解码器的自注意层之后应用前馈网络(FFN)。它由两个线性变换层和其中的一个非线性激活函数组成,可记为如下函数:
F F N ( X ) = W 2 σ ( W 1 X ) , ( 5 ) FFN(X)=W_2σ(W_1X),(5) FFN(X)=W2σ(W1X),(5)
其中W1和W2为两个线性变换层的两个参数矩阵,σ为非线性激活函数,如GELU。隐层维数dh = 2048。
编码器和解码器中的残差连接。如transformer图所示,在编码器和解码器的每个子层中都添加了一个残差连接。这加强了信息的流动,以实现更高的性能。在残差连接之后进行层归一化。这些操作的输出可以描述为:
这里X作为自注意层的输入,查询矩阵、键矩阵和值矩阵Q、K和V都是从同一个输入矩阵X中导出的。另一种被广泛使用的可变的层前归一化(Pre-LN)。Pre-LN插入层归一化内的残差连接和前多头注意或FFN。对于规范化层,有几个替代方案,如批量规范化。批量归一化通常在transformer上应用时表现较差,因为特征值变化剧烈。为了改进transformer的训练,还提出了[Understanding and improving layer normalization]、[Rethinking batch normalization in transformers]、[Rezero is all you need: Fast convergence at large depth]等归一化算法。
解码器的最后一层。解码器中的最后一层用于将向量堆栈转换回一个单词。这是通过一个线性层和一个softmax层来实现的。线性层将向量投影到具有dword维数的logits向量中,其中dword是词汇表中的单词数。然后使用softmax层将对数向量转换为概率。
当用于CV任务时,大多数transformer采用原装transformer的编码器模块。这种transformer可以看作是一种新型的特征提取器。与cnn只关注局部特征相比,transformer可以捕获长距离特征,这意味着它可以很容易地获得全局信息。相对于rnn的隐藏状态必须按顺序计算,transformer的效率更高,因为自注意层和全连接层的输出可以并行计算,易于加速。由此可见,进一步研究transformer在计算机视觉和自然语言处理中的应用将会产生有益的结果。
受到transformer在NLP领域取得的成功的启发,一些研究人员探索了类似的模型是否可以学习图像的有用表示。考虑到与文本相比,图像涉及更多的维度、噪声和冗余模态,它们被认为更难以进行生成建模。
除cnn外,transformer还可作为图像分类的骨干网络。Wu等[Visual transformers: Token-based image representation and processing for computer vision]采用ResNet作为方便的基线,并使用视觉transformer来取代卷积的最后一阶段。具体来说,它们应用卷积层来提取低级特征,然后将这些特征输入视觉transformer。对于视觉transformer,他们使用标记器将像素分组为少量视觉标记,每个标记代表图像中的一个语义概念。这些视觉标记直接用于图像分类,transformer用于对标记之间的关系建模。如下图所示,工作可以分为单纯使用transformer进行视觉和将CNN与transformer结合。
在下表和图6中总结了这些模型的结果,以演示主干的开发。除了监督学习,自监督学习也在vision transformer中进行了探索。
Pure Transformer
ViT。(Vision Transformer, ViT)是一种直接应用于图像补丁序列的纯transformer,用于图像分类任务。它尽可能地遵循transformer的原始设计。下图显示了ViT的框架。
The framework of ViT
为了处理2D图像,将图像 X ∈ R h × w × c X∈\R^{h×w×c} X∈Rh×w×c重塑为一组平缩的2D补丁 X p ∈ R n × ( p 2 ⋅ c ) X_p∈\R^{n×(p^2·c)} Xp∈Rn×(p2⋅c)序列,其中c为通道数。(h, w)为原始图像的分辨率,(p, p)为每个图像补丁的分辨率。trnasformer的有效序列长度因此为 n = h w / p 2 n = hw/p^2 n=hw/p2。由于transformer在其所有层中使用恒定的宽度,一个可训练的线性投影将每个矢量化路径映射到模型维度d,其输出称为补丁嵌入。
类似于BERT的[class]令牌,一个可学习的嵌入应用于嵌入补丁的序列。这种嵌入的状态作为图像表示。在预训练和微调阶段,分类头的大小都是相同的。此外,为了保留位置信息,在补丁嵌入的基础上增加了一维位置嵌入。值得注意的是,ViT只使用标准transformer的编码器(层归一化的地方除外),其输出在MLP磁头之前。在大多数情况下,ViT是在大型数据集上进行预训练的,然后对使用较小数据的下游任务进行微调。
当在ImageNet等中型数据集上训练时,ViT会产生适度的结果,其准确度比同等规模的ResNets低几个百分点。由于transformer缺乏一些cnn固有的归纳偏差——例如平移等效方差和局部性——当在数据量不足的情况下训练时,它们不能很好地泛化。然而,作者发现在大型数据集(1400万至3亿张图像)上训练模型超过了归纳偏差。当在足够的规模上进行预训练时,trnasformer在数据点较少的任务上取得了优异的结果。例如,在JFT-300M数据集上进行预训练时,ViT在多个图像识别基准测试中接近甚至超过了最先进的性能。具体来说,它在ImageNet上达到了88.36%,在VTAB套件的19个任务上达到了77.16%。
Touvron等提出了一种具有竞争力的无卷积transformer,称为数据高效图像transformer(DeiT),仅在ImageNet数据库上进行训练。DeiT-B是参考视觉transformer,具有与ViT-B相同的架构,并使用8600万个参数。凭借强大的数据增强,DeiTB在没有外部数据的情况下,在ImageNet上实现了83.1%(单作物评价)的顶级精度。此外,作者观察到,使用CNN教师比使用transformer提供更好的性能。DeiT-B在基于令牌的蒸馏的帮助下,可以达到top-1的精度84.40%。
ViT的变体。在此基础上,针对视觉任务的性能问题,提出了一系列ViT的改进方法。主要的方法有增强局部性、提高自身关注度和网络结构设计。
原始视觉transformer擅长捕捉斑块之间的长期依赖关系,但忽略了局部特征提取,因为二维斑块被投影到一个简单的线性层向量。近年来,研究人员开始关注提高局部信息,的建模能力。TNT进一步将补丁划分为许多子补丁,并引入了一种新的transformer中transformer架构,该架构利用内部transformer块来建模子补丁与外部transformer块之间的关系,用于补丁级信息交换。Twins和CAT逐层交替执行局部注意和全局注意。Swin transformer在窗口内执行局部注意,并为跨窗口连接引入了移位窗口分区方法。Shuffle Transformer进一步利用空间Shuffle操作而不是移动窗口分区来允许跨窗口连接。RegionViT从图像生成区域令牌和局部令牌,局部令牌通过对区域令牌的关注接收全局信息。除了局部关注,还有一些研究提出通过局部特征聚合来增强局部信息,如T2T。这些工作证明了视觉transformer中局部信息交换和全局信息交换的好处。
自注意层作为transformer的关键组成部分,提供了图像块之间全局交互的能力。改进自我注意层的计算方法吸引了许多研究者。DeepViT提出建立十字头通信,重新生成注意图,增加不同层次的多样性。KVT引入了k-NN注意,利用图像补丁的局地性,通过只计算top-k相似令牌的注意来忽略噪声令牌。Refiner探索了高维空间中的注意力扩展,并应用卷积来增强注意力地图的局部模式。XCiT执行跨特征通道而不是令牌的自注意计算,这允许高效处理高分辨率图像。自注意机构的计算复杂度和注意精度是今后优化的两个重点。
在cnn领域,网络架构是一个重要的因素。ViT的原始架构是相同形状的transformer块的简单堆栈。视觉transformer的新架构设计一直是一个有趣的话题。金字塔式架构被许多视觉transformer模型使用,包括PVT, HVT , Swin transformer和PiT。还有其他类型的体系结构,如双流体系结构和U-net体系结构。神经结构搜索(NAS)也被用于搜索更好的transformer架构,例如scale - vit、ViTAS、AutoFormer和GLiT。目前,视觉transformer网络设计和NAS主要借鉴了CNN的经验。在未来,期待在视觉转换器领域出现具体而新颖的架构。
除了上述方法外,还有一些方向可以进一步改进视觉transformer,如位置编码、归一化策略、快捷连接和消除注意。
尽管由于视觉Transformer能够捕获输入中的长期依赖关系,因此已成功应用于各种视觉任务,但在性能上,Transformer与现有的cnn之间仍存在差距。一个主要原因可能是缺乏提取本地信息的能力。除了上面提到的增强局部性的ViT变体外,将Transformer与卷积结合起来可以更直接地将局部性引入传统Transformer。
有很多工作试图用卷积来增强传统的Transformer块或自注意层。例如,CPVT提出了一种条件位置编码(CPE)方案,该方案以输入标记的局部邻域为条件,可适应任意输入大小,以利用卷积进行精细级特征编码。CvT , CeiT , LocalViT和CMT分析了当直接从NLP借用Transformer架构并将卷积与Transformer结合在一起时的潜在缺陷。具体来说,每个Transformer块中的前馈网络(FFN)与促进相邻令牌之间相关性的卷积层相结合。LeViT回顾了大量cnn文献中的原理,并将其应用于Transformer,提出了一种用于快速推断图像分类的混合神经网络。BoTNet在ResNet的最后三个瓶颈块中用全局自注意取代了空间卷积,并在实例分割和对象检测任务的基线上以最小的延迟开销显著改进。
此外,有研究表明,基于Transformer的模型更难具有较好的拟合数据的能力,也就是说,它们对优化器、超参数的选择以及训练的时间表很敏感。Visformer通过两种不同的训练设置揭示了Transformer和cnn之间的差距。第一个是cnn的标准设置,即训练时间较短,数据增强只包含随机裁剪和水平翻转。另一个是[DeiT]中使用的训练设置,即训练计划更长,数据增强更强。[Early convolutions help transformers see better]通过将ViT的嵌入茎替换为标准卷积茎,改变了ViT的早期视觉处理,并发现这一改变可以使ViT更快地收敛,并使AdamW或SGD的使用在精度上没有显著下降。除了这两个作品,[Cmt],[Levit]还选择在transformer顶部增加卷积stem。
基于生成的方法。生成式图像预训练方法已经存在很长时间。[Generative pretraining from pixels]重新检验了这类方法,并将其与自监督方法相结合。在此之后,一些工作被提出扩展基于生成的自监督学习的视觉transformer。
我们简要介绍了iGPT的作用机制。这种方法包括一个预训练阶段,然后是一个微调阶段。在训练前阶段,探索了自回归和BERT目标。为了实现像素预测,采用序列transformer架构代替语言标记(如NLP中使用的那样)。当与早期停止结合使用时,预训练可以被认为是一个有利的初始化或正则化器。在微调阶段,他们向模型添加了一个小的分类头。这有助于优化分类目标并适应所有权重。
通过k-means聚类将图像像素转化为序列数据。给定一个由高维数据 X = ( x 1 , ⋅ ⋅ ⋅ , x n ) X = (x_1,···,x_n) X=(x1,⋅⋅⋅,xn)组成的未标记数据集X,他们通过最小化数据的负对数似能来训练模型:
L A R = E x ~ X [ − l o g p ( x ) ] , ( 7 ) L_{AR}=E_{x~X}[-logp(x)],(7) LAR=Ex~X[−logp(x)],(7)
其中p(x)为图像数据的概率密度,可建模为:
p ( x ) = p ( x π i ∣ x π 1 , . . . , x π i − 1 , θ ) , ( 8 ) p(x)=p(x_{\pi_i}|x_{\pi_1},...,x_{\pi_{i-1}},\theta),(8) p(x)=p(xπi∣xπ1,...,xπi−1,θ),(8)
这里对 1 ≤ i ≤ n 1\leq i\leq n 1≤i≤n采用单位置换 π i = i π_i = i πi=i,也称为光栅序。Chen等人还考虑了BERT目标,它对子序列M [1,n]进行采样,使得每个指标i独立地在M中出现的概率为0.15。M被称为BERT掩码,并且通过最小化“被掩”元素 x M x_M xM的负对数似然,以“未被掩”元素 x [ 1 , n ] M x[1,n]\ M x[1,n] M为条件来训练模型:
L B E R T = E x − X E M ∑ i ∈ M [ − l o g P p ( x i ∣ x [ 1 , n ] M ) ] , ( 9 ) L_{BERT}=E_{x-X}E_M\sum_{i\in M}[-logPp(x_i|x[1,n]\ M)],(9) LBERT=Ex−XEMi∈M∑[−logPp(xi∣x[1,n] M)],(9)
在预训练阶段,他们选择 L A R L_{AR} LAR或 L B E R T L_{BERT} LBERT,并将预训练数据集的损失最小化。
使用transformer译码块的GPT-2公式。为了确保在训练AR目标时进行适当的调节,Chen等人将标准上三角掩码应用于n × n的注意logits矩阵。使用BERT目标时不需要注意logit掩蔽:Chen等人将内容嵌入应用到输入序列后的位置归零。在最后的transformer层之后,他们应用一个层范数,并从输出中学习一个投影,以参数化每个序列元素的条件分布。当训练BERT时,他们简单地忽略了未隐藏位置的日志。
在微调阶段,他们将最终层归一化层在序列维度上的输出平均汇集起来,以提取每个示例的d维特征向量。他们学习从集合特征到类logits的投影,并使用这个投影来最小化交叉熵损失。实际应用表明,交叉熵损失和预训练损失联合目标(LAR或LBERT)效果更好。
iGPT和ViT是将transformer应用于视觉任务的两个开创性工作。iGPT与类vitt模型的区别主要在于3个方面:
iGPT的输入是聚类像素的调色板序列,而ViT则将图像统一划分为若干局部斑块;
iGPT的架构是一个编码器-解码器框架,而ViT只有transformer编码器;
iGPT采用自回归自监督损失进行训练,ViT采用监督图像分类任务进行训练。
基于对比学习的方法。对比学习是目前最流行的计算机视觉自监督学习方式。将对比学习应用于视觉transformer进行无监督预训练
Chen等[An empirical study of training self-supervised vision transformers.]研究了几个基本成分对训练自我监督ViT的影响。作者观察到,不稳定性是降低准确性的一个主要问题,这些结果确实是部分失败,当训练变得更加稳定时,它们可以得到改善。他们引入了“MoCo v3”框架,这是MoCo的增量改进。具体来说,作者在随机数据增强下对每张图像进行两次裁剪。它们由两个编码器fq和fk编码,输出向量q和k。直观地说,q表现得像一个“查询”,学习的目标是检索相应的“键”。这被表述为最小化一个对比损失函数,可以写成:
L q = − l o g e x p ( q ⋅ k + / τ ) e x p ( q ⋅ k + / τ ) + ∑ k − e x p ( q ⋅ k + / τ ) , ( 10 ) \mathcal{L}_q=-log\frac{exp(q·k^+/\tau)}{exp(q·k^+/\tau)+\sum_{k-}exp(q·k^+/\tau)},(10) Lq=−logexp(q⋅k+/τ)+∑k−exp(q⋅k+/τ)exp(q⋅k+/τ),(10)
这里k+是fk和q在同一图像上的输出,称为q的正样本。集合k−由fk的来自其他图像的输出组成,称为q的负样本。τ是l2归一化q, k的温度超参数。MoCo v3使用自然共存于同一批处理中的键,并放弃内存队列,他们发现如果批处理足够大(例如4096),其增益会递减。通过这种简化,可以以一种简单的方式实现对比损失。编码器fq由一个主干(如ViT)、一个投影头和一个额外的预测头组成;编码器fk有骨架和投影头,没有预测头。Fk由fq的移动平均值更新,不包括预测头。
MoCo v3表明,不稳定性是训练自监督ViT的主要问题,因此他们描述了一个简单的技巧,可以在各种实验情况下提高稳定性。他们观察到,没有必要训练补丁投影层。对于标准ViT补丁大小,补丁投影矩阵是完整的或过完整的。在这种情况下,随机投影应该足以保留原始斑块的信息。然而,这个技巧缓解了问题,但没有解决问题。如果学习率过大,模型仍可能不稳定,第一层不太可能是不稳定的根本原因。
传统的目标检测主要建立在cnn的基础上,而基于transformer的目标检测由于其优越的性能,近年来受到了广泛的关注。
一些目标检测方法尝试利用transformer的自注意机制,然后对现代探测器的特定模块进行增强,如特征融合模块和预测头。我们将在补充材料中讨论这个问题。基于transformer的对象检测方法大致分为两类:基于transformer的集合预测方法和基于transformer的骨干方法,如下图所示。
与基于cnn的检测器相比,基于transformer的方法在精度和运行速度上都表现出了强大的性能。下表显示了之前在COCO 2012 val集上提到的不同基于transformer的目标检测器的检测结果。
基于transformer的检测集预测。Carion等提出的检测transformer(DETR)是基于transformer的检测方法的先驱,它重新设计了目标检测的框架。DETR是一种简单且完全端到端的对象检测器,它将对象检测任务视为直观的集预测问题,消除了传统手工制作的组件,如锚生成和非最大抑制(NMS)后处理。如图所示,DETR从CNN主干开始,从输入图像中提取特征。为了用位置信息补充图像特征,在将特征输入编码器-解码器转换器之前,将固定的位置编码添加到平坦的特征中。解码器使用来自编码器的嵌入以及N个学习的位置编码(对象查询),并产生N个输出嵌入。这里N是一个预定义的参数,通常大于图像中对象的数量。
DETR是一种基于transformer的对象检测框架的新设计,允许社区开发完整的端到端检测器。然而,原始的DETR提出了几个挑战,具体来说,较长的训练计划和小对象的性能较差。为了解决这些挑战,Zhu等提出了Deformable DETR,该方法已成为一种流行的方法,显著提高了检测性能。变形注意模块关注参考点周围的一小组关键位置,而不是像transformer中原始的多头注意机制那样关注图像特征图上的所有空间位置。这种方法极大地降低了计算复杂度,并带来了快速收敛的好处。更重要的是,可变形的注意力模块可以很容易地应用于多尺度特征的融合。变形DETR比DETR的训练成本低10倍,推理速度快1.6倍。通过迭代边界盒细化方法和两阶段方案,可变形DETR可以进一步提高检测性能。
对于原有的DETR慢收敛问题,也有几种处理方法。例如,Sun等人研究了DETR模型收敛缓慢的原因,发现这主要是由于transformer译码器中的交叉注意模块。为了解决这个问题,提出了一个编码器版本的DETR,在检测精度和训练收敛方面取得了相当大的改进。此外,为了提高训练稳定性和收敛速度,设计了一种新的二部匹配方案,并提出了两种基于transformer的集预测模型,即TSP-FCOS和TSP-RCNN,利用特征金字塔改进了纯编码器的DETR。与原有的DETR模型相比,新模型具有更好的性能。Gao等人提出了空间调制共同注意(SMCA)机制,通过约束共同注意响应在最初估计的边界盒位置附近较高来加速收敛。通过将所提出的SMCA模块集成到DETR中,可以在相似的推理成本下,以大约10倍的训练周期获得类似的mAP。
考虑到与DETR相关的高计算复杂度,Zheng等提出了一种自适应聚类转换器(Adaptive Clustering Transformer, ACT)来降低预训练DETR的计算成本。ACT使用局部敏感性哈希(LSH)方法自适应地对查询特征进行聚类,并将注意力输出广播给由所选原型表示的查询。ACT替代了预训练的DETR模型的自我注意模块,不需要再训练。这种方法大大降低了计算成本,但精度略有下降。通过使用多任务知识蒸馏(MTKD)方法,可以进一步降低性能下降,该方法利用原始转换器通过几次微调来蒸馏ACT模块。Yao等指出DETR中随机初始化是要求多解码器层且收敛速度慢的主要原因。为此,他们提出了高效的DETR,通过额外的区域建议网络将密集先验合并到检测管道中。更好的初始化使他们能够只使用一个解码器层而不是六层,从而在更紧凑的网络中实现具有竞争力的性能。
基于transformer的检测骨干。与DETR不同,DETR将对象检测重新设计为通过transformer的一组预测任务,Beal等人提出利用transformer作为常用检测框架(如Faster RCNN)的骨干。将输入图像分成若干块,送入视觉transformer,根据空间信息对输出的嵌入特征进行重组,再通过检测头得到最终结果。大规模的预训练transformer主干可以为拟议的ViT-FRCNN带来好处。还有很多方法可以探索通用视觉transformer主干设计[Transformer in transformer],[Pyramid vision transformer],[Swin transformer],[Twins],并将这些主干转移到传统的检测框架,如[Focal loss for dense object detection]和Cascade R-CNN。例如,Swin Transformer在ResNet-50骨干网上获得了大约4 box AP增益,对于各种检测框架具有类似的FLOPs。
基于transformer的目标检测预训练。受NLP中预训练transformer方案的启发,人们提出了几种方法来探索不同的基于transformer的目标检测预训练方案。Dai等提出了无监督的目标检测预训练(UP-DETR)。具体而言,提出了一种新的无监督pre text任务——随机查询补丁检测来对DETR模型进行预训练。通过这种无监督的预训练方案,UP-DETR在相对较小的数据集(PASCAL VOC)上显著提高了检测精度。在具有足够训练数据的COCO基准上,UP-DETR仍然优于DETR,证明了无监督预训练方案的有效性。
Fang等人探索了如何将在ImageNet上预训练的纯ViT结构转移到更具挑战性的目标检测任务中,并提出了YOLOS检测器。为了处理目标检测任务,本文提出的YOLOS首先去掉ViT中的分类令牌,并添加可学习的检测令牌。此外,利用二部匹配损失对目标进行集合预测。通过在ImageNet数据集上进行简单的预训练,所提出的YOLOS在COCO基准上显示出具有竞争力的目标检测性能。
分割是计算机视觉领域的一个重要课题,它广泛地包括泛视分割、实例分割和语义分割等。视觉transformer在分割领域也显示出惊人的潜力。
用于全景分割的transformer。DETR可以自然地扩展到全景分割任务,并通过在解码器上附加掩码头来实现具有竞争力的结果。Wang等提出了Max-DeepLab,使用掩码transformer直接预测全景分割结果,而不涉及盒检测等代理子任务。与DETR类似,Max-DeepLab以端到端的方式简化了全景分割任务,并直接预测一组不重叠的掩码和相应的标签。模型训练是使用全景质量(PQ)风格的损失来执行的,但与之前将transformer堆叠在CNN主干之上的方法不同,MaxDeepLab采用了双路径框架,便于将CNN和transformer结合起来。
用于实例分割的transformer。Wang等提出了一种基于transformer的视频实例分割模型VisTR,用于从输入图像序列中产生实例预测结果。提出了一种实例序列匹配策略,将预测结果与真实值相匹配。为了获得每个实例的掩码序列,VisTR利用实例序列分割模块积累多帧的掩码特征,并使用3D CNN对掩码序列进行分割。Hu等人提出了一种实例分割transformer(instance segmentation Transformer, ISTR)来预测低维掩码嵌入,并将其与集损失的ground truth相匹配。ISTR采用一种不同于现有自顶向下和自底向上框架的循环细化策略进行检测和分割。Yang等研究了如何在具有挑战性的多目标场景下实现更好、更有效的嵌入学习来解决半监督视频对象分割问题。一些论文如Fully transformer networks for semantic image segmentation.,Solq: Segmenting objects by learning queries也讨论了使用Transformer来处理分割任务。
用于语义分割的Transformer。Zheng等提出了一种基于Transformer的语义分割网络(SETR)。SETR利用类似于ViT的编码器作为编码器从输入图像中提取特征。采用多级特征聚合模块进行像素级分割。Strudel等引入了segter,它依赖于图像补丁对应的输出嵌入,通过逐点线性解码器或掩码Transformer解码器获得类标签。Xie等人提出了一种简单、高效但功能强大的语义分割框架,该框架将transformer与轻量级多层感知(MLP)解码器结合起来,输出多尺度特征,避免了复杂的解码器。
医学图像分割Transformer。Cao等提出了一种用于医学图像分割的类似unet的纯Transformer,通过将标记化的图像patch输入到基于Transformer的u形编码器-解码器架构中,并使用跳跃连接进行局部全局语义特征学习。Valanarasu等人探索了基于Transformer的解决方案,研究了将基于Transformer的网络架构用于医学图像分割任务的可行性,并提出了一种门控轴向注意力模型,该模型通过在自注意模块中引入额外的控制机制来扩展现有的架构。cell -DETR是基于DETR全视分割模型的一种尝试,它使用transformer对cell实例进行分割。在分割头中增加了连接主干CNN和CNN解码器特征的跳跃式连接,以增强特征融合。cell - detr实现了最先进的性能,从显微镜图像分割细胞实例。
人体姿态和手姿态估计是引起研究界极大兴趣的基础课题。关节姿态估计类似于结构化预测任务,旨在从输入的RGB/D图像中预测关节坐标或网格顶点。这里我们讨论了一些方法,探讨了如何利用transformer对人体姿势和手部姿势的全局结构信息建模。
手部姿态估计transformer。Huang等人提出了一种基于transformer的网络,用于从点集估计3D手位。编码器首先利用PointNet从输入点云中提取逐点特征,然后采用标准的多头自注意模块生成嵌入。为了向解码器公开更多与姿态相关的全局信息,使用pointnet++等特征提取器来提取手关节特征,然后将其作为位置编码输入解码器。同样,Huang等提出了HOT-Net (hand-object transformer network的简称)用于三维手-对象姿态估计。与之前使用transformer从输入点云直接预测3D手的姿态不同,HOT-Net使用ResNet生成初始的2D手-物体姿态,然后将其输入transformer来预测3D手-物体姿态。因此,使用频谱图卷积网络为编码器提取输入嵌入。Hampali等人提出在给定单色图像的情况下估计两只手的3D姿势。具体来说,将一组双手关节的潜在二维位置的外观和空间编码输入transformer,并使用注意机制来整理正确的关节配置并输出双手的三维姿态。
人体姿态估计transformer。Lin等提出了一种网格transformer(METRO),用于从单个RGB图像中预测3D人体姿势和网格。METRO通过CNN提取图像特征,然后通过将模板人网格连接到图像特征上进行位置编码。提出了一种逐步降维的多层transformer编码器,逐步降低嵌入维数,最终生成人体关节和网格顶点的三维坐标。为了鼓励学习人体关节之间的非局部关系,METRO在训练过程中随机屏蔽了一些输入查询。Yang等人基于Transformer架构和低级卷积块构造了一个可解释的模型,名为TransPose。
Transformer中构建的注意层可以捕获关键点之间的长期空间关系,并解释预测的关键点位置高度依赖于什么依赖关系。Li等人提出了一种基于令牌表示的人类姿态估计新方法(TokenPose)。每个关键点都被显式地嵌入为一个令牌,以同时从图像中学习约束关系和外观线索。他们将姿态估计任务制定为序列预测问题,并通过transformer来解决,绕过了基于热图的姿态估计器的缺点。Jiang等人提出了一种基于transformer的新型网络,该网络可以以无监督的方式学习姿态和运动的分布,而不是跟踪身体部位并试图暂时平滑它们。该方法克服了检测的不准确性,纠正了部分或整个骨骼的损坏。Hao等人提出在不使用任何手动注释的情况下,给定一组人的测试图像,对人体姿势估计器进行个性化。该方法利用测试时间内的姿态估计器来挖掘人的特定信息,并使用Transformer模型建立自监督关键点与监督关键点之间的转换。
还有很多不同的高级/中级视觉任务已经探索了视觉trnasformer的使用以获得更好的性能。下面我们简要回顾几个任务。
行人检测。由于遮挡和人群场景中物体的分布非常密集,在将普通检测网络应用于行人检测任务时,往往需要进行额外的分析和适应。Lin等人揭示了当直接将DETR或deable DETR应用于行人检测任务时,解码器中的稀疏统一查询和弱注意域会导致性能下降。为了缓解这些缺点,作者提出了行人端到端检测器(PED),它采用了一种新的译码器,称为密集查询和矫正注意力域(DQRF)来支持密集查询,并缓解查询的噪声或狭窄的注意力域。他们还提出了V-Match,它通过充分利用可见注释实现了额外的性能改进。
车道检测。基于PolyLaneNet , Liu等提出了一种LSTR方法,该方法通过transformer网络学习全局上下文来提高曲线车道检测性能。与PolyLaneNet类似,LSTR将车道检测视为用多项式拟合车道的任务,并使用神经网络预测多项式的参数。为了捕获车道和全局上下文的细长结构,LSTR在体系结构中引入了一个transformer网络。这样可以处理cnn提取的底层特征。此外,LSTR利用匈牙利损耗对网络参数进行优化。LSTR优于PolyLaneNet,精度提高2.82%,参数减少5倍,FPS提高3.65倍。transformer网络、CNN和匈牙利损失的结合最终形成了一个精确、快速、微小的车道检测框架。考虑到整个车道线通常具有细长的形状和长程,Liu等使用transformer编码器结构来更有效地提取上下文特征。这种transformer编码器结构极大地改进了基于上下文特征和全局信息的建议点检测,特别是在骨干网是一个小模型的情况下。
场景图。场景图是对场景的结构化表示,能够清晰地表达场景中的对象、属性以及对象之间的关系。为了生成场景图,现有的大多数方法都是先提取基于图像的对象表示,然后在它们之间进行消息传播。图R-CNN利用自注意来整合图中邻近节点的上下文信息。最近,Sharifzadeh等在提取的对象嵌入上使用了transformer。Sharifzadeh等人提出了一种名为Texema的新管道,并使用预先训练好的文本到文本传输transformer(T5)从文本输入创建结构化图形,并利用它们改进关系推理模块。T5模型使Texema能够利用文本中的知识。
跟踪。一些研究人员还探索了在基于模板的鉴别跟踪器中使用transformer编码器-解码器架构,如TMT、TrTr和TransT。所有这些工作都使用了类似暹罗的跟踪管道来进行视频对象跟踪,并利用编解码器网络来取代显式的互相关操作,以实现全局和丰富的上下文相互依赖。具体地说,transformer编码器和解码器分别分配给模板分支和搜索分支。此外,Sun等人提出了TransTrack,这是一种在线联合检测与跟踪管道。它利用查询键机制来跟踪已存在的对象,并在管道中引入一组学习对象查询来检测新出现的对象。TransTrack在MOT17和MOT20基准上的MOTA分别达到74.5%和64.5%。
重鉴定。He等人提出了TransReID来研究纯变压器在物体再识别(ReID)领域的应用。在将transformer网络引入对象ReID时,TransReID通过重叠切片来保留补丁周围的局部相邻结构,并引入二维双线性插值来帮助处理任何给定的输入分辨率。通过transformer模块和损耗函数,提出了一个强基线,以实现与基于cnn的框架的性能相当的性能。此外,设计了jigsaw patch模块(JPM)来实现目标的摄动不变和鲁棒特征表示,并引入了侧信息嵌入(SIE)来编码侧信息。最终的TransReID框架在人员和车辆ReID基准测试中都达到了最先进的性能。Liu等和Zhang等提出了将transformer网络引入基于视频的人Re-ID的解决方案。同样,它们都是利用分离的transformer网络来细化空间和时间特征,然后利用跨视图transformer来聚合多视图特征。
点云学习。最近也出现了其他一些研究transformer架构用于点云学习的工作。例如,Guo等提出了一种新的框架,将原有的自注意模块替换为更合适的偏移注意模块,该框架包含隐式拉普拉斯算子和归一化细化。此外,Zhao等人设计了一种新型transformer架构,称为点transformer。所提出的自注意层对点集的排列不变性,使其适用于点集处理任务。点转换器在三维点云的语义分割任务中表现出较强的性能。
将transformer模型应用于图像生成任务的一个简单而有效的方法是直接将架构从cnn改为transformer,如下图 (a)所示。Jiang等提出了TransGAN,该TransGAN使用transformer架构构建GAN。由于难以生成像素级的高分辨率图像,因此利用内存友好的生成器在不同阶段逐步增加特征映射分辨率。相应地,设计了一个多尺度鉴别器来处理不同阶段不同大小的输入。介绍了网格自注意、数据增强、相对位置编码和修正归一化等多种训练方法,以稳定训练并提高训练性能。在各种基准数据集上的实验证明了基于transformer的GAN模型在图像生成任务中的有效性和潜力。Kwonjoon Lee等人提出了ViTGAN,它在生成器和鉴别器中引入了几种技术来稳定训练过程和收敛。在自注意模块中引入欧氏距离,增强transformer鉴别器的利普施氏性。提出了自调制层范数和隐式神经表示来加强生成器的训练。因此,ViTGAN是第一个证明基于transformer的GANs可以实现与最先进的基于cnn的GANs相当的性能的工作。
Parmar等提出了Image Transformer,迈出了推广Transformer模型的第一步,以自回归的方式制定图像转换和生成任务。Image Transformer由两部分组成:用于提取图像表示的编码器和用于生成像素的解码器。对于每个值为0 ~ 255的像素,学习256 × d维嵌入,将每个值编码为d维向量,并将其作为输入输入编码器。编码器和解码器采用与[Attention is all you need]相同的架构。每个输出像素q0是通过计算输入像素q与之前生成的像素m1, m2,…之间的自注意来生成的。位置嵌入p1 p2 …对于图像条件生成,例如超分辨率和修补,使用编码器-解码器架构,其中编码器的输入是低分辨率或损坏的图像。对于无条件和类条件生成(即噪声到图像),只有解码器用于输入噪声向量。由于解码器的输入是之前生成的像素(生成高分辨率图像时计算成本较高),因此提出了一种局部自注意方案。该方案仅使用最接近生成的像素作为解码器的输入,使得Image Transformer在图像生成和翻译任务方面的性能与基于cnn的模型相当,证明了基于Transformer的模型在低级视觉任务上的有效性。
由于Transformer模型难以直接生成高分辨率图像,Esser等提出了Taming transformer。驯服Transformer由两部分组成:VQGAN和Transformer。VQGAN是VQVAE的一种变体,它使用鉴别器和感知损失来改善视觉质量。通过VQGAN,图像可以用一系列上下文丰富的离散向量表示,因此这些向量可以很容易地通过自回归的方式被Transformer模型预测。Transformer模型可以学习远程相互作用,生成高分辨率图像。因此,所提出的Taming Transformer在各种图像合成任务上实现了最先进的结果。
除了图像生成,DALL·E提出了文本到图像生成的transformer模型,它根据给定的字幕合成图像。整个框架由两个阶段组成。在第一阶段,利用离散的VAE学习可视码本。在第二阶段,文本通过BPE-encode解码,对应的图像通过第一阶段学习的dVAE解码。然后使用自回归transformer学习编码文本与图像之间的先验。在推理过程中,图像的标记由transformer预测,并由学习的解码器解码。引入CLIP模型对生成的样本进行排序。文本-图像生成任务的实验证明了该模型的强大能力。请注意,我们的调查主要集中在纯视觉任务上,我们不包括上图中的DALL·E框架。
最近的一些工作避免使用每个像素作为transformer模型的输入,而是使用补丁(像素集)作为输入。例如,Yang等提出了用于图像超分辨率的纹理transformer网络(TTSR),将transformer架构应用于基于参考的图像超分辨率问题。它旨在将相关纹理从参考图像转移到低分辨率图像。以低分辨率图像和参考图像分别作为查询Q和关键字K,计算Q中的每个patch qi和K中的ki之间的相关性ri,j为:
r i , j = < q i ∣ ∣ q i ∣ ∣ , k i ∣ ∣ k i ∣ ∣ > , ( 12 ) r_{i,j}=<\frac{q_i}{||q_i||},\frac{k_i}{||k_i||}>,(12) ri,j=<∣∣qi∣∣qi,∣∣ki∣∣ki>,(12)
提出了硬注意模块,根据参考图像选择高分辨率特征V,利用相关性对低分辨率图像进行匹配。硬注意图计算为:
h i = a r g m a x j r i , j , ( 13 ) h_i=argmax_jr_{i,j},(13) hi=argmaxjri,j,(13)
最相关的参考补丁是ti = vhi,其中ti in T是转移的特征。然后使用软注意模块将V转换为低分辨率特征。利用从高分辨率纹理图像传输的特征和低分辨率特征生成低分辨率图像的输出特征。通过利用基于transformer的架构,TTSR可以在超分辨率任务中成功地将纹理信息从高分辨率参考图像传输到低分辨率图像。
不同于以往在单一任务上使用transformer模型的方法,Chen等提出了图像处理transformer(Image Processing transformer, IPT),该方法通过使用大量预训练数据集,充分利用了transformer的优势。它在几个图像处理任务中实现了最先进的性能,包括超分辨率、去噪和去噪。如下图所示,IPT由多个头部、一个编码器、一个解码器和多个尾部组成。针对不同的图像处理任务,介绍了多头多尾结构和任务嵌入。特征被划分为补丁,这些补丁被送入编码器-解码器体系结构。在此之后,输出被重塑为具有相同大小的特征。考虑到预训练变压器模型在大型数据集上的优势,IPT使用ImageNet数据集进行预训练。具体来说,来自此数据集的图像会通过手动添加噪声、雨纹或下采样来降级,以生成损坏的图像。将退化图像作为IPT的输入,将原始图像作为输出的优化目标。为了提高IPT模型的泛化能力,还引入了一种自监督方法。一旦训练好模型,就会使用相应的头部、尾部和任务嵌入对每个任务进行微调。IPT在很大程度上实现了图像处理任务的性能改进(例如,图像去噪任务中的2 dB),展示了将基于transformer的模型应用于低级视觉领域的巨大潜力。
除了单幅图像生成外,Wang等提出了SceneFormer利用transformer进行室内三维场景生成。通过将场景视为对象序列,transformer解码器可以用于预测一系列对象及其位置、类别和大小。这使得SceneFormer在用户研究中优于传统的基于cnn的方法。值得注意的是,iGPT是在类似修补的任务上进行预训练的。由于iGPT主要关注图像分类任务的性能微调,因此我们将这项工作视为使用transformer对图像分类任务的尝试,而不是低级视觉任务。
综上所述,与分类和检测任务不同,图像生成和处理的输出是图像。下图说明了在低级视觉中使用transformer的情况。在图像处理任务中,图像首先被编码为令牌或补丁序列,transformer编码器使用该序列作为输入,允许transformer解码器成功地产生所需的图像。在图像生成任务中,基于gan的模型直接学习解码器生成补丁,通过线性投影输出图像,而基于transformer的模型训练自编码器学习图像的码本,并使用自回归transformer模型预测编码的标记。未来研究的一个有意义的方向是为不同的图像处理任务设计合适的架构。
Transformer在基于序列的任务上表现出色,尤其是在NLP任务上。在计算机视觉(特别是视频任务)中,空间和时间维度信息受到青睐,从而产生了transformer在许多视频任务中的应用,如帧合成、动作识别、视频检索。
High-level Video Processing
视频动作识别。视频人类动作任务,顾名思义,涉及识别和本地化视频中的人类动作。背景(例如其他人和物体)在识别人类行为方面起着关键作用。Rohit等人提出了动作transformer来建模感兴趣的人与周围环境之间的潜在关系。具体来说,I3D被用作提取高级特征图的骨干。从中间特征映射中提取的特征(使用RoI池)被视为查询(Q),而从中间特征中计算键(K)和值(V)。对这三个组成部分采用自关注机制,输出分类和回归预测。Lohit等提出了一种可解释的可微模块,称为时态transformer网络,以减少类内方差,增加类间方差。此外,Fayyaz和Gall提出了一种时间transformer,用于在弱监督设置下执行动作识别任务。除了人体动作识别外,transformer还被用于群体活动识别。Gavrilyuk等人提出了一种actor-transformer体系结构来学习表示,使用由2D和3D网络生成的静态和动态表示作为输入。transformer的输出是预测的活动。
视频检索。基于内容的视频检索的关键是找到视频之间的相似性。仅利用视频级特征的图像级来克服相关挑战,Shao等人建议使用transformer对长期语义依赖进行建模。他们还引入了监督对比学习策略来进行硬负挖掘。在基准数据集上使用该方法的结果证明了其性能和速度优势。此外,Gabeur等人提出了一种多模态transformer来学习不同的跨模态线索以表示视频。
视频对象检测。为了检测视频中的对象,需要全局和局部信息。Chen等人引入了内存增强的全局局部聚合(MEGA)来捕获更多的内容。具有代表性的特性提高了整体性能,解决了无效和不足的问题。此外,Yin等人提出了一种时空transformer来聚合时空信息。与另一个空间特征编码组件一起,这两个组件在3D视频目标检测任务中表现良好。
多任务学习。未修剪的视频通常包含许多与目标任务无关的帧。因此,挖掘相关信息,摒弃冗余信息是至关重要的。为了提取这些信息,Seong等人提出了视频多任务transformer网络,该网络对未修剪的视频进行多任务学习。对于CoVieW数据集,任务为场景识别、动作识别和重要性评分预测。ImageNet和Places365上的两个预先训练的网络提取场景特征和物体特征。利用类转换矩阵(CCM),对多任务transformer进行堆叠以实现特征融合。
Low-level Video Processing
框架/视频合成。帧合成任务是对两个连续帧之间或帧序列之后的帧进行合成,视频合成任务是对一个视频进行合成。Liu等人提出了ConvTransformer,它由五个部分组成:特征嵌入、位置编码、编码器、查询解码器和合成前馈网络。与基于LSTM的作品相比,ConvTransformer的并行性更好。Schatz等人提出了另一种基于变压器的方法,该方法使用循环Transformer网络从新观点合成人类行为。
视频修复。视频修补任务包括补齐帧内任何缺失的区域。这是具有挑战性的,因为它需要合并空间和时间维度上的信息。Zeng等人提出了一种时空Transformer网络,该网络将所有的输入帧作为输入,并将它们并行填充。利用时空对抗损失对Transformer网络进行优化。
由于transformer在基于文本的NLP任务中的成功,许多研究都热衷于利用其处理多模态任务(例如,视频-文本,图像-文本和音频-文本)的潜力。其中一个例子是VideoBERT,它使用基于cnn的模块对视频进行预处理,以获得表示令牌。然后,转换器编码器在这些标记上进行训练,以学习用于下游任务(如视频标题)的视频-文本表示。其他一些例子包括VisualBERT和VL-BERT,它们采用单流统一transformer来捕获视觉元素和图像-文本关系,用于下游任务,如视觉问题回答(VQA)和视觉常识推理(VCR)。此外,一些研究(如SpeechBERT)探索了用transformer编码器编码音频和文本对以处理语音问题回答(SQA)等自动文本任务的可能性。
除了前面提到的多模态transformer,对比语言-图像预训练(CLIP)以自然语言为监督,学习更有效的图像表示。CLIP联合训练一个文本编码器和一个图像编码器来预测相应的训练文本-图像对。CLIP的文本编码器是一个带有屏蔽自注意的标准transformer,用于保持预训练语言模型的初始化能力。对于图像编码器,CLIP考虑了两种类型的架构:ResNet和Vision Transformer。CLIP是在一个新的数据集上训练的,该数据集包含从互联网上收集的4亿对(图像,文本)。更具体地说,给定一组N(图像,文本)对,CLIP联合学习文本和图像嵌入,以最大化这N个匹配嵌入的余弦相似度,同时最小化N 2−N个不匹配的嵌入。在零样本传输上,CLIP展示了惊人的零样本分类性能,在不使用任何ImageNet训练标签的情况下,在ImageNet- 1k数据集上实现了76.2%的top-1精度。具体来说,在推理时,CLIP的文本编码器首先计算所有ImageNet标签的特征嵌入,然后图像编码器计算所有图像的嵌入。通过计算文本和图像嵌入的余弦相似度,得分最高的文本-图像对应为图像及其对应的标签。在30个不同CV基准上的进一步实验证明了CLIP的零样本转移能力和CLIP学习的特征多样性。
CLIP根据文本中的描述来映射图像,另一个作品DALL-E合成输入文本中描述的类别的新图像。与GPT-3类似,DALL-E是一个多模态transformer,在330万文本图像对的数据集上自回归训练120亿个模型参数。更具体地说,为了训练dalle,使用了一个两阶段的训练过程,其中在第一阶段,使用离散变分自编码器将256× 256 RGB图像压缩为32×32图像标记,然后在第二阶段,训练一个自回归transformer来模拟图像和文本标记上的联合分布。实验结果表明,DALL-E可以从头生成各种风格的图像,包括逼真的图像、卡通和表情符号,或者扩展现有图像,同时仍然匹配文本中的描述。随后,Ding等人提出了CogView,它是一个带有VQ-VAE分词器的transformer,类似于DALL-E,但支持中文文本输入。他们声称CogView优于DALL-E和之前基于gan的方法,而且与DALLE不同的是,CogView不需要额外的CLIP模型来重新排序从transformer中提取的样本,即DALL-E。
最近,为了应对多模态多任务学习,提出了一种Unified Transformer (UniT)模型,该模型可以同时处理不同领域的多个任务,包括目标检测、自然语言理解和视觉语言推理。具体来说,UniT有两个Transformer编码器分别处理图像和文本输入,然后Transformer解码器根据任务模式接受单个或串联的编码器输出。最后,针对不同的任务,将特定于任务的预测头应用于解码器输出。在训练阶段,通过在迭代中随机选择一个特定的任务,对所有任务进行联合训练。实验结果表明,单元在模型参数集紧凑的情况下,在各项任务上都取得了令人满意的性能。
综上所述,基于Transformer的多模态模型在统一各种模态数据和任务方面展现了其体系结构上的优势,这表明Transformer在构建能够应对大量应用的通用智能代理方面具有潜力。未来的研究可以在多模Transformer的有效训练或可扩展性方面进行。
虽然Transformer模型已经在各种任务中取得了成功,但其对内存和计算资源的高要求阻碍了它们在手机等资源有限的设备上的实现。在本节中,我们回顾了为高效实现而对压缩和加速Transformer模型进行的研究。其中包括网络剪枝、低秩分解、知识蒸馏、网络量化和紧凑架构设计。下表列出了一些基于压缩Transformer模型的代表性工作。
在基于Transformer的预训练模型(例如BERT)中,并行执行多个注意操作,以独立地模拟不同令牌之间的关系。然而,特定的任务并不要求使用所有的头。例如,Michel等提供的经验证据表明,在测试时可以移除很大比例的注意力头,而不会显著影响性能。不同的层需要的头的数量不同——有些层甚至只需要一个头。考虑到注意头的冗余性,定义重要性值来估计每个注意头对中最终输出的影响,去除不重要的注意头以实现高效部署。Dalvi等从一般冗余和特定任务冗余两个角度分析了预训练Transformer模型中的冗余。根据彩票假设,Prasanna等人分析了BERT中的彩票,并表明在基于Transformer的模型中也存在良好的子网络,减少了FFN层和注意头,以实现高压缩率。对于将图像分割为多个patch的视觉Transformer。Tang等提出减少patch计算以加速推理,通过考虑冗余patch对有效输出特征的贡献来自动发现冗余patch。Zhu等人将网络瘦身方法扩展到视觉Transformer,以降低FFN和注意力模块中的线性投影的维数。
除了Transformer模型的宽度外,还可以减少深度(即层数),以加速推理过程。不同于Transformer模型中不同注意头可以并行计算的概念,不同层必须按顺序计算,因为下一层的输入依赖于前一层的输出。Fan等人提出了一种层明智地丢弃策略来规范模型的训练,然后在测试阶段将整个层一起移除。
除了在Transformer模型中直接丢弃模块的剪枝方法外,矩阵分解的目的是基于低秩假设,用多个小矩阵近似大矩阵。如Wang等对Transformer模型中的标准矩阵乘法进行分解,提高了推理效率。
除了将预定义的Transformer模型压缩成更小的模型外,一些工作试图直接设计紧凑的模型。Jiang等人简化了自我注意的计算,提出了一个新的模块——基于跨度的动态卷积——它结合了全连接层和卷积层。在中提出了有趣的“汉堡包”层,使用矩阵分解代替原来的自我注意层。与标准的自注意操作相比,矩阵分解的计算效率更高,同时能清晰地反映不同标记之间的依赖关系。高效Transformer架构的设计也可以通过神经架构搜索(NAS)实现自动化,它可以自动搜索如何组合不同的组件。例如,Su等通过搜索线性投影的patch大小和尺寸,以及注意模块的头数,得到了一个高效的视觉Transformer。Li等人探索了一种自监督搜索策略,以获得由卷积模块和自注意模块组成的混合架构。
Transformer模型中的自注意操作计算给定序列中来自不同输入标记的表示之间的点积(图像识别任务中的补丁),其复杂度为O(N),其中N为序列的长度。最近,在大型方法中将复杂度降低到O(N),从而使Transformer模型可以扩展到长序列。例如,Katharopoulos等人将自我注意近似为核特征映射的线性点积,并通过rnn揭示了令牌之间的关系。Zaheer等人将每个标记视为图中的顶点,并将两个标记之间的内积计算定义为边。受图论的启发,将各种稀疏图组合起来近似Transformer模型中的稠密图,可以达到O(N)复杂度。
前面的方法采用不同的方法来尝试识别Transformer模型中的冗余(参见下图)。剪枝和分解方法通常需要具有冗余的预定义模型。具体来说,修剪侧重于减少Transformer模型中组件(例如,层,头)的数量,而分解则表示具有多个小矩阵的原始矩阵。紧凑模型也可以直接手动设计(需要足够的专业知识)或自动设计(例如,通过NAS)。所得到的紧凑模型可以通过量化方法进一步用低比特表示,以便在资源有限的设备上高效部署。
Different methods for compressing transformers.
尽管研究人员已经提出了许多基于Transformer的模型来解决计算机视觉任务,但这些工作只是该领域的第一步,仍有很大的改进空间。例如,ViT中的Transformer架构遵循NLP的标准Transformer,但专门为CV设计的改进版本仍有待探索。此外,有必要将transformer应用于前面提到的任务之外的更多任务。
用于计算机视觉的transformer的泛化和鲁棒性也具有挑战性。与cnn相比,纯transformer缺乏一些归纳偏差,严重依赖海量数据集进行大规模训练[ViT]。因此,数据的质量对transformer的泛化和鲁棒性有重要影响。虽然ViT在CIFAR和VTAB等下游图像分类任务中表现出了出色的性能,但直接将ViT骨干应用于物体检测并没有取得比cnn更好的结果。为了更好地将预训练的Transformer推广到更普遍的视觉任务上,还有很长的路要走。从业者关心Transformer的健壮性(例如。漏洞问题)。虽然已经对鲁棒性进行了研究,但它仍然是一个有待解决的开放问题。
尽管许多工作已经解释了Transformer在NLP中的使用,但要清楚地解释为什么Transformer在视觉任务中工作得很好仍然是一个具有挑战性的课题。CNN的成功归因于归纳偏差,包括平移等效方差和局部性,但transformer缺乏任何归纳偏差。目前的文献通常以直观的方式分析效果。例如Dosovitskiy et al.声称大规模训练可以超越归纳偏差。位置嵌入是将位置信息添加到图像补丁中以保留位置信息,这在计算机视觉任务中是非常重要的。受Transformer中大量参数使用的启发,过度参数化可能是视觉Transformer可解释性的一个潜在点。
最后但并非最不重要的是,为CV开发有效的Transformer模型仍然是一个悬而未决的问题。Transformer模型通常很大,而且计算成本很高。例如,基本ViT模型需要180亿flop来处理一幅图像。相比之下,轻量级CNN模型GhostNet只需约6亿FLOPs即可实现类似的性能。虽然已经提出了几种压缩Transformer的方法,但它们仍然非常复杂。这些方法原本是为NLP设计的,可能不适用于CV。因此,迫切需要高效的Transformer模型,以便在资源有限的设备上部署视觉Transformer。
为了推动视觉Transformer的发展,我们提出了几个潜在的研究方向。
一个方向是Transformer在计算机视觉中的有效性和效率。目标是开发高效高效的视觉Transformer;具体来说,是高性能、低资源成本的Transformer。性能决定了模型能否应用于实际应用,而资源成本影响着设备上的部署。有效性通常与效率相关,如何在两者之间取得更好的平衡是未来研究的一个有意义的课题。
大多数现有的视觉Transformer模型被设计为只处理单一任务。许多NLP模型(如GPT-3)已经演示了transformer如何在一个模型中处理多个任务。CV领域的IPT也能处理多种低级视觉任务,如超分辨率、图像去噪、去火车站等。percepver和percepver IO是开创性的模型,可以在多个领域工作,包括图像、音频、多模态和点云。我们相信在一个模型中可以包含更多的任务。将所有可视化任务甚至其他任务统一到一个Transformer(即一个大统一模型)中是一个令人兴奋的话题。
已经有各种类型的神经网络,如CNN, RNN和Transformer。在CV领域,cnn曾经是主流选择,但现在transformer开始流行。cnn可以捕捉归纳偏差,如平移等效方差和局部性,而ViT使用大规模训练来超越归纳偏差。从目前可用的证据来看,cnn在小型数据集上表现良好,而Transformer在大型数据集上表现更好。未来的问题是使用CNN还是transformer。
通过使用大型数据集进行训练,transformer可以在NLP和CV基准上实现最先进的性能。神经网络可能需要大数据,而不是归纳偏差。最后,我们留给你一个问题:transformer能通过一个非常简单的计算范式(例如,只有全连接层)和大量数据训练获得令人满意的结果吗?
用于机器翻译的自注意模块通过估计所有位置的注意分数并根据分数收集相应的嵌入来计算序列中每个位置的响应。这可以看作是一种非局部过滤操作。我们按照惯例制定了自我注意模块。给定一个输入信号(如图像、序列、视频和特征)X∈Rn×d,其中n = h × w(表示特征中的像素数),d为通道数,则输出信号生成为:
y i = 1 C ( x i ) ∑ ∀ j f ( x i , x j ) g ( x j ) , ( 14 ) y_i=\frac{1}{C(x_i)}\sum_{∀j}f(x_i,x_j)g(x_j),(14) yi=C(xi)1∀j∑f(xi,xj)g(xj),(14)
其中 x i ∈ R 1 × d , y i ∈ R 1 × d xi∈\R^{1×d}, y_i∈\R^{1×d} xi∈R1×d,yi∈R1×d分别表示输入信号X和输出信号Y的第i个位置(即空间、时间和时空)。下标j是枚举所有位置的索引,成对函数f(·)计算i与所有j之间的表示关系(如亲和关系)。函数g(·)计算输入信号在j位置的表示,响应用因子C(xi)归一化。
注意成对函数f(·)有很多选择。例如,可以使用高斯函数的简单扩展来计算嵌入空间中的相似性。因此,函数f(·)可以表示为:
f ( x i , x j ) = e θ ( x i ) ϕ ( x j ) T , ( 15 ) f(x_i,x_j)=e^{\theta{(x_i)}\phi{(x_j)}^T},(15) f(xi,xj)=eθ(xi)ϕ(xj)T,(15)
其中θ(·)和φ(·)可以是任意嵌入层。将θ(·)、φ(·)、g(·)以线性嵌入的形式考虑: θ ( X ) = X W θ , φ ( X ) = X W φ , g ( X ) = X W g θ(X) = XW_θ, φ(X) = XW_φ, g(X) = XW_g θ(X)=XWθ,φ(X)=XWφ,g(X)=XWg其中 W θ ∈ R d × d k , W φ ∈ R d × d k , W g ∈ R d × d v W_θ∈\R^{d×d_k}, W_φ∈\R^{d×d_k}, W_g∈\R^{d×d_v} Wθ∈Rd×dk,Wφ∈Rd×dk,Wg∈Rd×dv,设归一化因子 C ( x i ) = ∑ ∀ j f ( x i , x j ) C(xi) = \sum_{∀j} f(x_i, x_j) C(xi)=∑∀jf(xi,xj),式14可重写.
y i = e x i w θ , i w ϕ , j T x j T ∑ j e x i w θ , i w ϕ , j T x j T x j w g , j , ( 16 ) y_i=\frac{e^{x_iw_{\theta,i}w_{\phi,j}^Tx_j^T}}{\sum_je^{x_iw_{\theta,i}w_{\phi,j}^Tx_j^T}}x_jw_{g,j},(16) yi=∑jexiwθ,iwϕ,jTxjTexiwθ,iwϕ,jTxjTxjwg,j,(16)
其中 w θ , i ∈ R d × 1 w_θ,i∈\R^{d×1} wθ,i∈Rd×1是权值矩阵wθ的第i行。对于给定的指标i, 1 C ( x i ) f ( x i , x j ) \frac{1}{C_{(x_i)}}f(x_i, x_j) C(xi)1f(xi,xj)成为沿维数j的softmax输出。公式可以进一步改写为:
Y = s o f t m a x ( X W θ W ϕ T X ) g ( X ) , ( 17 ) Y=softmax(XW_\theta W_\phi^TX)g(X),(17) Y=softmax(XWθWϕTX)g(X),(17)
其中 Y ∈ R n × c Y∈\R^{n×c} Y∈Rn×c为与X大小相同的输出信号。与查询相比,翻译模块中的键值表示 Q = X W q , K = X W k , V = X W v Q = XW_q, K = XW_k, V = XW_v Q=XWq,K=XWk,V=XWv,一旦 W q = W θ , W k = W φ , W v = W g W_q = W_θ, W_k = W_φ, W_v = W_g Wq=Wθ,Wk=Wφ,Wv=Wg, Eq. 17可表示为:
Y = s o f t m a x ( Q K T ) V = A t t e n t i o n ( Q , K , V ) , ( 18 ) Y=softmax(QK^T)V=Attention(Q,K,V),(18) Y=softmax(QKT)V=Attention(Q,K,V),(18)
针对机器翻译提出的自注意模块,在某种程度上与上述针对计算机视觉提出的非局部滤波操作相同。一般情况下,计算机视觉自注意模块的最终输出信号会被包装为:
Z = Y W o + X , ( 19 ) Z=YW^o+X,(19) Z=YWo+X,(19)
其中Y由式17生成。如果Wo初始化为零,这个自我注意模块可以插入到任何现有的模型中,而不会破坏它的初始行为。
在transformer开发之前,rnn(例如GRU和LSTM)和额外的关注为大多数最先进的语言模型提供了支持。然而,rnn要求信息流从上一个隐藏状态到下一个隐藏状态的顺序处理。这就排除了在训练过程中使用加速和并行化的可能性,从而阻碍了rnn处理更长的序列或构建更大的模型的潜力。2017年,Vaswani等提出了transformer,这是一种完全基于多头自注意机制和前馈神经网络的新型编码器-解码器架构。它的目的是通过获取全局依赖关系来轻松解决逐个序列的自然语言任务(例如,机器翻译)。transformer随后的成功证明,仅利用注意机制就可以获得与注意rnn相当的性能。此外,transformer的体系结构适合大规模并行计算,可以在更大的数据集上进行训练。这导致了用于自然语言处理的大型预训练模型(PTMs)的激增。
BERT及其变体(例如SpanBERT, RoBERTa)是建立在多层变压器编码器架构上的一系列PTMs。在BERT的预训练阶段,对BookCorpus和英文Wikipedia数据集进行了两项任务:
1)mask语言建模(MLM),首先随机屏蔽输入中的一些标记,然后训练模型进行预测;
2)下句预测,使用成对的句子作为输入,预测第二句是否是文档中的原始句子。
在预训练之后,BERT可以通过在广泛的下游任务上添加输出层来进行微调。更具体地说,当执行序列级任务(例如,情感分析)时,BERT使用第一个标记的表示进行分类;对于令牌级任务(例如,名称实体识别),所有令牌都被送入softmax层进行分类。在它发布的时候,BERT在11个NLP任务上实现了最先进的性能,在预训练语言模型中树立了一个里程碑。生成式预训练transformer模型(例如GPT , GPT-2)是另一种基于transformer解码器架构的ptm,它使用了屏蔽自注意机制。GPT系列和BERT之间的主要区别是进行预训练的方式。与BERT不同,GPT模型是使用从左到右(LTR)语言建模预训练的单向语言模型。此外,BERT在预训练期间学习句子分隔符([SEP])和分类器标记([CLS])嵌入,而这些嵌入仅涉及GPT的微调阶段。由于其单向预训练策略,GPT在许多自然语言生成任务中取得了优异的性能。最近,一个名为GPT-3的基于transformer的大型模型被开发出来,它有惊人的1750亿个参数。通过对45 TB压缩明文数据进行预训练,GPT-3可以直接处理不同类型的下游自然语言任务,而无需进行微调。
因此,它在许多NLP数据集上获得了强大的性能,包括自然语言理解和生成。自从transformer引入以来,除了前面提到的基于transformer的ptm之外,还提出了许多其他模型。我们在下表中列出了一些有代表性的模型供感兴趣的读者参考,但这不是我们研究的重点。
除了在大型语料库上训练的用于一般NLP任务的ptm外,基于transformer的模型也已应用于许多其他NLP相关领域和多模态任务。
BioNLP domain。基于transformer的模型优于许多传统的生物医学方法。这类模型的一些例子包括BioBERT,它使用transformer架构进行生物医学文本挖掘任务,以及SciBERT,它是通过在114M篇科学文章(涵盖生物医学和计算机科学领域)上训练transformer开发的,目的是更精确地执行科学领域的NLP任务。另一个例子是Huang等人提出的ClinicalBERT。它利用transformer开发和评估临床记录的连续表示。这样做的副作用之一是ClinicalBERT的注意力地图可以用来解释预测,从而可以发现不同医疗内容之间的高质量联系。
基于transformer的各种NLP相关任务模型的快速发展显示了其结构优势和多功能性,开辟了它将成为应用于除NLP之外的许多人工智能领域的通用模块的可能性。本调查的以下部分将重点介绍transformer在过去两年出现的广泛的计算机视觉任务中的应用。
前面的部分回顾了使用transformer架构进行可视化任务的方法。我们可以得出结论,自我注意在transformer中起着关键作用。自注意模块也可以被认为是CNN体系结构的一个构建块,它对于大的接受域具有低缩放特性。该构建块被广泛应用于网络之上,用于捕获远程交互并增强视觉任务的高级语义特征。在本节中,我们将深入研究为计算机视觉中具有挑战性的任务而设计的基于自我注意的模型。这些任务包括语义分割、实例分割、目标检测、关键点检测和深度估计。在此,我们简要地总结了现有的自注意在计算机视觉中的应用。
图像分类。用于分类的可训练注意包括两个主要流:关于图像区域使用的硬注意,以及生成非刚性特征图的软注意。Ba等首先对图像分类任务提出了“视觉注意”一词,并利用注意在输入图像内选择相关区域和位置。这也可以降低所提出的模型关于输入图像大小的计算复杂性。在医学图像分类中,AG-CNN通过注意热图从全局图像中裁剪出一个子区域。SENet提出使用软自注意来重新加权卷积特征的通道响应,而不是使用硬注意和重新校准特征映射。Jetley等人使用相应估计器生成的注意图来重新加权dnn中的中间特征。此外,Han等人利用属性感知注意来增强cnn的表示。
语义分割。PSANet、OCNet、DANet和CFNet是提出在语义分割任务中使用自我注意模块的开创性工作。这些作品考虑并增加了上下文像素之间的关系和相似性。DANet在空间和通道维度上同时利用了自注意模块,而A2Net将像素分组为一组区域,然后通过将区域表示与生成的注意权重聚合来增强像素表示。DGCNet采用双图CNN在单一框架中对坐标空间相似度和特征空间相似度进行建模。为了提高自注意模块进行语义分割的效率,一些文献被提出,旨在缓解像素相似度计算带来的大量参数。例如,CGNL应用RBF核函数的Taylor级数来近似像素相似度。CCNet通过两个连续的纵横交错注意模块近似于原始的自注意方案。此外,ISSA将密集亲和矩阵分解为两个稀疏亲和矩阵的乘积。还有其他相关的工作使用基于注意的图推理模块来增强局部和全局表示。
对象检测。Ramachandran等人提出了一种基于注意的层,并交换了传统的卷积层,以建立一个完全注意的检测器,该检测器在COCO基准上优于典型的RetinaNet。GCNet假设非局部操作建模的全局上下文对于图像内的不同查询位置几乎相同,并将简化公式和SENet统一为全局上下文建模的通用框架。Vo等人设计了一种双向操作,从一个查询位置收集和分发信息到所有可能的位置。Zhang等认为,以往的方法无法与跨尺度特征进行交互,并提出了基于自注意模块的特征金字塔Transformer(Feature Pyramid Transformer),以充分利用跨空间和跨尺度的交互。
传统的检测方法通常利用单一的视觉表示(例如,边界框和角点)来预测最终结果。Hu等人提出了一种基于自我注意的关系模块,通过物体外观特征之间的交互,同时处理一组物体。Cheng等人提出了使用桥接视觉表示(BVR)模块的relationnet++,将不同的异构表示组合成一个类似于自注意模块中的表示。具体来说,主表示被视为查询输入,辅助表示被视为键输入。因此,增强的特征可以连接来自辅助表示的信息,并有利于最终的检测结果。
其他视觉任务。Zhang等人提出了一种分辨率注意力模块,在训练多分辨率网络时学习增强的特征图,以获得精确的人体关键点位置用于姿态估计任务。此外,Chang等人使用基于注意机制的特征融合块来提高人体关键点检测模型的准确性。
为了探索更广义的上下文信息以改进自监督单目训练深度估计,Johnston等人直接利用了自我注意模块。Chen等人还提出了一种基于注意的聚合网络,用于捕捉不同场景中不同的上下文信息,以进行深度估计。Aich等人提出了双向注意模块,利用前向和后向注意操作获得更好的单眼深度估计结果。
Visual Transformer主干的分类
ImageNet-1k基准上最近的视觉transformer的比较,包括ViT、DeiT、BoTNet、VTs、ConViT、CeiT、LocalViT、TNT、Swin、PiT、T2T-ViT、PVT、CvT、DeepViT、CaiT、Cross-ViT(最佳彩色视图)。(a) 具有224*224分辨率输入的上述模型的气泡图,圆圈大小表示GFLOP。(b) 视觉transformer与高分辨率输入的比较,正方形表示448*448输入分辨率。(c) ImageNet-21k上一些预训练模型的精度图。
从卷积的角度来看,其归纳偏置主要表现为局部性、平移不变性、权重共享、稀疏连接。这种简单的卷积核可以有效地执行模板匹配,但由于其具有强烈的归纳偏差(因为很快就可以收敛学习好了),其上限低于 Transformer。从自注意力机制的角度来看,当给定足够数量的头时,它理论上可以表达任何卷积层。这种全注意力操作可以交替地结合局部和全局级别的注意力,并根据特征的关系动态生成注意力权重。即便如此,它的实用性也较差,准确率低于 SOTA CNN,计算复杂度更高。从 Transformer 的角度来看,Dong 等人证明当在没有短连接或 FFNs 的深层训练时,自注意力层会表现出对“令牌均匀性(token uniformity)”的强烈归纳偏见。得出的结论是,Transformer 由两个关键组件组成:一个 self-attention 层聚合了 token 的关系,一个 position-wise FFN 提取了输入的特征。尽管 Transformer 具有强大的全局建模能力,卷积可以有效处理低级特征,增强 Transformer 的局部性,并通过填充附加位置特征。
Visual Transformer 方法取得了巨大的进步,并显示出在多个基准上接近或超过 SOTA CNN 方法的有希望的结果。然而,该技术太不成熟,无法颠覆卷积在 CV 领域的主导地位。作者指出了视觉 Transformer 的一些有前途的未来方向,以进一步进行整体串联。
1)集合预测:由于损失函数的梯度相同,额外的类标记(token)将一致收敛。具有二分损失函数的集合预测策略已广泛应用于许多密集预测任务中的视觉 Transformer 里。为分类任务考虑集合预测设计是很自然的,例如多类标记 Transformer 通过集合预测来预测混合 patch 图像,这类似于 LV-ViT 的数据增强策略。此外,在集合预测策略中的一对一标签分配导致早期过程中的训练不稳定,这可能会降低最终结果的准确性。使用其他标签分配和损失来改进集合预测可能有助于新的检测框架。
2)自监督学习:自监督 Transformer 预训练规范了NLP领域,并在各种应用中取得了巨大成功。作为 CV 中的自监督范式,卷积孪生网络采用对比学习来执行自监督预训练,这与 NLP 中的基于 mask 的自编码器不同。最近,一些研究尝试设计一种自监督的视觉 Transformer,以弥合视觉和语言之间预训练方法的差距。他们中的大多数继承了 NLP 中的掩码自编码器或 CV 中的对比学习方案。但是,没有像 NLP 中的 GPT-3 那样革命性的用于视觉 Transformer 的特定监督方法。编码器-解码器结构可以通过学习的解码器嵌入和位置编码来统一视觉任务。用于自监督学习的编码器-解码器 Transformer 值得我们进一步研究。