Vision Transformer(VIT)原理总结

简介: Vision Transformer(VIT)原理总结

1120.jpg

VIT,文章题名为An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale,发表于2020年10月。基于纯Transformer结构来做图像分类任务,论文中相关实验证明在大规模数据集上做完预训练后的ViT模型,在迁移到中小规模数据集的分类任务上以后,能够取得比CNN更好的性能。

✨1 网络结构

6f72673e5cd549b4a329ffab418c9eda.png

如上图,按照红框可分为四块:

图像预处理:Transformer不能直接处理图像。因此,需要将图像分层NxN的图像块。如果图像分辨率变大,而要求图像块尺寸不变,增加图像块数量即可。

展平层:第二个红框(Linear Projection of Fallttened Patches)将图像块展平为一维(NxN=>N^2X1)。

Transformer Encoder:依次赋予展平的图像块类别记号和位置编码并输入Transormer的编码器,输出结果。注意,因为这里是分类任务而不是生成任务,因此不需要解码器。

MLP:取Transformer编码器输出的第一个embedding,将其输入到分类网络,即MLP中,输出所属类别概率

✨2 Transformer Encoder

Transformer原理在另一个文章中总结过,这里主要介绍之前没有提过的类别记号

假设,图像经过预处理和展平层后得到维度为(Batch size, block_num, D)的矩阵X。

🍔2.1 类别记号

如果没有class token,我们将X与位置编码相加再通过Transformer Encoder后,仍然输出维度为(Batch size, Block num, D)的矩阵。但是输入分类网络的变量维度只需要(Batch size, 1, D),这就很难决定用Block num个变量中哪一个进行分类。(原因)

因此,输入Tranformer Encoder之前,将X与一个维度为(Batch size, 1, D)的类别记号编码进行拼接,最终维度为(Batch size, Block num + 1, D),然后与维度为(Batch size, Block num + 1, D)的位置编码相加,并输入Transformer Encoder。最终输出结果的维度为(Batch size, Block num+1, D),此时利用切片,获得第一个变量(Batch size, 1, D)输入MLP进行分类。(具体做法)

省略Batch Size维度该过程如下图:

82767c471c024ecd94762e200918b8da.png

需要注意的是,类别记号也是一个可学习编码变量,正常初始化即可。

✨3 MLP

853ac125c0a241818c6aecf61db43e94.png

MLP结构如下,其中FC(全连接层)和tanh(激活函数)可选,Linear用于分类。

4 ✨参考文章

1️⃣https://zhuanlan.zhihu.com/p/617175563

相关文章
|
机器学习/深度学习 自然语言处理 搜索推荐
Transformer之十万个为什么?
这篇博文主要结合个人理解和思考,通过整理和自己的解释列出关于Transformer的部分重要问题(持续更新),看完后会对Transformer有个更好的理解。
Transformer之十万个为什么?
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Transformer
【8月更文挑战第7天】
68 3
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer介绍
Transformer模型于2017年由Google提出,其在BERT中大放异彩,革新了NLP领域。Transformer的优势在于并行计算能力和处理长距离依赖,通过自注意力机制避免了RNN/LSTM的梯度问题。它由编码器和解码器组成,使用位置编码处理序列信息。Transformer在机器翻译、文本生成、问答系统等多个任务中提升效率和准确性,并扩展至计算机视觉和语音识别。随着AI发展,Transformer成为大模型核心技术,推动整个产业进步。
|
7月前
|
机器学习/深度学习 存储 自然语言处理
Transformer中的FFN介绍
Transformer中的FFN介绍
453 0
Transformer中的FFN介绍
|
机器学习/深度学习 编解码 自然语言处理
论文阅读笔记 | Transformer系列——Swin Transformer
论文阅读笔记 | Transformer系列——Swin Transformer
1248 0
论文阅读笔记 | Transformer系列——Swin Transformer
|
计算机视觉
论文阅读笔记 | Transformer系列——Transformer in Transformer
论文阅读笔记 | Transformer系列——Transformer in Transformer
312 0
论文阅读笔记 | Transformer系列——Transformer in Transformer
|
机器学习/深度学习 并行计算 PyTorch
Swin Transformer实战:使用 Swin Transformer实现图像分类
目标检测刷到58.7 AP! 实例分割刷到51.1 Mask AP! 语义分割在ADE20K上刷到53.5 mIoU! 今年,微软亚洲研究院的Swin Transformer又开启了吊打CNN的模式,在速度和精度上都有很大的提高。这篇文章带你实现Swin Transformer图像分类。
9939 0
Swin Transformer实战:使用 Swin Transformer实现图像分类
|
机器学习/深度学习 算法 PyTorch
【vision transformer】DETR原理及代码详解(一)
【vision transformer】DETR原理及代码详解
1456 0
|
Shell 开发工具 计算机视觉
【vision transformer】DETR原理及代码详解(三)
【vision transformer】DETR原理及代码详解
205 0
【vision transformer】DETR原理及代码详解(二)
【vision transformer】DETR原理及代码详解
103 0

相关实验场景

更多