在这篇文章中,我们将基于Pytorch框架从头实现Vision Transformer模型,并附录完整代码。
Vision Transformer(ViT)是一种基于Transformer架构的深度学习模型,用于处理计算机视觉任务。它将图像分割成小的图像块(patches),然后使用Transformer编码器来处理这些图像块。ViT的核心思想是将图像转换为序列数据,然后通过自注意力机制建立图像中不同位置之间的关系。
模型详解
如上图所示为Vision Transformer(ViT)的模型框架,由三个模块组成:
- Linear Projection of Flattened Patches(Embedding层,将子图映射为向量)
- Transformer Encoder(编码层,对输入的信息进行计算学习)
- MLP Head(用于分类的层结构)
Embedding层
标准的Transformer模型的输入是token(向量)序列,即二维矩阵[num_token, token_dim],其中每行是一个token向量,如下图所示,token0-9对应的都是向量,以ViT-B/16(其中B表示模型的大小,16表示图像被分割成的小块的大小)为例每个token向量长度为768。