Transformer作为一种基于attention的encoder-decoder架构,不仅革新了自然语言处理(NLP)领域,也在计算机视觉(CV)领域做出了一些开创性的工作。与卷积神经网络(CNN)相比,VisionTransformer(ViT)凭借其出色的建模能力,在ImageNet、COCO、ADE20k等多个基准测试中均取得了优异的表现。最近,一位名叫NikolasAdaloglou的博主写了一篇长篇博文,总结了ViT领域的进展以及ViT与其他学科的交叉应用。这篇文章是由NikolasAdaloglou撰写的。NikolasAdaloglou是一名机器学习工程师,对AI相关的3D医学成像、图像和视频分析、基于图形的深度学习模型和生成式深度学习感兴趣,致力于通过机器学习推进医学工程。以下为博客原文:ViT的灵感来自于自然语言处理中的self-attention机制,其中wordembeddings被patchembeddings所取代。在合理规模上训练ViT知识蒸馏在Kaggle等深度学习竞赛中,集成非常受欢迎。集成基本上意味着对多个训练模型的输出进行平均以进行预测。这种简单的方法非常适合提高测试时间性能,但在推理过程中会慢N倍(其中N是模型的数量)。在嵌入式设备中部署此类神经网络时,这成为一个棘手的问题。解决这个问题的常用方法是知识蒸馏。在知识蒸馏中,一个小模型(学生模型)通常由一个大模型(教师模型)监督,算法的关键是如何将教师模型的知识迁移到学生模型。尽管没有足够的基础理论支持,但知识蒸馏已被证明是一种非常有效的技术。关于为什么集成的输出分布提供与集成相当的测试性能还有待发现。更神秘的是,使用合奏的输出(稍微有偏差的平滑标签)比真实标签有性能提升。DeiT模型通过注意力训练数据高效的ImageTransformer和蒸馏,这表明可以在没有外部数据的情况下单独在ImageNet上训练ViT。本研究使用来自Resnet的经过训练的CNN模型作为单一教师模型。直觉上,强数据假设(归纳偏差)使CNN比ViT更适合教师网络。Self-distillation令人惊讶的是,已经发现通过在相同架构的单个模型(教师网络)上执行知识蒸馏也可以实现类似的方法。这个过程称为自蒸馏,来自Zhang等人。2019论文《Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self Distillation》。自蒸馏是一种N=1的知识蒸馏,自蒸馏(使用相同架构的单一训练模型)也可以提高测试准确率。ViT的硬标签蒸馏:DeiT训练策略在这种方法中,一个额外的可学习全局标记(即蒸馏标记)与ViT的补丁嵌入连接在一起。最关键的是,提取的令牌来自训练有素的老师CNN主干。通过将CNN特征融合到Transformer的自注意力层中,研究人员在Imagenet的1M数据上训练了DeiT。DeiT模型概述。DeiT使用以下损失函数进行训练:其中CE是交叉熵损失函数,σ是softmax函数。Z_cls和Z_distill分别是学生模型从类标记和蒸馏标记的输出,ytrue和yteacher分别是基本事实和教师模型的输出。这种蒸馏技术使模型能够用更少的数据实现超级数据增强,这可能会导致不精确的groundtruth标签。在这种情况下,教师网络似乎生成了更合适的标签。由此产生的模型系列DataEfficientImageTransformers(DeiTs)在精度/步长时间方面与EfficientNet相当,但在精度/参数效率方面仍然落后。除了蒸馏之外,还有一些研究大量使用图像增强来弥补可用附加数据的不足。此外,DeiT依赖于随机深度等数据正则化技术。最终,强大的增强和正则化限制了ViT在小数据体系中过度拟合的趋势。PyramidVisionTransformerPyramidVisionTransformer(PVT)的总体架构。为了克服注意力机制的二次复杂性,PyramidVisionTransformer(PVT)采用了一种称为空间减少注意力(SRA)的自注意力变体。它的特点是减少键和值的空间,类似于NLP领域的Linformerattention。通过应用SRA,整个模型的特征空间维数会慢慢降低,并且通过在所有transformer块中应用位置嵌入来增强顺序的概念。PVT已被用作对象检测和语义分割的骨干网络,以处理高分辨率图像。随后,研究团队推出了改进版的PVT-v2,主要改进如下:overlappingpatchembedding;卷积前馈网络;线性复杂度自注意层。重叠补丁是改进ViT的一种简单而通用的想法,特别是对于语义分割等密集型任务。通过利用重叠区域/补丁,PVT-v2可以获得图像表示的更多局部连续性。全连接层(FC)之间的卷积消除了每一层中固定大小位置编码的需要。具有零填充(p=1)的3x3深度卷积(p=1)旨在补偿模型中位置编码的移除(它们仍然存在,但仅在输入中存在)。此过程允许更灵活地处理多个图像分辨率。最后,使用键和值池化(p=7),自注意力层减少到类似CNN的复杂性。SwinTransformer:HierarchicalVisionTransformerUsingShiftedWindowsSwinTransformer旨在建立在locality,localorwindowattention的思想之上,来自标准的NLPtransformers:在SwinTransformer中,localself-attention用于非重叠窗口。下一层的窗口到窗口通信通过逐渐合并窗口产生分层表示。如上图所示,左侧是第一层的常规窗口分区方案,其中在每个窗口内计算自注意力。右侧第二层的窗口分区已移动2个图像块,导致越过前一个窗口的边界。对于序列长度N和M窗口大小,局部自注意力随图像大小O(M*N)而不是O(N^2)线性缩放。通过合并添加许多局部层,有一个全局表示。此外,特征图的空间维度已经显着降低。作者声称在ImageNet-1K和ImageNet-21K上都取得了有希望的结果。VisionTransformers的自监督训练:DINOFacebookAI研究提出了一个强大的框架来训练大规模视觉数据。提议的自监督系统创建了如此强大的表示,您甚至不需要微调顶部的线性层。这是通过在数据集的冻结训练特征上应用K最近邻(NN)观察到的。作者发现经过训练的ViT在没有标签的ImageNet上可以达到78.3%的top-1准确率。这种自监督框架如下图所示:与其他自监督模型相比,他们使用了交叉熵损失,就像在典型的自蒸馏场景中所做的那样。尽管如此,这里的教师模型是随机初始化的,其参数是根据学生参数的指数移动平均值更新的。为了使其发挥作用,研究人员将具有温度参数的softmax应用于具有不同温度的教师和学生模型。具体来说,teacher模型得到的温度参数越小,意味着预测越准确。最重要的是,他们使用从SWAV获得的多重裁剪方法,效果更好,教师只能看到全局视图,而学生可以访问转换后的输入图像的全局和局部视图。这个框架对CNN架构的好处不如对VisionTransformers的好处。那么如何从图像中提取出什么样的特征呢?作者将经过训练的VIT的自注意力头输出可视化。这些注意力图表明该模型会自动学习特定于类别的特征,从而导致无监督的对象分割,例如前景与背景。这种特性也出现在自我监督的预训练卷积神经网络中,但需要一种特殊的方式来可视化特征。更重要的是,self-attentionheads学习互补信息,并通过为每个head使用不同的颜色来说明。默认情况下,这根本不是通过自注意力获得的。DINO多注意力头部可视化。ScalingVisionTransformer深度学习和缩放是相关的。事实上,规模是许多SOTA实施的关键因素。在这项研究中,来自GoogleBrainResearch的作者训练了一个具有20亿个参数的略微修改的ViT模型,并在ImageNet上取得了90.45%的top-1准确率。这个过度参数化的广义模型在每类只有10个例子的小样本学习上进行了测试。在ImageNet上达到了84.86%的top-1准确率。Few-shotlearning指的是用极其有限的样本对模型进行微调。小样本学习的目标是通过稍微调整获得的预训练知识以适应特定任务来激发泛化。如果大型模型成功预训练,那么在对下游任务(仅由几个示例提供)的理解非常有限的情况下表现良好是有意义的。以下是本文的一些核心贡献和主要结果:模型大小可能会限制表示质量,前提是有足够的数据提供它;大型模型受益于额外的监督数据,甚至超过1B图像。上图描述了从300M图像数据集(JFT-300M)切换到30亿图像(JFT-3B)且没有任何进一步缩放的效果。中型(B/32)和大型(L/16)模型都从添加数据中获益,大致是一个常数因子。在整个训练过程中通过少量(线性)评估获得结果。较大的模型样本效率更高,用更少的可见图像实现相同的错误率水平。为了节省内存,他们删除了类标记(cls)。相反,他们评估全局平均池和多头注意力池以聚合所有补丁令牌的表示。他们对头部和称为“骨干”的其余层使用了不同的权重衰减。作者在下图中很好地展示了这一点。框值是少样本精度,而水平和垂直轴分别代表脊柱和头部的权重衰减。出乎意料的是,头部的衰减越强,效果越好。作者推测头部的强烈权重衰减会导致类之间具有更大的边缘的表示。这可能是最有趣的发现,可以更广泛地应用于预训练ViT。他们在训练开始时使用热身阶段,在训练结束时使用冷却阶段,学习率线性退火至零。此外,他们还使用了Adafactor优化器,与传统Adam相比,它的内存开销增加了50%。同一波长,你可以找到另一个大规模的研究:《如何训练你的 ViT?视觉 Transformer 中的数据、增强和正则化》(HowtotrainyourViT?Data,Augmentation,andRegularizationinVisionTransformers)代替self-attention:independenttoken+channelmixingmethod众所周知,self-attentionForce可以作为一种具有快速权重的信息路由机制。到目前为止,已有3篇论文讲述了同一个故事:用2个信息混合层替换self-attention;一种用于混合标记(投影补丁向量),一种用于混合通道/特征信息。MLP-MixerMLP-Mixer由两个MLP层组成:第一个独立应用于图像块(即在每个位置“混合”特征),另一个跨块(即“混合”空间信息)。MLP-混合器架构。XCiT:Cross-covarianceImageTransformer另一种最新的架构XCiT旨在修改ViT的核心构建块:应用于令牌维度的自注意力。XCiT架构。XCA:对于信息混合,作者提出了一种交叉协方差注意(XCA)函数,该函数在标记的特征维度上运行,而不是在它们自身上运行。重要的是,此方法仅适用于查询、键、值集的L2规范化。L2范数由K和Q字母上方的帽子表示。乘法的结果在softmax之前也归一化为[-1,1]。LocalPatchInteraction:为了实现补丁之间的显式通信,我们添加了两个深度方向的3×3卷积层,其间具有批量归一化和GELU非线性。深度卷积独立应用于每个通道(此处的补丁)。ConvMixer(添加链接:补丁成为ALLYouNeed?挑战ViT,MLP-Mixer的简单模型在这里)Self-attention和MLP在理论上是更通用的建模机制,因为它们允许更大的感受野和内容感知行为。尽管如此,卷积的归纳偏差在计算机视觉任务中具有不可否认的结果。受此启发,研究人员提出了另一种基于卷积网络的变体,称为ConvMixer。主要思想是它直接对作为输入的补丁进行操作,分离空间和通道维度的混合,并在整个网络中保持相同的大小和分辨率。更具体地说,depthwiseconvolution负责混合空间位置,pointwiseconvolution(1x1xchannelkernel)用于混合通道位置,如下图所示:通过选择更大的kernelsize来创建更大的感受野,可以混合实现了遥远的空间位置。多尺度视觉TransformerCNN骨干架构受益于通道的逐渐增加,同时降低了特征图的空间维度。同样,MultiscaleVisualTransformer(MViT)利用了将多尺度特征层次结构与VisionTransformer模型相结合的思想。在实践中,作者从3个通道的初始图像大小开始,逐渐(分层)扩展通道容量,同时降低空间分辨率。因此,创建了多尺度特征金字塔。直观上,较早的层将学习高空间和简单的低级视觉信息,而较深的层负责复杂的高维特征。VideoClassification:在Timesformer完成图像任务后,将VisionTransformer应用于视频识别。这里介绍了两种架构:用于视频识别的基于块和基于架构/基于模块的时空注意力架构。右图:在建筑层面缩小。所提出的方法将空间变换器应用于投影图像块,然后有另一个网络负责捕获时间相关性。这类似于基于视频处理的CNN+LSTM制胜策略。左图:在self-attention级别可以实现的时空attention,红框内为最佳组合。通过首先将图像帧视为标记,在时间域中顺序应用注意力。然后,在MLP投影之前应用两个空间维度的组合空间注意力。这是该方法的t-SNE可视化:FeatureVisualizationUsingTimesformert-SNE。“每个视频都可视化为一个点。属于同一动作类别的视频具有相同的颜色。具有分段时空注意力的TimeSformer比仅具有空间注意力或ViT的TimeSformer学习更多语义可分离的特征。”语义分割中的ViT:SegFormerNvidia提出了一个配置良好的设置,称为SegFormer。SegFormer的设计组件很有趣。首先,它由一个输出多尺度特征的分层Transformer编码器组成。其次,它不需要位置编码,因为当测试分辨率与训练分辨率不同时这会降低性能。SegFormer使用超级简单的MLP解码器从编码器聚合多尺度特征。与ViT不同,SegFormer使用小图像块,例如4x4,已知这对密集预测任务有益。提出的Transformer编码器输出1/4、1/8、1/16、1/32多级特征的原始图像分辨率。这些多级特征被馈送到MLP解码器以预测分割掩码。Mix-FFN:为了减轻位置编码的影响,我们使用零填充3×3卷积层来泄漏位置信息。Mix-FFN可以表述为:在PVT中提出了高效的自注意力,它使用缩减比率来减少序列的长度。结果可以通过可视化有效感受野(ERF)来定性测量:“SegFormer的编码器自然产生局部注意力,类似于低级卷积,同时能够输出高度非局部注意力,有效地捕获阶段4上下文。如图所示在放大的patch中,MLPhead(蓝色框)的ERF与Stage-4(红色框)不同,除了非局部注意力之外,局部注意力明显更强。》VisionTransformerinMedicalImaging:Unet+ViT=UNETR尽管在医学成像方面还有其他尝试,但UNETR提供了最有说服力的结果。在这种方法中,ViT被应用于3D医学图像分割。研究表明,简单的适配足以提高几个3D分割任务的基线。本质上,UNETR使用Transformer作为编码器来学习输入音频的序列表示。与Unet模型类似,它旨在有效地捕获全局多尺度信息,这些信息可以传递给解码器通过在不同分辨率下形成的长残差连接来计算最终的语义分割输出UNETR模式。以下是论文中的一些分割结果:
