尽管卷积神经网络 (CNN) 能通过其卷积核有效地获取局部特征,但由于卷积操作固有的局部性,跨整个图像模拟远距离关联仍是一个难题。大幅增加感受野需要很深的网络或很大的卷积核,这可能导致计算成本高昂且难以优化。将注意力机制融入CNN的方法有所帮助,但它们仍在一个基本的卷积体系中运行。Transformer结构最初为自然语言处理(NLP)所开发,提供了一种不同的方法。Transformer完全依赖自注意力机制,使它们能够模拟序列中任意两个元素之间的关联,无论距离远近。这被证实对于机器翻译和文本生成等任务非常有效,其中理解长句的语境是必需的。一个重要问题出现了:这种强大的序列建模结构能否应用于计算机视觉?图像与文本不同,不具备固有的序列一维结构。它们具有很强的二维空间结构,并且典型图像中的像素数量(潜在的序列元素)远多于典型句子中的单词数量,这给对序列长度具有二次复杂度的标准Transformer带来了计算难题。视觉Transformer(ViT)模型代表了一种成功且有影响力的办法,将Transformer直接应用于图像分类。由Dosovitskiy等人于2020年提出,其核心思路出奇地直接:将图像视为一系列较小的、固定大小的图像块。digraph G { rankdir=LR; node [shape=rect, style=filled, fontname="sans-serif"]; edge [fontname="sans-serif"]; subgraph cluster_0 { label = "输入图像(网格)"; bgcolor = "#e9ecef"; // gray light node [fillcolor="#adb5bd", label=""]; // gray medium i1; i2; i3; i4; i5; i6; i7; i8; i9; {rank=same; i1; i2; i3;} {rank=same; i4; i5; i6;} {rank=same; i7; i8; i9;} i1 -> i2 -> i3 [style=invis]; i4 -> i5 -> i6 [style=invis]; i7 -> i8 -> i9 [style=invis]; i1 -> i4 -> i7 [style=invis]; i2 -> i5 -> i8 [style=invis]; i3 -> i6 -> i9 [style=invis]; } subgraph cluster_1 { label = "展平图像块序列"; bgcolor = "#bac8ff"; // indigo light node [fillcolor="#748ffc", fontcolor="#ffffff"]; // indigo medium, white text p1 [label="P1"]; p2 [label="P2"]; p3 [label="P3"]; pdots [label="...", style=filled, fillcolor="#dee2e6"]; // gray lighter for dots pn [label="PN"]; p1 -> p2 -> p3 -> pdots -> pn [color="#4263eb"]; // indigo dark } edge [label=" 分割并\n 展平 ", fontcolor="#4263eb", color="#4263eb", fontsize=10]; // indigo dark i5 -> p1 [ltail=cluster_0, lhead=cluster_1, style=dashed]; // Connect clusters logically }一张输入图像被分割成一个由不重叠图像块组成的网格。每个图像块随后被展平为一个向量,形成一个可由标准Transformer编码器处理的序列。其工作方式如下(高层视角):图像分块: 输入图像(例如,224x224像素)被分割成一个由固定大小、不重叠图像块(例如,16x16像素)组成的网格。展平与嵌入: 每个图像块被展平为一个单独的向量(例如,RGB图像为16x16x3 = 768个元素)。这些向量随后被线性投影到一个期望的嵌入维度(例如,768维)。这形成了一个图像块嵌入序列。位置嵌入: 由于Transformer结构本身不固有的理解空间顺序,可学习的位置嵌入被添加到图像块嵌入中,以保留位置信息。一个特殊的[class]标记嵌入通常被加到序列的开头,类似于BERT的[CLS]标记,其在Transformer中的对应输出用于分类。Transformer编码器: 得到的向量序列(图像块嵌入 + 位置嵌入)被送入一个标准的Transformer编码器,该编码器由交替的多头自注意力(MSA)和多层感知机(MLP)模块构成。自注意力机制允许每个图像块关注所有其他图像块,使模型能够获取图像的整体关联。在每个模块前应用层归一化,并在每个模块后使用残差连接。分类头: 最后,与[class]标记对应的输出通过一个小的分类头(通常是一个MLP)生成最终预测。这种方法有效地绕过了对卷积的需求,将Transformer的序列处理能力直接应用于视觉数据。然而,与CNN相比的一个显著区别是缺乏强的归纳偏置。CNN内置了关于局部性(相邻像素相关)和平移等变性(在一个位置检测到的特征可以在其他位置检测到)的假设。ViT的偏置弱得多,几乎完全通过自注意力从数据中学习关联。这使得ViT可能更具通用性,但通常需要大得多的数据集进行预训练,才能达到与或超越最先进CNN相当的性能。ViT的引入标志着计算机视觉研究的一个显著转变,表明高度依赖自注意力的结构在图像识别任务上也能获得出色成果,这些任务曾主要由CNN主导。接下来的部分将更详细地查看ViT的特定结构组件,并将其特性与CNN进行比较。