Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(一)----transformer的发展,transformer的基本结构和原理

论文综述:
在这里插入图片描述
文章主旨:在本文中,我们回顾了这些视觉Transformer模型,将它们分为不同的任务,并分析了它们的优缺点。我们探讨的主要类别包括主干网络、高/中级视觉、低级视觉和视频处理。我们还包括有效的Transformer方法,用于将Transformer推进基于设备的实际应用。此外,我们还简要介绍了计算机视觉中的自我注意机制,因为它是Transformer的基本组成部分。在本文的最后,我们讨论了视觉Transformer面临的挑战,并提供了几个进一步的研究方向。

其他章节:
Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(二)-- transformer在计算机视觉领域的发展和应用

Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(三)–Transformer应用的图像处理与视频处理的研究

Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(四)–高效Transformer、计算机视觉的自注意力、Transformer的总结与展望

A Survey on Vision Transformer

1. Transformer方向与历史

1.1 高/中级视觉处理

高级视觉处理:对图像中所见内容的解释和使用。
中层视觉处理:如何将这些信息组织成我们作为对象和表面所体验的内容。
(鉴于在基于DNN的视觉系统中,高级视觉和中级视觉之间的差距变得越来越模糊,这里将它们作为一个单一的类别来对待。)
解决这些高/中级视觉任务的几个Transformer模型的例子包括:
用于目标检测的DETR( End-to-end object detection with transformers. InECCV,2020.)、用于目标检测的可变形DETR(Deformable detr: Deformable transformers for end-to-end object detection. InICLR,
2021)和用于分割的Max-DeepLab( Max-deeplab: End-to-end panoptic segmentation with mask transformers. InCVPR)。

1.2 低级图像处理

低级图像处理:主要处理从图像中提取描述(这种描述通常表示为图像本身)
低层图像处理的典型应用包括超分辨率、图像去噪和样式转换。
目前,只有少数作品[27]、[171]在低层视觉中使用了变压器,这就产生了进一步研究的需要。

[27]:Pre-trained image processing transformer. InCVPR, 2021
[171]:Image transformer. InICML

1.3 视频处理

这是计算机视觉和基于图像的任务中的重要部分。
由于视频的时序性,Transformer本质上很适合用于视频任务[288]、[268],其中它开始与传统的CNN和RNN平起平坐。

[288]:End-to-end dense video captioning with masked transformer. InCVPR,2018
[268]: Learning joint spatial-temporal transformations for video inpainting. InECCV, 2020.

1.4 Vision Transformer 发展关键里程碑图

在这里插入图片描述
2017.6: 基于注意力机制的Transformer被提出,并在NLP任务中表现出很好的性能。
2018.10: 在NLP领域,预训练Transformer模型开始占据主导地位,代表:BERT。
2020.5:GPT-3,一台具有170B参数的巨型Transformer ,向通用NLP模型迈进了一大步。
2020.5:DETR,通过将目标检测视为直接集合预测问题,为高级视觉提供了一种简单而有效的框架。
2020.7: iGPT,NLP的Transformer模型也可用于图像预训练。
2020.10: ViT,实现纯Transformer架构可以很好地进行视觉识别。
2020.12:IPT,第一个结合多任务的低层视觉Transformer模型。
2021: ViTVariants,VIT模型的变体,例如DeiT、PVT、TNT和Swin。

1.5 Vision Transformer代表作

在这里插入图片描述

2. FORMULATION OF TRANSFORMER

在这里插入图片描述
由上图所示,Transformer由一个编码器模块和一个解码器模块组成,其中包含多个相同架构的编码器/解码器。 每个编码器和解码器由一个自注意层和一个前馈神经网络组成,而每个解码器还包含一个编码器-解码器注意层。

2.1 Scaled Dot-product Self-Attention 自注意力

在这里插入图片描述

在自我关注层,输入向量首先被转换成三个不同的向量:查询向量Q、关键向量k和维度为 d_q = d_k = d_v = d_model = 512 的值向量v。然后,从不同输入中导出的向量被压缩到三个不同的矩阵中,即Q、K和V。随后,不同输入向量之间的注意函数计算如下(如图3所示):
第一步:计算不同输入向量之间的分数: S = Q ⋅ K T S=Q \cdot K^T S=QKT
第二步:对梯度稳定性的分数进行标准化: S N = S / d k S_N = S / \sqrt[]{d_k} SN=S/dk
第三步:使用softmax将分数转换为概率: f u n c t i o n   P = s o f t m a x ( S n ) function \ P = softmax(S_n) function P=softmax(Sn)
第四步:获得加权值矩阵: Z = V ⋅ P Z=V \cdot P Z=VP
该过程可以统一为一个功能:
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 Attention(Q,K,V)=softmax(\frac{Q \cdot K^T }{ \sqrt[]{d_k}}) \cdot V Attention(Q,K,V)=softmax(dk QKT)V

第一步计算每对不同向量之间的分数,这些分数决定了我们在当前位置编码单词时对其他单词的关注程度。第2步将分数标准化,以增强梯度稳定性,从而改进训练,第3步将分数转换为概率。最后,将每个值向量乘以概率之和。更大概率的V型载体从以下几层获得额外关注。

解码器模块中的编码器-解码器注意层与编码器模块中的自我注意层类似,但以下例外情况除外:密钥矩阵和值矩阵V源自编码器模块,查询矩阵Q源自前一层。

注意,前面的过程对每个单词的位置是不变的,这意味着自我注意层缺乏捕捉句子中单词位置信息的能力。然而,语言中句子的顺序性要求我们在编码中加入位置信息。为了解决这个问题并获得单词的最终输入向量,在原始输入嵌入中添加了一种带有维度模型的位置编码。具体而言,该位置用以下等式编码:
P E ( p o s , 2 i ) = s i n ( p o s 1000 0 2 i d m o d e l ) PE(pos,2i)=sin(\frac{pos}{10000^\frac{2i}{d_model}}) PE(pos,2i)=sin(10000dmodel2ipos)
P E ( p o s , 2 i + 1 ) = c o s ( p o s 1000 0 2 i d m o d e l ) PE(pos,2i+1)=cos(\frac{pos}{10000^\frac{2i}{d_model}}) PE(pos,2i+1)=cos(10000dmodel2ipos)
其中pos表示单词在句子中的位置,i表示位置编码的当前维度。通过这种方式,位置编码的每个元素对应于一个正弦波,并且它允许变压器模型学习通过相对位置参与,并在推理期间外推到更长的序列长度

2.1.1 Multi-Head Attention 多头注意力

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

为了更详细地说明这一点,在给定输入向量和Headsh数量的情况下,首先将输入向量转换为三个不同的向量组:查询组、键组和值组。每组中有h个向量,维度为:在这里插入图片描述
然后将来自不同输入的向量打包成三组不同的矩阵:
在这里插入图片描述
多头注意过程如下所示:
M u l t i H e a d ( Q ′ , K ′ , V ′ ) = C o n c a t ( h e a d 1 , … … h e a d h ) W 0 , MultiHead(Q^\prime,K^\prime,V^\prime) = Concat(head_1,……head_h)W^0, MultiHead(Q,K,V)=Concat(head1,……headh)W0,
w h e r e   h e a d i = A t t e n t i o n ( Q i , K i , V i ) where \ head_i = Attention(Q_i,K_i,V_i) where headi=Attention(Qi,Ki,Vi)

2.2 Transformer其他关键概念

2.2.1 Residual Connection in the Encoder and Decoder 编解码器中的残余连接

在这里插入图片描述

上图,将剩余连接添加到编码器和解码器中的每个子层。这加强了信息流,以实现更高的性能。在剩余连接之后进行层归一化。这些操作的输出可以描述为:
L a y e r N o r m ( X + A t t e n t i o n ( X ) ) LayerNorm(X+Attention(X)) LayerNorm(X+Attention(X))

这里,X用作自我关注层的输入,并且查询、关键字和值矩阵Q、K和V都从相同的输入矩阵X导出。对于归一化层,存在诸如批归一化[107]之类的若干备选方案。批量归一化(batch normalization)在应用于Transformer时通常表现较差,因为特征值变化很大[198]。还提出了一些其他归一化算法[249]、[198]、[5]来改进Transformer的训练。

[107]:Batch normalization: Accelerating deep network training by reducing internal covariate shift. InICML, 2015.
[198]:Powernorm: Rethinking batch normalization in transformers.PMLR, 2020.
[249]:Understanding and improving layer normalization. NeurIPS, 2019.
[5]:Rezero is all you need: Fast convergence at large depth.arXiv preprint arXiv:2003.04887, 2020.

2.2.2 Feed-Forward Network 前馈网络

在每个编码器和解码器中的自我注意层之后应用前馈网络(FFN)。它由两个线性变换层和其中的一个非线性激活函数组成,可以表示为以下函数:
F F N ( X ) = W 2 σ ( W 1 X ) FFN(X)=W_{2}\sigma(W_1X) FFN(X)=W2σ(W1X)

其中W1和W2是两个线性变换层的两个参数矩阵,σ表示非线性激活函数,如GELU。隐藏层的维数为dh=2048。

2.2.3 Final Layer in the Decoder 解码器的最后一层

解码器的最后一层用于将向量堆栈转换回一个字。这是由线性层和softmax层实现的。线性层将向量投影到具有dword维度的logits向量中,其中dword是词汇表中的单词数。然后使用softmax层将logits向量转换为概率。

当用于CV任务时,大多数变压器采用原始Transformer的编码器模块。这种Transformer可以被视为一种新型的特征抽取器。与只关注局部特征的CNN相比,transformer可以捕捉远距离特征,这意味着它可以轻松地获取全局信息。与RNN相比,transformer的效率更高,因为自关注层和完全连接层的输出可以并行计算,并且易于加速,所以RNN的隐藏状态必须按顺序计算。由此,我们可以得出结论,进一步研究在计算机视觉中使用transformer以及NLP将产生有益的结果。

以下章节见:Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(二)

3. VISION TRANSFORMER 视觉Transformer

3.1 Backbone for Representation Learning 表征学习的主干网

3.1.1 Pure Transformer 纯Transformer

3.1.2 Transformer with Convolution 卷积Transformer

3.1.3 Self-supervised Representation Learning 自监督表征学习

3.1.4 Discussions

3.2 High/Mid-level Vision 高中级视觉

3.2.1 Generic Object Detection 通用对象检测

3.2.2 Segmentation 分割

3.2.3 Pose Estimation 姿态估计

3.2.4 Other Tasks 其他任务

3.2.5 Discussions

以下章节见:Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(三)–Transformer应用的图像处理与视频处理的研究

3.3 Low-level Vision 低层视觉领域

3.3.1 Image Generation 图像生成

3.3.2 Image Processing 图像处理

3.4 Video Processing 视频处理

3.4.1 High-level Video Processing 高级视频处理

3.4.2 Low-level Video Processing 低级视频处理

3.4.3 Discussions

3.5 Multi-Modal Tasks 多通道任务

Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(四)–高效Transformer、计算机视觉的自注意力、Transformer的总结与展望

3.6 Efficient Transformer 高效Transformer

3.6.1 Pruning and Decomposition 修剪和分解

3.6.2 Knowledge Distillation 知识蒸馏

3.6.3 Quantization 量化

3.6.4 Compact Architecture Design

4. SELF-ATTENTION FORCOMPUTERVISION 计算机视觉的自我关注

5. CONCLUSIONS ANDDISCUSSIONS 结论与讨论

5.1 Challenges

5.2 Future Prospects 未来展望

  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值