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

学习、记录、分享、获得

微信扫一扫, 向我投食

微信扫一扫, 向我投食