首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

论文笔记(11):文献翻译+想法记录:A Survey on Visual Transformer

  • 25-03-03 17:02
  • 2036
  • 6424
blog.csdn.net

Abstract

Transformer是一种基于自我注意机制的深度神经网络,首先应用于自然语言处理领域。由于其强大的表现能力,研究人员正在寻找将Transformer应用于计算机视觉任务的方法。在各种可视化基准测试中,基于Transformer的模型的性能与其他类型的网络(如卷积和递归网络)相似,甚至更好。变压器由于其高性能和不需要人为定义的归纳偏置,越来越受到计算机视觉界的关注。本文对这些可视化转换器模型进行了分类,并分析了它们的优缺点。我们探讨的主要类别包括骨干网、高/中级视觉、低层次视觉和视频处理。我们还简要介绍了计算机视觉中的自我注意机制,因为它是变压器的基本组成部分。此外,我们还包括了有效的变压器方法,将变压器推入基于实际设备的应用程序。在本文的最后,我们讨论了视觉变形器面临的挑战,并提出了进一步研究的方向。

image-20210412160817532

1. Introduction

深度神经网络(DNNs)已经成为当今人工智能(AI)系统的基础构造。不同类型的任务通常涉及不同类型的网络。例如,多层感知(multi-layer perception, MLP)或全连接(full - connected, FC)网络是神经网络的经典类型,它是由多个线性层和非线性激活叠加而成的[128,129]。卷积神经网络(CNNs)引入了卷积层和池化层,用于处理图像等位移不变数据[83,80]。而循环神经网络(RNNs)利用循环单元来处理顺序数据或时间序列数据[130,60]。Transformer是一种新型的神经网络。它主要利用自我注意机制[6,111]来提取内在特征[152],在人工智能应用中展现广泛的应用潜力

Transformer首先被应用于自然语言处理(NLP)任务,并取得了显著的改进[152,34,11]。例如,Vaswani等人[152]首先提出了仅基于机器翻译和英语选区解析任务的注意机制的Transformer。Devlin等人[34]引入了一种新的语言表示模型,称为BERT(Bidirectional Encoder Representations from Transformers 基于Transformer的双向编码器表示),它将Transformer预先训练到未标记的文本,考虑到每个单词的上下文(它是双向的)。当BERT发表时,它在11个NLP任务中获得了最先进的性能。Brown等人[11]使用1750亿个参数,在45 TB压缩明文数据上预先训练了一个名为GPT-3(Generative Pre-trained Transformer 3 )的大型Transformer 模型。在不需要任何微调的情况下,它在不同类型的下游自然语言任务上实现了强大的性能。这些基于Transformer 的模型具有较强的表示能力,在自然语言处理领域取得了重大突破。

受Transformer体系结构在自然语言处理领域取得的巨大成功的启发,研究人员最近将Transformer应用到计算机视觉任务中。在视觉应用中,CNN曾被认为是最基本的组件[57,126],但如今Transformer显示它是CNN的一个可行的替代方案。Chen等人[21]训练了一个序列转换器来自回归预测像素,在图像分类任务上取得了与cnn相当的结果。另一种视觉Transformer模型是ViT,它将纯Transformer直接应用于图像补丁序列。最近由Dosovitskiy等人提出的[36],在多个图像识别基准上取得了最先进的性能。除了基本的图像分类,Transformer还被用于解决各种其他计算机视觉问题,包括目标检测[15,193]、语义分割、图像处理和视频理解。由于其卓越的性能,越来越多的研究人员提出了基于Transformer的模型,以改善广泛的视觉任务。

由于基于Transformer的视觉模型数量迅速增加,跟上新进度的速度越来越困难。因此,当务之急是对现有工程进行调查,这对社会有利。在本文中,我们将对视觉Transformer器的最新进展进行全面的概述,并讨论进一步改进的潜在方向。为了便于今后对不同主题的研究,我们根据其应用场景对Transformer模型进行分类,如表1所示。主要类别包括骨干网、高/中级别视觉、低级别视觉和视频处理。 **高级视觉处理的是对图像所见内容的解释和使用[150],中级视觉处理的是如何将这些信息组织成我们所体验到的物体和表面[77]。**在基于dnn的视觉系统中,高、中级视觉之间的差距越来越模糊[194,102],因此我们将其作为单一类别来对待。解决这些高/中级视觉任务的Transformer模型的一些例子包括DETR[15],用于目标检测的变形DETR[193]和用于分割的Max-DeepLab[155]。**低层次图像处理主要是从图像中提取描述(这些描述通常表示为图像本身)[43]。**低层次图像处理的典型应用包括超分辨率、图像去噪和样式转换。目前,只有少数作品[20,113]在低级视觉中使用变形器,这就产生了进一步研究的需要。另一类是视频处理,它是计算机视觉和基于图像的任务的重要组成部分。由于视频的顺序特性,Transformer天生非常适合用于视频任务[191,178],在这些任务中,它的性能开始与传统的cnn和rnn相当。在这里,我们回顾了与基于Transformer的视觉模型相关的工作,以跟踪这一领域的进展。图1显示了可视化转换器的开发时间表——毫无疑问,未来还会有更多的里程碑。

image-20210412160344752

个人笔记1

骨干网 分类

高级别视觉 处理的是对图像所见内容的解释和使用[150]

中级别视觉 如何将这些信息组织成我们所体验到的物体和表面[77]

(高、中级视觉之间的差距越来越模糊 包括识别分割姿态估计)

低级别视觉 从图像中提取描述(这些描述通常表示为图像本身)[43]。包括超分辨率、图像去噪和样式转换。

视频处理 视频修复 视频标注

本文的其余部分组织如下。

  • 第二节讨论了标准变压器的制定和自注意机制。
  • 第三部分,我们描述了在自然语言处理中变压器的方法,因为研究经验可能有助于视觉任务。
  • 第四部分是本文的主要部分,主要从主干、高/中层次、低层次和视频任务四个方面对视觉变形模型进行了总结。我们还简要描述了CV和高效Transformer方法的自我注意机制,因为它们与我们的主题密切相关。
  • 在最后一部分,我们给出了结论,并讨论了几个研究方向和面临的挑战。

2. Formulation of Transformer

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

image-20210412161311286

个人笔记2

一个编码器模块(有多个编码器,编码器的链接方式应该是级联)
一个解码器模块(有多个解码器,解码器的链接方式应该是级联)

若干编码器小组件和若干解码器小组件的对应层和非对应层之间都有着信息的传递(应该就是比较普通的feature map)

每个编码器(自注意力层,前馈神经网络FFN-feed forward network)
每个解码器(自注意力层,编解码注意力机制,前馈神经网络)

2.1. Self-Attention Layer

在自我注意层中,首先将输入向量转化为三个不同的向量:查询向量 q q q、关键向量 k k k和值向量 v v v,其维数为 d q = d k = d v = d m o d e l = 512 d_q= d_k= d_v= d_{model}= 512 dq​=dk​=dv​=dmodel​=512。由不同输入导出的向量被打包成三个不同的矩阵,即 Q Q Q、 K K K和 V V V。随后,计算不同输入向量之间的注意函数如下(左图3):

  • 步骤1:计算不同输入向量之间的得分

S = Q ⋅ K ⊤ S=Q \cdot K^{\top} S=Q⋅K⊤

  • 步骤2:将梯度稳定性得分归一化

S n = S / d k S_{n}=S / \sqrt{d_{k}} Sn​=S/dk​ ​

  • 步骤3:用softmax函数将得分转化为概率

P = softmax ⁡ ( S n ) P=\operatorname{softmax}\left(S_{n}\right) P=softmax(Sn​)

  • 步骤4:得到加权值矩阵

Z = V ⋅ P Z=V\cdot P Z=V⋅P

该过程可统一为单一功能:

Attention ⁡ ( Q , K , V ) = softmax ⁡ ( Q ⋅ K ⊤ d k ) ⋅ V (1) \operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q \cdot K^{\top}}{\sqrt{d_{k}}}\right) \cdot V \tag {1} Attention(Q,K,V)=softmax(dk​ ​Q⋅K⊤​)⋅V(1)

个人笔记3

每一个输入对应编码出三个向量

所有的输入序列在三个序列的第二维度上叠加形成宽为512,长为输入长度的三个矩阵

个人笔记4

为什么步骤一中的可以计算得到不同输入向量之间的得分

矩阵乘法

image-20210412163054048

假设共有十个输入向量
Q = ( q 1 [ 0 ] ⋯ q 1 [ 511 ] ⋮ ⋯ ⋮ q 10 [ 0 ] ⋯ q 10 [ 511 ] ) = ( q 1 ⃗ ⋮ q 10 ⃗ ) Q=\left(

q1[0]⋮q10[0]⋯⋯⋯q1[511]⋮q10[511]q1[0]⋯q1[511]⋮⋯⋮q10[0]⋯q10[511]
\right) = \left(
q1→⋮q10→q1→⋮q10→
\right) Q=⎝⎜⎛​q1​[0]⋮q10​[0]​⋯⋯⋯​q1​[511]⋮q10​[511]​⎠⎟⎞​=⎝⎜⎛​q1​ ​⋮q10​ ​​⎠⎟⎞​

K = ( k 1 [ 0 ] ⋯ k 1 [ 511 ] ⋮ ⋯ ⋮ k 10 [ 0 ] ⋯ k 10 [ 511 ] ) = ( k 1 ⃗ ⋮ k 10 ⃗ ) K=\left(

k1[0]⋮k10[0]⋯⋯⋯k1[511]⋮k10[511]k1[0]⋯k1[511]⋮⋯⋮k10[0]⋯k10[511]
\right) = \left(
k1→⋮k10→k1→⋮k10→
\right) K=⎝⎜⎛​k1​[0]⋮k10​[0]​⋯⋯⋯​k1​[511]⋮k10​[511]​⎠⎟⎞​=⎝⎜⎛​k1​ ​⋮k10​ ​​⎠⎟⎞​

相乘结果

公式
Q ⋅ K T = ( q 1 ⃗ ⋮ q 10 ⃗ ) ⋅ ( k 1 ⃗ T ⋯ k 10 ⃗ T ) ( q 1 ⃗ ⋅ k 1 ⃗ T ⋯ q 1 ⃗ ⋅ k 10 ⃗ T ⋮ ⋯ ⋮ q 10 ⃗ ⋅ k 1 ⃗ T ⋯ q 10 ⃗ ⋅ k 10 ⃗ T ) = ( s 1 − 1 ⋯ s 1 − 10 ⋮ ⋯ ⋮ s 10 − 1 ⋯ s 10 − 10 ) Q \cdot K^T= \left(

q1→⋮q10→q1→⋮q10→
\right) \cdot \left(\vec{k_{1}}^T\cdots \vec{k_{10}}^T\right) \left(
q1→⋅k1→T⋮q10→⋅k1→T⋯⋯⋯q1→⋅k10→T⋮q10→⋅k10→Tq1→⋅k1→T⋯q1→⋅k10→T⋮⋯⋮q10→⋅k1→T⋯q10→⋅k10→T
\right) =\left(
s1−1⋮s10−1⋯⋯⋯s1−10⋮s10−10s1−1⋯s1−10⋮⋯⋮s10−1⋯s10−10
\right) Q⋅KT=⎝⎜⎛​q1​ ​⋮q10​ ​​⎠⎟⎞​⋅(k1​ ​T⋯k10​ ​T)⎝⎜⎜⎛​q1​ ​⋅k1​ ​T⋮q10​ ​⋅k1​ ​T​⋯⋯⋯​q1​ ​⋅k10​ ​T⋮q10​ ​⋅k10​ ​T​⎠⎟⎟⎞​=⎝⎜⎛​s1−1​⋮s10−1​​⋯⋯⋯​s1−10​⋮s10−10​​⎠⎟⎞​

矩阵 S S S中的每一个元素都是怎么计算出来的呢

两个向量的点乘

这两个向量代表的是啥呢

不同输入时候所得到的表示向量 q i ⃗ \vec{q_{i}} qi​ ​, k j ⃗ \vec{k_j} kj​ ​

image-20210412162122459

公式1背后的逻辑很简单。第1步计算两个不同向量之间的得分,这些得分决定了在当前位置编码单词时我们给予其他单词的关注程度。第2步将分数归一化以增强梯度稳定性以改进训练,第3步将分数转化为概率。最后,每个值向量乘以概率的和。具有较大概率的 V V V形元素将从以下层获得额外的焦点。

个人笔记5

这个得分呢就是上文我的个人笔记4中所写的向量点乘得出来的结果,代表的关注程度,我们再细化一下,表示的是当前状态和所有时刻状态的关系

其实就是当前这个时刻状态高纬度编码和所有时刻状态的高纬度编码的关系(加上softmax之后就更加能有这种感觉,统一的看整个时间状态之后,在时间域上进行过归一化,总影响的重要程度是1,各个时间的影响是分别计算出来的类似于概率的感觉)

个人想法1

有没有别的方式来判断这个影响重要程度,来获取得分,这样计算全局相关性矩阵太慢了,可不可以有别的方式可以对两个矩阵的任意部分球全部求出互相的重要程度

解码器模块中的编解码器注意层与编码器模块中的自我注意层相似,但有以下几点不同:关键矩阵 K K K和值矩阵 V V V是从编码器模块中派生出来的,查询矩阵 Q Q Q是从上一层派生出来的。

注意,上述编码解码过程与每个单词的位置无关,这意味着自我注意层缺乏捕捉句子中单词位置信息的能力。为了解决这个问题并获得单词的最终输入向量,在原始输入嵌入中添加了带有维度 d m o d e l d_{model} dmodel​的位置编码。具体来说,位置用以下公式编码:
P E ( p o s , 2 i ) = sin ⁡ (  pos  1000 0 2 i d model  ) (2) P E(p o s, 2 i) =\sin \left(\frac{\text { pos }}{10000^{\frac{2 i}{d_{\text {model }}}}}\right) \tag{2} \\ PE(pos,2i)=sin(10000dmodel ​2i​ pos ​)(2)

P E (  pos,  2 i + 1 ) = cos ⁡ (  pos  1000 0 2 i d model  ) (3) P E(\text { pos, } 2 i+1) =\cos \left(\frac{\text { pos }}{10000^{\frac{2 i}{d_{\text {model }}}}}\right)\tag{3} PE( pos, 2i+1)=cos(10000dmodel ​2i​ pos ​)(3)

其中pos表示单词在句子中的位置, i i i表示位置编码的当前维度。

2.2. Multi-Head Attention

多头注意是一种机制,可以用来提高普通的自我注意层的性能。注意,对于一个给定的参考词,我们在阅读句子时通常会关注其他几个词。单头自我注意力层限制了我们专注于一个或多个特定位置的能力,同时也不影响对其他同等重要位置的注意力。这是通过给予注意层不同的表示子空间来实现的。具体来说,不同的头使用不同的查询、键和值矩阵,这些矩阵由于随机初始化,训练后可以将输入向量投影到不同的表示子空间中。

个人笔记6

应该是通过多个映射去建立的从同一个输入获取不同高维信息的方式,讲故事为多头,实际是获取了更多的信息,增加更多参数,实现更多的channel

修正

理解错误在后面的说明中有解释多头总长度是不变的会变成长度为64的8个小矩阵

为了更详细地说明这一点,给定一个输入向量和头的数目 h h h,输入向量首先被转换成三组不同的向量:查询组、键组和值组。每组有 h 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 \{Q_i\}^h_{i=1} {Qi​}i=1h​, { K i } i = 1 h \{K_i\}^h_{i=1} {Ki​}i=1h​ 和 { V i } i = 1 h \{V_i\}^h _{i=1} {Vi​}i=1h​。多头注意过程如下所示:
MultiHead ⁡ ( Q ′ , K ′ , V ′ ) = Concat ⁡ ( head ⁡ 1 , ⋯   ,  head  h ) W o  where head  i = Attention ⁡ ( Q i , K i , V i ) . (4)

MultiHead(Q′,K′,V′) where head i=Concat(head1,⋯, head h)Wo=Attention(Qi,Ki,Vi).MultiHead⁡(Q′,K′,V′)=Concat⁡(head1,⋯, head h)Wo where head i=Attention⁡(Qi,Ki,Vi).
\tag{4} MultiHead(Q′,K′,V′) where head i​​=Concat(head1​,⋯, head h​)Wo=Attention(Qi​,Ki​,Vi​).​(4)
其中, Q ′ Q' Q′(和 K ′ K' K′和 V ′ V' V′近似)是 { Q i } i = 1 h \{Q_i\}^h_{i=1} {Qi​}i=1h​的拼接, W o ∈ R d model  × d model  W^{o} \in \mathbb{R}^{d_{\text {model }} \times d_{\text {model }}} Wo∈Rdmodel ​×dmodel ​是线性投影矩阵。

2.3. Other Key Concepts in Transformer

image-20210412210718463

Residual Connection in the Encoder and Decoder .

编码器和解码器中的剩余连接。如图4所示,将一个残余连接添加到编码器和解码器的每个子层。这加强了信息的流动,以实现更高的性能。在剩余连接之后是层规范化[5]。这些操作的输出可以描述为:
 LayerNorm  ( X +  Attention  ( X ) ) (5) \text { LayerNorm }(X+\text { Attention }(X)) \tag{5}  LayerNorm (X+ Attention (X))(5)
这里, X X X作为自我注意层的输入。这是因为查询矩阵 Q Q Q,键矩阵 K K K,值矩阵 V V V都是从同一个输入矩阵 X X X派生出来的。在每个编码器和解码器的自注意层之后

Feed-Forward Network.

应用前馈网络(FFN)。它由两个线性变换层和其中一个非线性激活函数组成,可以表示为以下函数:
FFN ⁡ ( X ) = W 2 σ ( W 1 X ) (6) \operatorname{FFN}(X)=W_{2} \sigma\left(W_{1} X\right) \tag{6} FFN(X)=W2​σ(W1​X)(6)
其中 W 1 W_1 W1​和 W 2 W_2 W2​为两个线性变换层的两个参数矩阵, σ σ σ为非线性激活函数,如GELU[58]。隐含层的维数 d h = 2048 d_h= 2048 dh​=2048。

Final Layer in the Decoder.

解码器的最后一层。解码器的最后一层用于将向量堆栈转换回一个单词。这是通过一个线性层和一个softmax层来实现的。线性层将向量投影到一个具有 d w o r d d_{word} dword​维数的逻辑向量中,其中 d w o r d d_{word} dword​是词汇表中的单词数。softmax层然后被用来把逻辑向量转换成概率。用于CV任务时,大多数Transformer采用原转换器的编码器模块。这样的Transformer可以看作是一种新的特征选择器。与只关注局部特征的cnn相比,transformer可以捕捉到长距离特征,这意味着它可以很容易地获得全局信息。与必须连续计算隐藏状态的RNNs相比,transformer的效率更高,因为自注意层和全连接层的输出可以并行计算,并且易于加速。由此我们可以得出结论,在计算机视觉和自然语言处理中进一步研究变压器将会取得有益的结果。

个人笔记7

与只关注局部特征的cnn相比,transformer可以捕捉到长距离特征,这意味着它可以很容易地获得全局信息。

与必须连续计算隐藏状态的RNNs相比,transformer的效率更高,因为自注意层和全连接层的输出可以并行计算,并且易于加速。

2. Revisiting Transformers for NLP

在transformer被开发出来之前,添加attention的RNNs(如GRU[31]和LSTM[61])属于最先进的语言模型。然而,RNNs要求信息流从前一个隐藏状态依次处理到下一个隐藏状态。这就排除了在训练过程中使用加速和并行化的可能性,从而阻碍了rnn处理更长的序列或构建更大模型的潜力。2017年,Vaswani等人[152]提出了变压器,这是一种新的编码器-解码器结构,仅建立在多头自注意机制和前馈神经网络上。它的目的是通过获取全局依赖项来轻松解决seq-to-seq自然语言任务(如机器翻译)。transformer随后的成功证明,单独利用注意机制可以获得与注意神经网络相当的性能。此外,transformer的架构适合大规模并行计算,这使得在更大的数据集上进行训练成为可能。这导致了用于自然语言处理的大型预训练模型(PTMs pre-trained models )的激增。

BERT[34]及其变体(如SpanBERT[75]、RoBERTa[98])是建立在多层变压器编码器架构上的一系列PTMs。在BERT的预训练阶段,对图书语料库[194]和英文维基百科数据集进行了两个任务:

1)屏蔽语言建模(MLM Masked language modeling),首先随机屏蔽输入中的一些标记,然后训练模型进行预测;

2)下一句预测,使用成对的句子作为输入,预测第二句是否是文档中的原句。

在预培训之后,可以通过在广泛的下游任务上添加输出层来对BERT进行微调。更具体地说,在执行序列级任务(如情感分析)时,BERT使用第一个表征的表示进行分类;对于表征级任务(例如,名称实体识别),所有表征都被送入softmax层进行分类。在它发布的时候,BERT在11个NLP任务中取得了最先进的性能,在预先训练的语言模型中树立了一个里程碑。预先训练的生成式变压器模型(例如:GPT[122]、GPT-2[123]是另一种基于变压器译码架构的 PTMs,它使用了掩藏的自我注意机制。GPT系列和BERT之间的主要区别在于进行预培训的方式。与BERT不同,GPT模型是使用左-右(LTR Left-to-Right ) 语言建模预先训练的单向语言模型。此外,BERT在预训练期间学习了句子分隔符([SEP] separator)和分类标记([CLS] classifier token)嵌入,而这些嵌入仅涉及GPT的微调阶段。由于它的单向预训练策略,GPT在许多自然语言生成任务中取得了优越的性能。最近,一个名为GPT-3的巨型transformer模型被开发出来,它有惊人的1750亿个参数。GPT-3通过对45tb的压缩明文数据进行预训练,可以直接处理不同类型的下游自然语言任务,无需进行微调。结果表明,该算法在许多NLP数据集上都取得了良好的性能,包括自然语言的理解和生成。自从变压器的引入,除了前面提到的基于变压器的PTMs之外,还有许多其他的模型被提出。为了方便感兴趣的读者,我们在表2中列出了一些有代表性的模型,但这不是我们研究的重点。

表2:基于transformer的代表性语言模型列表。Transformer是标准的编码器-解码器架构。其中,变压器encl和dec分别表示编码器和解码器。解码器使用掩码自我注意来防止注意到未来的令牌。该表的数据来自[121]。

image-20210412221033160

除了在大型语料库上训练用于一般自然语言处理任务的PTMs外,基于transformer的模型还被应用于许多其他与自然语言处理相关的领域和多模态任务。

BioNLP Domain.

基于transformer的模型优于许多传统的生物医学方法。这类模型的一些例子包括BioBERT[84],它使用transformer架构进行生物医学文本挖掘任务,以及SciBERT[9],它是通过对1.14亿篇科学文章(涵盖生物医学和计算机科学领域)训练transformer而开发的,目的是更精确地在科学领域执行NLP任务。另一个例子是Huang等人提出的ClinicalBERT[66]。它利用transformer来开发和评估临床记录的连续表示。这样做的另外作用是,ClinicalBERT的attention map可以用来解释预测,从而允许不同医学内容之间的高质量联系被发现。

Multi-Modal Tasks.

多任务。由于transformer在基于文本的自然语言处理任务中的成功,许多研究都热衷于开发其处理多模态任务(如视频-文本、图像-文本和音频-文本)的潜力。一个例子是VideoBERT[141],它使用基于cnn的模块对视频进行预处理,以获得表征。然后根据这些令牌训练transformer编码器,以学习用于下游任务(如视频标题)的视频-文本表示。其他一些例子包括VisualBERT[86]和VL-BERT[140],它们采用单流统一转换器捕获视觉元素和图像-文本关系,用于下游任务,如视觉问题回答(VQA)和视觉常识推理(VCR)。此外,一些研究,如speech bert[29],探索了用transformer编码器编码音频和文本对的可能性,以处理自动文本任务,如语音问题回答(SQA)。

基于transformer的模型在各种NLP相关任务上的迅速发展,显示了其结构上的优越性和通用性,为其成为除NLP外应用于许多人工智能领域的通用模块提供了可能。本调查的以下部分主要关注在过去两年中出现的各种计算机视觉任务中transformer的应用。

4. Visual Transformer

在本节中,我们将回顾基于Transformer的模型在计算机视觉中的应用,包括图像分类、高/中级视觉、低级视觉和视频处理。简要总结了自注意机制和模型压缩方法在高效Transformer中的应用。

4.1. Backbone for Image Classification

受Transformer在自然语言处理领域取得成功的启发,一些研究人员开始探索类似的模型是否可以学习到图像的有用表示。由于与文本相比,图像涉及更多的尺寸、噪声和冗余模态,因此它们被认为更难以生成建模。

个人笔记

由于与文本相比,图像涉及更多的尺寸、噪声和冗余模态,因此它们被认为更难以生成建模。

图像与文本的关系

  • 文本是一维的表征对前后的影响;图像需要的是二维表征对于全局的影响(导致计算量剧增)
  • 图像噪声多,模态种类更加丰富需要更强的表征能力需要去学习更多的种类更多地表达,更加高维的信号提取能力才可以做到信号有价值的提取也就是足够强的抗噪声

除CNNs外,Transformer还可以作为图像分类的骨干网。Wu等[163]采用ResNet作为方便的基线,并使用视觉Transformer来替代卷积的最后阶段。具体来说,他们应用卷积层来提取低层特征,然后将其输入视觉Transformer。对于视觉Transformer,他们使用编译器将像素分组成少量的视觉标记,每个标记代表图像中的一个语义概念。这些视觉标记直接用于图像分类,Transformer用于建模标记之间的关系。纯使用Transformer进行图像分类的作品包括iGPT[21]、ViT[36]和DeiT[148]。

4.1.1 iGPT(这一篇有点看不懂)

生成式图像预训练方法已经存在很长一段时间了,Chen等人对这类方法进行了重新研究,并将其与自我监督方法相结合。这种方法包括一个预训练阶段,然后是一个微调阶段。在预训练阶段,探讨自回归和BERT(bidirectional transformers)。为了实现像素预测,采用了序列转换器结构来代替如NLP中使用的语言标记。当与早期停止结合使用时,预训练可以被认为是一个良好的初始化或正则化。在微调阶段,他们在模型上添加了一个小的分类头。这有助于优化分类目标并适应所有权重。

给定一个由高维数据 x = ( x 1 , ⋯   , x n ) x= (x_1,\cdots,x_n) x=(x1​,⋯,xn​)组成的未标记数据集 X X X,他们通过最小化数据的负对数似然来训练模型:
L A R = E x ∼ X [ − log ⁡ p ( x ) ] (7) L_{A R}=\underset{x \sim X}{\mathbb{E}}[-\log p(x)] \tag{7} LAR​=x∼XE​[−logp(x)](7)
其中 p ( X ) p(X) p(X)是图像数据的密度,可以建模为:
p ( x ) = ∏ i = 1 n p ( x π i ∣ x π 1 , ⋯   , x π i − 1 , θ ) (8) p(x)=\prod_{i=1}^{n} p\left(x_{\pi_{i}} \mid x_{\pi_{1}}, \cdots, x_{\pi_{i-1}}, \theta\right) \tag{8} p(x)=i=1∏n​p(xπi​​∣xπ1​​,⋯,xπi−1​​,θ)(8)
陈等人也认为BERT目标样本子序列M⊂(1,n),每个索引我独立的概率出现在0.15 M M叫做伯特面具,和模型训练通过最小化的负对数似“蒙面”元素xMconditioned“揭露”的x (1, n) \ M:LBERT= E x∼XE M xi∈M[−logp(xi|x[1,n] M)]](9)在预训练阶段,他们选择LARor LBERT,使预训练数据集上的损失最小。GPT-2[123]采用变压器解码器块的公式。特别是,层规范先于注意和多层感知器(MLP)操作,所有操作都严格在剩余路径上执行。注意力操作是唯一涉及到混合序列元素的操作。为了确保训练AR目标时得到适当的调节,Chen等人将标准上三角掩模应用于注意对数的n × n矩阵。当使用6 BERT目标时不需要注意logit屏蔽,但一旦将内容嵌入应用到输入序列中,Chen等人将位置置零。

4.1.2 ViT

4.2. High/Mid-level Vision

4.2.1 Generic Object Detection

Transformer-based Set Prediction for Detection.
Transformer-based Backbone for Detection.

4.2.2 Other Detection Tasks

Pedestrian Detection.
Lane Detection.

4.2.3 Segmentation

4.2.4 Pose Estimation

4.2.5 Discussions

4.3. Low-level Vision

很少有研究将Transformer应用于低视场,如图像的超分辨率和生成。这些任务通常以图像作为输出(例如,高分辨率或去噪图像),这比高级视觉任务更具挑战性,如分类、分割和检测,这些任务的输出是标签或框。

Parmar等[113]提出了Image Transformer,第一步是将Transformer模型推广到制定图像转换和生成任务。图像Transformer由两部分组成:用于提取图像表示的编码器和用于生成像素的解码器。对于值为0到255的每个像素,学习 256 × d 256 × d 256×d维嵌入,将每个值编码为d维向量,并将其作为输入输入编码器。编码器和解码器采用与[152]相同的架构。图8显示了在译码器每个层的结构。通过计算输入像素 q ′ q' q′与之前生成的像素 m 1 , m 2 , … m_1, m_2,… m1​,m2​,… (与位置信息嵌入 p 1 , p 2 , . . . . p_1, p_2, .... p1​,p2​,....)之间的自我注意,得到每个输出像素 q q q。

对于图像条件生成,如超分辨率和修复,使用编码器-解码器架构,其中编码器的输入是低分辨率或损坏的图像。

对于无条件和类条件生成(即噪声到图像),只有解码器用于输入噪声向量。由于解码器的输入是之前生成的像素(在生成高分辨率图像时涉及到较高的计算成本),因此提出了一种局部自注意方案。该方案仅使用最接近的生成像素作为解码器的输入,使图像转换器在图像生成和翻译任务中达到与基于cnn的模型同等的性能,证明了基于转换器的模型在低层次视觉任务中的有效性。

想法对于多头的attention

合并之后再求相关性,而不是分开来求? 可不可以使用ghostnet进行一些通道或者头的压缩,或者编码向量解码时候的计算压缩

最近的一些作品避免使用每个像素作为Transformer模型的输入,而是使用补丁(像素集)作为输入。例如,yang等[167]提出了用于图像超分辨率的纹理变压器网络(Texture Transformer Network For Image superresolution, TTSR),利用了基于参考的图像超分辨率问题中的Transformer架构。它的目的是将相关的纹理从参考图像转移到低分辨率的图像。以低分辨率图像和参考图像分别为查询 Q Q Q和键 K K K,计算每个patch 在 Q Q Q中 q i q_i qi​ 和在 K K K中 k i k_i ki​之间的相关性如下:
r i , j = ⟨ q i ∥ q i ∥ , k i ∥ k i ∥ ⟩ (12) r_{i, j}=\left\langle\frac{q_{i}}{\left\|q_{i}\right\|}, \frac{k_{i}}{\left\|k_{i}\right\|}\right\rangle \tag{12} ri,j​=⟨∥qi​∥qi​​,∥ki​∥ki​​⟩(12)
提出了一种硬注意模块,根据参考图像选择高分辨率特征 V V V,利用相关性对低分辨率图像进行匹配。硬注意力地图计算如下:
h i = arg ⁡ max ⁡ j r i , j (13) h_{i}=\arg \max _{j} r_{i, j}\tag{13} hi​=argjmax​ri,j​(13)
最相关的参考patch是 t i = v h i t_i= v_{hi} ti​=vhi​,其中在 T T T中的 t i t_i ti​是转移过来的特征。然后使用软注意模块将 V V V转移到低分辨率特征 F F F上,软注意计算为:
s i = max ⁡ j r i , j (14) s_{i}=\max _{j} r_{i, j} \tag{14} si​=jmax​ri,j​(14)
将高分辨率纹理图像转换为低分辨率纹理图像的公式为:
F out  = F + Conv ⁡ ( Concat ⁡ ( F , T ) ) ⊙ S (15) F_{\text {out }}=F+\operatorname{Conv}(\operatorname{Concat}(F, T)) \odot S \tag{15} Fout ​=F+Conv(Concat(F,T))⊙S(15)

其中, F o u t F_{out} Fout​和 F F F分别为低分辨率图像的输出特征和输入特征; S S S是柔和的注意; T T T为从高分辨率纹理图像中转移出来的特征。通过利用基于Transformer 的架构,TTSR能够在超分辨率任务中成功地将纹理信息从高分辨率参考图像转移到低分辨率图像。

image-20210413214311023

不同于之前在单个任务中使用Transformer 模型的方法,Chen等人[20]提出了图像处理变压器(Image Processing transformer, IPT),它利用了大量的预训练数据集,充分利用了变压器的优点。它在一些图像处理任务中实现了最先进的性能,包括超分辨率、去噪和去雨。

如图9所示,IPT包括多头、一个编码器、一个解码器和多尾组成。针对不同的图像处理任务,引入了多头、多尾结构和任务嵌入。特征被划分成小块,并被输入到编码器-解码器体系结构中。随后,输出被重塑为具有相同大小的特征。鉴于在大数据集上预训练变压器模型的优点,IPT使用ImageNet数据集进行预训练。具体来说,该数据集中的图像通过手动添加噪声、雨条纹或降采样来退化,从而生成损坏的图像。以退化后的图像作为IPT的输入,以原始图像作为输出的优化目标。为了提高模型的泛化能力,还引入了一种自监督方法。一旦模型得到训练,它就会通过使用相应的头、尾和任务嵌入对每个任务进行微调。IPT在很大程度上提高了图像处理任务的性能(如图像去噪任务的性能为2 dB),显示了基于变压器的模型在低层次视觉领域的巨大潜力。

除单图像生成外,Wang等[158]还提出了Scene Former,利用transformer进行室内三维场景生成。通过将场景视为一系列物体,transformer解码器可以用来预测一系列物体及其位置、类别和大小。这使得SceneFormer在用户研究中优于传统的基于cnn的方法。

综上所述,与分类和检测任务不同,图像生成和处理的输出是图像。图10演示了在低级视图中使用变压器。通过将图像作为像素序列或小块,transformer编码器使用该序列作为输入,允许transformer解码器成功地生成所需的图像。为不同的图像处理任务设计一个合适的体系结构是未来研究的一个有意义的方向。

image-20210413222105410

4.4. Video Processing

4.4.1 High-level Video Processing

Image Generation.
Activity Recognition.
Human Action Recognition.
Face Alignment.
Video Retrieval.
Video Object Detection.
Multi-task Learning.

4.4.2 Low-level Video Processing

Frame/Video Synthesis.
Video Inpainting.

4.5. Self-attention for Computer Vision

4.5.1 General Formulation of Self-attention

4.5.2 Applications on Visual Tasks

Image Classification.
Semantic Segmentation.
Object Detection.
Other Vision Tasks.

4.6. Efficient Transformer

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

image-20210413233149803

4.6.1 Pruning and Decomposition

在基于transformer的预训练模型(如BERT)中,多重注意操作是并行进行的,以独立建模不同表征之间的关系[152,34]。然而,特定任务并不要求使用所有的磁头。

个人猜测

应该是不需要所有的都去求相互关系

好像猜测错误他说的是多头注意力机制

例如,Michel等人[103]提出的经验证据表明,在测试时可以去掉很大比例的注意头,而不会显著影响性能。头的数量在不同的层不同-有些层甚至可能只需要一个头。考虑到注意头的冗余性,[103]定义了重要性分数来估计每个头对最终输出的影响,不重要的头可以被删除,以便有效部署。Dalvi等[117]从两个角度分析了预训练Transformer模型中的冗余:通用冗余和特定任务冗余。遵循抽签假设[44],Prasanna等[117]对BERT中的抽签进行了分析,表明在基于transformer的模型中也存在良好的子网,减少了FFN层和注意力头,以实现较高的压缩率。

除了transformer模型的宽度外,还可以减少深度(即层的数量),以加速推理过程[39]。不同于transformer模型中不同的注意头可以并行计算的概念,不同的层必须顺序计算,因为下一层的输入依赖于前一层的输出。Fan等人[39]提出了一种基于层的减少策略来规范模型的训练,然后在测试阶段将整个层一起去除。考虑到不同设备中可用的资源可能不同,Hou等人[62]提出了自适应地减小预定义transformer模型的宽度和深度。该方法同时获得多个不同大小的模型,并通过重链接机制在不同的子网络中共享重要的注意头和神经元。

除了直接丢弃transformer模型中的模块的剪枝方法之外,矩阵分解的目标是基于低秩假设,用多个小矩阵来近似大矩阵。如Wang等[161]对transformer模型中的标准矩阵乘法进行了分解,提高了推理效率。

4.6.2 Knowledge Distillation

知识蒸馏的目的是通过从大型教师网络转移知识来训练学生网络[59,13,3]。与教师网络相比,学生网络的架构通常更薄、更浅,更容易在资源有限的资源上部署。神经网络的输出特征和中间特征也可以用来将有效的信息从教师传递给学生。慕克吉等人[106]专注于transformer模型,使用预先训练的BERT[34]作为教师,利用大量未标记的数据来指导小模型的训练。Wang等人[156]训练学生网络模仿预先训练的教师模型中的自我注意层的输出。关于值的点积作为一种新的知识形式被引入,以指导学生。在[156]中还引入了教师助理[104],减少了大型预训练transformer模型和紧凑的学生网络之间的差距,从而促进了模仿。由于transformer模型中存在不同类型的层(即自我注意层、嵌入层和预测层),Jiao等[73]设计了不同的目标函数来将知识从教师传递给学生。例如,学生模型的嵌入层的输出通过MSE损耗模拟教师的输出。一个可学习的线性变换也被施加到映射不同的特征到同一空间。对于预测层的输出,采用KL散度来度量不同模型之间的差异。

4.6.3 Quantization

量化的目的是减少表示网络权值或中间特征所需的比特数[151,170]。一般神经网络的量化方法已经详细讨论过,并取得了与原始网络相当的性能[112,45,7]。最近,人们对如何对变压器模型进行特殊量化越来越感兴趣[10,40]。例如,Shridhar等人[137]建议将输入嵌入到二进制高维向量中,然后使用二进制输入训练二值神经网络。Cheong等人的[26]用低位(例如4位)表示变压器模型中的权值。Zhao等[188]实证研究了各种量化方法,k-means量化有巨大的发展潜力。Prato等人[118]针对机器翻译任务提出了一种完全量化的transformer,如论文所言,这是第一个翻译质量不受任何损失的8位模型

4.6.4 Compact Architecture Design

除了将预定义的transformer模型压缩成更小的模型之外,有些作品还试图直接设计紧凑的模型[164,72]。Jiang等[72]提出了一种将全连接层和卷积层结合起来的名为跨层动态卷积的新模块,简化了自我注意的计算,如图11所示。通过卷积运算计算不同令牌表示之间的局部依赖性,这比标准变压器中密集的全连接层的效率高得多。深度卷积也被用于进一步降低计算成本。在[2]中提出了有趣的“汉堡包”层,使用矩阵分解代替原来的自我注意层。与标准的自我注意运算相比,矩阵分解能够更有效地计算出不同标记之间的依赖性。高效transformer体系结构的设计也可以通过神经体系结构搜索(neural architecture search, NAS)[52,138]实现自动化。神经体系结构搜索可以自动搜索如何组合不同的组件。

transformer模型中的自我注意运算是计算给定序列(图像识别任务[37]中的patches)中不同输入令牌表示之间的点积,复杂度为O(N),其中N为序列的长度。最近,有一个目标是将大型方法的复杂度降低到O(N),以便变压器模型可以扩展到长序列。例如,Katharopoulos等人[76]将自我注意近似为核特征映射的线性点积,并通过RNNs揭示了令牌之间的关系。Zaheer等人[177]将每个令牌视为图中的一个顶点,并将两个令牌之间的内积计算定义为边。受图论的启发[139,30],将各种稀疏图结合起来近似transformer模型中的稠密图,可以达到O(N)复杂度。Y un等[175]从理论角度证明了复杂度为O(N)的稀疏变压器足以反映token之间的任何一种关系,并且可以进行普遍逼近,为进一步研究复杂度为O(N)的transformer提供了理论保证。

Discussion.

上述方法在试图识别transformer模型中的冗余方面采取了不同的方法(参见图12)。

image-20210414100041814

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

5. Conclusions and Discussions

与Transformer相比,Transformer以其优异的性能和巨大的潜力成为计算机视觉领域的研究热点。为了发现和利用Transformer的能力,正如本研究中所总结的,近年来有许多方法被提出。这些方法在广泛的视觉任务,包括骨干,高/中级视觉,低层次视觉,和视频处理方面表现出色。然而,计算机视觉变压器的潜力还没有得到充分的探索,这意味着仍有一些挑战需要解决。在本节中,我们将讨论这些挑战,并对未来的前景提供见解。

5.1. Challenges

尽管研究人员已经提出了许多基于Transformer的模型来处理计算机视觉任务,但这些工作只是这个领域的第一步,还有很多改进的空间。例如,ViT[36]中的Transformer架构遵循了NLP的标准变压器[152],但专门为CV设计的改进版本仍有待探索。此外,有必要将transformer应用于上述任务以外的更多任务。

计算机视觉transformer的泛化和鲁棒性也具有挑战性。与cnn相比,纯transformer缺乏一些归纳偏差,并且严重依赖于大量数据集进行大规模的[36]训练。因此,数据的质量对变压器的泛化和鲁棒性有重要的影响。虽然ViT在CIFAR[79]、VTAB[179]等下游图像分类任务中表现出色,但直接将ViT骨干应用于对象检测并没有达到比CNNs[8]更好的效果。以更一般化的预训练transformer去完成一般化的视觉任务还有很长的路要走。

个人想法 几个点如下

1、怎么样让它高效,速度快(提出新的求解相对关系的方法)

2、怎么样让他在小数据上是可以被训练的(提出新的训练方法)

尽管有许多工作解释了transformer在自然语言处理中的使用[134,162],但要清楚地解释为什么transformer在视觉任务中工作得很好仍然是一个具有挑战性的课题。归纳偏差,包括平移均衡性和局部性,归因于CNN的成功,transformer没有任何归纳偏差。目前的文献通常采用直观的方法来分析效果[36,19]。例如,Dosovitskiy等人[36]声称大规模的训练可以超越归纳偏差。在图像补丁中加入位置嵌入来保留位置信息,这在计算机视觉任务中非常重要。受transformer中大量使用参数的启发,过度参数化[100,107]可能是视觉transformer可解释性的一个潜在点。

个人想法

可解释性怎么说明他是很有价值的

是否可以实现可视化的任务

比如说当前点对全图其他关系的这种图形式的值的表达

最后但并非最不重要的是,为CV开发高效的transformer模型仍然是一个开放的问题。transformer模型通常体积巨大,计算成本昂贵。例如,基本的ViT模型[36]需要180亿次运算才能处理一张图像。相比之下,轻量级的CNN模型GhostNet[54,55]只需约6亿次FLOPs就能实现类似的性能。虽然已经提出了几种压缩transformer的方法,但它们仍然非常复杂。而这些方法原本是为自然语言处理设计的,可能并不适用于CV。因此,迫切需要高效的变压器模型,以便在资源有限的设备上部署可视transformer。

个人想法

可能需要更加适合CV领域的高效的Transformer

5.2. Future Prospects

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

一个方向是提高Transformer在计算机视觉中的有效性和效率。目标是开发高效的视觉变形器;具体来说,就是高性能、低资源成本的变压器。性能决定了模型是否可以应用到实际应用中,而资源成本则影响在设备上的部署。效果通常与效率相关,如何在两者之间取得更好的平衡是未来研究的一个有意义的课题。

现有的大多数视觉转换器模型都被设计成只处理单一任务。许多NLP模型,如GPT-3[11],已经演示了transformer如何在一个模型中处理多个任务。在CV领域,IPT[20]还能够处理多个低分辨率的视觉任务,如超分辨率、图像去噪、去噪等。我们认为,更多的任务可以包含在一种模型里面。在一个transformer(即大统一模型)中统一所有视觉任务甚至其他任务是一个令人兴奋的主题。

神经网络有各种类型,如CNN、RNN和transformer。在CV领域,cnn曾经是主流选择[57,146],但现在transformer正变得越来越流行。cnn可以捕获归纳偏差,如转换的空间不变性和局部性,而ViT使用大规模训练来超越归纳偏差[36]。从目前可用的[36]证据来看,cnn在小数据集上表现良好,而transformer在大数据集上表现更好。未来的问题是使用CNN还是transformer。

通过使用大数据集进行训练,transformer可以在NLP[11,34]和CV基准[36]上实现最先进的性能。神经网络可能需要大数据,而不是诱导偏差。最后,我们给您留下一个问题:transformer 能够通过非常简单的计算范式(例如,仅使用完全连接的层)和大量数据训练获得令人满意的结果吗?

个人想法有没有办法用别的方式来进行分数的计算而不是通过两个很大矩阵向量相乘的方式

用别的方式是否可以获得这个相互关系比如全连接

注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/115692529"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top