【Transformer】vision transformer(ViT)带来的思考?
一、ViT的意义
基于Transformer架构的图像分类模型被称为Vision Transformer(ViT)。该模型首先将输入图像分割成多个小块,并将这些块编码为向量序列。随后利用Transformer模块中的自注意力机制对生成的向量序列进行处理。最后经过一个全连接层对特征进行分类。
相较于传统卷积神经网络(CNN),ViT的核心优势体现在:它突破了传统CNN对图像尺寸的固定要求,并通过将图像划分为可变大小的块进行统一处理,在模型性能上实现了质的飞跃。此外,在架构设计上形成了独特的创新特征:它摒弃了基于局部感受野的传统思路,在空间维度上实现了全局信息的有效捕捉与融合。这种基于自注意力机制的设计理念不仅使模型能够自主识别并关注图像中具有重要关联性的特征元素及其相互作用关系,在提升分类精度的同时也为后续研究者提供了重要的技术参考价值。
其重要性体现在为图像分类任务开创了一种创新的模型架构。这种架构突破了传统卷积神经网络对图像尺寸的局限性,并凸显了Transformer在图像处理领域巨大的潜力。值得注意的是,这种方法不仅为研究人员提供了全新的研究视角,在计算机视觉领域还具有广泛的应用前景。
二、使用Position Embedding实现了图像和文本的向量尺度统一
基于多头自注意力机制的提出主要应用于领域为自然语言处理(NLP),其输入维度结构为[batch_size, num_token, dim_token]。相比之下,在计算机视觉(CV)领域中图像的输入维度结构通常表示为[batch_size, num_channel, height, width]。Vision Transformer(ViT)通过一种称为Patch Embedding的技术将这一差异进行弥补,将输入维度重新映射至预期的形式。具体来说,在视觉域中占据的空间维度(即height乘以width)被直接映射到语言模型领域的token数量,在视觉域的通道数则与语言模型中的嵌入维度相匹配。

如图所示假设输入一张图像其尺寸为[3 \times 224 \times 224]ViT会将其划分为多个Patch其中单个Patch的空间尺度大小为[3 \times 16 \times 16](其中16=224\div{}(patch的数量))。对于每个PatchViT通过应用一层二维卷积操作提取其局部特征从而得到尺寸为[768 \times{}(patch的数量) \times{}(patch的数量)]的特征图其中卷积核大小和下采样步长均与对应的Patch尺寸一致并且输出通道数量设定为768个。随后将抽取到的空间维度特征图经过转置处理并展平后即可获得最终的一维表示即大小为batch\_size\times{}num\_token\times{}dim\_token的形式。

在致力于解决分类问题的过程中,
ViT借鉴了BERT的设计思路,
在其架构中特意添加了一个大小为[1, 768]的Class\ Token,
以捕获整体图像信息。
由此导致token的整体尺寸调整为[197, 768]。
值得注意的是,
在ViT模型中,
这个Class\ Token被初始化为全零向量,
并且是一个可学习的参数块,
在整个训练过程中会逐步优化其值以提升模型性能。
通常情况下,
在进行后续的任务处理时,
会将这个Token单独分离出来提取其编码结果作为图像特征的基础表示。
此外,在采用Token嵌入的方式中,“ViT继承了Transformer中的位置编码机制(Position Embedding),该参数被初始化为零值,并具有可学习性。然而,并非通过拼接的方式实现这一功能,而是直接将其融入到token序列中。因此,在规模上与当前token一致。”
在此时此刻(即当前阶段),因此
