ViT网络模型

本文介绍了将Transformer结构应用于计算机视觉领域的ViT模型,详细阐述其背景、基本思想、网络结构和模块分析。实验部分展示了如何在CIFAR10数据集上复现ViT模型,并对比了实验结果与原论文的差异。
摘要由CSDN通过智能技术生成

一、背景介绍:

自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。

整体网络结构如下图所示:

image-20210715153850276

2.2 模块分析:

image-20210715162318118

2.2.1 Patch Embedding:

Transformer在NLP领域应用时,处理的都是词向量序列,所以在处理二维图像时,我们需要对图像做一些特殊处理,在原论文中,作者提出的方式是将一张图片切分成大小相同的图像块,比如16*16,并将每一个patch映射到固定维度的向量embed_dim=768,该向量的维度在整个计算过程中保持不变。这一块的操作是通过一个二维的卷积来完成的,卷积核大小设置为16*16 ,步长为16。

将图片进行切分之后,我们还需要对每个patc

  • 7
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值