CvT Introducing Convolutions to Vision Transformers

发布 : 2021-07-30 分类 : 深度学习 浏览 :

《CvT: Introducing Convolutions to Vision Transformers》论文笔记
本文提出了卷积视觉Transformer(CvT),它设计了两个操作,Convolutional Token Embedding和Convolutional Projection,使得整个网络结构同时具备了卷积和Transformer的特点,去除了位置编码embedding,简化了网络设计。
image.png

3. Convolutional vision Transformer

图2展示了整个管道,我们引入了两个基于卷积的操作到Vision Transformer,分别是Convolutional Token Embedding和Convolutional Projection。Convolutional Token Embedding的输入是图像或者被reshaped-2D的token,它是由带有重叠区域的卷积实现了的,在它之后是一层正则化层。该模块后是Convolutional Transformer Blocks,Convolutional Projection是通过一个深度可分离卷积实现的,它被用于产生query、key和value embedding。注意,只有在最后一层,用于分类的classificaton token才被添加,在最后的是一个MLP头,利用classification token进行分类,输出预测类别。

3.1 Convolutional Token Embedding

给定一个2D image或者一个来自上一层的2D-reshaped输出 $x_{i-1} \in \mathbb{R}^{H_{i-1} \times W_{i-1} \times C_{i-1}}$ 作为输入,学习一个函数$f(*)$,想输入映射到一个新的token $f\left(x_{i-1}\right) \in \mathbb{R}^{H_{i} \times W_{i} \times C_{i}}$ ,它的高和宽如下(其中卷积核$s\times s$,步长$s-o$,padding$p$):
$$
H_{i}=\left\lfloor\frac{H_{i-1}+2 p-s}{s-o}+1\right\rfloor, W_{i}=\left\lfloor\frac{W_{i-1}+2 p-s}{s-o}+1\right\rfloor
$$
之后$f(x_{i-1})$会被展平到$H_iW_i\times C_i$,使用layer norm之后输入到后续的Transformer blocks。
Convolutional Token Embedding允许我们通过使用不同的卷积参数,调整token feature dimension 和每一阶段的token数量。以该方式,我们渐渐减少token sequence length,同时增加token feature dimension。这使得token 能够以增加更大的空间脚印去表征增加的复杂视觉模式。

3.2 Convolutional Projection for Attention

Convolutional Projection 层主要目标是实现额外的局部上下文建模,和提供高效的K,V矩阵采样方式。
从根本上来说,本文提出的带有Convolutional Projection 的Transformer block是原始Transformer block的一般化表示。因为先前的工作都是尝试在Transformer block 上添加额外的卷积模块,这增加了额外的计算代价。
image.png

3.2.1 Implementation Details

图3(a)展示了ViT中使用的原始position-wise 线性映射,图3(b)展示了我们提出的$s\times s$Convolutional Projection。首先token被reshape到2D token map,然后使用卷积核为s的深度可分离卷积进行处理,最后再将token map展平到1D用于子序列处理。它可以被公式化:
image.png
带有Convolutional Projection layer的Transformer Block是原始Transformer Block的一般化设计,原始的position-wise线性映射层可以由$1\times 1$卷积核的卷积操作琐碎的进行实现。

3.2.2 Efficiency Considerations

效率主要受益于两个方面:

  • 1.首先使用效率更高的深度可分离卷积,它具有$\mathcal{O}\left(s^{2} C T\right)$FLOPS,普通卷积具有$\mathcal{O}\left(s^{2} C^{2} T\right)$FLOPS。其中s表示卷积核,C表示token 通道数,T表示token数量。
  • 2.使用Convolutional Projection,卷积投影可以改变步长,减少token长度。由于卷积投影本身可以为局部上下文建模,且临近的像素本身语义相近。这带来的损失很小。图3(c)展示了原始长度的query,key 和 value长度减少了4倍,计算量也减少了4倍,这是相对MHSA操作而言的。



4 Experiments

实验网络结构分为了三个阶段:
image.png
实验结果如下:
image.png

4.4 Ablation Study

image.png
由于卷积具备局部空间结构,模型不需要添加位置编码,这简化了模型结构。表5进行了消融实验。
image.png
降低KV length,准确率下降了,计算量减少了更多
image.png

本文作者 : HeoLis
原文链接 : http://ishero.net/CvT%20%20Introducing%20Convolutions%20to%20Vision%20Transformers.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

学习、记录、分享、获得

微信扫一扫, 向我投食

微信扫一扫, 向我投食