AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

在这里插入图片描述

摘要

虽然Transformer体系结构已经成为自然语言处理任务的事实上的标准,但它在计算机视觉方面的应用仍然有限。在视觉上,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持其整体结构不变。我们表明,这种对CNN的依赖是不必要的,直接应用于图像块序列的纯变换可以很好地执行图像分类任务。在对大量数据进行预训练并传输到多个中型或小型图像识别基准(ImageNet、CIFAR-100、VTAB等)时,视觉转换器(VIT)与最先进的卷积网络相比获得了优异的结果,而训练所需的计算资源要少得多。

模型架构

在这里插入图片描述
模型概述。我们将图像分割成固定大小的块,线性地嵌入每个块,添加位置嵌入,并将生成的向量序列提供给标准的Transformer编码器。为了执行分类,我们使用标准方法,即向序列中添加额外的可学习“分类令牌”。Transformer编码器的插图灵感来自Vaswani等人(2017)。

模块构成:
在这里插入图片描述

transformer Encoder中使用了多头注意力:参考Multi Head Attention

Embedding层

在这里插入图片描述

对于标准的Transformer模块,要求输入的是token
(向量)序列,即二维矩阵[num_token, token_dim]

Embedding层
在代码实现中,直接通过一个卷积层来实现以ViT- B/16为例,使用卷积核大小为16x16,stride为16,
卷积核个数为768
[224, 224, 3] -> [14, 14, 768] -> [196, 768]

768对应的就是token_dim(向量的长度)

在输入Transformer Encoder之前需要加上[class]token
以及Position Embedding,都是可训练参数

拼接[class]token: Cat([1, 768], [196, 768]) -> [197, 768]

叠加Position Embedding: [197, 768] -> [197, 768]

使用相加的方式叠加的位置编码(维度保持了不变)

Transformer Encoder层

在这里插入图片描述
的详细结构为:

在这里插入图片描述

MLP Head

在这里插入图片描述

训练ImageNet21K时是由Linear+tanh激活函数+Linear

但是迁移到ImageNet1K上或者你自己的数据上时,只有一个Linear (全连接层)

需要得到每个类别的类别概率,还需要softmax激活函数

整体流程

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值