赞
踩
论文链接: Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
代码链接: https://github.com/microsoft/Swin-Transformer
作者: Ze Liu,Yutong Lin,Yue Cao,Han Hu,Yixuan Wei,Zheng Zhang,Stephen Lin,Baining Guo
第一单位: Microsoft Research Asia
Motivation:
ViT的提出证明了在NLP领域中“大杀四方”的Transformer结构同样可以应用于视觉领域,但是ViT的工作仅在分类任务上表现较好,真正应用在下游任务上还存在2大挑战:
(1)多尺度问题——图像中物体大大小小、不同语义目标有不同尺寸;
(2)图像分辨率问题——分辨率过大的图像转换序列计算复杂度非常大。
文章的贡献:
针对问题一,提出移动窗口学习特征,降低了计算复杂度,同时shift操作让窗口之间有了交互,变相达到全局建模能力。
针对问题二,借鉴CNN的池化操作设计了Patch Merging操作,把相邻的小patch合并成一个大的patch,扩大了模型的感受野。
基于滑动窗口、具有层级设计的Transfomer
设计思路:考虑设计一个像CNN的Transformer
整体模型采用层次化设计,共有4个Stage。除了第一个stage外,每个stage都会先通过 Patch Merging 层缩小特征图的分辨率,达到多尺度下采样的目标,像CNN一样逐层扩大感受野。
每个Swin计算Block实际由2个Transformer模块组成,先进行一个基于窗口的多头自注意力,再进行一个基于移动窗口的多头自注意力,达到窗口和窗口之间的相互通信。
可调整的超参数:c向量维度+stage的block number
ViT处理的特征都是固定16倍下采样得到的单一尺寸,是低分辨率的,并不适合下游的密集预测任务。同时,它的自注意力始终在最大的窗口上进行,复杂度和图像尺寸平方倍增长。
在小窗口计算自注意力,可以解决计算复杂度高的问题,由于小窗口是固定大小的,所以计算复杂度和图片大小仅呈线性增长关系 —— 这里借鉴了CNN的先验知识,Locality Inductive bias,即局部归纳偏置。
移动窗口操作
与图示不同,默认上,Swin-T中1个窗口=7*7=49个patch。每个patch是基本的元素单元,而每个红色框是一个计算单元,也就是计算窗口。
所谓的shift操作就是往右下方方向整体移动2个patch,新的特征图再划分成四宫格,就有左图的9个窗口了。这样的好处是各个窗口有重叠部分,通过自注意力计算可以信息交互,让每个窗口的patch注意到其他窗口的信息。
CNN中的池化操作,本质是对数据的降维,也扩大了卷积的感受野
Patch Merging操作
计算方法:
假设4*4的图像,取出间隔1个的像素点(因为要下采样2倍),然后concat、view、LayerNorm操作,再通过Linear降维,最后reshape后可以得到一个长宽减半,而通道数增加2倍的特征图。
实现结果:
特征图的size减少2倍,而channel增加2倍,达到了多尺度下采样的作用。
使用masking掩码方法
如图所示,作者发现,在窗口移动后,会由4个窗口变成9个窗口,计算复杂度提升2倍多。
因此考虑移位填充,重新变成四宫格。但是又引入了一个新的问题,移动后改变了图像的语义信息,计算自注意力不合理。
因此设计掩码模板, 让自注意力后的权重矩阵与模板相加,导致原本不相关的注意力权重变小,这样经过softmax后就变成0了,直观上就像被“遮盖”掉了。完成后注意还需要循环移位来还原。
设计掩码模板
实验发现用相对位置编码会更好
Step1: 计算相对位置;
Step2: 对相对位置进行编码;
优势: 1. 可处理变长输入序列; 2. 对平移不变性的模式识别能力较强;
分类任务 ImageNet-1K
检测任务 COCO数据集
不同方法的最优情况比较
分割任务 ADE20K
分析:
在COCO数据集上,检测效果相比当时最优的模型AP提升了2.7,分割AP提升了2.6个点;
在ADE20K数据集上高出当时最优的模型mIoU指标3.2个点。
这一工作通过证明Transformer可以在重要的物体检测(区域级别识别任务)和语义分割(像素级别识别任务)评测集上相比此前所有的卷积网络方法取得显著提升,来让学界和业界意识到Transformer模型将会取代卷积网络,成为视觉骨干网络的新主流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。