作者 | 汪逢生 编辑 | 臧晨宇 校对 | 李仲深
今天给大家介绍的是微软亚洲研究院的一篇文章”Swin Transformer: Hierarchical Vision Transformer using Shifted Windows”。从语言到视觉应用Transformer的挑战来源于两个领域的差异,例如和文本字词相比视觉实体的复杂变化以及图像像素的高分辨率两方面的差异。为了解决这样的问题,作者在这篇文章中提出一种称为Swin Transformer新型Vision Transformer。Swin Transformer使用允许跨窗口连接的移动窗口将自注意力限制在不重叠的局部窗口上计算表示,其提出的层次结构具有不同尺度上图像上建模的灵活性,在各种视觉任务上取得优秀的结果,有望在计算机视觉领域取代CNN成为一种通用框架。
一、研究背景
计算机视觉领域使用卷积神经网络建模一直占主导地位,从AlexNet及其在ImageNet图像分类挑战中的革命性表现开始,通过更大的规模,更广泛的连接和更复杂的卷积形式构建各种CNN骨干网络,在整个领域带来了性能的提高。另一方面, 自然语言处理的网络结构反而走上了Transformer架构的道路,Transformer因建模数据远程依赖关系而广泛使用。最近在计算机视觉的研究已经表明其优越的表现在图像分类和视觉语言联合建模。在这篇文章中作者扩展了Transformer的应用性将其作为骨干应用在计算机视觉中。不像自然语言处理中Transformer将字标记作为固定大小的基本的元素,视觉的元素变化明显导致在目标检测很难受到注意,此外像素的分辨率是远大于文本中字符数。这些差异导致Transformer在计算机视觉上使用产生了很多问题。为了解决这些问题作者提出了通用的Transformer骨架被称作Swin Transformer,如下图所示,其构建了分层特征图并且计算复杂度和图像大小成线性比例。窗口中图像块的数目在每一层都是固定的,因此计算复杂度线性于图像大小。
图1. Swin Transformer和Vision Transformer提取特征的比较.
Swin Transformer的一个关键点是窗口划分在连续的自注意层的变化。每一层的窗口考虑到了之前层的窗口大小。
图2. 移动窗口方式的说明.
移动窗口连接了以前层的窗口,通过连接他们极大了提高了模型的能力。模型使用移动窗口相比于滑动窗口不仅降低了延迟,而且性能不处于下风。作者提出的Swin Transformer展现出不俗的表现在图像分类目标检测和语义分割,超过了ViT,DeiT和ResNet模型,且在多个数据集上的表现超过了最优模型,作者坚信横跨自然语言处理和计算机视觉的统一架构将受益于两个领域,作者希望Swin Transformer 能够促进其发展。
二、模型与方法
2.1 Swin Transformer架构
Swin Transformer 的架构如图3所示,首先模型将RGB图像划分为没有重叠的块,每个块对应一个token,token是由原始RGB像素的值拼接而成,比如说块是4 × 4大小, 对于token的特征维度为4 × 4 × 3 = 48。通过线性嵌入层投影到任意的一个维度C。接下来token经过修改后的多头自注意力的Transformer模块Swin Transformer。Transformer模块和线性变化部分是共同作为阶段1。为了得到层次化的表示,随着网络变深通过块合并层使token的数目减少。第一个块合并层拼接一组4个块的特征经过2×的下采样将4C维度变化到2C维度,作者将块合并层和Swin Transformer块称为阶段2,重复两次为阶段3和阶段4。这些阶段共同产生了一个层次化的表示,这类似于VGG和ResNet产生的特征图。作者指出提出的架构能够替换这些方法中的骨干网络。
图3. Swin Transformer (Swin-T)的架构.
Swin Transformer 模块通过替换Transformer模块中标准的多头自注意力MSA为基于移动窗口的方式W-MSA和SW-MSA,由移动窗口的MSA模块和中间带有GELU非线性激活的两层MLP组成。LayerNorm(LN)应用在每个MSA模块和每个MLP之前,残差是应用在每个部分之后。
2.2 基于自注意力的移动窗口
标准的Transformer架构计算了一个token和其它全部token的全局自注意力,
这导致计算是token数目的二次方复杂度,这不合适许多计算机视觉任务,图像分割的稠密预测和token并且表示高分辨率图像过于复杂。为了降低计算的复杂度,作者提出了没有重叠窗口的自注意力,作者将图像块均匀的分给每个窗口,这样计算每个token的自注意力就会只考虑窗口内块的个数而不再计算全局的自注意力,如果窗口大小固定计算复杂度就会从二次方变成线性,但是这样会导致窗口间缺少连接使自注意力只局限于窗口内而限制了模型的能力。如图2所示,作者提出了跨窗口连接的移动窗口划分方式和均匀划分窗口交替使用在Swin Transformer 模块中。移动窗口划分方式引入了前一层相邻非重叠窗口的连接经实验表明是非常有效的对于图像分类目标检测和语义分割。
移动窗口的划分使得窗口的个数在两个维度上都增加了1,这样会导致窗口数增加并且窗口有大有小。因此作者提出了一种更加有效的通过朝着左上方循环移动窗口的批处理计算方式。如图4所示,在移动之后,一个批处理窗口可能由几个不相邻的子窗口组成,作者使用了掩模机制限制自注意力的计算,这使得批处理窗口的数目和通常的窗口划分相同,因此也是非常高效的。
图4. 高效批处理计算方式说明.
2.3 架构变种
作者建造了基本模型Swin-B,其计算复杂度相似于ViT-B/DeiT-B。此外作者也提出了Swin-T,Swin-S和Swin-L,架构超参数如图5所示,C是第一层隐藏层的通道数。
图5. 模型变种的架构超参.
三、实验结果
3.1 ImageNet-1K上的图像分类
对于图像分类,作者在ImageNet-1K上测试了Swin Transformer,这个数据集包括1000个类别的1。28M 训练图像和50K的验证图像,作者考虑了通常的ImageNet-1K训练和预训练在ImageNet-22K但微调在ImageNet-1K上。 其结果如图7所示。图7 (a)表示通常的ImageNet-1K训练上对比基于Transformer和基于卷积网络的方式。对比于之前最前进的基于Transformer架构DeiT,显著超过了同等复杂度的DeiT架构。其在速度上稍微有点劣势,但作者指出Swin Transformer由于适应标准的Transformer因此有足够的提高空间。图7 (b)指出经过预训练Swin-B准确率得到提高。且作者的模型实现了最好的速度准确率权衡并且Swin-L实现了最高的准确率。
图6. 对比不同网络在ImageNet-1K图像分类的结果
3.2 COCO数据集上的目标检测
目标检测和实例分割实验在COCO 2017上数据集上,该数据集包含11。8万张训练集,5千张验证集和2万张测试集。作者考虑了4种典型的目标检测框架包括Cascade Mask R-CNN,ATSS, RepPoints v2,和Sparse RCNN,且在训练过程中使用了相同的配置。然后作者比较了Swin Transformer 和标准的卷积网络ResNe(X)t以及以前的Transformer网络比如DeiT。作者直接将Swin Transformer和ResNe(X)t应用到4种框架,而对于DeiT 使用反卷积产生层次化的特征图进行比较。
图7(a)列出了Swin-T和ResNet-50在4种目标检测方法上的结果,可以看到Swin-T架构在bos AP得分上明显优于ResNet-50,但有更大的model size, FLOPs和延迟。图7(b)比较了不同模型大小下Swin Transformer 和 ResNet(X)t的性能。Swin Transformer实现了51。9 box AP 和 45。0的mask AP均高于ResNeXt,但有相似的model size, FLOPs和latency。图7(b)展示了DeiT-S使用Cascade Mask R-CNN框架的性能表现,相比于DeiT,Swin-T有更高的box AP和mask AP以及更高的推理速度。图7(c)比较了Swin Transformer最好的结果和以前最先进的模型在box AP上远超之前的模型。
图7. 对比不同网络在COCO目标检测和实例分割的结果.
3.3 ADE20K上的语义分割
ADE20K是一个广泛使用的语义分割数据集,包含150种语义类别。该数据集总共有2。5万张图片,其中2万张训练,2千张验证,3千张测试。考虑到高效性,作者使用分割工具集mmseg中的UperNet作为基本的框架。表3列出了不同方法在mIoU,model size,FLOP和FPS指标上的表现。可以看到Swin-S相比于相似计算代价的DeiT-S在mIoU上高5.3,也高于ResNet-101和ResNeS-101。作者提出经过预训练的Swin-L在val mIoU上超过了以前最好的模型。
图8. 对比不同网络在ADE20K上的语义分割的结果.
四、总结
这篇文章提出了Swin Transformer,一种新的Vision Transformer 产生了层次化特征表示并且和输入的图像大小有一个线性计算复杂度。Swin Transformer在COCO 目标检测和ADE2K语义分割上实现了最先进的性能,极大的超过了以前的方法。作者希望Swin Transformer 在各种视觉任务上的强力表现促进视觉和语言符号的统一建模。作者指出基于自注意力的移动窗口作为Swin Transformer 的关键一部分已经展示了其有效性,作者希望继续研究其在自然语言处理方面的应用。
代码
https://github.com/microsoft/Swin-Transformer
参考文献
https://arxiv.org/abs/2103.14030