P2T: Pyramid Pooling T ransformer for Scene Understanding

论文链接:
https://arxiv.org/abs/2106.12011
中文版本:
https://mmcheng.net/wp-content/uploads/2022/08/22PAMI_P2T_CN.pdf
代码链接:
https://github.com/yuhuan-wu/P2T

P2T: Pyramid Pooling T ransformer for Scene Understanding

  • 一、摘要
  • 二、研究动机
  • 三、实现细节
    • (一)、金字塔池化
    • (二)、P2T
    • (三)、金字塔池化 Transformer
    • (四)、基于池化的多头自注意力模块(P-MHSA)
  • 四、实验验证
    • (一)、分类
    • (二)、分割
    • (三)、检测
    • (四)消融实验

一、摘要

金字塔池化计算方式由于其出色的上下文提取能力,从而在各项视觉任务中取得了很好的效果。然而,金字塔池化在骨干网络的设计中至今并没有被探索过。因此,本文提出将金字塔池化引入到视觉 Transformer 中的多
头自注意力模块(Multi-Head Self-Attention,MHSA)里面,既减少了图像词符序列的长度,同时提取到更好的语境特征。基于本文提出的金字塔池化多头注意力,提出金字塔池化 Transformer(Pyramid Pooling Transformer,P2T)骨干网络。

二、研究动机

金字塔池化是一种具有较长历史的计算机视觉技术,它通过提取上下文信息并利用具有不同感受野的多层池化操作在输入特征上进行多尺度运算。这种简单的技术已在各种下游视觉任务中被证明有效,例如语义分割和物体检测。然而,最近的金字塔池化方法高度依赖于预训练的卷积神经网络骨干,因此它们仅限于一些特定的视觉任务。换言之,金字塔池化技术在具有广泛应用的骨干网络设计中尚未被探索。为了弥补这一个差距,本文
将金字塔池化应用于视觉 Transformer 模块中,从而减少序列长度并且同时学习到强大的上下文表征。金字塔池化的计算效率也非常高,它给视觉 Transformer 带来的计算开支几乎可以忽略不计。
通过提出一个新的 Transformer 骨干网络来实现这一目标,即金字塔池化 Transformer(Pyramid PoolingTransformer,P2T)。将金字塔池化的想法应用于视觉Transformer 的多头自注意力模块中,不但减少了该模块的
计算开支,同时也获取到了丰富的上下文信息。通过将基于新池化的多头自注意力模块用于 Transformer 中,P2T 在特征学习和视觉识别方面的表现都比其他基于单层池化操作的PVT 和 MViT更加强大。利用各种典型的视觉任务,例如图像分类、语义分割、物体检测和实例分割等基础视觉任等来评估 P2T 的性能。大量实验表明,对于这些基本视觉任务,P2T 的性能优于所有以前基于卷积神经网络和Transformer 的骨干网络(有关语义分割的比较,请参见下图)。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第1张图片
总而言之,本文的主要贡献包括:
• 将金字塔池化封装到多头自注意力模块中,不但减少了图像特征序列的长度,同时也提取了强大的上下文特征。
• 将基于金字塔池化的多头自注意力模块引入到视觉Transformer 中来构建一种灵活并且对视觉任务有效的新骨干网络,称之为金字塔池化 Transformer(Pyramid Pooling Transformer,P2T)。
• 充分的实验证明,当将 P2T 用作各种场景理解任务的骨干网络时,P2T 的性能明显优于以前那些基于卷积神经网络或者 Transformer 的网络。

三、实现细节

PVT和 MViT利用单层池化操作提取的池化特征看起来不那么强大。跟他们不一样的是,本文将金字塔池化的想法应用于视觉 Transformer 来减少了序列长度的同时,也学习到了更加有效的上下文特征。有了更加有效的上下文特征,金字塔池化可能比单层池化更好地计算多头自注意力模块中的自注意力关系。金字塔池化计算效率非常高,因此引入带来的计算开支可以忽略不计。实验表明,本文所提出的P2T 比以前的基于卷积神经网络和基于 Transformer 的网络的性能要好得多。

(一)、金字塔池化

何恺明等人将金字塔池化引入深度卷积神经网络里面进行图像分类和物体
检测。他们采用了几种池化操作将卷积神经网络骨干网络的最终卷积特征图池化为几个固定大小的特征图。然后将这些得到的特征图扁平化并拼接成固定长度的特征表示,从而实现了具有鲁棒性的视觉识别。之后,赵恒爽等人应用金字塔池化于语义分割任务。他们没有采用扁平化操作,而是将池化后的固定大小特征图上采样为原始大小,并将上采样后的特征图拼接起来进行后续预测。他们的成功表明金字塔池化在网络预测中的有效性。在此之后,金字塔池化已经被广泛应用于语义分割和物体检测等各种视觉任务。
与在特定任务下探索卷积神经网络中金字塔池化的现有文献不同,本文建议将金字塔池化的概念引入到视觉 Transformer 骨干网络里面。有了这个想法,首先将金字塔池化嵌入到 P2T 骨干网络的普通注意力模块中,这可以减少词符序列的长度,同时学习到强大的上下文特征表示。P2T 可
以很容易地被各种视觉任务用于特征表示的学习,而之前关于金字塔池化的工作仅限于特定的视觉任务。本文在图像分类、语义分割、对象检测和实例分割方面的大量实验证明了P2T 与现有的基于卷积神经网络或Transformer 的网络相比的优越性。因此,这项工作的独特性将有利于后续对各种视觉任务的研究。

(二)、P2T

P2T 的整体架构在下图中可以详细看到。以自然彩色图像作为输入,P2T 首先将其拆分为 H / 4 × W / 4 H/4 ×W/4 H/4×W/4个块,每个块都被展平为 48 (4 × 4 × 3)个元素。将这些扁平化后的图像块输入到一个图像块编码模块中;它由一个线性投影层组成;然后加上可学习的位置编码。图像块编码模块将 48 的特征维度扩展到 C1。整个网络可以分为四个阶段,分别具有特征维度为 C i ( i = 1 , 2 , 3 , 4 ) C_i (i = {1, 2, 3, 4}) Ci(i=1,2,3,4)。在每两个阶段之间,每个 2 × 2 图像块组被拼接起来,并从 4 × C i 4 × C_i 4×Ci线性投影到 C i + 1 C_{i+1} Ci+1维度 (i = {1, 2, 3})。这样,四个阶段的尺度就变成了 H / 4 × W / 4 , H / 8 × W / 8 , H / 16 × W / 16 ,和 H / 32 × W / 32 H/4 ×W/4 ,H/8 ×W/8 , H/16 ×W/16,和 H/32 ×W/32 H/4×W/4H/8×W/8H/16×W/16,和H/32×W/32。从四个阶段,可以分别推导出四个特征表示 {B1, B2, B3, B4}。其中只有 B4 将用于图像分类的最终预测,但是所有金字塔特征都可以用于下游场景理解任务。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第2张图片

(三)、金字塔池化 Transformer

金字塔池化已被广泛用于许多与卷积神经网络协作的场景理解任务中。然而,现有文献通常基于已设计好的骨干网络,并在它们基础之上利用金字塔池化额外设计一些模块,用于提取特定任务的全局上下文信息。相比之
下,本文首次探索了 Transformer 和骨干网络之中的金字塔池化,目的是为了普遍改善各种场景理解任务。为此,金字塔池化的想法Transformer 结合,同时减少多头自注意力模块的计算负荷并捕获丰富的上下文信息。
P2T 的基本单元结构在下图中进行了展示。输入特征首先通过基于金字塔池化的多头自注意力模块,其输出与映射的自身相加,然后是 LayerNorm。如同传统的 Transformer模块,接下来是一个前馈网络(FFN)用于特征投影。一个残差连接和 LayerNorm被再次应用。上述过
程可以被表述为:
在这里插入图片描述

P2T: Pyramid Pooling T ransformer for Scene Understanding_第3张图片

(四)、基于池化的多头自注意力模块(P-MHSA)

基于池化的多头自注意力模块的设计。其结构如图 上(b)所示。首先,输入的 X 被重塑为二维空间。然后,在重塑的 X 上应用不同比例的多个平均池层,用以生成金字塔特征图,具体如下所示:
P2T: Pyramid Pooling T ransformer for Scene Understanding_第4张图片
其中 P 1 , P 2 , . . . , P n P_1, P_2, ..., P_n P1,P2,...,Pn表示生成的金字塔特征图,n 是池化层的数量。接下来,将金字塔特征图送入深度卷积进行相对位置编码:
在这里插入图片描述
其中 DWConv(·) 表示深度卷积,核大小为 3 × 3, P i e n c P^{enc}_i Pienc 为相对位置编码的 P i P_i Pi。由于 P i P_i Pi是池化特征,所以在 式 (3) 中的操作只需要一点计算开支。之后,对这些金字塔特征图进行扁平化和串联:
在这里插入图片描述
公式中为了简单起见,省略了扁平化操作。这样,如果池化率足够大,P 可以是一个比输入 X 更短的序列。此外,P 包含了输入 X 的上下文抽象,因此在计算多头自注意力模块时可以作为输入 X 的有力替代。
假设多头自注意力模块 中的查询、键和值张量分别为 Q、K 和 V。与其采用传统的如下方法:
在这里插入图片描述
本文提出采用:
在这里插入图片描述
然后,Q, K, V 被送入注意力模块,以计算注意力特征 A。它可以被表述为如下形式:
在这里插入图片描述
其中 d K d_K dK 是 K 的通道尺寸。和 √ d K √dK dK可以作为一个近似的标准化。Softmax 函数是沿着矩阵的行来应用的。为了简介,上式省略了多头的概念。
由于 K 和 V 的长度比 X 小,所提出的 P型多头自注意力模块比传统的多头自注意力模块更有效率。此外,由于 K和 V 包含高度抽象的多尺度信息,所提出的 P型多头自注意力模块在全局上下文依赖性建模方面有更强的能力,这对场景理解很有帮助。从不同的角度来看,金字塔池化通常被用作连接在已有骨干网络基础之上的有效技术;相比之下,本文首先通过 Transformer 在骨干网络内利用金字塔池化,从而为场景理解提供强大的特征表示学习。通过上述分析P型多头自注意力模块有望比传统的多头自
注意力模块更高效、更有效。

四、实验验证

不同深度的 P2T 设置:
P2T: Pyramid Pooling T ransformer for Scene Understanding_第5张图片
金字塔池化设置:
将 P型多头自注意力模块中并行池化操作的数量设置为 4。在不同的阶段,金字塔池化的池化比率 Transformer 是不同的。第一阶段的池化比
率根据经验设定为 {12, 16, 20, 24}。除了在最后阶段,接下来每个阶段的池化比率都除以 2。在最后阶段,它们被设定为1, 2, 3, 4。在每个 Transformer 块中,P-型多头自注意力模块的所有深度卷积都有相同的参数。
其他设置:
虽然深度卷积的内核大小较大(如5 × 5)可以带来更好的性能,但为了提高效率,所有深度卷积的内核大小被设置为 3 × 3。选择Hardswish 作为非线性激活函数,因为它比 GELU节省了很多内存。除
此之外,Hardswish在实际使用上也很有效。和 PVTv2一样, 采用了重叠图像块编码。也就是说,使用3 × 3 的卷积,跨度为 2,用于从第二阶段到最后阶段的图像块编码,应用 7 × 7 的卷积,跨度为 4,用于第一阶段
的图像块编码。

(一)、分类

使用 AdamW作为优化器,初始学习率为 10−3,权重衰减为 0.05,每个小批次为 1024 张图像。用余弦学习率衰减策略训练 P2T 300 个迭代单位。用于训练和测试的图像大小被调整为 224 × 224。模型在前五个迭
代单位中进行预热。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第6张图片

(二)、分割

应用 AdamW作为网络优化器,初始学习率为 10−4,权重衰减为 10−4。采用 γ = 0.9 的 poly 学习率计划。每个小批次有 16 张图像;用于训练的图像被调整大小并随机裁剪为 512 × 512。还启用了跨 GPU 的同步批次规范化。在测试过程中,图像短边被调整到 512,长边按比例进行调整。多尺度测试和翻转功能被禁用。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第7张图片

(三)、检测

P2T: Pyramid Pooling T ransformer for Scene Understanding_第8张图片

(四)消融实验

探究多种金字塔池化比率:
为了验证使用多种池化比率的意义,进行了实验,以评估 P2T 与一个/两个/四个平行池化操作的性能。基线是没有相对位置编码、IRB 和重叠图像块编码的 P2T-Small。结果如下。可以看出,具有大池化比率的单一池化操作(例如 16, 24)对序列长度有很大的下采样比率。尽管如此,它在图像分类和语义分割方面的性能都非常差。然而,当单一池化操作的池化率为 12 时,如果进一步降低池化率,性能将达到饱和。当采用两个平行的池化操作时,即使有很高的下采样比率,对图像分类和语义分割来说,性能仍然变得更好。当四个并行的池化操作时,下采样率与池化率为 8(PVT 中的设置)的下采样率相同,且达到了最佳性能。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第9张图片
探究金字塔池化对不同阶段的意义:
对 P2T 的金字塔池化设计进行了不同阶段的消融研究。由于第 1 阶段只包含下采样的卷积,不在第 1 阶段进行这种消融研究。基线与上次消融研究相同。单个池化操作的池化率被设置为 8,以确保相同的下采样率。结果显示如下。可以看到金字塔池化可以提高所有阶段的性能。当更多的阶段应用多个池化操作时,性能变得更高。从结果来看,在第 4 阶段应用多个池化操作的改进比其他阶段更大,因为第 4 阶段比第 [2, 3] 阶段和第 5 阶段有更多的基本模块数。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第10张图片
探究池化操作的选择: 对不同的池化操作进行了实验,如下所示。有三种典型的选择,即最大池化、深度卷积和默认的平均池化。深度卷积的核大小与最大/平均池化相同,以保持相同的下采样率。很明显,不同的池化类型并不影响计算的复杂性,它们只影响下采样核的参数数量。关于
ImageNet 分类准确率的结果 和 ADE20K 分割 mIoU 的结果 ,平均池化要比其他两种选择好得多。因此,应用平均池化作为默认的池化选择。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第11张图片
探究固定的池化大小: 当使用固定的池化比率时,池化特征图的尺寸会随着输入特征图的变化而变化。在这里,试图将所有阶段的池化大小固定为:1, 2, 3, 6。同时在所有阶段,都使用自适应平均池化。结果显示在如下。与默认设置相比,固定的池化大小大约节省了 10% 的内存用量和
12% 的计算开支。然而,top-1 的分类精度下降了 0.3%。而语义分割的性能则降低了 2.4%。因此,选择使用固定的池化比率,而不是固定的池化大小。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第12张图片
探究激活函数的选择: 使用 Hardswish 函数进行非线性激活函数,以减少训练阶段的 GPU 内存使用。通常情况下,当在 ImageNet上训练 P2T-Small、批次大小为 64 的情况下时,GELU的 GPU 内存使用量为 10.5GB,比 Hardswish 多 3.6 GB(+52%)。如果采用 Hardswish ,准确率没有明显下降。
探究其他设计: 为了验证其他设计选择的有效性,如相对位置编码、IRB 和重叠图像块编码,在基线上逐一添加这些组件。实验结果显示如下。可以看出,相对位置编码对图像分类和语义分割都有明显的改善。在大的池化比率下,池化后的特征会有较小的尺度,所以相对位置编码只需要可忽略的计算开支(对于 224 × 224 的输入大小,仅需 5M Flops)。
前馈网络中额外的深度卷积,即 IRB,也显示出明显的性能提升,证明了捕捉二维近邻关系的重要性。进一步增加重叠图像块编码,对于图像分类和语义分割,分别观察到 0.2%/1.4% 的精度提升。
P2T: Pyramid Pooling T ransformer for Scene Understanding_第13张图片

你可能感兴趣的:(Transformer,深度学习,人工智能)