Advertisement

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文阅读

阅读量:

Swin Transformer是一种基于Transformer的新架构, 开发了一种创新结构以处理图像分类的任务. 它基于传统的Transformer架构进行了改进, 在此基础上提出了改进型的设计方案. 通过引入平移窗口机制实现了更高效的特征提取, 实验结果表明该架构在性能上优于传统方法. 这种方法在计算效率方面表现突出, 适用于大规模图像处理任务.

摘要部分

具体术语

复制代码
  * 实验
  * * 图像分类
* 目标检测
* 语义分割
* 消融实验

scholarly work https://arxiv.org/pdf/2103.14030v1.pdf
software repository https://github.com/microsoft/Swin-Transformer

摘要

采用transformer来做计算机视觉任务有两个挑战:
(1)视觉目标的尺度具有很大的变化;
(2)相比于文本,高分辨率的像素具有很大的计算量;

为了解决这些不同,论文提出一个层级的transformer,并采用shifted windows 计算表示;
shifted windows带来了巨大的高效性,通过限制self attention在non-overlapping局部窗口的计算量,并保持cross-window连接;
这个层级架构可以很灵活的对不同尺度建模,并且随着image-size线性 的增加计算量;
Swin transformer在图像分类imagenet达到86.4的top 1准确率,在密集任务目标检测coco test-dev上达到58.7box AP和51.1 mask AP,
语义分割ADE20K val上达到53.5mIOU,在coco上超过之前的SOTA+2.7 box AP、+2.6 mask AP,在ADE20K上超过之前的SOTA+3.2mIOU;

在这里插入图片描述

介绍

transformer在NLP取得巨大的成功,使研究者将transformer迁移到视觉任务上,然而最近的研究也证明transformer能够在视觉任务取得较好的效果;
在该论文中,作者寻求将transformer扩展为计算机视觉通用的backbone,现在很多的视觉任务(比如说语义分割)需要密集像素级别的预测,这往往需要很高的分辨率,但image-size的增加会给self-attention带来二次方的计算复杂度 ,为了克服这个问题,作者提出了一个通用的transformer backbone,叫做swin transformer;
如图1所示,swin transformer设计了一个层级的表示,从小的patches开始,然后在更深的transformer层逐步融合邻近的patches;通过这个层级特征图,swin transformer模型可以很好的利用密集预测器先进的技术,比如说FPN和Unet;线性增长的复杂度通过局部计算non-overlapping滑窗的self-attention实现;
每个窗口的patches数量是固定的,因此复杂度是随着image-size的增长线性增长;这些优点使得swin transformer可以为多个视觉任务作为一个通用的backbone;之前基于transformer的架构,只是用单层特征图,且有着二次方增长的复杂度;

swin transformer的核心设计在于自注意力层之间通过滑动窗口划分实现连接,在图2中展示了层之间的滑动窗口连接,并显著增强了模型的整体能力(参考表4)。这一策略在实际应用中的延迟表现同样出色:每个窗口内的所有query patch共享同一个键集并与其相邻区域进行通信这使得硬件资源消耗减少;相比之下,在现有架构中使用自注意力机制可能会导致较高的延迟问题。此外该方法不仅提升了图像分类目标检测以及语义分割等多个领域的性能其在这些任务上的准确率均较之传统架构提升了15%以上

相关工作

基于自注意力机制的设计:一些研究尝试用自注意力机制部分替代或完全替代卷积网络(如ResNet),这种设计思路在这些研究中通常会聚焦于通过局部窗口内每个像素的位置信息来进行自注意力计算以提升性能;相比于滑动窗口方法,在连续层之间采用位移窗口设计能够在硬件资源上实现更高效的部署;在模型性能方面这类方法通常能实现比传统卷积架构更好的精度与浮点运算量(FLOPs)效率;然而由于其对内存资源和计算延迟较高的需求,在实际应用中往往面临硬件资源限制的问题;相比之下我们提出了一种连续层之间的位移设计策略能够在保证性能的同时显著降低硬件开销;

增强型CNN设计:另一种思路是将自注意力机制或Transformer模块直接集成到标准CNN架构中以增强其表示能力;自注意力层通过提供更强的空间交互能力从而提升了模型对复杂特征的捕捉能力;作者还探讨了Transformer模块在基础视觉特征提取中的适应性应用并将其作为现有研究的重要补充;

视觉Transformer相关工作:与上述研究最相关的则是视觉Transformer(ViT)及其后续改进工作[19,60,69,14,27,63];ViT系列方法主要集中在直接作用于图像片元进行Transformer架构的设计从而实现了良好的分类性能平衡;然而这类方法往往需要在大规模数据集上进行大量的参数训练才能达到较好的效果表现;为此DeiT等方法引入了多种训练策略显著提升了模型在小规模数据集上的性能表现[63];尽管ViT系列方法在图像分类任务上表现出色但其低分辨率特征图以及随着图像尺寸平方增长的复杂度限制了其作为通用骨干网络的应用潜力特别是在密集型任务中使用时往往难以获得理想的效果表现;为此我们提出了一种改进型的设计方案不仅保留了ViT的核心优势还显著提升了其适用性和泛化能力;

方法

整个架构
在这里插入图片描述

如图3所示,swin transformer架构采用了4x4的小块划分策略(tiny版本)。与ViT相似地,在该架构中作者首先将输入图像划分为多个patch块,并通过嵌入层结构对这些patch进行特征提取;其后是一个嵌入层结构;接着作者提出了swin transformer block这一关键组件;该模块采用基于位移窗口机制替代传统的多头自注意力机制;具体而言,在该模块中包含一个基于移位窗口机制的应用实例(如图3(b)所示),其中包含一个移位窗口机制的应用实例:即在一个swin transformer模块中包含一个移位窗口机制的应用实例:即在一个swin transformer模块中

基于self-attention的shifted window
在这里插入图片描述

标准的transformer架构采用全局自注意力机制,在每个token构建与其他所有token之间关系的数据结构;这种设计导致计算复杂度呈二次方级增长(O(N^2)),不利于处理密集型任务;为此

在这里插入图片描述

其中(1)复杂度是随patch数量hw呈二次方级数增长;(2)而另一种方法则是线性增长模式;这里M值固定不变;全局自注意力机制由于无法承受hw平方级别的计算开销而难以实现;然而基于滑动窗口的自注意力虽然降低了计算复杂度到线性级别;但存在跨窗口信息连接不足的问题;为了在保证模型高效运行的前提下引入跨窗口信息连接;作者提出了滑动窗口划分技术;如图2所示;第一个模块采用正向划分策略;将一个8x8特征图按照M=4大小划分为2x2的小块;随后第二个模块采用了滑动窗口划分策略;将每个小块向后偏移M/2个像素单位;
通过引入滑动窗口划分技术;Swin Transformer模块的具体计算流程如下:

在这里插入图片描述

其中W-MSA和SW-MSA分别表示采用整齐分割策略和shifted自注意力机制;
通过使用shifted窗口结构,模型能够帮助构建跨窗口连接的同时保持其高效性,请参考表4获取详细信息。

shifted window的高效batch计算

在这里插入图片描述

滑动窗口机制(shifted window)存在一个显著的问题:它会导致window的数量增加(从h/M x w/M到(h/M+1) x (w/M+1)),其中一些window的实际尺寸会小于M×M。一种方法是将这些较小的window填充至M×M大小,并对计算注意力后再对填充区域进行遮蔽处理;当采用较少数量的整体分割时(例如采用2×2分割),这种策略会导致计算量大幅增加(从2×2到3×3的分割会导致计算量增加约2.25倍)。因此作者提出了一种更为高效的批量处理方法:通过沿着左上角方向执行循环移位操作(如图4所示)。经过这样的平移操作后,在同一个batch中的每个window都包含了来自不同原始位置的sub-window特征;为了限制自注意力机制仅在sub-window内部进行运算,在此过程中引入了masking机制以限制其运算范围;值得注意的是这种方法不仅能够有效提升处理效率还能显著降低延时(如表5所示)。

在自注意力机制中为每个头设置了相对位置bias B

在这里插入图片描述

其中

在这里插入图片描述
在这里插入图片描述

如表4所示,这带来了明显的性能提升;

架构变种

开发团队构建了一个基础研究模块,并在此基础上进一步开发出三种变种:Swin-T、Swin-S与Swin-L。针对不同尺寸与计算复杂度的需求,在这些变种中分别设置了以下比例关系:即分别对应于基础模块的大致0.25倍、0.5倍与2倍规模及相应的计算复杂度水平;在具体实现过程中,则采用了以下参数配置:窗口大小被设定为7个单位;每个注意力头的独特维度被设定为32;每个MLP模块中的扩展因子α被设定为4

在这里插入图片描述

其中C是第一个stage中隐藏层的通道数;

实验

图像分类

表1a,在imagenet-1k上从头开始训练:

在这里插入图片描述

表1b,首先在imagenet-22k上预训练,再1迁移到imagenet-1k上:

在这里插入图片描述
目标检测

表2a中,在不同模型框架上采用swin transformer替换backbone。表2b中,在cascade RCNN上被用于评估多个backbone。

在这里插入图片描述

表2c,与SOTA比较:

在这里插入图片描述
语义分割

表3,以更小的模型实现了比之前的SOTA SETR更高的mIOU:

在这里插入图片描述
消融实验

表4,shifted window和相对位置bias带来的性能提升:

在这里插入图片描述

表5,shifted window和cycilc 带来的高效性:

在这里插入图片描述

表6,使用不同的self-attention比较:

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~