V I T

题目:一张图片等价于16*16大小的单词

摘要:

  • transformer把imagenet当成小模型
  • 摘要中提到的需要比较少的训练资源指的是 2500天TPU训练天数

Introduction

  • transformer的使用在目前看来还没有遇到任何性能饱和的问题
  • 在自然语言处理中,一个token代表一个单词,目前硬件所能支持的token的最长序列为几百或上前,比如BERT中使用的512,但是在视觉领域中,首先就要解决序列长度的这个问题。
  • 解决方法,把一张图片分解成很多patch ,假设一张图片的长宽是224*224,把这张图片分解为16*16,那么一个patch的大小就是14*14,那么这个序列的长度就变成了196
  • 视觉网络中的transformer大部分使用的都是有监督的训练方式,这一点是与NLP不同的。
  • 作者承认在相同的数据预训练下,相同的网络大小的transformer会比resnet弱,这是因为tran缺少了卷积的归纳偏置,或者说先验知识。
  • cnn的归纳偏置主要有两个,1、locality,滑动窗口的方式可以使用到局部性,靠的越近的东西的相关性就会越强 2、translation equivariance(平移等变性),f(g(x)) = g(f(x)),可以把g(x)理解为卷积,f(x)理解为平移。

5 conclusion

  • 除了使用了针对图像领域开发的空间位置编码,此外再没用到其他的特定于图像的归纳偏置。
  • 鉴于VIT和DETR良好的表现,tran在视觉领域应用前景很广,同年2020.12 检测模型VIT-FRCNN和分割模型 SETR都是transformer。

3 METHOD

  • 图1 前向,把图片打成patch,每个patch使用线性投射层的操作得到一个特征,为每个特征加上position embedding 就是对应了patch在图片中本来的位置。输入的patch大小为16*16*3 = 768, 整体图片一共有196个patch,所以总维度是196*768
  • 最后默认第一个位置已经融合了其他全部的位置信息,所以只输出第一个就行了
  • 线性投射层可以理解为一个全连接层,为了与transformer的维度匹配,维度为 输入维度*D(文中的一个可挑参数)  = 768*768,那么输出就是196*768*768*768 =  196*768
  • 在图像token输入tran之前,还要加上一个cls token,是一个可以学习的特征,所以总维度是197*768
  • 加入位置编码信息,(与BERT相同,是1D position embedding)位置编码信息有一个信息表,表中每一行都是一个1*768的向量(里面的数据是可以学习的),然后根据patch在图片中的位置,去索引表中特定行的向量,sum到197*768中,所以总的维度还是197*768.
  • tran块中使用的是多头自注意力,比方说有12个head,那么每一个head中的qkv为 197*64,然后再把这12个头拼接起来,最后的输出还是197*768。
  • MLP 没说要做什么,只说了这里会把维度做相应的升高。

消融实验

  • D.3,MLP(multi-layer-perceptron),里面使用了tanh去做分类预测。要知道,这与正常的cv分类步骤是不同的,以resnet为例,stage5输出14*14的 feature map,将之输入GAP(global average pooling)中得到一个拉直的向量去做分类预测。为什么不把trnas的输出直接GAP,而要使用一个cls token ,作者在消融实验室中发现这两种方法都可以。
  • D.4 到底使用哪种位置编码 1、1D位置编码 1...n  ; 2、2D位置编码 x = {1...n/2} y =  {1...n/2} ;3、相对位置编码。对比三种编码的结果是都可以。

3.2

这一节说明了训练好的VIT怎么去更大的图片上去做finetune,因为Touvrion 等很多人都在论文里提到,在更大尺寸的图片上去做finetune可能会得到更好的结果,但是预训练好的tran不太容易调节尺寸,同样尺寸的patch,但是会提高了序列长度(且这样的finetune之后的位置编码也相应的不能用了)那该怎么做呢?

理论上tran可以处理任意序列长度,所以长度不是问题,怎么解决位置编码,折中的解决方案就是去做插值(2d),这也是VIT唯一用到2d归纳偏置的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值