零基础打造视觉Transformer:手把手全流程指南
视觉Transformer(Vision Transformer,简称ViT)是一种将原本用于自然语言处理(NLP)的Transformer架构引入计算机视觉任务的深度学习模型。与传统依赖卷积神经网络(CNN)的方法不同,ViT将图像视为一系列小图像块(patches)的序列,如同处理文本中的词元(tokens)一样,通过自注意力机制(self-attention)来捕捉图像中不同区域之间的空间关系。 其核心工作流程如下: 图像分块与嵌入(Image Patch Tokenization): 首先,将输入图像分割成固定大小的小块,例如16×16像素的图像块。每个图像块被展平为一维向量,并通过线性投影映射到一个高维嵌入空间,形成一个“图像块token”。例如,一张224×224像素的图像会被分割为14×14=196个图像块,从而生成196个token。 此外,模型还会添加一个可学习的分类标记([CLS] token),用于最终的分类任务。所有图像块token与[CLS] token按顺序排列,构成输入序列。 位置编码(Positional Encoding): 由于Transformer本身不具备对序列顺序的感知能力,ViT引入了位置编码,将每个图像块在图像中的空间位置信息注入到其嵌入向量中。这些位置编码可以是可学习的,也可以是固定的正弦/余弦函数形式,以帮助模型理解图像块之间的相对或绝对位置关系。 自注意力机制与Transformer编码器: 随后,这些带有位置信息的token序列被输入到标准的Transformer编码器中。编码器由多层自注意力模块和前馈神经网络组成。自注意力机制使每个token能够关注序列中所有其他token,从而学习图像中全局的上下文关系,而不仅仅是局部邻域信息。 最终,模型通过[CLS] token的输出表示整个图像的特征,送入分类头(如全连接层)完成图像分类任务。 ViT的成功表明,仅通过纯注意力机制,无需卷积操作,也能在大规模数据上实现卓越的视觉识别性能。这一突破为计算机视觉领域开辟了新的研究方向。