Transformer学习——Vision Transformer(VIT)原理
目录
一、概念
二、模型结构
三、数据流
Linear
patch 0
一、概念
Vision Transformer 是一种基于 Transformer 架构的计算机视觉模型,最初由谷歌研究团队在 2020 年提出。它将 Transformer 架构(原本用于自然语言处理任务)应用于图像分类任务,取得了显著的效果。
Vision Transformer 的引入标志着计算机视觉领域从传统的 CNN 向基于 Transformer 的新架构的一个重要转变。
二、模型结构
将图像分割为固定大小的块,对每个块进行线性嵌入,添加位置编码,然后将生成的向量序列输入到标准Transformer编码器中。为了进行分类,我们使用了标准方法,即在序列中添加一个额外的可学习“分类标记”:0*。
三、数据流
(b, c, h, w):(b, 3, 256, 256)
b 代表batch size 批次大小;
c 代表通道数,彩色图片中c=3,就是三个通道rgb;
h w 分别代表图像的高和宽。
(b, c, P^2c):(b, 64, 32*32*3)
b 代表batch size 批次大小;
N 代表图像切分的块数patch;
P 代表切分后的图像大小 P^2c 是 32x32x3(256/8=32,三个通道拉伸后:*3)
Linear
"Linear Projection of Flattened Patches" 指的是将图像分割成小块(称为patches),然后对这些patches进行展平(flatten),最后通过线性投影(linear projection)将展平后的向量映射到一个更低维度的空间。
其作用在于:在于将图像中的局部信息提取出来,并将其转换为可以输入到Transformer模型中的形式;特征提取和编码 、减少输入维度 、提升模型性能 。
作用在于将图像中的局部信息提取出来,并将其转换为可以输入到Transformer模型中的形式。
patch 0
在Vision Transformer(VIT)中,需要额外输入一个小块(patch 0)通常是为了确保模型能够处理整个图像的信息。这种做法可以获得全局的信息:
尽管Transformer模型以自注意力机制为核心,可以在不同位置之间建立关联,但在某些情况下,特别是对于涉及全局上下文的任务(如图像分类),引入额外的全局信息有助于模型更好地理解整个图像。