论文笔记【3】-- LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference

论文笔记【3】-- LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference

前序

前有ViT,后有Deit , 再有LeViT。

ViT 首次将纯transformer从NLP领域引入CV领域。

DeiT嫌弃ViT精度不够高,需要超大数据集才能训好,故从训练策略方向对ViT下手。

DeiT 给出了两种虐ViT的方法

  1. 不改变ViT的架构,仅仅是炼出了一组美丽的超参数,就实现了涨点。
  2. 在ViT中加入了一个distillation token,这玩意就是class token亲兄弟,采用软(硬)蒸馏的训练方法, 实现了涨点。

现在LeViT 站出来了,说DeiT也不行,速度太慢,想方设法虐DeiT,摩擦ViT。

论文题目:LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference

看题目就知道LeViT 有什么S操作:transformer架构中引入卷积,使推理更快。

推理有多快? 放一张图感受一下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EH1Gyhqj-1633571310697)(images/image-20211006172140486.png)]

思想

卷积层的较强的归纳偏置inductive biases,使得模型在浅层能很好地学习到low-level的信息,这一点transformer可做不到。故将在transformer之前叠上基层卷积层。

网络架构

废话不多说,直接上模型架构图:
在这里插入图片描述
图像首先进入四个卷积层,然后依次进入stage 1, 2, 3。stage细节看图就明了。注意,不同stage中**参数的变化**,比如attention head, 特征图的长,宽,通道等变化。(与ViT不同,LeViT 没有class token,也没有位置编码,而是用的一个偏置bias表示位置。激活函数是GELU ,具体细节还得看原论文。)
在这里插入图片描述

Atention block: 左图普通注意力块,右图带有下采样的注意力块
在这里插入图片描述

部分代码

四层卷积:

 Conv2d_BN(3, n // 8, 3, 2, 1, resolution=resolution),
 activation(),
 Conv2d_BN(n // 8, n // 4, 3, 2, 1, resolution=resolution // 2),
 activation(),
 Conv2d_BN(n // 4, n // 2, 3, 2, 1, resolution=resolution // 4),
 activation(),
 Conv2d_BN(n // 2, n, 3, 2, 1, resolution=resolution // 8))

每个stage之间的transformer block中的**attention block的下采样操作**代码。

//下采样操作
class Subsample(torch.nn.Module):
    def __init__(self, stride, resolution):
        super().__init__()
        self.stride = stride
        self.resolution = resolution

    def forward(self, x):
        B, N, C = x.shape
        x = x.view(B, self.resolution, self.resolution, C)[:,::self.stride,::self.stride].reshape(B,-1,C)
        return x

实验结果

在这里插入图片描述

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值