VIT transformer详解

1.VIT 整体架构

         

对图像数据构建patch序列 

        对于一个图像,将图像分为9个窗口,要将这些窗口拉成一个向量,比如一个10*10*3维的图像,我们首先要将这个图像拉成一个300维的向量。

        位置编码: 

        位置编码有两种方式,第一种编码是一维编码,将这些窗口按照顺序,依次编码成1,2,3,4,5,6,7,8,9.第二种方式是二维编码,返回每个图像窗口的坐标。

         最后,连接一层全连接,将图像编码和位置编码映射到计算更容易识别的编码。

那么,架构图中的0编码有什么作用呢?

        我们一般在图像分类中加入0编码,图像分割与目标检测一般不需要加入,0patch主要用于特征整合,整合各个窗口的特征向量,因此,0 patch可以加在任何位置。

2.公式详解

        输入patch[(P*P)*C]经过全连接E得到((P*P)*D),即做一个特征映射,N+1表示额外找一个patch表示分类特征,即上面所说的  0 patch,然后再将特征整合相加。
        MSA就是一个残差连接。

 3.多头注意力的感受野

        如图所示,纵轴表示注意力的距离,也相当于卷积的感受野,当只有一个transformer时,感受野比较小,也会有感受野大的情况出现,随着transformer数量的增多,感受野普遍都比较大,这说明了Transformer提取的是全局特征。 

         

      4.位置编码  

        结论:编码有用,但是怎么编码影响不大,干脆用简单的得了,2D(分别计算行和列的编码,然后求和)的效果还不如1D的,每一层都加共享的位置编码也没啥太大用

        当然,这是分类任务,位置编码可能影响不大 

 5.实验效果(/14表示patch的边长是多少)

6.TNT:Transformer in Transformer         

        VIT中只针对pathch进行建模,忽略了其中更小的细节  

         

        外部transformer将原始图像分为一个个窗口,经过图像编码和位置编码生成一个特征向量。

        内部transformer将外部transformer的窗口,在进一步重组为多个超像素,重组为新的向量,比如说:外部transformer将图像拆分为16*16*3的窗口,内部tranformer再将其拆分为4*4的超像素,此时小窗口大小为4*4*48,这样每一个patch就整合了多个channels的信息。新向量再通过全连接改变输出特征大小,此时内部组合后的向量与patch编码大小相同 ,将内部向量与外部向量再相加。

 

TNT的PatchEmbedding的可视化

         对于蓝色的点表示TNT提取的特征,从可视化图像中可以看出,蓝色的点特征更离散,方差更大,更有利于分离,特征更鲜明,分布更多样性

实验结果 

内外兼修,都加编码效果最好 

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱花的浪漫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值