点击上方“计算机视觉工坊”,选择“星标”
第一时间送达干货
作者吃饭机@知乎
来源丨https://zhuanlan.zhihu.com/p/200924181
最近引入了视觉特定的归纳偏差Vision Transformer
架构不同,ViT
由于缺乏图像先验信息,密集预测任务性能较差。本文提出了一种解决这个问题的方法Vision Transformer
适配器(ViT-Adapter
),ViT-Adapter
归纳偏差可以通过引入额外的架构来弥补ViT
与特定的视觉模型相当的性能。
具体来说,ViT-Adapter
中的Backbone
一般Transformer
,可以使用多模态数据进行预训练。在微调下游任务时,使用特定的模态适配器将数据和任务的先验信息引入模型,以适用于这些任务。
作者验证了ViT-Adapter
目标检测、实例分割和语义分割是多个下游任务的有效性。特别是使用HTC
时,ViT-Adapter-L
得到了60.1 和52.1 ,在COCO test-dev上,超过 Swin-L 1.4 和1.0 。语义分割,ViT-Adapter-L
在ADE20K val建立了新的mIoU 60.5%,比SwinV2-G
高0.6%。
开源地址:
1本文方法
不多说话,先对比
如图 1 与之前的大规模图像数据集(如ImageNet)与微调不同任务的范式相比,本文的范式更加灵活。ViT-Adapter
框架中,Backbone
网络是通用模型(例如,ViT
),多模态数据和任务可用于预训练。当应用于下游任务时,视觉专用适配器将输入数据和任务的先验信息引入一般Backbone
在网络中,模型适用于下游任务。这样,使用ViT
作为Backbone
,ViT-Adapter
为密集预测任务设计的框架Transformer Backbone
(如Swin Transformer
)性能相当甚至更好。
方法总览
如图3所示,ViT-Adapter
模型可分为两部分。
第1部分是
Backbone
(即ViT
):它由1个Patch Embedding
和L个Transformer Encoder
层组成(见图3(a))。提出了第二部分
ViT-Adapter
:如图3(b)所示,它包含一个Spatial prior module
,用于从输入图像中捕获空间特征,一个Spatial Feature injector
,用于注入空间先验ViT
从ViT
提取分层特征。
对于ViT
,首先输入输入图像Patch Embedding
,将图像分成16×16个不重叠的Patch
。在此之后,这些Patch
被Flatten
并向d维投影Embedding
中间。这里的特征分辨率降低到原始图像的1/16。最后,嵌入Patch
嵌入和位置ViT
L编码层。
对于ViT-Adapter
,首先,输入输入图像Spatial prior module
中间。d维空间特征将收集3个目标分辨率(即1/8、1/16和1/32)。然后,这些特征被映射Flatten
并作为特征交互的输入连接。
具体来说,给定交互时间N,将
ViT
的Transforer编码器均匀分成N个Blocks,每个Block包含L/N编码器层。对于第i个Block,首先通过Spatial Feature injector
注入空间先验Block然后通过多尺度特征提取器从中提取Block层次特征从输出中提取。N个特征交互后,获得高质量的多尺度特征,然后分割特征reshape
1/8、1/16和1/32是三个目标的分辨率。最后,通过2×将1/8尺度的特征图采样,得到1/4尺度的特征图。
通过这种方法,我得到了一个和ResNet
金字塔具有相似的分辨率特征,可用于各种密集的预测任务。
Spatial Prior Module
最近的工作表明具有重叠滑动窗口的卷积可以帮助Transforer更好地捕捉输入图像的局部连续性。作者受此启发ViT
介绍了一个基于卷积的基础Spatial prior module
,它通过一个stem
和3个卷积将H×W在输入图像下采样到不同尺度。该模块旨在模拟和Patch Embedding
以免改变平行图像的局部空间ViT
原始结构。
如图3(c)所示,使用一个参考ResNet
的标准卷积stem
,它由三个卷积层和一个最大池化层组成。接下来,使用步长为2的3×该模块的其余部分由三卷堆栈组成,使通道数量增加了一倍,并减小了特征图的大小。
最后,在最后使用几个1×1卷积将特征映射投影到D维。通过这种方法,可以得到一个分辨率为1/8、1/16和1/32的特征金字塔。最后,映射这些特征Flatten Concat
到特征token
402 Payment Required
作为未来Feature Interaction
的输入。
Feature Interaction
由于柱状结构,ViT
与金字塔结构相比,中间的特征图为单尺度和低分辨率Transformer
相比,ViT
密集预测任务的性能是次优的。为缓解这一问题,作者在适配器和ViT特征映射之间传递。
具体来说,这两个模块是基于Cross-Attention
的Spatial Feature Injector
和Multi-Scale Feature Extractor
。
如上所述,将基于ViT
的Transformer编码器分为N相等Blocks,每一个Block前后应用提出的两个算子。
1、Spatial Feature Injector
如图3(d)该模块用于注入空间先验ViT
。具体来说,对Transformer
的第i个Block,以输入特性为例query
,空间特征
402 Payment Required
作为key和value。使用Cross-Attention
通过数学表达式将空间特征注入输入特征可以表示为:
归一化层为LayerNorm
,注意层的注意力机制是可选的。这里为了降低计算代价,采用了一种具有线性复杂度的可变形注意力来实现注意力层。
此外,应用可学习的向量来平衡注意力层的输出和输入特征,它被初始化为0。这种初始化策略保证了由于空间先验的注入,特征分布不会被大幅修改,从而更好地利用预训练后的特征分布ViT
权值。
2、Multi-Scale Feature Extractor
注入空间先验ViT
之后,输出特征通过编码器层获得。这可以交换ViT
特征和空间特征的作用。也就是说,利用空间特征
402 Paymnt Required
作为query,输出特征 作为key和value。然后再次通过Cross-Attention
来交互这2个特征,过程可以被定义为:
与Spatial Feature Injector
一样,在这里使用可变形注意力来降低计算成本。此外,为了弥补固定大小位置嵌入的缺陷,在Cross-Attention
之后引入卷积前馈网络(CFFN
)。考虑到效率并将CFFN
的比率设置为1/4。CFFN
层通过带有0填充的深度卷积来增强特征的局部连续性,具体可以表示为:
其中,新的空间特征将被用作下一个Block中特征交互的输入。
Architecture Configurations
本文为4种不同的ViT
变体构建了ViT-Adapter
,包括ViT-T
、ViT-S
、ViT-B
和ViT-L
。对于这些模型,ViT-Adapter
的参数数分别为2.5M、5.8M、14.0M和23.7M。每种配置的细节如表1所示。
目标检测
实例分割
语义分割
可视化结果
3参考
[1].Vision Transformer Adapter for Dense Predictions
本文仅做学术分享,如有侵权,请联系删文。
后台回复:
后台回复:
后台回复:
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题