Vision Transformer 与 Mix Vision Transformer 对比:探索视觉领域的变革力量

目录

引言

结构差异

一、Vision Transformer 计算流程

(一)输入处理

(二)Transformer 编码器计算

(三)输出与分类

二、Mix Vision Transformer 计算流程

1. 数据准备

2. CutMix 图像混合操作

3. CutMix 标签混合的初步计算

4. 多头自注意力机制计算

5. 多头类注意力计算

6. 基于注意力图的标签混合调整

实验结果分析

PVT 系列

XCiT 系列

CaiT-XXS


引言

近年来,Transformer 架构在自然语言处理领域取得巨大成功后,迅速蔓延至计算机视觉领域,催生出一系列优秀的模型。Vision Transformer(ViT)作为将 Transformer 引入视觉任务的先驱,为图像理解带来了全新的思路。而 Mix Vision Transformer(MiT)则在 ViT 的基础上进一步发展,针对视觉任务的特点进行了优化。本文将深入对比这两种模型,分析它们在结构、性能和应用场景等方面的差异。

结构差异

  • Vision Transformer:将图像划分为一系列不重叠的补丁(patch),并把这些补丁视为序列数据,通过位置编码加入到序列中,然后直接输入到 Transformer 编码器中进行处理,利用自注意力机制捕捉全局信息。
  • Mix Vision Transformer:采用了多阶段的结构,通过逐步融合不同尺度的特征来提高模型对不同大小目标的适应性。在每个阶段中,使用了混合的注意力机制,将局部注意力和全局注意力相结合,既能够捕捉局部的细节信息,又能够获取全局的上下文信息。

一、Vision Transformer 计算流程

(一)输入处理

ViT 将输入图像视作一系列的补丁(patch)。假设输入图像为x\in \mathbb{R}^{H \times W \times C},把它分割成固定大小的补丁,每个补丁的大小为(P,P),这样会得到N=\frac{HW}{P^2}个补丁 。之后对每个补丁进行线性投影,将其映射到维度为的空间D,得到补丁嵌入x_p \in \mathbb{R}^{N \times (P^2\cdot C)}。这个过程的公式如下:

z_0 = [x_{class};x_p^1 E; x_p^2 E;...;x_p^N E]+E_{pos}

其中,x_{class}是可学习的分类嵌入,E \in \mathbb{R}^{(P^2\cdot C) \times D}是投影矩阵,E_{pos}\in \mathbb{R}^{(N+1) \times D}是位置嵌入,位置嵌入用于保留补丁的位置信息。

(二)Transformer 编码器计算

  1. 多头自注意力(MSA)计算:Transformer 编码器由多个交替的多头自注意力和多层感知机(MLP)块组成。在多头自注意力计算中,对于输入z_{\iota -1},首先进行线性变换得到查询(query)、键(key)和值(value):[q,k,v]=z_{\iota -1}U_{qkv}

    其中,U_{qkv}\in \mathbb{R}^{D \times 3D_h}D_h是每个头的维度。然后计算注意力权重:A = softmax(\frac{qk^T}{\sqrt{D_h}})

    最后得到多头自注意力的输出:MSA(z_{\iota -1})=Av
  2. MLP 计算:经过多头自注意力计算后,再通过 MLP 进行进一步的特征变换。MLP 包含两个线性层和一个 GELU 激活函数:

        {z}'_\iota = MSA(LN(z_{\iota -1})) +z_{\iota -1}

z_\iota = MLP(LN({z}'_\iota )) + {z}'_\iota

        其中,LN表示层归一化(Layer Normalization)\iota = 1...L

(三)输出与分类

在经过层的 Transformer 编码器后,取分类嵌入z_{L}^0的输出作为图像的表示y

y=LN(z_L^0)


在预训练时,分类头是一个带有一个隐藏层的 MLP;在微调时,分类头则是一个简单的线性层,将图像表示映射到具体的类别上进行分类。

二、Mix Vision Transformer 计算流程

1. 数据准备

准备两个输入 - 标签对(x_A,y_A)(x_B,y_B),其中x_Ax_B是图像数据,维度为H \times W \times CH为图像高度,W为图像宽度,C为通道数),y_Ay_B是对应的标签。

2. CutMix 图像混合操作

  • 生成一个二进制掩码M\in \lbrace 0,1 \rbrace^{HW},用于指示从两张图像中哪些位置进行像素替换。
  • 对图像进行融合操作,根据公式\tilde{x} = M \odot x_A + (1-M) \odot x_B得到混合后的图像\tilde{x},其中\odot表示逐元素相乘,1是全为1的二进制掩码。

3. CutMix 标签混合的初步计算

  • x_B中随机采样一个区域,其边界框坐标为(r_x,r_y,r_w,r_h),并从x_A中裁剪出相同大小的区域。
  • 计算混合标签的比例\lambda,公式为\lambda = \frac{r_w,r_h}{WH},这里\lambda表示y_A在混合标签\tilde{y}中的比例。此时初步的标签混合公式为\tilde{y} = \lambda y_A+(1-\lambda)y_B

4. 多头自注意力机制计算

  • 将输入图像(这里可以是混合后的图像\tilde{x},在实际应用中先将其转换为符合 ViT 输入的格式)转换为输入矩阵x\in \mathbb{R}^{N \times d},其中N是令牌数量,d是每个令牌的维度。
  • 通过权重矩阵w_q\in \mathbb{R}^{d \times d_q}w_k\in \mathbb{R}^{d \times d_k}w_v\in \mathbb{R}^{d \times d_v}对输入x进行线性投影,得到查询q = xw_q、键k = xw_k和值v = xw_v,且d_q =d _k
  • 计算注意力图。

        A(q,k) = Softmax(\frac{qk^T}{\sqrt{d_k}}) \in \mathbb{R}^{N \times N}

  • 得到自注意力操作的输出Attention(q,k,v) = A(q,k)v。若为多头自注意力,则将查询、键和值分别进行g次不同的线性投影,投影到d_kd_kd_v维度。

5. 多头类注意力计算

  • 在 ViT 架构中,将图像x \in \mathbb{R}^{3 \times H \times W}划分为p个补丁令牌x_{patches}\in \mathbb{R}^{p \times d},并引入类令牌x_{cls}\in \mathbb{R}^{1 \times d},得到补丁嵌入。

        z = \left [ x_{cls},x_{patches} \right ] \in \mathbb{R}^{(1+p) \times d}

  • 对于具有g个注意力头的 Transformer 和输入补丁嵌入z,使用投影矩阵w_q,w_k\in \mathbb{R}^{d \times d}参数化多头类注意力。
    • 计算q = x_{cls}\cdot w_qk = z\cdot w_k
    • 计算{A}' = Softmax(\frac{q\cdot k^T}{\sqrt{d/g}})
    • 得到注意力图A = \left \{ {A}'_{0,i} | i \in \left [ 1,p \right ] \right \},若有多个头,则对所有头的结果进行平均得到最终的A \in \left [ 0,1 \right ]^p

6. 基于注意力图的标签混合调整

  • 对二进制掩码进行最近邻插值下采样操作\downarrow (M),将其从HW维度转换为p个像素。
  • 根据注意力图A重新计算\lambda,公式为\lambda = A\cdot \downarrow(M)
  • 使用新的\lambda对标签进行混合,得到最终的混合标签\tilde{y} = \lambda_{y_A}+(1 - \lambda )_{y_B}

实验结果分析

两篇论文分别介绍了 Vision Transformer(ViT)和 TransMix 相关研究。ViT 将 Transformer 直接应用于图像分类,在大规模预训练后表现优异;TransMix 则是一种基于注意力图的标签混合数据增强技术,用于提升 ViT 模型性能。以下是基于两篇论文在图像分类同一数据集下的对比准确率情况:

模型ImageNet 数据集 Top-1 准确率(无特殊策略)ImageNet 数据集 Top-1 准确率(使用 TransMix 策略)与原始 ViT 对比(使用 TransMix 策略下)
ViT-B/1677.9%(原论文在 ImageNet 数据集,384² 分辨率 ,具体数据依原论文实验设定)-作为对比基准
ViT-L/1676.5%(原论文在 ImageNet 数据集,384² 分辨率 ,具体数据依原论文实验设定)-作为对比基准
PVT-T75.1%75.5%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 8.6%
PVT-S79.8%80.5%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 3.6%
PVT-M81.2%82.1%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 2.0%
PVT-L81.7%82.4%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 1.7%
XCiT-T79.4%80.1%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 4.0%
XCiT-S82.0%82.3%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 1.8%
XCiT-M82.7%83.4%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 0.7%
XCiT-L82.9%83.8%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 0.3%
CaiT-XXS79.1%79.8%较 ViT-B/16(假设使用 TransMix 策略后提升至 84.1% )低约 4.3%

以下是对 PVT 系列、XCiT 系列和 CaiT-XXS 模型的简单介绍及对应论文:

PVT 系列

  • 模型介绍:PVT 即 Pyramid Vision Transformer,是用于密集预测任务的无 CNN 的 backbone。它将金字塔结构引入到 Transformer,与专门用于图像分类的 ViT 不同,PVT 可以进行下游各种密集预测任务,如检测、分割等。它可以对图像进行密集划分训练以达到高输出分辨率的效果,还使用逐渐缩小的金字塔来降低大 feature maps 的计算量,兼具了 CNNs 和 Transformer 的优点,是一个通用的无卷积 backbone。
  • 对应论文:《Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions》,论文地址:[2102.12122] Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions

XCiT 系列

  • 模型介绍1:XCiT 即 Cross-Covariance Image Transformer,核心亮点在于引入了跨协方差注意力机制(XCA),使得计算复杂度呈线性增长,即随着图像补丁数量增加,所需的计算资源以的形式增长,大大提高了对高分辨率图像处理的能力,还能有效降低内存峰值。该模型适合处理高分辨率图像数据,可用于像素级分类、对象检测与实例分割等任务,与 DINO 自我监督训练方法结合能生成高质量自注意力映射。
  • 对应论文:《XCiT: Cross-Covariance Image Transformers》,论文地址:https://arxiv.org/pdf/2106.09681.pdf

CaiT-XXS

  • 模型介绍:CaiT 即 Going Deeper with Image Transformers,通过 LayerScale 层来保证深度 ViT 训练的稳定性,该层包含一个初始权值接近于零的可学习对角矩阵,加在每个残差模块的输出上。还提出了 Class-Attention 层,将用于 token 间特征提取的 Transformer 层与将 token 整合成单一向量进行分类的 Class-Attention 层分开,避免两种目标不同的处理混合的矛盾现象。
  • 对应论文:《Going Deeper with Image Transformers》,论文地址:[2103.17239] Going deeper with Image Transformers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

T1.Faker

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

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

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

打赏作者

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

抵扣说明:

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

余额充值