Vision Transformer

来自云上百科


Vision Transformer(简称ViT)是计算机视觉领域的一种深度学习模型架构,将原本用于自然语言处理Transformer架构创新性地应用于图像识别任务。该模型由Google Research团队于2020年提出,通过自注意力机制直接处理图像块序列,打破了卷积神经网络长期主导计算机视觉领域的格局。

Vision Transformer模型架构示意图

提出背景

在Vision Transformer出现之前,卷积神经网络(CNN)一直是计算机视觉领域的主流架构。从2012年AlexNetImageNet竞赛中取得突破性成果开始,ResNetVGGInception等基于卷积操作的模型不断刷新各项视觉任务的性能记录。卷积操作通过局部感受野和权重共享机制,能够有效提取图像的空间特征。

然而,自2017年Transformer架构在自然语言处理领域取得巨大成功后,研究者开始思考是否能将这种基于自注意力机制的架构应用于视觉任务。Transformer通过全局注意力机制捕捉序列中任意位置之间的依赖关系,在机器翻译文本生成等任务中展现出强大能力。2020年,Google Research团队发表论文「An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale」,正式提出Vision Transformer模型,证明了纯Transformer架构在图像识别任务中同样可以达到甚至超越卷积神经网络的性能。

核心原理

图像分块处理

Vision Transformer的核心创新在于将图像视为序列数据进行处理。模型首先将输入图像分割成固定大小的图像块(patches),通常采用16×16或32×32像素的块大小。例如,一张224×224像素的图像会被分割成196个16×16的图像块。每个图像块被展平为一维向量,然后通过线性变换映射到指定维度的嵌入空间,形成图像块嵌入(patch embeddings)。

这种处理方式将二维图像转换为一维序列,使得Transformer架构能够直接应用。相比卷积操作的局部感受野,这种方法允许模型从一开始就建立全局的空间关系。

位置编码

由于Transformer架构本身不包含位置信息,Vision Transformer需要为每个图像块添加位置编码(position embeddings)。位置编码可以是可学习的参数,也可以采用固定的正弦余弦函数。通过位置编码,模型能够理解不同图像块在原始图像中的空间位置关系,这对于保持图像的结构信息至关重要。

此外,Vision Transformer还引入了一个特殊的分类标记(class token),类似于BERT模型中的[CLS]标记。这个可学习的向量被添加到图像块序列的开头,经过Transformer编码器处理后,其输出用于最终的分类任务。

多头自注意力机制

Vision Transformer的编码器采用标准的多头自注意力机制(Multi-Head Self-Attention)。每个注意力头独立计算查询(Query)、键(Key)和值(Value)矩阵,通过注意力权重聚合不同位置的信息。多头机制允许模型在不同的表示子空间中捕捉多样化的特征关系。

自注意力机制的计算复杂度与序列长度的平方成正比,这意味着图像分辨率越高,计算成本越大。因此,选择合适的图像块大小在性能和效率之间取得平衡至关重要。

模型架构

Vision Transformer的整体架构包括以下几个主要组件:

输入层:将图像分割为图像块,进行线性嵌入,添加位置编码和分类标记。

Transformer编码器:由多个相同的编码器层堆叠而成,每层包含多头自注意力模块和前馈神经网络(MLP)。每个子模块后都使用层归一化(Layer Normalization)和残差连接。

分类头:提取分类标记的输出,通过一个多层感知机进行最终的类别预测。

根据模型规模,Vision Transformer有多个变体,包括ViT-Base、ViT-Large和ViT-Huge,它们在嵌入维度、编码器层数和注意力头数上有所不同。ViT-Base通常包含12层编码器,隐藏维度为768;ViT-Large包含24层,隐藏维度为1024;ViT-Huge则更加庞大,包含32层和1280的隐藏维度。

训练策略

Vision Transformer的成功很大程度上依赖于大规模数据的预训练。研究表明,在中等规模数据集(如ImageNet-1K)上直接训练ViT,其性能往往不如传统的卷积神经网络。这是因为Transformer缺乏卷积操作固有的归纳偏置(如平移不变性和局部性),需要通过大量数据来学习这些特性。

当在大规模数据集(如ImageNet-21K或JFT-300M)上进行预训练后,Vision Transformer展现出强大的迁移学习能力。预训练模型可以在下游任务上进行微调,在图像分类、目标检测、语义分割等多个任务中取得优异性能。

训练过程通常采用监督学习方式,使用交叉熵损失函数。优化器多采用AdamAdamW,配合学习率预热和余弦退火策略。数据增强技术如随机裁剪、水平翻转、颜色抖动等也被广泛应用以提高模型的泛化能力。

应用领域

Vision Transformer在多个计算机视觉任务中展现出广泛的应用价值:

图像分类:这是ViT最初设计的任务,在ImageNet等基准数据集上取得了与最先进卷积网络相当或更好的性能。

目标检测:通过与DETR(Detection Transformer)等框架结合,ViT可以用于端到端的目标检测任务,简化了传统检测流程。

语义分割:ViT的全局建模能力使其在像素级分类任务中表现出色,衍生模型如Segmenter在语义分割任务中取得良好效果。

视频理解:通过扩展到时空维度,ViT可以处理视频数据,在动作识别、视频分类等任务中应用。

多模态学习:ViT与文本Transformer的架构相似性使其成为视觉语言模型的理想选择,如CLIP模型就采用了ViT作为视觉编码器。

影响与发展

Vision Transformer的提出对计算机视觉领域产生了深远影响,开启了视觉Transformer的研究热潮。众多改进模型相继出现,如Swin Transformer引入了层次化结构和局部窗口注意力机制,在效率和性能上进一步优化;DeiT(Data-efficient Image Transformer)通过知识蒸馏等技术降低了对大规模数据的依赖;BEiT采用自监督学习方法进行预训练,提升了模型的表示能力。

Vision Transformer也推动了统一架构的发展趋势。研究者开始探索使用相同的Transformer架构处理不同模态的数据,促进了多模态学习通用人工智能的研究。同时,ViT的成功也引发了对模型可解释性、计算效率和小样本学习能力的深入研究。

尽管Vision Transformer取得了巨大成功,但其高计算成本和对大规模数据的依赖仍是需要解决的挑战。未来的研究方向包括设计更高效的注意力机制、探索更有效的训练策略、以及将ViT应用于更多实际场景中。

参见