本文探讨的主要类别包括:主干网络、高/中级视觉、低级视觉和视频处理。
我们还包括有效的Transformer方法,用于将Transformer推进device-based的实际应用。
此外还简要介绍了计算机视觉中的自我注意机制,因为它是Transformer的基本组成部分。
在本文的最后,讨论了视觉Transformer面临的挑战,并提供了几个进一步的研究方向。
high-level视觉:处理的是对图像中所见内容的解释和使用。
mid-level视觉:处理的是这些信息是如何组织成我们所体验到的物体和表面objects and surfaces.
(由于在DNN-based vision system中、高级的界限变得越来越模糊,此处将其视为一个种类)
low-level图像处理:处理的主要是从图像中提取description(此类描述通常表示为图像本身)。
输入向量首先被转换成三个不同的向量:the query vector q q q, the key vector k k k and the
value vector v v v with dimension 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 , K , V Q,K,V Q,K,V
具体步骤如下:
图示可以看Fig 2.1的左图
Multi-Head Attention
是一个可以用来提高原始自注意的层performance的机制。
当我们给定一个参考词时,在通读句子时通常希望关注其他几个词,Single-Head自注意层限制了我们专注于一个或多个特定位置的能力,而同时不影响对其他同等重要位置的关注。
这是通过赋予注意层不同的表示子空间来实现的,具体地说,不同的头部使用不同的查询矩阵 Q Q Q、键矩阵 K K K和值矩阵 V V V,由于随机初始化,这些矩阵可以在训练后将输入向量投影到不同的表示子空间。
更详细地阐述这一点,给定一个输入vector,和heads数 h h h。
首先将input vector分为三组,the query group, the key group and the value group.
每个组中有h个vector,每个vector的dimension为 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.
这些vector会被打包成三组不同的矩阵: { 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.
具体步骤如下:
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 o , MultiHead(Q^{'}, K^{'}, V^{'}) = Concat(head_1,...,head_h)W^o, MultiHead(Q′,K′,V′)=Concat(head1,...,headh)Wo,
其中:
h e a d i = A t t e n t i o n ( Q i , K i , V i ) . head_i = Attention(Q_i, K_i, V_i). headi=Attention(Qi,Ki,Vi).
Q ′ ( K ′ , V ′ 一 样 ) 是 { Q i } i = 1 h 的 c o n c a t e n a t i o n . Q^{'}(K^{'}, V^{'}一样)是\{{Q_i}\}^h_{i=1}的concatenation. Q′(K′,V′一样)是{Qi}i=1h的concatenation.
W o ( ∈ R d m o d e l × d m o d e l ) 是 投 影 权 重 。 W^o(\in \mathbb R^{d_{model} \times d_{model}})是投影权重。 Wo(∈Rdmodel×dmodel)是投影权重。
self-attention与Multi_head attention的流程图如Fig 2.1所示
Feed-Forward Network, FFN.
在每个编码器和解码器中的自我注意层之后用前馈网络(FFN)。它包含了两个线性变换层和一个非线性激活函数,可以写作:
F F N ( X ) = W 2 σ ( W 1 X ) FFN(X) = W_2 \sigma(W_1X) FFN(X)=W2σ(W1X)
其中 W 1 和 W 2 W_1和W_2 W1和W2是两个线性变换层的两个参数矩阵, σ \sigma σ代表非线性激活层,如GELU等,隐藏层的维度 d h = 2048 d_h=2048 dh=2048。
Residual Connection in the Encoder and Decoder.
如Fig. 2所示,
residual connection被添加到编码器和解码器中的每个子层。这将加强信息流,以实现更高的性能。在residual connection后面跟随了一个layer-normalization。这些操作的输出可以描述为:
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 X X被用作self-attention层的输入,查询、键和值矩阵 Q 、 K 和 V Q、K和V Q、K和V都来自同一个输入矩阵 X X X。
一个变体,Pre-layer normalization(pre-LN)也被广泛使用。Pre-LN在residual connection内部、multi-head或FFN之前 插入layer normalization。
对于normalization layer,有几种可选方案,例如Batch normalization. BN在Transformer上表现得很差,因为特征值会剧烈改变。还提出了其他一些归一化算法[56]、[55]、[57]来改进Transformer的训练。
Final Layer in the Decoder.
当用于CV任务时,大多数Transformer采用原始Transformer的编码器模块。这种Transformer可以被视为一种新型的特征抽取器。与只关注局部特征的CNN相比,transformer可以捕捉远距离特征,这意味着它可以轻松地获取全局信息。
与RNN相比,transformer的效率更高,因为自关注层和完全连接层的输出可以并行计算,并且易于加速,而RNN的隐藏状态必须按顺序计算。
ViT:略
Variants of ViT
在ViT的基础上提出了一系列ViT变体,以提高视觉任务的性能。主要方法包括:增强局部、提高self-attention和架构设计。
作为transformer的关键组件,self-attention层提供了图像块之间全局交互的能力。提高自我注意层的计算能力吸引了许多研究者。
KVT(Kvt: k-nn attention for boosting vision transformers, 2021)
提出了 k − k- k−NN attention来利用图像patches的局部性,通过只使用top- k k k 相似的token计算attention 来忽略噪声token
Refiner(Refiner: Refining self-attention for vision transformers, 2021)
XCiT跨特征通道而不是token来执行self-attention计算,这使得可以高效处理高分辨率图像。
自注意机制的计算复杂度和注意精度是未来优化的两个关键点。
类金字塔型
two-stream结构
U-net 结构
NAS
目前,vision transformer的网络设计和NAS主要借鉴CNN的经验。
除上述方法之外,还有一些其他方向,如:
位置编码
Normalization策略
shortcut connection
removing attention
利用卷积来增强传统Transformer block或self-attention layer:
CPVT(Conditional positional encodings for vision transformers, 2021)
CPVT提出了一种条件位置编码(condition positional encoding, CPE)方案,该方案以输入token的local 领域为条件,并适用于任意输入大小,以利用卷积进行精细特征编码。
CvT(Cvt: Introducing convolutions to vision transformers, 2021)
CeiT(Incorporating Convolution Designs into Visual Transformers, 2021)
LocalViT(LocalViT: Bringing Locality to Vision Transformers, 2021)
CMT(CMT: Convolutional Neural Networks Meet Vision Transformers, 2021)
这四篇分析了直接从NLP借用Transformer架构并将卷积与Transformer结合在一起时可能存在的缺点。
具体而言,每个Transformer块中的前馈网络与卷积层相结合,卷积层促进相邻token之间的相关性。
LeViT(LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference, ICCV 2021)
回顾了CNN大量文献中的原理,并将其应用于transformer,提出了一种用于快速推理图像分类的混合神经网络。
BoTNet(Bottleneck transformers for visual recognition, CVPR 2021)
在ResNet的最后3个bottleneck block中,用全局self-attention代替了空间卷积,并在延迟开销最小情况下,在实例分割和目标检测任务上显著改进了baseline。
此外,一些研究人员已经证明基于transformer的模型可能更难享受良好的数据拟合能力,也就是说它们对优化器的选择,超参数和训练的安排更为敏感。
Visformer(Visformer: The vision-friendly transformer, 2021)
通过两种不同的训练设置揭示了transformer和CNNs之间的差距。第一种方法是标准的CNN设置,如:训练计划更短,数据增强只包括了随机剪裁和水平翻转。另一个是用了DeiT (Training data-efficient image transformers & distillation through attention, ICML 2020)中的训练设置,如:训练计划更长,数据增强更强。
Early Convolutions Help Transformers See Better, NeurIPS 2021
改变了ViT的早期视觉处理,用标准卷积stem代替了原来的embedding stem,并发现这种改变使ViT更快收敛,并且无论是用AdamW还是SGD都不会有明显的准确率降低(之前的著作都是SGD会降低acc)
除了这两篇,CMT和LeVit也在transformer的顶部加了卷积stem。
An empirical study of training self-supervised vision transformers, ICCV 2021研究了几种基本成分对训练自监督ViT的影响。作者观察到,不稳定性是降低准确率的一个主要问题,这些结果确实是部分失败,当训练变得更稳定时,它们可以得到改善。
他们引入了一个“MoCo v3”框架,这是对MoCo, CVPR 2020的增量改进。具体来说,作者在随机数据增强的情况下为每张图像做两次裁剪。它们由两个编码器( f q f_q fq和 f k f_k fk)编码,输出向量为 q q q和 k k k。直观地说, q q q的行为就像一个“query”,学习的目标是检索相应的“key”。这被表述为最小化对比损失函数,可以写成:
L q = − l o g e x p ( q ⋅ k + / τ ) e x p ( q ⋅ k + / τ ) + ∑ k − e x p ( q ⋅ k − / τ ) L_q = -log{{exp(q\cdot k^+/\tau)} \over exp(q\cdot k^+/\tau) + \sum_{k^-} exp(q\cdot k^-/\tau)} Lq=−logexp(q⋅k+/τ)+∑k−exp(q⋅k−/τ)exp(q⋅k+/τ)
此处 k + k^+ k+是 f k f_k fk在与 q q q相同的图像上的输出,称为 q q q的正样本, k − k^- k−是一个集合,包含了 f k f_k fk从其他图像上的输出,称为 q q q的负样本。
τ \tau τ是 L 2 L_2 L2正则化 q , k q,k q,k的温度超参数。
MoCo v3使用在同一批中自然共存的keys,并放弃内存队列,他们发现如果patch足够大(例如4096),内存队列的增益会减小。
通过这种简化,对比损失可以以一种简单的方式实现。encoder f q f_q fq包括一个backbone(例如ViT)、投影头和一个额外预测头;encoder f k f_k fk有一个backbone和投影头,但没有预测头。 f k f_k fk由 f q f_q fq的移动平均值更新,不包括预测头。
MoCo v3表明,不稳定性是训练自监督ViT的一个主要问题,因此他们描述了一个简单的技巧,可以在各种实验情况下提高稳定性。
他们观察到,没有必要训练patch投影层。对于标准ViT patch size,patch投影矩阵是完整的或过完整的。在这种情况下,随机投影应该足以保留原始patch的信息。
然而,这种伎俩缓解了问题,但并不能解决它。如果学习速率过大,模型仍然可能不稳定,并且第一层不太可能是不稳定的根本原因。
vision transformer的所有组件,包括多头自注意、多层感知器、shortcut connection、layer normalization、positional encoding和network topology,在视觉识别中起着关键作用。
如上文所述,提出了提高vision transformer效率的一些设想。从图6中的结果可以看出,将CNN和transformer相结合可以获得更好的性能。
通过局部连接和全局连接表明它们之间的互补性,对backbone的进一步调查可以改善整个视觉社区。对于vision transformer的自我监督表征学习,我们仍然需要努力在NLP领域寻求大规模预训练的成功。
一些目标检测方法试图利用transformer的自注意机制,然后增强现代检测器的特定模块,如特征融合模块(Feature pyramid transformer, ECCV 2020)和预测头(RelationNet++: Bridging Visual Representations for Object Detection via Transformer Decoder, NeurIPS 2020),本文将在补充材料中讨论。
基于transformer的目标检测方法大致分为两类,通用框架如下图:
DETR(End-to-end object detection with transformers, ECCV 2020)
作为基于transformer检测方法的先驱,DETR重新设计了目标检测框架。
DETR是一种简单且完全端到端的目标检测器,它将目标检测任务视为一个直观的集合预测问题,消除了传统手工制作的组件,如anchor生成和非最大抑制(NMS)后处理。
如图8所示,DETR从CNN主干开始,从输入图像中提取特征。为了用位置信息补充图像特征,在将特征输入编码器-解码器转换器之前,将固定的位置编码添加到flattened特征中。
解码器使用来自编码器的embedding以及N个学习的位置编码(object queries),并产生N个输出embedding。这里N是一个预定义的参数,通常大于图像中对象的数量。
简单前馈网络(FFN)用于计算最终预测,包含了bounding box坐标和类标签,用于指示对象的特定类。
与原始的transformer不同,DETR按顺序计算预测,它并行解码N个对象。DETR采用二分匹配算法来分配预测对象和ground truth对象。如等式11所示,利用匈牙利损失计算所有匹配对象对的损失函数。
其中, σ ^ \hat σ σ^是最优赋值, c i c_i ci和 p ^ σ ^ ( i ) ( c i ) \hat p_{\hat σ(i)}(c_i) p^σ^(i)(ci)分别是目标类标签和预测标签, b i b_i bi和 b ^ σ ^ ( i ) \hat b_{\hat σ}(i) b^σ^(i)是ground truth和预测边界框, y = ( c i , b i ) y={(c_i,b_i)} y=(ci,bi)和 y ^ \hat y y^分别是对象的ground truth和预测。
DETR在目标检测方面表现出了令人印象深刻的性能,在COCO benchmark上提供了与流行且公认的faster R-CNN baseline相当的准确度和速度。
Deformable DETR: Deformable transformers for end-to-end object detection, ICLR 2021
DETR是一种基于transformer的目标检测框架的新设计,使社区能够开发完全端到端的检测器。然而,原始DETR带来了一些挑战,具体来说,训练计划较长,小型物体的性能较差。为了应对这些挑战,本文提出了可变形(Deformable)DETR,它已成为一种流行的方法,显著提高了检测性能。
多个关键点的注意力集中在原始图像上的所有位置,而不是由多个关键点的注意力集中在原始图像上的所有位置。这种方法大大降低了计算复杂度,并带来了快速收敛的好处。
更重要的是,可变形注意模块可以轻松应用于融合多尺度特征。Deformable DETR比DETR具有更好的性能,训练成本减少10倍,推理速度加快1.6倍。通过使用迭代边界盒细化方法和两阶段方案,可变形DETR可以进一步提高检测性能。
Rethinking Transformer-based Set Prediction for Object Detection, CVPR 2021
本文研究了DETR模型收敛缓慢的原因,发现主要是由于transformer解码器中的交叉注意模块。为了解决这个问题,提出了一种只使用encoder的DETR版本,在检测精度和训练收敛性方面实现了相当大的改进。此外,为了提高训练稳定性和更快的收敛速度,设计了一种新的二分匹配方案(bipartite matching scheme),并提出了两种基于transformer的set prediction模型,即TSP-FCOS和TSP-RCNN,用特征金字塔来改进仅encoder的DETR。与原DETR模型相比,这些新模型实现了更好的性能。
Fast Convergence of DETR with Spatially Modulated Co-Attention, ICCV 2021
本文提出了 空间调制的共同注意(Spatially Modulated Co-Attention, SMCA)机制,通过将Co-Attention反应限制在接近初始估计边界框位置的较高水平来加速收敛。将SMCA模块聚合到DETR中,在推理成本相当的情况下,可以用大约10倍及更少的训练epoch获得几乎相同的mAP。
End-to-end object detection with adaptive clustering transformer, BMVC 2021
鉴于与DETR相关的高计算复杂度,本文提出了一种自适应聚类transformer(Adaptive Clustering
Transformer , ACT),以降低预训练DETR的计算成本。ACT使用局部敏感哈希( locality sensitivity hashing, LSH)方法自适应地对查询特征进行聚类,并将注意力输出广播到所选原型表示的查询。ACT用于取代预先训练的DETR模型的自注意模块,无需任何再训练。这种方法大大降低了计算成本,同时精度略有下降。通过使用多任务知识蒸馏(multi-task knowledge distillation, MTKD)方法,可以进一步减少性能下降,该方法利用原始transformer 提取ACT模块,并进行几次微调。
Efficient DETR: Improving End-to-End Object Detector with Dense Prior, 2021
本文指出,DETR中的随机初始化是需要多个解码器层和缓慢收敛的主要原因。为此,他们提出了Efficient DETR,通过一个额外的区域建议网络将密集先验信息纳入检测管道。更好的初始化使它们能够只使用一个解码器层,而不是六层,从而在更紧凑的网络中实现具有竞争力的性能。
Oriented Object Detection with Transformer, 2021
基于transformer的backbone方法
受NLP中预训练Transformer方案的启发,提出了几种方法来探索基于变换的目标检测的不同预训练方案[32]、[126]、[129]。
UP-DETR: Unsupervised Pre-training for Object Detection with Transformers, CVPR 2021
本文提出了目标检测的无监督预训练(UP-DETR)。具体而言,本文提出了一种新的无监督借口任务——随机query patch detection来预训练DETR模型。通过这种无监督的预训练方案,UP-DETR在相对较小的数据集(PASCAL VOC)上显著提高了检测精度。在有足够培训数据的COCO benchmark上,UP-DETR仍优于DETR,证明了无监督预培训计划的有效性。
You Only Look at One Sequence: Rethinking Transformer in Vision through Object Detection, NeurIPS 2021
本文探索了如何将在ImageNet上预先训练的纯ViT结构转移到更具挑战性的目标检测任务中,并提出了YOLOS检测器。为了处理目标检测任务,提出的YOLOS首先在ViT中删除分类token,并附加可学习的检测token。此外,利用二分匹配损失(bipartite matching loss)对目标进行集合预测set prediction。通过在ImageNet数据集上的这种简单预训练方案,所提出的YOLOS在COCO benchmark上显示了具有竞争力的目标检测性能
在COCO 2012 val set上基于transformer的不同目标检测方法的结果
分割是计算机视觉领域的一个重要课题,广泛包括全景分割、实例分割和语义分割等。视觉transformer在分割领域也显示出巨大的潜力。
DETR[16]可以自然地扩展到全景分割任务中,并通过在decoder上附加一个mask head来获得好的结果。
MaX-DeepLab: End-to-End Panoptic Segmentation with Mask Transformers, CVPR 2021
提出Max-DeepLab使用mask transformer直接预测全景分割结果,而不涉及诸如框检测之类的代理子任务。与DETR类似,Max-DeepLab以端到端的方式将全景分割任务流线型化,并直接预测一组不重叠的mask和相应的标签。模型训练使用全景质量(panoptic quality, PQ)类型的loss进行,但与之前将transformer堆叠在CNN主干上的方法不同,Max-DeepLab采用了双路径框架,有助于CNN和transformer的组合。
End-to-End Video Instance Segmentation with Transformers, CVPR 2021
本文提出VisTR,一种基于transformer的视频实例分割模型,用于从输入图像序列中生成实例预测结果。提出了一种匹配实例序列的策略,将预测值与ground truth相匹配。为了获得每个实例的mask序列,VisTR利用实例序列分割模块积累多帧的mask特征,并使用3D CNN分割mask序列。
ISTR: End-to-End Instance Segmentation with Transformers, 2021
提出了一种实例分割Transformer(Instance Segmentation Transformer, ISTR),用于预测低维mask嵌入,并将其与集合损失的基本真相相匹配。ISTR采用与现有自顶向下和自底向上框架不同的循环细化策略进行检测和分割。
Associating Objects with Transformers for Video Object Segmentation, NeurIPS 2021
本文研究了如何实现更好、更高效的嵌入学习,以解决具有挑战性的多对象场景下的半监督视频对象分割问题。
Fully Transformer Networks for Semantic Image Segmentation, 2021
SOLQ: Segmenting Objects by Learning Queries, 2021 NeurIPS
Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers, 2021 CVPR
提出了一个基于Transformer的语义分割网络(semantic segmentation, SETR)。SETR利用类似于ViT的encoder作为编码器来从输入图像中提取特征。采用多级特征聚合模块来执行像素级的分割。
Segmenter: Transformer for Semantic Segmentation, 2021 ICCV
介绍了一种基于图像patch对应的输出embedding,利用point-wise线性解码器或mask transformer解码器获取类标签的分割器。
SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers, 2021 NeurIPS
提出了一个简单、高效但功能强大的语义分割框架,该框架将Transformers与轻量级多层感知(MLP)解码器相结合,输出多尺度特征,避免了复杂的解码器。
Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation, 2021
提出了一种用于医学图像分割的类似于Unet的纯transformer,通过将tokenized image patches送入基于transformer的U形Encoder-Decoder结构,并使用skip-connections进行局部-全局语义特征学习。
Medical Transformer: Gated Axial-Attention for Medical Image Segmentation, 2021 MICCAI
探索了基于transformer的解决方案,研究了将基于transformer的网络体系结构用于医学图像分割任务的可行性,并提出了一种门控轴向注意(Gated Axial-Attention )模型,该模型通过在自注意模块中引入额外的控制机制来扩展现有的体系结构。
Attention-Based Transformers for Instance Segmentation of Cells in Microstructures, 2020 IEEE
提出了Cell-DETR,基于DETR全景分割模型,尝试使用transformer进行单元实例分割。它添加了skip-connections,将backbone CNN和分割头中的CNN解码器之间的特征连接起来,以增强特征融合。Cell-DETR实现了从显微镜图像分割细胞实例的最新性能。
如前几节所述,transformers在多个高级任务中表现出了强大的性能,包括检测、分割和姿势估计。在将transformer用于高级任务之前,需要解决的关键问题涉及输入嵌入input embedding、位置编码和预测损失prediction loss. 一些方法建议从不同角度改进自我注意模块,例如,Deformable DETR、ACT和Point transformer, 2021 ICCV。
尽管如此,在高级视觉任务中使用transformer的探索仍处于初级阶段,因此进一步的研究可能会证明是有益的。例如,是否有必要在transformer之前使用CNN和PointNet等特征提取模块以获得更好的性能?如何像BERT和GPT-3在NLP领域所做的那样,使用大规模的预训练数据集充分利用vision transformer?有没有可能预先训练一个transformer模型,并针对不同的下游任务进行微调,只需进行几次微调?如何通过结合特定任务的先验知识来设计更强大的体系结构?
很少有作品将变压器应用于low-level vision领域,如图像超分辨率和生成。这些任务通常将图像作为输出(例如,高分辨率或去噪图像),这比分类、分割和检测等高级别视觉任务更具挑战性。
请注意,这篇综述主要集中在纯视觉任务上,图9中不包括DALL·E的框架
将transformer模型应用于图像生成任务的一个简单而有效的方法是直接将架构从CNN更改为transformers,如Fig. 9(a)所示。
TransGAN: Two Pure Transformers Can Make One Strong GAN, and That Can Scale Up, 2021 NeurIPS
提出了TransGAN,即使用transformer结构构建GAN。由于很难生成像素级的高分辨率图像,因此通过在不同阶段逐渐提高特征图分辨率来使用内存友好的生成器。相应地,设计了一种多尺度鉴别器来处理不同阶段的不同大小的输入。介绍了各种训练方法,包括网格自我注意、数据增强、相对位置编码和修改的归一化,以稳定训练并提高其性能。在各种基准数据集上的实验证明了基于transformer的GAN模型在图像生成任务中的有效性和潜力。
ViTGAN: Training GANs with Vision Transformers, 2021
提出了ViTGAN,该方法将多种技术引入generator and discriminator,以稳定训练过程和收敛。在自我注意模块中引入了欧几里德距离,以增强transformer鉴别器的Lipschitzness(利普希茨?)。提出了Self-modulated layernorm和隐式神经表示来增强generator 的训练。因此,ViTGAN是第一个证明基于transformer的GAN可以实现与基于CNN的最先进GAN相当的性能的作品。
Image Transformer, ICML 2018
提出了Image Transformer,这是将Transformer模型推广到以自回归方式制定图像翻译image translation和生成任务的第一步。Image Transformer由两部分组成:用于提取图像表示的编码器和用于生成像素的解码器。每个像素的值为0 − 255,为了将每个值编码为d维向量,学习一个256×d维的嵌入embedding,该向量作为输入被喂给编码器。编码器和解码器采用与Attention is all you need, 2017 neurIPS中相同的架构。每个输出像素 q ′ q^{'} q′是通过计算输入像素q和之前生成的position embedding为 p 1 , p 2 , . . . p_1,p_2,... p1,p2,...的像素 m 1 , m 2 , . . . m_1,m_2,... m1,m2,...之间的自注意生成的。
对于image-condition生成,如超分辨率和修复,使用编码器-解码器体系结构,其中编码器的输入是低分辨率或损坏的图像。对于无条件和class-condition generation(即噪声到图像),只有解码器用于输入噪声向量。由于解码器的输入是先前生成的像素(在生成高分辨率图像时涉及较高的计算成本),因此提出了一种局部自注意方案。该方案仅使用最近生成的像素作为解码器的输入,使image transformer在图像生成和翻译任务中的性能与基于CNN的模型相当,证明了基于transformer的模型在低水平视觉任务中的有效性。
Taming Transformers for High-Resolution Image Synthesis, 2021 CVPR
由于transformer模型很难直接生成高分辨率图像,本文提出了驯化transformer。驯服transformer由两部分组成:VQGAN和transformer。VQGAN是VQVAE的一个变体Neural Discrete Representation Learning, 2017,它使用鉴别器和感知损失perceptual loss来改善视觉质量。通过VQGAN,图像可以由一系列上下文丰富的离散向量表示,因此这些向量可以很容易地通过自动回归的方式由transformer模型预测。transformer模型可以学习long-range交互以生成高分辨率图像。因此,所提出的驯服transformer在各种各样的图像合成任务上实现了最先进的结果。
Zero-Shot Text-to-Image Generation, 2021 ICML
提出了文本到图像生成的转换模型,该模型根据给定的文字说明合成图像。整个框架包括两个阶段。在第一阶段,利用离散VAE学习visual code book。在第二阶段,文本通过BPE-encode进行解码,相应的图像通过第一阶段学习的dVAE进行解码。然后使用自动回归transformer学习编码文本和图像之间的先验知识。在推理过程中,图像的标记由transformer预测,并由学习的解码器解码。引入CLIP模型Learning Transferable Visual Models From Natural Language Supervision对生成的样本进行排序。在文本图像生成任务上的实验证明了该模型的强大能力。
在图像处理任务中,图像首先被编码成一系列token或patch,transformer编码器使用该序列作为输入,允许transformer解码器成功生成所需的图像。在图像生成任务中,基于GAN的模型直接学习解码器以生成patch,通过线性投影输出图像,而基于transformer的模型训练自动编码器以学习图像的codebook,并使用自回归transformer模型预测编码的token。为不同的图像处理任务设计合适的体系结构是未来研究的一个有意义的方向。
TODO
VideoBERT( A Joint Model for Video and Language Representation Learning, ICCV 2019)
它使用基于CNN的模块对视频进行预处理,以获得Representation token。然后,transformer编码器根据这些token进行训练,以学习下游任务的视频-文本表示video-text representations,例如 video caption
Visual BERT(VisualBERT: A Simple and Performant Baseline for Vision and Language)
VL-BERT(VL-BERT: Pre-training of Generic Visual-Linguistic Representations, ICLR 2020)
这两篇采用单流统一变换器来捕捉视觉元素和图像文本关系,以完成视觉问答(visual question answering, VQA)和视觉常识推理(visual commonsense reasoning, VCR)等下游任务。
SpeechBERT(SpeechBERT: An Audio-and-text Jointly Learned Language Model for End-to-end Spoken Question Answering, Interspeech 2020)
SpeechBERT探索了使用transformer编码器对音频和文本对进行编码的可能性,以处理自动文本任务,如语音问答(speech question answering, SQA)。
Learning transferable visual models from natural
language supervision, 2021
除了上述开创性的多模态transformer外,对比语言图像预训练(Contrastive Language-Image Pre-training, CLIP)将自然语言作为监督,以学习更有效的图像表示。
CLIP联合训练文本编码器和图像编码器以预测相应的训练text-image对。
CLIP的文本编码器是一个标准的transformer,具有masked self-attention,用于保持预训练语言模型的初始化能力。
对于图像编码器,CLIP考虑了两种类型的架构,ResNet和Vision Transformer。CLIP在一个新的数据集上进行训练,该数据集包含从互联网收集的4亿对(图像、文本)数据。更具体地说,给定一批N(图像,文本)对,CLIP联合学习文本和图像embedding,以最大化这些N与匹配embedding的余弦相似性,同时最小化 N 2 − N N^2−N N2−N不正确匹配的embedding。
在zero-shot transfer上,CLIP展示了惊人的zero-shot 分类性能,在ImageNet-1K数据集上实现了76.2%的top-1精度,无需使用任何ImageNet训练标签。
具体来说,在推理时,CLIP的文本编码器首先计算所有ImageNet标签的特征嵌入,然后图像编码器计算所有图像的嵌入。通过计算文本和图像嵌入的余弦相似度,得分最高的文本图像对应该是图像及其对应的标签。在30个不同CV基准上的进一步实验表明了CLIP的zero-shot 转移能力和CLIP学习到的特征多样性。
DALL-E(Zero-Shot Text-to-Image Generation, ICML 2021)
CLIP根据文本中的描述映射图像,DALL-E根据输入文本中的描述合成了该类别的新图像。与GPT-3类似,DALL-E是一种多模式transformer,具有120亿个模型参数,在330万个文本图像对的数据集上进行自动回归训练。
更具体地说,为了训练DALL-E,使用了两阶段训练过程,其中在第1阶段,使用离散变分自动编码器将256×256 RGB图像压缩为32×32图像标记,然后在第2阶段,训练自回归变换器来模拟图像和文本标记上的联合分布。实验结果表明,DALL-E可以从零开始生成各种风格的图像,包括真实感图像、卡通、表情符号或者扩展现有image,同时仍与文本中的描述相匹配。
CogView(CogView: Mastering Text-to-Image Generation via Transformers, NeurIPS 2021)
本文提出了CogView,它是一个具有类似于DALL-E的VQ-VAE tokenizer的transformer,但支持中文文本输入。他们声称CogView优于DALL-E和以前的GAN-bsed方法,而且与DALL-E不同,CogView不需要额外的CLIP模型来重新排列从transformer中提取的样本,例如DALL-E。
UnitT(UniT: Multimodal Multitask Learning with a Unified Transformer, ICCV 2021)
UniT模型被提出用来处理多模式多任务学习multi-modal multi-task learning,该模型可以同时处理跨不同领域的多个任务,包括目标检测、自然语言理解和视觉语言推理。
具体来说,该单元有两个transformer编码器,分别处理图像和文本输入,然后transformer解码器根据任务模式获取单个或串联的concatenated编码器输出。最后,将特定于任务的预测头应用于不同任务的解码器输出。在训练阶段,通过在迭代中随机选择特定任务来联合训练所有任务。实验表明,在小型模型参数的情况下,UniT在每项任务上都取得了令人满意的性能。
总之,目前的transformer-based mutil-modal模型显示了其在统一各种模态的数据和任务方面的架构优势,这表明了transformer在构建能够处理大量应用的通用智能体方面的潜力。未来的研究可以在探索multi-modal transformers的有效训练或可扩展性方面进行。
为了高效实现而对transformer进行压缩和加速的研究
在基于transformer的预训练模型(例如,BERT)中,并行执行多个attention操作,以独立建模不同token之间的关系。
然而,具体的任务并不要求使用所有的头。
Are Sixteen Heads Really Better than One?
例如,本文提出了经验证据,证明在测试时可以去除大部分注意力头,而不会显著影响性能。不同层所需的头数量不同,有些层甚至可能只需要一个头。
考虑到注意头上的冗余,本文中定义了重要性得分importance scores来估计每个注意头对最终输出的影响,并且可以删除不重要的注意头以进行有效部署。
When BERT Plays the Lottery, All Tickets Are Winning, EMNLP 2020
本文从两个角度分析了预训练transformer模型中的冗余:一般冗余和任务特定冗余。
根据彩票假设 lottery ticket hypothesisThe Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks, ICLR 2018,本文分析了BERT中的lotteries,表明基于变压器的模型中也存在良好的子网络,减少FFN层和注意头,以实现高压缩率。
Patch Slimming for Efficient Vision Transformers, 2021
对于将图像分割为多个patch的视觉transformer,本文提出减少patch计算来加快推理速度,可以通过考虑冗余patch对有效输出特征的贡献来自动发现冗余patch
Vision Transformer Pruning, 2021
本文将网络瘦身方法 Learning efficient convolutional networks through network
slimming, 2017扩展到视觉transformer,以减少FFN和注意力模块中线性投影的维度。
198(Reducing Transformer Depth on Demand with Structured Dropout, ICLR 2020)
199(DynaBERT: Dynamic BERT with Adaptive Width and Depth, NeurIPS, 2020)
除了transformer模型的宽度外,还可以减少深度(即层的数量),以加速推理过程[198] [199]。
与transformer模型中不同的注意头可以并行计算的概念不同,不同的层必须按顺序计算,因为下一层的输入取决于前一层的输出。
[198]提出了一种layer-wisely dropping策略,以规范模型的训练,然后在测试阶段将所有层一起移除。
Structured Pruning of Large Language Models, EMNLP 2020
除了直接丢弃transformer模型中模块的修剪方法外,矩阵分解的目的是基于低秩假设,用多个小矩阵来近似大矩阵。
例如,本文分解了transformer模型中的标准矩阵乘法,提高了推理效率。
知识蒸馏旨在通过从大型教师网络传输知识来训练学生网络。与教师网络相比,学生网络通常具有更薄、更浅的体系结构,更容易部署在资源有限的资源上。神经网络的输出和中间特征也可以用来将有效信息从教师传递给学生。
XtremeDistil: Multi-stage Distillation for Massive Multilingual Models, ACL 2020
本文以transformer模型为重点,利用大量未标记的数据,将预先训练好的BERT作为教师来指导小模型的训练。
MiniLM: Deep Self-Attention Distillation for Task-Agnostic Compression of Pre-Trained Transformers, 2020
本文训练学生网络模仿预先训练的教师模型中自我注意层的输出。价值观之间的点积是一种新的知识形式,用于指导学生。还引入了教师助理Improved Knowledge Distillation via Teacher Assistant, IAAA 2020,减少了大型预训练transformer模型和小型(compact)学生网络之间的差距,从而促进了模拟过程。
TinyBERT: Distilling BERT for Natural Language Understanding, EMNLP 2020
由于transformer模型中有各种类型的层(即自我关注层、嵌入层和预测层),本文设计了不同的目标函数,将知识从教师传递给学生。例如,学生模型嵌入层的输出通过MSE损失模拟教师的输出。
Efficient Vision Transformers via Fine-Grained Manifold Distillation, 2021
对于视觉transformer,本文提出了一种细粒度流形(manifold)蒸馏方法,该方法通过图像和分割的patch之间的关系挖掘有效的知识。
量化旨在减少表示网络权重或中间特征所需的bit数。
PROFIT: A Novel Training Method for sub-4-bit MobileNet Models, ECCV 2020
Riptide: Fast end-to-end binarized neural networks, 2020
ProxQuant: Quantized Neural Networks via Proximal Operators, ICLR 2019
已经详细讨论了一般神经网络的量化方法,并实现了与原始网络相同的性能。
End to End Binarized Neural Networks for Text Classification, SustaiNLP 2020
最近,人们对如何特别量化变压器模型越来越感兴趣例如,本文建议将输入嵌入二进制高维向量,然后使用二进制输入表征来训练二进制神经网络。
transformers. zip: Compressing transformers
with pruning and quantization, 2019
本文通过低位(如4位)表示法表示变压器模型中的权重。
An investigation on different underlying quantization
schemes for pre-trained language models, NLPCC 2020
本文实证研究了各种量化方法,并表明k均值量化具有巨大的发展潜力。
Fully Quantized Transformer for Machine Translation, EMNLP 2020
针对机器翻译任务,本文提出了一种完全量化的转换器,正如论文所声称的那样,它是第一个在翻译质量上没有任何损失的8位模型。
Post-Training Quantization for Vision Transformer, NeurIPS 2021
本文探索了一种训练后量化方案,以减少视觉Transformer的内存存储和计算成本。
除了将预定义的Transformer模型压缩成更小的模型之外,一些工作还试图直接设计紧凑的模型。
高效Transformer架构的设计也可以通过神经架构搜索(NAS)[221],[222]实现自动化,它可以自动搜索如何组合不同的组件。
transformer模型中的自注意操作计算给定序列(图像识别任务中的patch)中不同输入token的representation之间的点积,其复杂性为O(N),其中N是序列的长度。最近有一个focus是在大型方法中将复杂性降低到O(N),以便transformer模型可以扩展到长序列。
上述方法采用不同的方法,试图识别transformer模型中的冗余(见图13)。
剪枝和蒸馏方法通常需要具有冗余的预定义模型。具体而言,剪枝侧重于减少transformer模型中组件(例如,层、头)的数量,而蒸馏表示具有多个小矩阵的原始矩阵。紧凑型模型也可以直接手动(需要足够的专业知识)或自动(例如通过NAS)设计。所获得的紧凑模型可以通过量化方法进一步用低位表示,以便在资源有限的设备上高效部署。
虽然研究人员提出了许多基于transformer的模型来处理计算机视觉任务,但这些工作只是该领域的第一步,仍有很大的改进空间。
例如,ViT中的transformer架构遵循NLP的标准transformer,但专门为CV设计的改进版本仍有待探索。此外,有必要将transformer应用于除前面提到的任务之外的更多任务。
用于计算机视觉的transformer的通用性和鲁棒性也是一个挑战。与CNN相比,纯transformer缺少一些归纳偏置,并且严重依赖大量数据集进行大规模培训。因此,数据质量对transformer的泛化和鲁棒性有着重要影响。尽管ViT在诸如CIFAR和VTAB等下游图像分类任务上表现出优异的性能,但直接将ViT backbone应用于目标检测并没有取得比CNN更好的结果。要更好地将经过预训练的transformer推广到更一般化的视觉任务中,还有很长的路要走。从业人员关注transformer的稳健性(例如,脆弱性问题)。虽然[232]、[233]、[234]中已经对稳健性进行了研究,但它仍然是一个有待解决的开放问题。
尽管许多著作解释了NLP中transformer的使用【235】,【236】,但要清楚地解释transformer为什么能很好地完成视觉任务,仍然是一个具有挑战性的课题。CNN的成功归功于归纳偏置,包括平移等效性translation equivariance和局部性,但transformer缺少任何归纳偏置。目前的文献通常以直观的方式分析这种影响[15]、[237]。
例如[15] 声称大规模训练可以超越归纳偏置。位置嵌入Position embeddings被添加到图像patch中以保留位置信息,这在计算机视觉任务中很重要。受transformer大量使用参数的启发,过度参数化[238],[239]可能是视觉transformer可解释性的潜力点。
最后,为CV开发高效的transformer模型仍然是一个悬而未决的问题。transformer模型通常非常庞大,计算成本也很高。例如,基本ViT模型【15】需要180亿次浮点运算来处理图像。相比之下,轻量级的CNN模型GhostNet[240],[241]可以在大约6亿FLOPs的情况下实现类似的性能。虽然已经提出了几种方法来压缩transformer,但它们仍然非常复杂。这些最初为NLP设计的方法可能不适用于CV。因此,迫切需要高效的transformer模型,以便在资源有限的设备上部署vision transformer。
为了推动视觉transformer的发展,我们为未来的研究提供了几个潜在的方向。
一个方向是计算机视觉中transformer的有效性和效率。目标是开发高效的视觉transformer;具体而言,transformer具有高性能和低资源成本。性能决定了模型是否可以应用于现实世界的应用程序,而资源成本会影响设备上的部署【242】、【243】。效率effectiveness通常与效率efficiency相关(?),因此确定如何在两者之间实现更好的平衡是未来研究的一个有意义的课题。
大多数现有的vision transformer模型设计为仅处理单个任务。许多NLP模型,如GPT-3【11】已经演示了transformer如何在一个模型中处理多个任务。CV领域的IPT【19】还能够处理多个低水平视觉任务,如超分辨率、图像去噪和deraining。Perceiver[244]和Perceiver IO[245]是可以在多个领域工作的先驱模型,包括图像、音频、多模式、点云。我们认为,可以只用一个模型来包括多个任务。将所有可视化任务甚至其他任务统一到一个transformer中(即,一个大统一模型)是一个令人兴奋的话题。
有各种类型的神经网络,如CNN、RNN和transformer。在CV领域,CNN过去是主流选择【12】,【93】,但现在transformer变得越来越流行。CNN可以捕捉归纳偏置,如平移不变性和局部性translation equivariance and locality,而ViT使用大规模训练来超越归纳偏置[15]。根据目前可用的证据[15],CNN在小型数据集上表现良好,而Transformer在大型数据集上表现更好。未来的问题是使用CNN还是transformer。
通过使用大型数据集进行训练,transformers可以在NLP【11】、【10】和CV benchmark【15】上实现最先进的性能。神经网络可能需要大数据,而不是归纳偏置。最后,我们给您留下一个问题:transformer能否通过非常简单的计算范式(例如,只有完全连接的层)和大量数据训练获得令人满意的结果?