一、背景介绍:
自2017年Google提出的Transformer结构以来,迅速引发一波热潮,最初《Attention is all you need》这篇论文的提出是针对于NLP领域的,通过自注意力机制代替传统处理序列数据时采用的循环神经网络结构,不仅实现了并行训练,提升了训练的效率,同时也在应用中取得很好的结果。之后的一段时间中,各种基于Transformer改进的网络结构涌现出来,在不同领域中都达到SOTA的效果。
2020年Google又提出了《AN IMAGE IS WORTH 16X16 WORDS : TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》这篇论文,该文章已经被收录于ICLR 2021。首次提出Vision Transformer(ViT)将Transformer结构应用在了CV领域图像分类中,论文中表明,与当前效果最好的卷积神经网络结构相比,ViT仍然取得很好的成绩,同时需要更少的计算资源。
本次实验内容是复现ViT模型,并将该模型应用在CIFAR10数据集上进行实验,与原论文中的实验结果做比较和分析。
二、基本思想:
2.1 整体结构:
借鉴于2017年Google提出Transformer的思想,ViT的作者希望能够把最纯净的Transformer结构应用在图像分类中,但是Transformer最初提出是针对NLP领域中的机器翻译任务,所以作者对Transformer结构做了一些细小的改动,让它完成图像分类任务。
改动的地方有:
(1)传统Transformer结构是由Encoder-Decoder框架组成,而对于ViT来说,只使用了Encoder部分。
(2)标准Transformer的输入是一维序列数据,所以需要将图像转换为序列数据,论文作者提出的思路就是将一张图片无重叠切分成固定大小的patches,然后将每一个patch通过拉伸操作转换为一维向量,最后通过一个线性变换层将输入的patches转换为一个固定长度的向量,称为patch_embedding。
(3)因为对于分类任务,最后的输出应该是一个标签,所以作者对Transformer Encoder的输入做了调整, 在输入序列的最开始位置添加了一个CLS Token。
整体网络结构如下图所示:
2.2 模块分析:
2.2.1 Patch Embedding:
Transformer在NLP领域应用时,处理的都是词向量序列,所以在处理二维图像时,我们需要对图像做一些特殊处理,在原论文中,作者提出的方式是将一张图片切分成大小相同的图像块,比如16*16,并将每一个patch映射到固定维度的向量embed_dim=768,该向量的维度在整个计算过程中保持不变。这一块的操作是通过一个二维的卷积来完成的,卷积核大小设置为16*16 ,步长为16。文章来源:https://www.toymoban.com/news/detail-441141.html
将图片进行切分之后,我们还需要对每个patches添加不同的位置信息文章来源地址https://www.toymoban.com/news/detail-441141.html
到了这里,关于ViT网络模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!