论文笔记【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架构中引入卷积,使推理更快。

推理有多快? 放一张图感受一下:
论文笔记【3】-- LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference_第1张图片

思想

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

网络架构

废话不多说,直接上模型架构图:
论文笔记【3】-- LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference_第2张图片
图像首先进入四个卷积层,然后依次进入stage 1, 2, 3。stage细节看图就明了。注意,不同stage中**参数的变化**,比如attention head, 特征图的长,宽,通道等变化。(与ViT不同,LeViT 没有class token,也没有位置编码,而是用的一个偏置bias表示位置。激活函数是GELU ,具体细节还得看原论文。)
论文笔记【3】-- LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference_第3张图片

Atention block: 左图普通注意力块,右图带有下采样的注意力块
论文笔记【3】-- LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference_第4张图片

部分代码

四层卷积:

 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

实验结果

论文笔记【3】-- LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference_第5张图片

你可能感兴趣的:(论文笔记,transformer,深度学习,pytorch)