Visual Transformer——VTs:使用Transformer加强CNN


深度学习知识点总结

专栏链接:
https://blog.csdn.net/qq_39707285/article/details/124005405

此专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法;同时总结深度学习中重要的知识点,包括损失函数、优化器、各种经典算法、各种算法的优化策略Bag of Freebies (BoF)等。


从RNN到Attention到Transformer系列

专栏链接:
https://blog.csdn.net/qq_39707285/category_11814303.html

此专栏主要介绍RNN、LSTM、Attention、Transformer及其代码实现。


YOLO系列目标检测算法

专栏链接:
https://blog.csdn.net/qq_39707285/category_12009356.html

此专栏详细介绍YOLO系列算法,包括官方的YOLOv1、YOLOv2、YOLOv3、YOLOv4、Scaled-YOLOv4、YOLOv7,和YOLOv5,以及美团的YOLOv6,还有PaddlePaddle的PP-YOLO、PP-YOLOv2等,还有YOLOR、YOLOX、YOLOS等。


Visual Transformer

专栏链接:
https://blog.csdn.net/qq_39707285/category_12184436.html

此专栏详细介绍各种Visual Transformer,包括应用到分类、检测和分割的多种算法。



VTs
使用Transformer加强CNN,paper:《Visual Transformers: Token-based Image Representation and Processing for Computer Vision》

1. 简介

  计算机视觉取得的成功依靠:

  • 将图像表示为均匀排列的像素阵列;
  • 卷积高度局部化的特征。

  但是存在这几个问题:

  • 卷积无论其重要性如何对所有图像像素一视同仁;
  • 无论内容如何建模所有图像中的所有概念;
  • 难以将空间上较远的概念联系起来。

  为了解决以上问题,本文从根本上(像素卷积范式)开始解决,并介绍了Visual Transformer(VT),能够在图像中表示和处理高级概念(concepts)的新范式,如下图所示。
在这里插入图片描述
  本文的观点是,一个只有几个单词(或视觉tokens)的句子足以描述图像中的高级概念。本文使用空间注意力将特征图转换为一组紧凑的语义tokens。然后,将这些tokens提供给一个Transformer,用于捕获tokens交互。计算所得的视觉tokens可直接用于图像级预测任务(例如,分类),或在空间上重新投影到像素级预测任务的特征图(例如,分割)。

  与卷积不同的是,本文的VT可以更好地应对以上三个挑战:

  1. 通过关注重要的区域明智地分配计算,不平等对待所有像素;
  2. 在与图像相关的几个视觉tokens中编码语义概念,而不是在所有图像中建模所有概念;
  3. 通过token-space中的self-attention来关联空间上较远的概念。

  在使用更少的FLOPs和参数的同时,在ImageNet top 1上精度比ResNet精度高4.6至7个点。对于LIP和COCO语义分割,基于VT的特征金字塔网络(FPN)实现了0.35点的mIoU超越,同时将FPN模块的FLOPs降低了6.5倍。

2. VT

  总体流程图见上一节。首先,用几个卷积块处理输入图像,然后将输出特征图提供给VT。本文的亮点是利用卷积和VT的优势:

  • 在网络的早期,使用卷积来学习密集分布的低级模式;
  • 在网络的后期,使用VT来学习和关联分布更稀疏、更高层次的语义概念;
  • 在网络的末尾,将视觉tokens用于图像级预测任务,并将增强特征图用于像素级预测任务。

  VT模块包括三个步骤:

  1. 将像素分组为语义概念,以生成一组紧凑的视觉tokens;
  2. 为了建模语义概念之间的关系,对这些视觉tokens应用到Transformer;
  3. 将这些视觉tokens投射回像素空间以获得增强的特征图。

2.1 Tokenizer

  本文的观点是,一幅图像可以用几把单词或视觉tokens来概括。这与使用数百个卷积核的卷积和使用数百个“潜在节点”来检测所有可能的概念而不考虑图像内容的图卷积形成了鲜明的对比。为了利用这种观点,本文引入了一个标记器(tokenizer)模块,将特征映射转换为一组紧凑的视觉tokens。把输入图片 X ∈ R H W × C X \in R^{HW×C} XRHW×C转换成 T ∈ R L × C T \in R^{L×C} TRL×C,其中 L ≪ H W L \ll HW LHW L L L代表tokens的数量。

2.2 Transformer

  token化之后,需要对这些可视tokens之间的交互进行建模。本文采用Transformer,它使用与输入相关的权重,因此,Transformer支持具有可变含义的可视tokens,以较少的tokens覆盖更多可能的概念。

  本文使用了一个标准Transformer,但有一些小的变化:
在这里插入图片描述
在这里插入图片描述
  其中 T i n , T ‘ o u t , T o u t ∈ R L × C T_{in},T`_{out},T_{out} \in R^{L×C} Tin,Tout,ToutRL×C是视觉tokens,在Transformer中,token之间的权重依赖于输入,作为key-query计算:
在这里插入图片描述

允许使用少至16个视觉token。self-attention之后,在方程(4)中使用非线性和两个逐点卷积,其中 F ‘ 1 , T 2 ∈ R L × L F`_1,T_2 \in R^{L×L} F1,T2RL×L是权重, σ ( ⋅ ) \sigma(·) σ()是ReLU函数。

2.3 Projector(投影)

  许多视觉任务需要像素级的细节,但这些细节不会保存在视觉tokens中。因此,将Transformer的输出与特征图融合,以将特征图的像素阵列表示细化为:
在这里插入图片描述
其中 X i n , X o u t ∈ R H W × C X_{in},X_{out} \in R^{HW×C} Xin,XoutRHW×C是输入和输出特征图;
( X i n W Q ) ∈ R H W × C (X_{in}W_{Q}) \in R^{HW×C} (XinWQ)RHW×C是根据输入特征图X_in计算的query;
( X i n W Q ) p ∈ R C (X_{in}W_{Q}) _p \in R^C (XinWQ)pRC对像素 p p p需要的视觉tokens信息进行编码;
( T W K ) ∈ R L × C (TW_{K}) \in R^{L×C} (TWK)RL×C是根据tokenT计算的key;
( T W K ) l ∈ R C (TW_{K})_l \in R^C (TWK)lRC表示第 l l l个token编码的信息;
key-value确定如何将编码在视觉toekn T T T中的信息投影到原始特征图。
W Q ∈ R C × C , W K ∈ R C × C W_{Q} \in R^{C×C},W_{K} \in R^{C×C} WQRC×C,WKRC×C用于计算queries和keys的可学习权重。

3. 在视觉模型中使用Visual Transformer(VT)

  在本节中,介绍如何在视觉模型中使用VT作为构建块。为每个VT定义了三个超参数:特征图的通道大小;视觉token的通道大小;以及视觉token的数量。

3.1 用于图片分类模型

  基于ResNet-{18、34、50、101},通过用VT模块替换卷积的最后stage来构建相应的Visual-Transformer-ResNets(VT ResNets:
· ResNet-{18、34、50、101}的最后一个stage分别包含2个basic blocks、3个basic blocks和3个bottleneck blocks。用相同数量(2、3、3、4)的VT模块替换它们;

  • 在第4阶段结束时(在第5阶段最大池化之前),ResNet-{18、34}生成形状为142×256的特征图,ResNet-{50、101}生成形状142×1024的特征图。对于ResNet-{18、34、50、101},将VT的特征图通道大小设置为256、256、1024、1024;
  • 为所有模型设置为16个视觉token,通道大小为1024;
  • 在网络的末端,向分类头输出16个可视token,分类头对token应用平均池化,并使用完全连接的层来预测概率。

  具体的模型构成如下表所示:
在这里插入图片描述
  由于VTs仅对16个可视tokens进行操作,因此可以将最后阶段的FLOP减少6.9倍,如表1所示:
在这里插入图片描述

3.2 用于图片语义分割模型

  使用VTs进行语义分割可以解决像素卷积范式的几个挑战:

  • 首先,卷积的计算复杂性随着图像分辨率的增加而增加;
  • 第二,卷积难以捕捉长期像素之间的交互。
  • 另一方面,无论图像分辨率如何,VT都可以在少量的视觉token上运行,并且由于它在token-space中模拟概念交互,因此它绕过了像素阵列的“long-range”挑战.

  为了验证这个假设,使用Panoptic特征金字塔网络(FPN)作为基线,并使用VT来改进网络。PanopticFPN使用ResNet作为主干,以不同分辨率从不同阶段提取特征图。然后,通过特征金字塔网络以自顶向下的方式融合这些特征图,以生成具有丰富语义的多尺度和细节保留特征图,用于分割(如下图左侧)。FPN在计算上成本很高,因为它严重依赖于在具有大通道的高分辨率特征图上操作的空间卷积。本文使用VT代替FPN中的卷积。将新模块命名为VT-FPN(如下图右侧)。
在这里插入图片描述
  从每个分辨率的特征图中,VT-FPN提取8个通道大小为1024的视觉tokens。视觉tokens被合并并送到一个Transformer中,以计算不同分辨率的视觉tokens之间的交互。然后将输出tokens投射回原始特征图,然后将其用于执行像素级预测。与原始FPN相比,VT-FPN的计算成本要小得多,因为只对非常少量的视觉tokens而不是所有像素进行操作。实验表明,VT-FPN使用的FLOPs比FPN少6.4倍,同时保持或超过其性能(结果如下两个表所示)。
在这里插入图片描述

4. 结论

  计算机视觉中的惯例是将图像表示为像素阵列,并应用深度学习算子——卷积。取而代之的是,本文提出了Visual Transformer(VTs),作为新的计算机视觉范式的标志,它可以更有效地学习和关联稀疏分布的高级概念:

  • 与像素阵列不同,VTs仅使用视觉tokens(visual tokens)表示图像中的高级概念;
  • 与卷积不同,VTs应用Transformer来直接关联token-space中的语义概念。

  为了评估这一想法,本文用VTs替换卷积模块,在多个任务和数据集之间获得了显著的精度改进。使用先进的训练配置,VTs将ImageNet上的ResNet精度提高了4.6至7个点。对于LIP和COCO的语义分割,基于VTs的特征金字塔网络(FPN)实现了0.35点的mIoU提升,而且FLOPs比卷积FPN模块少6.5倍。

  此外,这种范式还可以与本文范围之外的其他同期技巧相结合,包括额外的训练数据和神经架构搜索。然而,本文的目标不是展示大量的深度学习技巧,而是展示了像素卷积范式充满冗余,现代方法为了弥补使用多种tricks,这增加了大量的计算复杂性。

  本文从根本上解决了问题,而不是加剧计算需求,通过采用新发现的token-transformer范式来解决像素卷积约束中的冗余问题。

猜你喜欢

转载自blog.csdn.net/qq_39707285/article/details/128901674
今日推荐