Swin Transformer:使用偏移窗口的分层视觉变换器
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
摘要
本论文提出了一种名为Swin Transformer的新型视觉Transformer模型,它能够作为通用的计算机视觉骨干网络。
从语言到视觉的Transformer模型的适应性挑战源于两个领域之间的差异,如视觉实体的尺度变化较大以及图像中像素的高分辨率相对于文本中的单词。为了解决这些差异,我们提出了一种分层Transformer,其表示是通过偏移窗口计算的。偏移窗口方案通过将自注意力计算限制在非重叠的本地窗口内,同时也允许跨窗口连接,从而带来了更高的效率。这种分层架构具有在不同尺度上建模的灵活性,并且在图像大小方面具有线性的计算复杂度。Swin Transformer的这些特性使其与广泛范围的视觉任务兼容,包括图像分类(在ImageNet-1K上的87.3的top-1准确度)以及密集预测任务,如目标检测(在COCO测试集上的58.7的box AP和51.1的mask AP)和语义分割(在ADE20K验证集上的53.5的mIoU)。其性能大大超越了先前的最先进技术,分别在COCO上提升了+2.7的box AP和+2.6的mask AP,并在ADE20K上提升了+3.2的mIoU,显示了基于Transformer的模型作为视觉骨干的潜力。分层设计和偏移窗口方法也对所有MLP架构具有益处。代码和模型可以在https://github.com/microsoft/Swin-Transformer 上公开获取。
1、引言
计算机视觉中的建模长期以来一直由卷积神经网络(CNNs)主导。从AlexNet的问世以及它在ImageNet图像分类挑战中的革命性表现开始,CNN架构通过规模的扩大、连接的加强以及更复杂形式的卷积等方式变得越来越强大。由于CNNs在各种视觉任务中作为骨干网络,这些架构的进步导致了性能的提升,从而广泛推动了整个领域的发展。
另一方面,在自然语言处理(NLP)中,网络架构的演变走上了一条不同的道路,如今普遍的架构是Transformer。Transformer设计用于序列建模和转录任务,其以使用注意力机制来建模数据中的长距离依赖关系而引人注目。它在语言领域取得了巨大的成功,这导致研究人员研究如何将其应用于计算机视觉,最近在特定任务上取得了有希望的结果,特别是在图像分类和联合视觉-语言建模方面。
在本论文中,我们试图扩展Transformer的适用性,使其能够像在NLP中一样成为计算机视觉的通用骨干网络,就像CNN在视觉中一样。我们观察到,在将其在语言领域的高性能转移到视觉领域时,存在着显著的挑战,这可以通过两种模态之间的差异来解释。其中之一涉及到尺度。与在语言Transformer中作为处理基本单元的单词标记不同,视觉元素的尺度可以有很大的变化,这在诸如目标检测等任务中受到关注。在现有的基于Transformer的模型中,标记都是固定尺度的,这在视觉应用中不合适。另一个差异是图像中像素的分辨率要比文本段落中的单词高得多。存在许多像语义分割这样的视觉任务需要在像素级别进行密集预测,对于高分辨率图像来说,这将变得棘手,因为其自注意力的计算复杂度与图像尺寸的平方成正比。
为了克服这些问题 ,我们提出了一个名为Swin Transformer的通用Transformer骨干网络,它构建了分层特征图,并具有线性的图像大小计算复杂度。如图1(a)所示,Swin Transformer通过从小尺寸的图块开始(用灰色轮廓标出)并逐渐合并深层Transformer层中的相邻图块来构建分层表示。借助这些分层特征图,Swin Transformer模型可以方便地利用高级技术进行像素级别的密集预测,如特征金字塔网络(FPN)或U-Net。通过在划分图像的非重叠窗口内局部计算自注意力来实现线性的计算复杂度(用红色轮廓标出)。每个窗口中的图块数量是固定的,因此复杂度变为与图像大小成线性关系。这些优点使得Swin Transformer能够成为各种视觉任务的通用骨干网络,与之前的基于Transformer的架构形成对比,后者只能生成单一分辨率的特征图,并具有二次复杂度。
Swin Transformer的一个关键设计元素是在连续的自注意层之间移动窗口划分,如图2所示。
移动的窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(参见表4)。这种策略在实际应用的延迟方面也很高效:窗口内的所有查询块共享相同的键集,这有利于硬件中的内存访问。相比之下,早期基于滑动窗口的自注意方法在一般硬件上存在延迟较低的问题,因为不同的查询像素有不同的键集。我们的实验证明,所提出的移动窗口方法比滑动窗口方法具有更低的延迟,但在建模能力上类似(见表5和表6)。移动窗口方法也对所有MLP架构具有益处。
所提出的Swin Transformer在图像分类、目标检测和语义分割等识别任务上取得了强劲的性能。它在这三个任务上的性能显著优于ViT / DeiT [20, 63] 和ResNe(X)t模型 [30, 70],并且具有类似的延迟。其在COCO测试集的58.7的box AP和51.1的mask AP超过了先前最先进的结果,分别提高了+2.7的box AP(无外部数据的Copy-paste [26])和+2.6的mask AP(DetectoRS [46])。在ADE20K语义分割任务中,它在验证集上获得了53.5的mIoU,比先前最先进的SETR [81]提高了+3.2的mIoU。在ImageNet-1K图像分类任务中,它实现了87.3%的top-1准确度。
我们相信,在计算机视觉和自然语言处理之间采用统一的架构可以使两个领域受益,因为它将便于对视觉和文本信号进行联合建模,并且可以更深入地共享两个领域的建模知识。我们希望Swin Transformer在各种视觉问题上的优异性能可以在社区中深化这种信念,并鼓励对视觉和语言信号进行统一建模。
2、 相关工作
CNN及其变体 CNN(卷积神经网络)在整个计算机视觉领域作为标准网络模型。虽然CNN已经存在了几十年[40],但直到AlexNet的引入[39],CNN才起飞并成为主流。自那时以来,人们提出了更深层次、更有效的卷积神经网络架构,进一步推动了计算机视觉中的深度学习浪潮,例如VGG [52]、GoogleNet [57]、ResNet [30]、DenseNet [34]、HRNet [65]和EfficientNet [58]等。
除了这些架构的进步,还有许多关于改进单个卷积层的工作,如深度卷积[70]和可变形卷积[18, 84]。虽然CNN及其变体仍然是计算机视觉应用的主要骨干架构,但我们强调了类似Transformer的架构在视觉和语言之间进行统一建模的巨大潜力。我们的工作在几个基本的视觉识别任务上取得了强劲的性能,我们希望它能对模型的发展方向做出一定的贡献。
基于自注意力的骨干网络架构 受到自注意力层和Transformer在自然语言处理领域的成功启发,一些研究利用自注意力层来替代流行的ResNet中的一些或全部空间卷积层[33, 50, 80]。在这些研究中,自注意力是在每个像素的局部窗口内计算的,以加速优化过程[33],并且它们在准确性和计算量之间取得了稍微更好的平衡,相比于ResNet架构。然而,它们昂贵的内存访问导致了实际延迟明显大于卷积网络[33]。我们提出了在连续层之间移动窗口的方法,而不是使用滑动窗口,这使得在通用硬件上能够更高效地实现。
自注意力/Transformer以补充CNN 另一方面,一些工作尝试将标准的CNN架构与自注意力层或Transformer相结合。自注意力层可以通过提供编码远程依赖关系或异质交互的能力来增强骨干网络[67, 7, 3, 71, 23, 74, 55]或头部网络[32, 27]。最近,Transformer中的编码-解码设计已经应用于目标检测和实例分割任务[8, 13, 85, 56]。我们的工作探索了将Transformer用于基本视觉特征提取的适应性,与这些工作相辅相成。
基于Transformer的视觉骨干网络 与我们的工作最相关的是Vision Transformer(ViT)[20]及其后续研究[63, 72, 15, 28, 66]。ViT的开创性工作直接将Transformer架构应用于非重叠的中等大小图像块,用于图像分类。与卷积网络相比,它在图像分类方面取得了令人印象深刻的速度-准确性平衡。虽然ViT需要大规模训练数据集(如JFT-300M)才能表现良好,但DeiT [63]引入了一些训练策略,使得ViT在使用较小的ImageNet-1K数据集时也能有效。ViT在图像分类任务上的结果令人鼓舞,但其架构不适用于作为密集视觉任务的通用骨干网络,或者当输入图像分辨率较高时,由于其低分辨率的特征图以及与图像大小成二次方增加的复杂度。
有一些研究将ViT模型应用于目标检测和语义分割等密集视觉任务,通过直接上采样或反卷积的方式,但性能相对较低[2, 81]。与我们同时进行的工作是一些修改ViT架构以获得更好图像分类性能的研究[72, 15, 28]。经验上,我们发现我们的Swin Transformer架构在图像分类方面在这些方法中实现了最佳的速度-准确性平衡,尽管我们的工作侧重于通用性能而不是专门分类。
另一项同时进行的工作[66]探索了一条类似的思路,以在Transformers中构建多分辨率特征图。它的复杂度仍然与图像大小成二次方,而我们的复杂度是线性的,同时也是在本地操作的,这在建模视觉信号中的高相关性方面已被证明是有效的。我们的方法既高效又有效,实现了在COCO目标检测和ADE20K语义分割上的最先进准确性。
3、 模型
3.1 总体架构
图3展示了Swin Transformer架构的概览,图中展示了迷你版本(Swin-T)。
首先,它通过一个补丁分割模块将输入的RGB图像分割成非重叠的补丁,类似于ViT。每个补丁被视为一个“标记”,其特征被设置为原始像素RGB值的连接。在我们的实现中,我们使用了一个4×4的补丁大小,因此每个补丁的特征维度为 \(4×4×3=48\) 。然后,在这个原始值特征上应用一个线性嵌入层,将其投影到一个任意维度(记作 \(C\) )。
对这些补丁标记应用了多个带有修改的自注意力计算的Transformer块(称为Swin Transformer块)。这些Transformer块保持了标记的数量(\({H\over4} × {W\over4}\)),与线性嵌入一起被称为“阶段1”。
为了产生一个分层表示,随着网络变得更深,标记的数量通过补丁合并层进行减少。第一个补丁合并层将每组 \(2×2\) 相邻补丁的特征连接起来,并在4C维度的连接特征上应用一个线性层。这将标记的数量减少了 \(2×2=4\) 倍(分辨率降低了 \(2\) 倍),输出维度设置为 \(2C\) 。随后,应用Swin Transformer块进行特征变换,分辨率保持在 \({H\over8} × {W\over8}\) 。这个第一个补丁合并和特征变换的阶段被标记为“阶段2”。这个过程重复两次,分别作为“阶段3”和“阶段4”,输出分辨率分别为 \({H\over16} × {W\over16}\) 和 \({H\over32}× {W\over32}\) 。这些阶段共同产生了一个分层表示,其特征图分辨率与典型的卷积网络(如VGG [52] 和 ResNet [30])相同。
因此,所提出的架构可以方便地替代现有方法中的骨干网络,用于各种视觉任务。
Swin Transformer块 Swin Transformer通过将Transformer块中的标准多头自注意力(MSA)模块替换为基于移动窗口的模块(在第3.2节中描述),同时保持其他层不变而构建。如图3(b)所示,一个Swin Transformer块包括一个基于移动窗口的MSA模块,后跟一个包含GELU非线性的2层MLP。在每个MSA模块和每个MLP之前都应用了一个LayerNorm(LN)层,并在每个模块后应用了一个残差连接。
3.2. 基于移动窗口的自注意力
标准的Transformer架构[64]以及其用于图像分类的调整版本[20]都进行全局自注意力计算,其中计算了一个标记与所有其他标记之间的关系。全局计算导致了相对于标记数量的二次复杂度,这使得它在许多需要大量标记进行密集预测或表示高分辨率图像的视觉问题中不适用。
非重叠窗口内的自注意力
为了实现高效建模,我们提议在本地窗口内计算自注意力。这些窗口以非重叠的方式均匀划分图像。假设每个窗口包含 \(M × M\) 个补丁,全局MSA模块和基于图像的窗口的计算复杂度分别如下:
\[ Ω(MSA) = 4hwC² + 2(hw)²C, \]
\[ Ω(W-MSA) = 4hwC² + 2M²hwC, \]
其中前者相对于补丁数量 \(hw\) 是二次复杂度,而后者在固定 \(M\) (默认为 \(7\) )时是线性的。对于大的 \(hw\) 值,全局自注意力计算通常是无法承受的,而基于窗口的自注意力是可扩展的。
连续模块中的移动窗口划分 基于窗口的自注意力模块缺乏窗口之间的连接,这限制了其建模能力。为了在保持非重叠窗口的高效计算的同时引入跨窗口连接,我们提出了一种移动窗口划分方法,在连续的Swin Transformer块中交替使用两种划分配置。
如图2表示,第一个模块使用常规的窗口划分策略,从左上角像素开始, \(8×8\) 的特征图被均匀划分成 \(4×4\) 大小的 \(2×2\) 窗口( \(M = 4\) )。然后,下一个模块采用了一个窗口配置,它从前一层的配置中移位,通过将窗口从常规划分的窗口中移动( \(\lfloor M/2,M/2\rfloor\) )个像素。
\(\hat{z}^{l}=W-MSA(LN(z^{l-1}))+z^{l-1}, \\\)
\(z^l=MLP(LN(\hat{z}^l))+\hat{z}^l, \\\)
\(\hat{z}^{l+1}=SW-MSA(LN(z^l))+z^l,\)
\(z^{l+1}=MLP(LN(\hat{z}^{l+1}))+\hat{z}^{l+1}, \\\)
这里 \(\hat{z}^{l}\) 和 \({z}^{l}\) 分别表示块 \(l\) 的 (S)W-MSA 模块和 MLP 模块的输出特征;W-MSA 和 SW-MSA 分别表示基于常规和移动窗口划分配置的窗口式多头自注意力。
移动窗口划分方法在前一层中引入了相邻非重叠窗口之间的连接,并在图像分类、目标检测和语义分割等任务中被发现是有效的,如表4所示。
对于移动配置的高效批处理计算 移动窗口划分的一个问题是它会导致更多的窗口,从 \(\lceil {h\over M}\rceil \times \lceil {w\over M}\rceil\) 到 \((\lceil {h\over M}\rceil+1 )\times (\lceil {w\over M}\rceil+1)\) 在移动配置中,其中一些窗口将小于 \(M × M\) 。一个简单的解决方案是将较小的窗口填充到 \(M × M\) 的大小,并在计算注意力时将填充的值屏蔽掉。当常规划分中窗口的数量较小时,例如 \(2 × 2\) ,采用这种简单解决方案会导致显著的增加计算量(\(2 × 2\rightarrow 3 × 3\),增加了2.25倍)。
在这里,我们提出了一种更高效的批处理计算方法,通过向左上方向循环移位,如图4所示。
在这种移位后,一个批处理窗口可能由几个在特征图中不相邻的子窗口组成,因此采用了一个掩码机制来限制自注意力计算在每个子窗口内进行。通过循环移位,批处理窗口的数量保持与常规窗口划分相同,因此也是高效的。这种方法的低延迟在表5中显示。
相对位置偏置 在计算自注意力时,我们遵循[49, 1, 32, 33]的做法,通过在计算相似性时为每个头部添加一个相对位置偏置 \(B ∈ \R ^{M^2×M^2}\) :
\[ \text{Attention(Q, K, V)} = \text {SoftMax}(QKᵀ /\sqrt {d} + B)V, \]
其中 $Q, K, V ∈ {M2×d} $ 是查询、键和值矩阵;\(d\) 是查询/键的维度,\(M^2\) 是窗口中的补丁数量。由于每个轴上的相对位置在范围\([-M + 1, M - 1]\)内,我们将一个尺寸较小的偏置矩阵 \(\hat{B}∈ \R^{(2M-1)×(2M-1)}\) 参数化,并且从 \(\hat{B}\) 中取出 \(B\) 中的值。
我们观察到相对位置偏置项明显改善了与没有该偏置项或使用绝对位置嵌入的对应模型相比的性能,如表4所示。进一步将绝对位置嵌入添加到输入中(如[20]中所示)会略微降低性能,因此在我们的实现中没有采用这种方法。
在预训练过程中学到的相对位置偏置也可以用于通过双三次插值[20, 63]初始化具有不同窗口大小的模型,以进行微调。
3.3. 架构变体
我们构建了我们的基础模型,称为Swin-B,其模型大小和计算复杂度与ViT-B/DeiT-B类似。我们还介绍了Swin-T、Swin-S和Swin-L,它们的模型大小和计算复杂度分别为基础模型的0.25×、0.5×和2×。请注意,Swin-T和Swin-S的复杂度与ResNet-50(DeiT-S)和ResNet-101相似,窗口大小默认设置为\(M = 7\)。每个头的查询维度为\(d = 32\),每个MLP的扩展层为\(α = 4\),对于所有实验,这些模型变体的架构超参数如下:
- Swin-T: C = 96, 层级数量 = {2, 2, 6, 2}
- Swin-S: C = 96, 层级数量 = {2, 2, 18, 2}
- Swin-B: C = 128, 层级数量 = {2, 2, 18, 2}
- Swin-L: C = 192, 层级数量 = {2, 2, 18, 2}
这里的 \(C\) 是第一个阶段隐藏层的通道数。模型大小、理论计算复杂度(FLOPs)以及用于ImageNet图像分类的模型变体的吞吐量详见表1。
4、 实验
我们在ImageNet-1K图像分类[19]、COCO目标检测[43]和ADE20K语义分割[83]上进行了实验。接下来,我们首先将提出的Swin Transformer架构与先前的技术水平进行比较,然后对Swin Transformer的重要设计元素进行了实验验证。
4.1. ImageNet-1K上的图像分类
设置:对于图像分类,我们在ImageNet-1K [19]上评估了提出的Swin Transformer,该数据集包含来自1,000个类别的1.28M训练图像和50K验证图像。我们报告了单个裁剪的top-1准确度。我们考虑了两种训练设置:
常规的ImageNet-1K训练:此设置主要遵循[63]。我们使用AdamW [37]优化器进行300个epoch的训练,使用余弦衰减学习率调度器和20个epoch的线性热身。我们使用批大小为1024,初始学习率为0.001,权重衰减为0.05。在训练中,我们包括了[63]中的大多数增强和正则化策略,但不包括重复的增强[31]和EMA [45],因为它们并不能提升性能。值得注意的是,这与[63]相反,在ViT的训练中,重复的增强对于稳定训练是至关重要的。
在ImageNet-22K上进行预训练,然后在ImageNet-1K上进行微调:我们还在更大的ImageNet-22K数据集上进行预训练,该数据集包含了1420万张图像和22,000个类别。我们使用AdamW优化器进行90个epoch的训练,使用线性衰减学习率调度器和5个epoch的线性热身。我们使用批大小为4096,初始学习率为0.001,权重衰减为0.01。在ImageNet-1K的微调中,我们使用批大小为1024,学习率保持为\(10^{-5}\),权重衰减为\(10^{-8}\),训练模型30个epoch。
常规ImageNet-1K训练的结果。 如表1(a)所示,其中与其他主干网络进行了比较,包括基于Transformer和ConvNet的网络。
方法 | 图像尺寸 | 参数数量 | 计算量 (FLOPs) | 吞吐量 (图像/秒) | ImageNet Top-1 准确率 |
---|---|---|---|---|---|
RegNetY-4G [48] | 224x224 | 21M | 4.0G | 1156.7 | 80.0 |
RegNetY-8G [48] | 224x224 | 39M | 8.0G | 591.6 | 81.7 |
RegNetY-16G [48] | 224x224 | 84M | 16.0G | 334.7 | 82.9 |
EffNet-B3 [58] | 300x300 | 12M | 1.8G | 732.1 | 81.6 |
EffNet-B4 [58] | 380x380 | 19M | 4.2G | 349.4 | 82.9 |
EffNet-B5 [58] | 456x456 | 30M | 9.9G | 169.1 | 83.6 |
EffNet-B6 [58] | 528x528 | 43M | 19.0G | 96.9 | 84.0 |
EffNet-B7 [58] | 600x600 | 66M | 37.0G | 55.1 | 84.3 |
ViT-B/16 [20] | 384x384 | 86M | 55.4G | 85.9 | 77.9 |
ViT-L/16 [20] | 384x384 | 307M | 190.7G | 27.3 | 76.5 |
DeiT-S [63] | 224x224 | 22M | 4.6G | 940.4 | 79.8 |
DeiT-B [63] | 224x224 | 86M | 17.5G | 292.3 | 81.8 |
DeiT-B [63] | 384x384 | 86M | 55.4G | 85.9 | 83.1 |
Swin-T | 224x224 | 29M | 4.5G | 755.2 | 81.3 |
Swin-S | 224x224 | 50M | 8.7G | 436.9 | 83.0 |
Swin-B | 224x224 | 88M | 15.4G | 278.1 | 83.5 |
Swin-B | 384x384 | 88M | 47.0G | 84.7 | 84.5 |
方法 | 图像尺寸 | 参数数量 | 计算量 (FLOPs) | 吞吐量 (图像/秒) | ImageNet Top-1 准确率 |
---|---|---|---|---|---|
R-101x3 [38] | 384x384 | 388M | 204.6G | - | 84.4 |
R-152x4 [38] | 480x480 | 937M | 840.5G | - | 85.4 |
ViT-B/16 [20] | 384x384 | 86M | 55.4G | 85.9 | 84.0 |
ViT-L/16 [20] | 384x384 | 307M | 190.7G | 27.3 | 85.2 |
Swin-B | 224x224 | 88M | 15.4G | 278.1 | 85.2 |
Swin-B | 384x384 | 88M | 47.0G | 84.7 | 86.4 |
Swin-L | 384x384 | 197M | 103.9G | 42.1 | 87.3 |
与先前的最先进的基于Transformer的架构DeiT [63]相比,Swin Transformer明显超过了复杂度相似的DeiT架构:使用224x224的输入,Swin-T(81.3%)比DeiT-S(79.8%)提高了+1.5%;使用224x224/384x384的输入,Swin-B(83.3%/84.5%)比DeiT-B(81.8%/83.1%)提高了+1.5%/1.4%。
与最先进的ConvNets,如RegNet [48]和EfficientNet [58]相比,Swin Transformer实现了稍微更好的速度-准确度权衡。值得注意的是,尽管RegNet [48]和EfficientNet [58]是通过彻底的架构搜索得到的,但提出的Swin Transformer是从标准的Transformer进行了改进,具有进一步提升的潜力。
使用ImageNet-22K预训练的结果 我们还对容量更大的Swin-B和Swin-L进行了ImageNet-22K的预训练。在ImageNet-1K图像分类上进行微调的结果如表1(b)所示。对于Swin-B,ImageNet-22K的预训练带来了1.8%~1.9%的提升,相比于从头开始在ImageNet-1K上训练。与以前在ImageNet-22K预训练的最佳结果相比,我们的模型在速度-准确度权衡方面取得了显著的改进:Swin-B获得了86.4%的top-1准确度,比具有类似推理吞吐量(84.7比85.9图像/秒)和稍低FLOPs(47.0G比55.4G)的ViT高2.4%。更大的Swin-L模型实现了87.3%的top-1准确度,比Swin-B模型好0.9%。
4.2. 在COCO上进行目标检测
设置:我们在COCO 2017数据集上进行目标检测和实例分割实验,该数据集包含了118K张训练图片,5K张验证图片和20K张测试图片。我们在验证集上进行了消融研究,并在测试集上进行了系统级别的比较。
对于消融研究,我们考虑了四种典型的目标检测框架:级联Mask R-CNN、ATSS、RepPoints v2和Sparse RCNN。对于这四种框架,我们使用了相同的设置:多尺度训练(将输入调整大小,使较短的一侧在480到800之间,较长的一侧最多为1333)、AdamW优化器(初始学习率为0.0001,权重衰减为0.05,批量大小为16)和3x调度(36个epochs)。
对于系统级别的比较,我们采用了改进版HTC(标记为HTC++),其中包括instaboost、更强大的多尺度训练、6x调度、soft-NMS和ImageNet-22K预训练模型作为初始化。
我们将我们的Swin Transformer与标准的ConvNets(如ResNe(X)t)和先前的Transformer网络(如DeiT)进行了比较。比较时,只更改了主干网络,其他设置保持不变。值得注意的是,由于Swin Transformer和ResNe(X)t具有分层特征图,因此它们可以直接应用于上述所有框架。而DeiT只产生单一分辨率的特征图,无法直接应用。为了公平比较,我们按照[81]的方法使用反卷积层为DeiT构建分层特征图。
与ResNe(X)t的比较: 表2(a)列出了Swin-T和ResNet-50在四个目标检测框架上的结果。我们的Swin-T架构在模型大小、FLOPs和延迟略大的情况下,带来了稳定的+3.4∼4.2的box AP增益。
表2(b)比较了使用Cascade Mask R-CNN时Swin Transformer和不同模型容量的ResNe(X)t。Swin Transformer实现了51.9的box AP和45.0的mask AP的高检测精度,分别比ResNeXt101-64x4d高出+3.6和+3.3,后者具有相似的模型大小、FLOPs和延迟。
在改进的HTC框架的更高基线上,实现了52.3的box AP和46.0的mask AP,Swin Transformer的增益也很高,分别为+4.1的box AP和+3.1的mask AP(见表2(c))。
方法 | 骨干网络 | APbox | APbox50 | APbox75 | 参数数量 | FLOPs | FPS |
---|---|---|---|---|---|---|---|
Cascade Mask R-CNN | R-50 | 46.3 | 64.3 | 50.5 | 82M | 739G | 18.0 |
Swin-T | - | 50.5 | 69.3 | 54.9 | 86M | 745G | 15.3 |
ATSS | R-50 | 43.5 | 61.9 | 47.0 | 32M | 205G | 28.3 |
Swin-T | - | 47.2 | 66.5 | 51.3 | 36M | 215G | 22.3 |
RepPointsV2 | R-50 | 46.5 | 64.6 | 50.3 | 42M | 274G | 13.6 |
Swin-T | - | 50.0 | 68.5 | 54.2 | 45M | 283G | 12.0 |
Sparse R-CNN | R-50 | 44.5 | 63.4 | 48.2 | 106M | 166G | 21.0 |
Swin-T | - | 47.9 | 67.3 | 52.3 | 110M | 172G | 18.4 |
骨干网络 | APbox | APbox50 | APbox75 | APmask | APmask50 | APmask75 | 参数数量 | FLOPs | FPS |
---|---|---|---|---|---|---|---|---|---|
DeiT-S | 48.0 | 67.2 | 51.7 | 41.4 | 64.2 | 44.3 | 80M | 889G | 10.4 |
R50 | 46.3 | 64.3 | 50.5 | 40.1 | 61.7 | 43.4 | 82M | 739G | 18.0 |
Swin-T | 50.5 | 69.3 | 54.9 | 43.7 | 66.6 | 47.1 | 86M | 745G | 15.3 |
X101-32 | 48.1 | 66.5 | 52.4 | 41.6 | 63.9 | 45.2 | 101M | 819G | 12.8 |
Swin-S | 51.8 | 70.4 | 56.3 | 44.7 | 67.9 | 48.5 | 107M | 838G | 12.0 |
X101-64 | 48.3 | 66.4 | 52.3 | 41.7 | 64.0 | 45.1 | 140M | 972G | 10.4 |
Swin-B | 51.9 | 70.9 | 56.5 | 45.0 | 68.4 | 48.7 | 145M | 982G | 11.6 |
方法 | mini-val | test-dev | 参数数量 | FLOPs | APbox | APmask | APbox | APmask |
---|---|---|---|---|---|---|---|---|
RepPointsV2 | * | * | 185M | 1440G | 55.9 | 47.2 | 56.0 | 47.4 |
Copy-paste | 55.9 | 47.2 | 185M | 1440G | 56.0 | 47.4 | - | - |
Swin-B (HTC++) | 56.4 | 49.1 | 160M | 1043G | - | - | - | - |
Swin-L (HTC++) | 57.1 | 49.5 | 284M | 1470G | 57.7 | 50.2 | 58.7 | 51.1 |
Swin-L (HTC++)* | 58.0 | 50.4 | 284M | - | 58.7 | 51.1 | - | - |
关于推理速度,虽然ResNe(X)t是通过高度优化的Cudnn函数构建的,但我们的架构是使用内置的PyTorch函数实现的,并非所有函数都经过了良好的优化。深度优化超出了本文的范围。
与DeiT的比较: 使用Cascade Mask R-CNN框架,DeiT-S的性能如表2(b)所示。Swin-T的结果比DeiT-S高出+2.5的box AP和+2.3的mask AP,模型大小相似(86M对比80M),推理速度显著更高(15.3 FPS对比10.4 FPS)。DeiT的推理速度较低主要是因为其对输入图像大小的复杂度为二次方。
与之前的最先进模型的比较:表2(c)将我们的最佳结果与之前的最先进模型进行了比较。我们的最佳模型在COCO测试集(test-dev)上实现了58.7的box AP和51.1的mask AP,比先前的最佳结果分别高出+2.7的box AP(Copy-paste [26],不使用外部数据)和+2.6的mask AP(DetectoRS [46])。
语义分割在ADE20K数据集上的实验设置: ADE20K [83] 是一个广泛使用的语义分割数据集,涵盖了150个语义类别。总共有2.5万张图像,其中2万张用于训练,2千张用于验证,另外3千张用于测试。我们在mmseg [16] 中使用UperNet作为基本框架,因为它具有较高的效率。更多细节将在附录中提供。
结果:表格3列出了不同方法/骨干网络组合的mIoU、模型大小(#参数)、FLOPs和FPS。
方法 | 主干网络 | mIoU (val) | mIoU (test) | 参数数量 | FLOPs | FPS |
---|---|---|---|---|---|---|
DANet [23] | ResNet-101 | 45.2 | - | 69M | 1119G | 15.2 |
DLab.v3+ [11] | ResNet-101 | 44.1 | - | 63M | 1021G | 16.0 |
ACNet [24] | ResNet-101 | 45.9 | 38.5 | - | - | - |
DNL [71] | ResNet-101 | 46.0 | 56.2 | 69M | 1249G | 14.8 |
OCRNet [73] | ResNet-101 | 45.3 | 56.0 | 56M | 923G | 19.3 |
UperNet [69] | ResNet-101 | 44.9 | - | 86M | 1029G | 20.1 |
OCRNet [73] | HRNet-w48 | 45.7 | - | 71M | 664G | 12.5 |
DLab.v3+ [11] | ResNeSt-101 | 46.9 | 55.1 | 66M | 1051G | 11.9 |
DLab.v3+ [11] | ResNeSt-200 | 48.4 | - | 88M | 1381G | 8.1 |
SETR [81] | T-Large‡ | 50.3 | 61.7 | 308M | - | - |
UperNet | DeiT-S† | 44.0 | - | 52M | 1099G | 16.2 |
UperNet | Swin-T | 46.1 | - | 60M | 945G | 18.5 |
UperNet | Swin-S | 49.3 | - | 81M | 1038G | 15.2 |
UperNet | Swin-B‡ | 51.6 | - | 121M | 1841G | 8.7 |
UperNet | Swin-L‡ | 53.5 | 62.8 | 234M | 3230G | 6.2 |
从这些结果可以看出,与计算成本相似的DeiT-S相比,Swin-S的mIoU要高出5.3(49.3比44.0)。它也比ResNet-101高出4.4 mIoU,比ResNeSt-101 [78] 高出2.4 mIoU。我们的经过ImageNet-22K预训练的Swin-L模型在验证集上达到了53.5 mIoU,超过了之前最好的模型,其mIoU高出3.2(SETR [81] 的mIoU为50.3,但其模型规模更大)。
4.4. Ablation Study
在这一部分中,我们对所提出的Swin Transformer中的重要设计元素进行了剖析,使用了ImageNet-1K图像分类、COCO目标检测的级联掩蔽R-CNN,以及ADE20K语义分割的UperNet。
Shifted Windows 表4 报告了在三个任务上对移位窗口方法进行的剖析。
ImageNet | ImageNet | COCO | COCO | ADE20K | |
---|---|---|---|---|---|
top-1 | top-5 | \(AP^{box}\) | \(AP^{mask}\) | mIoU | |
无偏移窗口 | 80.2 | 95.1 | 47.7 | 41.5 | 43.3 |
偏移窗口 | 81.3 | 95.6 | 50.5 | 43.7 | 46.1 |
无位置编码 | 80.1 | 94.9 | 49.2 | 42.6 | 43.8 |
绝对位置编码 | 80.5 | 95.2 | 49.0 | 42.4 | 43.2 |
绝对+相对位置编码 | 81.3 | 95.6 | 50.2 | 43.4 | 44.0 |
相对位置编码(无应用) | 79.3 | 94.7 | 48.2 | 41.9 | 44.1 |
相对位置编码 | 81.3 | 95.6 | 50.5 | 43.7 | 46.1 |
使用移位窗口划分的Swin-T优于在每个阶段都建立在单窗口划分的对应模型,对于ImageNet-1K,top-1准确度提高了+1.1%,对于COCO,box AP/mask AP提高了+2.8/+2.2,对于ADE20K,mIoU提高了+2.8。
相对位置偏置 表4 还报告了相对位置偏置的剖析。相对位置偏置对于所有三个任务都是有效的,相对于没有位置编码和具有绝对位置嵌入的模型,它们分别提高了+3.3/+3.2 box AP,+2.3/+2.9 mask AP和+2.3/+2.9 mIoU。这表明了相对位置偏置的有效性。同时值得注意的是,虽然包含绝对位置嵌入可以提高图像分类的准确度(+0.4%),但会降低目标检测和语义分割的准确度(COCO的-0.2 box/mask AP,ADE20K的-0.6 mIoU)。
不同自注意方法 表5 比较了不同自注意计算方法的实际速度以及实现。
方法 | MSA in a stage (ms)S1 | S2 | S3 | S4 | Arch. (FPS)T | S | B |
---|---|---|---|---|---|---|---|
滑动窗口 (朴素) | 122.5 | 38.3 | 12.1 | 7.6 | 183 | 109 | 77 |
滑动窗口 (内核) | 7.6 | 4.7 | 2.7 | 1.8 | 488 | 283 | 187 |
Performer [14] | 4.8 | 2.8 | 1.8 | 1.5 | 638 | 370 | 241 |
窗口 (无偏移) | 2.8 | 1.7 | 1.2 | 0.9 | 770 | 444 | 280 |
偏移窗口 (填充) | 3.3 | 2.3 | 1.9 | 2.2 | 670 | 371 | 236 |
偏移窗口 (循环) | 3.0 | 1.9 | 1.3 | 1.0 | 755 | 437 | 278 |
我们的循环实现比朴素的填充更具硬件效率,特别是对于更深的阶段。总体而言,它使Swin-T、Swin-S和Swin-B分别提速了13%、18%和18%。
在四个网络阶段上,基于提议的移位窗口方法构建的自注意模块,在朴素/内核实现上比基于滑动窗口的模块更高效,分别为40.8×/2.5×,20.2×/2.5×,9.3×/2.1×和7.6×/1.8×。总的来说,基于移位窗口的Swin Transformer架构在Swin-T、Swin-S和Swin-B上比基于滑动窗口的变体分别快4.1/1.5、4.0/1.5和3.6/1.5倍。表6比较了它们在三个任务上的准确性,表明它们在视觉建模方面具有相似的准确性。
与Performer [14]相比,后者是最快的Transformer架构之一(参见[60]),所提出的基于移位窗口的自注意计算和整体的Swin Transformer架构略快(见表5),同时使用Swin-T在ImageNet-1K上比Performer提高了+2.3%的top-1准确度(见表6)。
ImageNet | ImageNet | COCO | COCO | ADE20K | ||
---|---|---|---|---|---|---|
Backbone | top-1 | top-5 | \(AP^{box}\) | \(AP^{mask}\) | mIoU | |
滑动窗口 | Swin-T | 81.4 | 95.6 | 50.2 | 43.5 | 45.8 |
表演家 [14] | Swin-T | 79.0 | 94.2 | - | - | - |
移动窗口 | Swin-T | 81.3 | 95.6 | 50.5 | 43.7 | 46.1 |
5、 结论
本文介绍了Swin Transformer,这是一种新的视觉Transformer模型,它生成了一个分层的特征表示,并且相对于输入图像大小具有线性的计算复杂度。Swin Transformer在COCO目标检测和ADE20K语义分割任务上取得了最先进的性能,明显超越了先前的最佳方法。我们希望Swin Transformer在各种视觉问题上的强大性能能够鼓励对视觉和语言信号进行统一建模。
作为Swin Transformer的关键组成部分,基于移位窗口的自注意力机制在视觉问题上表现出色且高效,我们期待着在自然语言处理领域中进一步研究其应用。