【深度学习】语义分割:论文阅读:(CVPR 2022) MPViT(CNN+Transformer):用于密集预测的多路径视觉Transformer

0详情

论文:MPViT : Multi-Path Vision Transformer for Dense Prediction
代码:代码
笔记参考:
ppt总结版
详细版
详细版2

1摘要

针对任务:
密集的计算机视觉任务(例如对象检测和分割)需要有效的多尺度特征表示,以检测或分类具有不同尺寸的对象或区域。
在语义分割领域中,存在不同尺度的物体,同时对分割边缘的要求精确到了像素级。

VIT for dense predictions:
Vision Transformer(ViT)构建了一个简单的多阶段结构(即精细到粗糙),用于使用单尺度patch的多尺度表示。然而ViT的变体专注于降低自注意的二次复杂度,较少关注构建有效的多尺度表示。

MPVIT概述:

  • 以不同于现有Transformer的视角,探索多尺度path embedding与multi-path结构,提出了Multi-path Vision Transformer(MPViT)。

因此本文作者将重点放在了图像的多尺度多路径上,通过对图片不同尺度分块及其构成的多路径结构,提升了图像分割中Transformer的精确程度。

作用:
MPVit可以同时将图像分成多个尺度,结合精心设计的序列化模块(目的是将不同尺度的序列转化为相同长度的向量),构建了并行的多路径结构,实现了对图像不同尺度的同时利用。

过程:

  • 通过使用 overlapping convolutional patch embedding将其拉平成为不同尺寸的token,在适当调整卷积的填充/步幅后产生具有相同序列长度的特征。同时嵌入多个大小的patch特征。

  • 然后,将不同尺度的Token通过多条路径独立地输入Transformer encoders,并对生成的特征进行聚合,从而在同一特征级别上实现精细和粗糙的特征表示。

  • 特征聚合步骤中,引入了一个global-to-local feature interaction(GLI)过程,该过程将卷积局部特征与Transformer的全局特征连接起来,同时利用了卷积的局部连通性和Transformer的全局上下文。

2 主要工作

  • 提出了一个具有多路径结构的多尺度嵌入方法,用于同时表示密集预测任务的精细和粗糙特征。
  • 介绍了全局到本地特征交互(GLI),同时利用卷积的局部连通性和Transformer的全局上下文来表示特征。
  • 性能优于最先进的vit,同时有更少的参数和运算次数。

3 网络结构

首先对输入的图像做卷积提取特征
而后主要分成了四个Transformer阶段,如图左侧一列所示,
中间一列是每个阶段中两个小块的展开分析图,
右侧一列则是对多路径模块中Transformer(包括局部卷积)以及全局信息模块的图解。

ViT使用单尺度的patch embedding和单路径transformer编码器

过程:
MPViT通过重叠卷积将相同大小的特征和不同大小的patch的同时嵌入。

  • 将多尺度patch嵌入,通过重叠卷积将其拉平成为不同尺寸的token,在适当调整卷积的填充/步幅后产生具有相同序列长度的特征。

  • 然后,来自不同尺度的token被通过多条路径独立并行送到Transformer编码器中,执行全局自我关注。

  • 然后聚合生成的特征,从而在相同的特征级别上实现精细和粗略的特征表示。

在这里插入图片描述
目标是探索用于密集预测的强大骨干网络,因此构建了一个多级体系结构。
具体来说,构建了一个四阶段特征层次结构,用于生成不同尺度的特征图。

它们输出密集预测任务四个阶段中,作者在每个阶段对所提出的Multi-scale Patch Embedding(MS-PatchEmbed)和Multi-path Transformer(MP-Transformer)块进行堆叠。

由于多级体系结构具有更高分辨率的特点,因此它本质上需要更多的计算。
因此,由于其线性复杂性,我们对整个模型使用了包括Factorzed Self attention的Transformer(因子化多头自我注意)编码器。

3.1 Conv-stem

本模块由两个3×3卷积组成,可以在不丢失显著信息的情况下对图片进行特征提取以及尺度的减小

输入图像大小为:H×W×3,
两层卷积:采用两个3×3的卷积,通道分别为C2/2,C2,stride为2,
输出图像:生成特征的大小为H/4×W/4×C2,其中C2为stage 2的通道大小。

说明:
1.每个卷积之后都是Batch Normalization 和一个Hardswish激活函数。
2.从stage 2到stage 5,在每个阶段对所提出的Multi-scale Patch Embedding(MS-PatchEmbed)和Multi-path Transformer(MP-Transformer)块进行堆叠。

3.2 Multi-Scale Patch Embedding

多尺度Patch Embedding结构如下,对于输入特征图,使用不同大小的卷积核来得到不同尺度的特征信息(论文这么写的,但是源码看到卷积核都是3),为了减少参数,使用3x3的卷积核叠加来增加感受野达到5x5、7x7卷积核的感受野,同时使用深度可分离卷积来减少参数。
在这里插入图片描述
输入图像:
stage i 的输入X,通过一个k×k的2D卷积,s为stride,p为 padding。
输出的token map F的高度和宽度如下:
在这里插入图片描述
通过改变stride和padding来调整token的序列长度,即不同块尺寸可以具有相同尺寸的输出。
因此,我们构建了不同核尺寸的并行卷积块嵌入层,如序列长度相同但块尺寸可以为3×3,5×5,7×7
例如,如图1所示,可以生成相同序列长度,不同大小的vision token,patch大小分别为3×3,5×5,7×7。

实践:

  • 由于堆叠同尺寸卷积可以提升感受野且具有更少的参数量,
    选择两个连续的3×3卷积层构建5×5感受野,采用三个3×3卷积构建7×7感受野
  • 对于triple-path结构,使用三个连续的3×3卷积,通道大小为C’,padding为1,步幅为s,其中s在降低空间分辨率时为2,否则为1。
    因此,给定conv-stem的输出X,通过MS-PatchEmbed可以得到相同大小为H/s x C/s x C的特征
    在这里插入图片描述
    说明:
  • 为了减少模型参数和计算开销,采用3×3深度可分离卷积,包括3×3深度卷积和1×1点卷积。
  • 每个卷积之后都是Batch Normalization 和一个Hardswish激活函数。

接着,不同大小的token embedding features 分别输入到transformer encoder中。
在这里插入图片描述

3.3 Multi-path Transformer

原因:
Transformer中的self-attention可以捕获长期依赖关系(即全局上下文),但它很可能会忽略每个patch中的结构性信息和局部关系。
相反,cnn可以利用平移不变性中的局部连通性,使得CNN在对视觉对象进行分类时,对纹理有更强的依赖性,而不是形状。

因此,MPViT以一种互补的方式将CNN与Transformer结合起来。

组成:
下面的多路径Transformer和局部特征卷积,上面的Global-to-Local Feature Interaction。

在多路径的特征进行自注意力(局部卷积)计算以及全局上下文信息交互后,所有特征会做一个Concat经过激活函数后进入下一阶段。
在这里插入图片描述

3.3.1 多路径Transformer和局部特征卷积

在这里插入图片描述
Transformer可以关注到较远距离的相关性,但是卷积网络却能更好地对图像的局部上下文特征进行提取,因此作者同时加入了这两个互补的操作,实现了本部分。

  • Transformer
    由于每个图像块内作者都使用了自注意力,并且存在多个路径,因此为了减小计算压力,作者使用了CoaT中提出的有效的因素分解自注意(将复杂度降低为线性):
    在这里插入图片描述
  • CNN
    为了表示局部特征 L,采用了一个 depthwise residual bottleneck block,包括1×1卷积、3×3深度卷积和1×1卷积和残差连接。
    在三个Transformer模块的左侧存在一个卷积操作,其实就是通过卷积的局部性,将图像的局部上下文引入模型中,多了这些上下文信息可以弥补Transformer对于局部语义理解的不足。

CoaT的因素分解自注意

原始transformer中attention的计算方式:

  • 一个 query 给 n 个 key - value pair ,这个 query 会跟每个 key - value pair 做内积,会产生 n 个相似度值。传入 softmax 得到 n 个非负、求和为 1 的权重值。

  • output 中 value 的权重 = 查询 query 和对应的 key 的相似度
    通常用内积实现,用来衡量每个key对每个query的影响大小

  • 把 softmax 得到的权重值 与 value 矩阵 V 相乘 得到 attention 输出。
    在这里插入图片描述
    N、C分别表示 tokens数量和 embedding维度。

Factorized Attention Mechanism:

  • 在原始的计算attention的过程中,空间复杂度是O(NN), 时间复杂度是O(NN*C),
  • 为了降低复杂度,类似于LambdaNet中的做法(以恒等函数和softmax的注意力分解机制:),将attention的方法改为如下形式
  • 通过使用2个函数对其进行分解,并一起计算第2个矩阵乘法(key和value)来近似softmax attention map:
  • 为了归一化效果将比例因子 根号下c分之一添加回去,带来了更好的性能。
    在这里插入图片描述
    在这里插入图片描述
    首先空间复杂度变为O(NC), 时间复杂度变为O(NCC),
    注意这里计算量减少的原因
    MS Patch Embedding输出的特征图分辨率较高,所以N远大于C。因为N>>C,所以复杂度都降为原来的C/N倍。

另一方面在计算原始的attention时可以明确解释attention是当前位置与其他位置的相似度
但在factor attn的计算过程中并不是很好解释,而且丢失了内积过程。虽然FactorAttn不是对attn的直接近似,但是也是一种泛化的注意力机制有query,key和value

深度可分离卷积

常规卷积操作

  • 每个channel的图像与filter做卷积,然后将每个通道进行合并。
  • 对于一张5×5像素、三通道(shape为5×5×3),经过3×3卷积核的卷积层(假设输出通道数为4,则卷积核shape为3×3×3×4,最终输出4个Feature Map,如果有same padding则尺寸与输入层相同(5×5),如果没有则为尺寸变为3×3
    在这里插入图片描述
    卷积层共4个Filter,每个Filter包含了3个Kernel,每个Kernel的大小为3×3。
    因此卷积层的参数数量可以用如下公式来计算:

N_std = 4 × 3 × 3 × 3 = 108

DWconv-深度可分离卷积-Depthwise Separable Convolution

  • 是由一个两部分卷积组成的一个网络。

  • 主要是为了降低卷积运算参数量。
    第一部分是depthwise conv ,分通道的一个卷积 就是每个卷积核对应input的每一个通道
    第二部分是pointwise conv,它将第一部分各自独立的featuremap进行组合生成了新的

  • 逐通道卷积
    将不同的卷积核独立地应用在in_channels的每个通道
    Depthwise Convolution的一个卷积核负责一个通道,一个通道只被一个卷积核卷积

一张5×5像素、三通道彩色输入图片(shape为5×5×3),
Depthwise Convolution首先经过第一次卷积运算,DW完全是在二维平面内进行。卷积核的数量与上一层的通道数相同(通道和卷积核一一对应)。
所以一个三通道的图像经过运算后生成了3个Feature map(如果有same padding则尺寸与输入层相同为5×5),如下图所示。
在这里插入图片描述
其中一个Filter只包含一个大小为3×3的Kernel,卷积部分的参数个数计算如下:

N_depthwise = 3 × 3 × 3 = 27

Depthwise Convolution完成后的Feature map数量与输入层的通道数相同,无法扩展Feature map。
而且这种运算对输入层的每个通道独立进行卷积运算**,没有有效的利用不同通道在相同空间位置上的feature信息。**
(因为上面每个层的特征都分开 没有有效的利用相同空间位置上不同层的有效信息,所以有了第二部分)

因此需要Pointwise Convolution来将这些各自独立的Feature map进行组合生成新的Feature map

  • 逐点卷积
    Pointwise Convolution的运算与常规卷积运算非常相似,它的卷积核的尺寸为 1×1×M,M为上一层的通道数。
    所以这里的卷积运算会将上一步的map在深度方向上进行加权组合,生成新的Feature map。有几个卷积核就有几个输出Feature map
    在这里插入图片描述
    由于采用的是1×1卷积的方式,此步中卷积涉及到的参数个数可以计算为:

N_pointwise = 1 × 1 × 3 × 4 = 12

经过Pointwise Convolution之后,同样输出了4张Feature map,与常规卷积的输出维度相同

参数对比
回顾一下,常规卷积的参数个数为:
N_std = 4 × 3 × 3 × 3 = 108

Separable Convolution的参数由两部分相加得到:
N_depthwise = 3 × 3 × 3 = 27
N_pointwise = 1 × 1 × 3 × 4 = 12
N_separable = N_depthwise + N_pointwise = 39

相同的输入,同样是得到4张Feature map,Separable Convolution的参数个数是常规卷积的约1/3。
因此,在参数量相同的前提下,采用Separable Convolution的神经网络层数可以做的更深。

3.3.2Global-to-Local Feature Interaction

在这里插入图片描述
作用
将局部特征和全局特征聚合起来:
通过串联来执行
在这里插入图片描述
对输入特征做了一个Concat并进行了1×1卷积(H(·)是一个学习与特征交互的函数),该模块同时输入了存在远距离关注的Transformer以及提取局部上下文关系的卷积操作,因此可以认为就是对本阶段提取到的图像全局以及局部语义的特征融合,充分利用了图像的信息。

4 实验- Semantic segmentation

  • 增加路径的数量需要减少通道C或层数L(即,transformer encoder的数量)。

  • 作者通过减少C而不是L,从单路径(即CoaT-Lite baseline)扩展到triple-path。在消融研究中,验证了减少C比减少L获得更好的性能(见表5)

  • 由于stage2的特征分辨率较高,导致计算成本较高,作者在stage2中将triple-path模型的路径数设置为2。从stage3开始,三路径模型有3条路径。

  • triple-path模型在密集预测任务中表现出更好的性能。因此,建立了基于 triple-path结构的MPViT模型

参数设置:
使用upernet作为分割方法,并将ImageNet-1k预训练的MPViTs集成到supernet中。
接下来,为了公平比较,训练模型160k次迭代,批大小为16,使用AdamW[38]优化器,学习率为6e-5,权重衰减为0.01。
使用标准的单尺度协议报告性能。使用mmseg[11]库实现mpvit

结果:
与其他Swin-T、Focal-T和XCiT-S12/16相比,mpvits的性能(48.3%)更高,分别为+3.8%、+2.5%和+2.4%。有趣的是,mpvit也超过了更大的型号,如Swin-S/B, XCiT-S24/16, -M24/16, -S24/8和Focal-S。此外,mpvitb性能优于最近(和更大的)SOTA变压器Focal-B[67]。这些结果表明,MPViT的多尺度嵌入和多路径结构使其具有多样化的特征表示能力
在这里插入图片描述
上图给出了ADE20K分割任务上的性能对比,从中可以看到:

  • MPViT优于其他同尺寸的ViT方案;
  • MPViT-S以48.3%的指标大幅超越了Swin-T、Focal-T以及XCiT-S12/16;
  • MPViT-B以50.3%的指标超越了近期SOTA方案Focal-B。
    在这里插入图片描述

5总结

作者主要做出了一下几点贡献:

  • 通过多路径并行设计实现了对多尺度信息的利用
  • 通过深度卷积操作实现了全局上下文的利用(Mask2Former也有一摸一样的结构)
  • 通过对照试验探究了多尺度多路径模型在不同尺度及路径数量下的效果

猜你喜欢

转载自blog.csdn.net/zhe470719/article/details/125028083