分割冠军-超越swin2 | ViT-Adapter:用于密集预测的Transformer架构
-
分割冠军-超越swin2 | ViT-Adapter:用于密集预测的Transformer架构
论文标题:Vision Transformer Adapter for Dense Predictions
论文地址:https://arxiv.org/pdf/2205.08534.pdf
论文代码:https://github.com/czczup/ViT-Adapter
摘要
- 现存问题: ViT由于缺乏图像的先验信息,因此在密集预测任务中的性能较差。
- 解决方法: 为了解决这个问题,论文提出了ViT-Adapter,它可以通过一种额外的架构引入感应偏差,从而弥补ViT的缺陷。
- 实验结果: 在多个下游任务上验证了ViT-Adapter的有效性,包括目标检测、实例分割和语义分割。值得注意的是,当使用HTC++时,我们的ViT-Adapter-L在COCO test-dev上得到60.1 APbAP^bAPb和52.1 APmAP^mAPm,超过Swim-L 1.4 APbAP^bAPb和1.0 APmAP^mAPm。对于语义分割,ViT-Adapter-L在ADE20K val上建立了60.5mIoU的新纪录,比SwinV2-G高0.6个百分点。
算法
如上图所示,整个模型架构可以分为两个部分:
- ViT主干网络,如上图(a),包括patch embedding和L层transformer 编码层
- 论文提出的ViT-Adapter模块,如上图(b),包括
- Spatial Prior模块(如上图(c))来捕捉输入图像的空间特征;
- Spatial Feature Injector来为ViT提供空间先验
- Multi-Scale Feature Extracor从ViT提取层次结构特征
对于ViT-Adapter,
- 首先使用一个主干层次模块来获取不同分辨率大小的特征图F1{F}_1F1、F2{F}_2F2和F<em>3{F}<em>3F<em>3,并对它们进行Flatten和Concat操作来生成一个序列特征F1</em>sp{F}^1</em>{sp}F1</em>sp
- 对于第i个block,通过Spatial Feature Injector将Fspi\mathcal{F}^i_{sp}Fspi和来自ViT的序列特征进行自注意力得到一个新的特征,并返回给ViT
- 然后通过Multi-Scale Feature Extracor将Fspi\mathcal{F}^i_{sp}Fspi和来自ViT的序列特征进行自注意力得到一个新的特征
- 经过N个这样的操作,就能获取高质量多层次特征
接下来进行详细介绍每个模块
Spatial Prior Module
有研究表明使用重叠的滑动窗口卷积操作能够获取更好的输入图像局部连续特征。基于此,提出了Spatial Prior Module,这个模块是为了构建输入图像局部空间上下文信息。
输入图像经过Stem网络和三个卷积操作来获取不同分辨率大小的特征图。其中:
- Stem网络是一个来自ResNet的标准卷积Stem,由三个卷积和一个maxpool组成;
- 卷积操作为3×33\times33×3核大小和步长为2的卷积,减小分辨率的同时double通道数;
- 最后使用1×11\times11×1核大小的卷积操作来将三个特征图通道数投影到D维,以此得到特征金字塔F1\mathcal{F}_1F1、F2\mathcal{F}_2F2和F3\mathcal{F}_3F3
- 最后使用flatten和concatenate操作得到Fsp1∈R(HW82+HW162+HW322)×D\mathcal{F}_{\mathrm{sp}}^{1} \in \mathbb{R}^{\left(\frac{H W}{8^{2}}+\frac{H W}{16^{2}}+\frac{H W}{32^{2}}\right) \times D}Fsp1∈R(82HW+162HW+322HW)×D
Spatial Feature Injector
如上图(d),这个模块被使用来给ViT传递空间先验特征。
对于ViT的第i个block,其输入特征设为F<em>viti∈RHW162×D\mathcal{F}<em>{\mathrm{vit}}^{i} \in \mathbb{R}^{\frac{H W}{16^{2}} \times D}F<em>viti∈R162HW×D,并作为query,而空间特征F</em>spi∈R(HW82+HW162+HW322)×D\mathcal{F}</em>{\mathrm{sp}}^{i} \in \mathbb{R}^{\left(\frac{H W}{8^{2}}+\frac{H W}{16^{2}}+\frac{H W}{32^{2}}\right) \times D}F</em>spi∈R(82HW+162HW+322HW)×D作为key和value,使用multi-head cross-attention将空间特征Fspi\mathcal{F}^i_{sp}Fspi输入到Fviti\mathcal{F}^i_{vit}Fviti中:
为了减小计算量,论文使用deformable attention,一种离散注意力算法,具有线性复杂度。
此外,γi∈RD\gamma^{i} \in \mathbb{R}^{D}γi∈RD是一个可学习向量来调整两项比例。
Multi-Scale Feature Extractor
在将空间特征Fspi\mathcal{F}^i_{sp}Fspi输入到Fviti\mathcal{F}^i_{vit}Fviti之后,通过第i个block的encoder layers后得到Fviti+1\mathcal{F}^{i+1}_{vit}Fviti+1。
在此之后,将空间特征F<em>spi∈R(HW82+HW162+HW322)×D\mathcal{F}<em>{\mathrm{sp}}^{i} \in \mathbb{R}^{\left(\frac{H W}{8^{2}}+\frac{H W}{16^{2}}+\frac{H W}{32^{2}}\right) \times D}F<em>spi∈R(82HW+162HW+322HW)×D作为query,将输入特征设为F</em>viti∈RHW162×D\mathcal{F}</em>{\mathrm{vit}}^{i} \in \mathbb{R}^{\frac{H W}{16^{2}} \times D}F</em>viti∈R162HW×D并作为key和value
同样使用multi-head cross-attention:
此外,为了弥补固定尺寸位置嵌入的缺陷,引入了convolutional feed-forward network (CFFN) ,CFFN层通过具有零填充的depthwise卷积来增强特征的局部连续性:
实验
在COCO目标检测和实例分割、ADE20K语义分割等密集任务上进行实验验证
目标检测和实例分割
语义分割
消融实验