原文信息
原文名称:《Swin Transformer: Hierarchical Vision Transformer using Shifted Windows》
- 文章标题:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
- 作者:Ze Liu, Yutong Lin, Yue Cao, Han Hu, Yixuan Wei, Zheng Zhang, Stephen Lin, Baining Guo
- 发表会议/期刊:arXiv preprint arXiv:2103.14030
- 发表时间:2021年4月
- 原文引用:Liu Z, Lin Y, Cao Y, et al. Swin transformer: Hierarchical vision transformer using shifted windows[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2021: 10012-10022.
原文链接:https://arxiv.org/pdf/2103.14030.pdfhttps://arxiv.org/pdf/2103.14030.pdf
干货集锦
0.摘要
本文介绍了一种新的视觉Transformer,称为Swin Transformer,它具备作为计算机视觉通用骨干网的能力。将Transformer从语言领域转换到视觉领域面临的挑战来自两个领域的差异,如视觉实体的尺度变化较大以及图像中像素的分辨率相对于文本中的单词高得多。为了解决这些差异,我们提出了一种分层Transformer,其表示是通过Shifted 窗口计算得出的。该Shifted 窗口方案通过将自注意计算限制在非重叠的本地窗口上,同时允许窗口连接,从而带来更高的效率。这种分层架构具有在不同尺度下建模的灵活性,并且与图像尺寸呈线性计算复杂度。Swin Transformer的这些品质使其适用于广泛的视觉任务,包括图像分类(在ImageNet-1K上的87.3 top-1准确率)以及密集预测任务,例如目标检测(在COCO testdev上的58.7 box AP和51.1 mask AP)和语义分割(在ADE20K val上的53.5 mIoU)。其性能大大超过了以前的技术水平,COCO上的+2.7 box AP和+2.6 mask AP以及ADE20K上的+3.2 mIoU,这证明了基于Transformer的模型作为视觉骨干网的潜力。分层设计和Shifted 窗口方法对于所有MLP体系结构也是有利的。代码和模型可在https://github.com/microsoft/Swin-Transformer.公开获得。
1.引言
计算机视觉中的建模长期以来都由卷积神经网络(CNN)主导。从AlexNet [39]开始,它在ImageNet图像分类挑战中取得了革命性的性能,CNN架构通过更大的规模 [30,76]、更广泛的连接 [34]和更复杂的卷积形式 [70,18,84]不断发展壮大。作为各种视觉任务的骨干网络,这些架构的进步带来了性能的提升,广泛地推动了整个领域的发展。
另一方面,在自然语言处理(NLP)中,网络架构的演变走了不同的道路,目前主流的架构是Transformer [64]。Transformer被设计用于序列建模和转换任务,其使用注意力机制来建模数据中的长程依赖关系。它在语言领域取得了巨大的成功,这促使研究人员开始探索将其应用于计算机视觉领域,在某些任务上取得了有希望的结果,特别是图像分类 [20]和联合视觉-语言建模 [47]。
在本文中,我们试图扩展Transformer的适用性,使其能够像在NLP中一样成为计算机视觉的通用骨干网络,就像CNN在视觉中一样。我们观察到,在将Transformer在语言领域的高性能转移到视觉领域时存在一些挑战,这可以通过两种模态之间的差异来解释。其中之一是规模的差异。与语言Transformer中用于处理的词元不同,视觉元素在规模上有很大的变化,这在对象检测等任务中引起了关注。在现有的基于Transformer的模型中,词元都具有固定的规模,这在视觉应用中是不适用的。另一个差异是图像中像素的分辨率比文本段落中的单词要高得多。存在许多需要在像素级别进行密集预测的视觉任务,如语义分割,而对于高分辨率图像来说,这对于Transformer来说是不可行的,因为其自注意力的计算复杂度与图像大小的平方成正比。为了解决这些问题,我们提出了一种通用的Transformer骨干网络,称为Swin Transformer,它构建了分层的特征图,并且对图像大小具有线性的计算复杂度。如图1(a)所示,Swin Transformer通过从小尺寸的图块(用灰色轮廓线标出)开始,并逐渐合并深层Transformer层中的相邻图块来构建分层表示。借助这些分层特征图,Swin Transformer模型可以方便地利用密集预测的先进技术,如特征金字塔网络(FPN)[42]或U-Net[51]。通过在不重叠的窗口内局部计算自注意力,Swin Transformer实现了线性的计算复杂度,这些窗口将图像分割为不同的部分(用红色轮廓线标出)。每个窗口中的图块数量是固定的,因此复杂度与图像大小成线性关系。这些优点使得Swin Transformer适用于各种视觉任务的通用骨干网络,与之前基于Transformer的架构[20]不同,后者只产生单一分辨率的特征图,并具有二次复杂度。
Swin Transformer的一个关键设计元素是在连续的自注意力层之间进行窗口划分的移位,如图2所示。移位窗口连接了前一层的窗口,提供了它们之间的连接,显著增强了建模能力(见表4)。这种策略在实际的延迟方面也非常高效:窗口内的所有查询图块共享相同的键集合,这有利于硬件中的内存访问。相比之下,早期基于滑动窗口的自注意力方法[33,50]由于不同查询像素使用不同的键集合,在通用硬件上延迟较高。我们的实验表明,所提出的移位窗口方法比滑动窗口方法具有更低的延迟,但在建模能力上类似(见表5和表6)。移位窗口方法还对所有MLP架构[61]都有益处。
提出的Swin Transformer在图像分类、对象检测和语义分割等识别任务上取得了强大的性能。在这三个任务上,它在类似的延迟下明显优于ViT/DeiT[20,63]和ResNe(X)t模型[30,70]。在COCO测试集上,其58.7的box AP和51.1的mask AP超过了以前的最先进结果,其中box AP比Copy-paste[26](无外部数据)提高了2.7,mask AP比DetectoRS[46]提高了2.6.在ADE20K语义分割任务中,在val集合上获得了53.5的mIoU,比以前的最先进结果(SETR[81])提高了3.2的mIoU。在ImageNet-1K图像分类上,它也实现了87.3%的top-1准确率。
我们相信,在计算机视觉和自然语言处理领域中使用统一的架构将使两个领域都受益,因为它将有助于对视觉和文本信号进行联合建模,并且可以更深入地共享两个领域的建模知识。我们希望Swin Transformer在各种视觉问题上的强大表现能够加深社区对这一观点的认同,并鼓励对视觉和语言信号进行统一建模。
(图1.(a)所提出的Swin Transformer通过合并深层中的图像块(灰色部分),构建了分层的特征图,并由于仅在每个局部窗口(红色部分)内计算自注意力,因此具有线性计算复杂度,可用作图像分类和密集识别任务的通用骨干。(b)相比之下,之前的Vision Transformer [20]产生单个低分辨率的特征图,并且由于全局自注意力的计算而对输入图像大小具有二次计算复杂度)
(图2.在提出的Swin Transformer体系结构中计算自注意力的移动窗口方法的图示。在层l(左侧),采用常规的窗口分割方案,在每个窗口内计算自注意力。在下一层l+1(右侧),窗口分割发生了移动,产生了新的窗口。新窗口中的自注意力计算跨越了层l中先前窗口的边界,提供了它们之间的连接)
2.相关工作
卷积神经网络(CNN)和其变体被广泛应用于计算机视觉的标准网络模型。尽管 CNN 已经存在了几十年 [40],但直到 AlexNet [39] 的引入,CNN 才开始流行起来。此后,一些更深层次和更有效的卷积神经网络架构被提出,进一步推动了计算机视觉中深度学习浪潮的发展,例如 VGG [52]、GoogleNet [57]、ResNet [30]、DenseNet [34]、HRNet [65] 和 EfficientNet [58] 等。除了这些架构上的进展之外,还有很多工作致力于改进单个卷积层,比如深度卷积 [70] 和可变形卷积 [18, 84]。虽然 CNN 及其变体仍然是计算机视觉应用中的主要骨干架构,但我们强调 Transformer 等架构在视觉和语言之间实现统一建模的巨大潜力。我们的工作在几个基本的视觉识别任务上取得了强大的表现,我们希望它能促进建模的转变。
自注意力骨干架构。在NLP领域中,由于自注意力层和Transformer架构的成功,一些研究采用自注意力层替换一些或所有流行的ResNet卷积层[33,50,80]。在这些研究中,自注意力在每个像素的局部窗口内计算以加快优化[33],并且它们实现了略微更好的精度/ FLOPs权衡比对应的ResNet架构。但是,它们昂贵的内存访问导致它们的实际延迟显着大于卷积网络[33]。我们提出在连续层之间移动窗口,这允许在通用硬件上实现更高效。
自注意力/Transformer来补充卷积神经网络。另一条路线是通过添加自注意力层或变压器来增强标准的CNN架构。自注意力层可以通过提供编码远程依赖或异构交互的功能来补充骨干网络[67,7,3,71,23,74,55]或头网络[32,27]。更近期地,编码器-解码器设计中的Transformer已被应用于目标检测和实例分割任务[8,13,85,56]。我们的工作探索了将Transformer适应于基本的视觉特征提取,并且与这些工作是互补的。
基于Transfoemer的视觉骨架。最与我们的工作相关的是Vision Transformer(ViT)[20]及其后续工作[63、72、15、28、66]。ViT的开创性工作直接将Transformer构应用于非重叠的中等大小图像块以进行图像分类。相比卷积网络,它在图像分类上实现了令人印象深刻的速度-精度权衡。虽然ViT需要大规模的训练数据集(即JFT-300M)才能表现良好,但DeiT [63]引入了几种训练策略,使得ViT在使用较小的ImageNet-1K数据集时也能够有效。ViT在图像分类上的结果令人鼓舞,但是由于其分辨率较低的特征映射以及随着图像尺寸的增加呈二次增加的复杂性,其架构不适用于用作密集视觉任务的通用骨干网络或当输入图像分辨率较高时。有一些工作将ViT模型应用于对象检测和语义分割的密集视觉任务中,通过直接上采样或反卷积,但性能相对较低[2、81]。与我们的工作同时进行的一些工作对ViT架构进行了修改,以实现更好的图像分类结果。从经验上讲,我们发现我们的Swin Transformer架构在这些方法中实现了最佳的速度-精度权衡,即使我们的工作重点是通用性能而不是特定的分类。另一项同时进行的工作[66]探索了在变形Transformer上构建多分辨率特征映射的类似思路。它的复杂性仍然是随图像大小而呈二次增加的,而我们的复杂性是线性的,并且还是局部操作的,已被证明对建模视觉信号的高相关性有益[36、25、41]。我们的方法既高效又有效,在COCO对象检测和ADE20K语义分割方面实现了最先进的准确性。
3.方法
3.1.总体结构
Swin Transformer 的总体结构概述如图 3 所示,展示了微型版本(SwinT)。它首先通过补丁分割模块(例如 ViT)将输入的 RGB 图像分割成不重叠的补丁。每个补丁被视为一个“令牌”,其特征被设置为原始像素 RGB 值的连接。在我们的实现中,我们使用 4×4 的补丁大小,因此每个补丁的特征维度为 4×4×3=48。在这个原始值特征上应用线性嵌入层,将其投影到任意维度(表示为 C)。这些补丁令牌上应用几个具有修改的自我关注计算的 Transformer 块(Swin Transformer 块)。Transformer 块保持令牌数量(H×W),以及与线性嵌入一起被称为“第一阶段”。
(图3.(a)Swin Transformer(Swin-T)的架构;(b)两个连续的Swin Transformer块(使用公式(3)表示符号)。W-MSA和SW-MSA是具有常规和移位窗口配置的多头自注意力模块)
Swin Transformer模块.Swin Transformer是通过将Transformer块中的标准多头自注意(MSA)模块替换为基于移位窗口的模块(在第3.2节中描述),并保持其他层不变来构建的。如图3(b)所示,Swin Transformer模块由基于移位窗口的MSA模块组成,后跟一个2层MLP,中间使用GELU非线性激活函数。在每个MSA模块和每个MLP之前应用LayerNorm(LN)层,并在每个模块之后应用剩余连接。
3.2. 移动窗口自注意力机制
标准的Transformer架构[64]以及其适用于图像分类[20]的改进都使用全局自注意力机制,其中计算每个标记与所有其他标记之间的关系。全局计算会导致与标记数呈二次复杂度相关的计算量,这使得它对于许多需要用大量标记进行密集预测或表示高分辨率图像的视觉问题不适用。为了有效建模,我们提出在局部窗口内计算自注意力。这些窗口被布置为以不重叠的方式平均分割图像。假设每个窗口包含M×M个补丁,则在h×w个补丁的图像上计算全局多头自注意力模块(MSA)和基于窗口的模块的计算复杂度分别为: 其中前者与补丁数hw的平方成二次复杂度相关,后者则在M固定时(默认为7)与补丁数hw成线性复杂度相关。对于大量补丁数hw,全局自注意力计算通常是无法承受的,而基于窗口的自注意力是可扩展的。
在连续的块中进行移位窗口划分 基于窗口的自注意力模块缺乏窗口间的连接,这限制了其建模能力。为了在保持非重叠窗口高效计算的同时引入窗口间的连接,我们提出了一种移位窗口划分方法,该方法在连续的Swin Transformer块中交替使用两种划分配置。如图2所示,第一个模块使用常规的窗口划分策略,从左上像素开始,将8×8的特征图均匀划分为2×2的大小为4×4(M = 4)的窗口。然后,下一个模块采用一个从前一层偏移的窗口配置,通过将窗口从常规划分的窗口移位bM2c;bM2c像素来实现。通过移位窗口划分方法,连续的Swin Transformer块按如下方式计算其中 z ^ l 和 zl 分别表示块l的(S)WMSA模块和MLP模块的输出特征;W-MSA和SW-MSA分别表示使用常规和移位窗口划分配置的基于窗口的多头自我注意力。移位窗口划分方法引入了相邻非重叠窗口的连接,在图像分类、目标检测和语义分割中被发现是有效的,如表4所示。
(图4.自注意力中移位窗口分区的高效批处理计算方法的示意图)
移位配置的高效批处理计算 为了实现平移配置的高效批处理计算,平移窗口分区存在一个问题,那就是将生成更多的窗口,从dMhe ×dMwe到(dMhe+1)×(dMwe+1),而其中一些窗口的大小将小于M×M4。一种朴素的解决方案是将较小的窗口填充到M×M的大小,并在计算注意力时屏蔽填充值。当常规分区中的窗口数较少时,例如2×2,这种朴素解决方案将导致计算量的增加相当大(从2×2到3×3,增加了2.25倍)。因此,我们提出了一种更为高效的批处理计算方法,通过向左上方循环移位,如图4所示。通过此位移,一个批量窗口可能由多个在特征图中不相邻的子窗口组成,因此使用遮罩机制将自我关注计算限制在每个子窗口内。通过循环位移,批量窗口的数量保持与常规窗口分区相同,因此也是高效的。此方法的低延迟在表5中展示。
相对位置偏差 在计算自注意力时,我们遵循[49,1,32,33],通过为每个头部计算相似性时包含相对位置偏差 B2RM2×M2:其中 Q;K;V 2RM2×d 是查询、键和值矩阵;d 是查询/键维度;M2 是窗口中补丁的数量。由于每个轴上的相对位置在范围[−M +1;M−1]内,我们将一个更小尺寸的偏差矩阵 B^2R(2M−1)×(2M−1) 参数化,B 中的值取自 B^。我们发现,相对于没有这个偏差项或使用绝对位置嵌入的对照方法,使用学习到的相对位置偏差可以显著提高性能,如表 4 所示。在输入中进一步添加绝对位置嵌入,如 [20] 中所示,会略微降低性能,因此没有采用。预训练中学习到的相对位置偏差还可通过双三次插值[20,63]用于初始化具有不同窗口大小的模型的微调。
3.3.架构变体
我们构建了 Swin-B 作为基本模型,其模型大小和计算复杂度与 ViTB/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,层数=f2;2;6;2g [...]
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的线性热身。使用一个batch size为1024,一个初始学习率为0.001,一个权重衰减为0.05。我们在训练中包括[63]的大多数增强和正则化策略,除了重复增强[31]和EMA [45],它们不会增强性能。请注意,这与[63]相反,其中重复增强对于稳定ViT的训练至关重要。
•在ImageNet-22K上预训练并在ImageNet-1K上微调。我们还在更大的ImageNet-22K数据集上进行预训练,该数据集包含1420万张图片和22K个类别。我们使用AdamW优化器进行90个epochs的训练,并使用5个epoch的线性热身的线性衰减学习率调度程序。使用一个batch size为4096,一个初始学习率为0.001,一个权重衰减为0.01。在ImageNet-1K微调中,我们使用batch size为1024,恒定学习率为10-5,权重衰减为10-8,对模型进行30个epoch的训练。
使用常规的ImageNet-1K训练的结果。表1(a)介绍了与其他主干(包括基于Transformer和ConvNet的)使用常规ImageNet-1K训练的比较。与先前最先进的基于Transformer的结构DeiT [63]相比,Swin Transformers在复杂度相似的情况下显着超越了DeiT架构:在2242输入下,Swin-T(81.3%)比DeiT-S(79.8%)高1.5%,在2242/3842输入下,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预训练的结果:我们还在ImageNet-22K上对更大容量的Swin-B和Swin-L进行了预训练。在ImageNet-1K图像分类上进行微调的结果显示在表1(b)中。对于Swin-B,ImageNet-22K预训练相较于从头开始训练的ImageNet-1K能获得1.8%∼1.9%的增益。与ImageNet-22K预训练的最佳结果相比,我们的模型在速度和准确性之间实现了明显更好的平衡:Swin-B获得了86.4%的top-1准确率,比有类似推理吞吐量的ViT高出了2.4%(84.7 vs. 85.9 张/秒),并且略低的FLOPs(47.0G vs.55.4G)。更大的Swin-L模型的top-1准确率达到了87.3%,比Swin-B模型高0.9%。
4.2.在COCO数据集上的目标检测任务
设置 我们在包含118K训练图像、5K验证图像和20K测试集图像的COCO 2017数据集上进行了目标检测和实例分割实验。我们使用验证集进行了消融研究,并在测试集上进行了系统级比较。在消融研究中,我们考虑了四种典型的目标检测框架:级联Mask R-CNN[29,6]、ATSS[79]、RepPoints v2[12]和Sparse RCNN[56](在mmdetection[10]中实现)。对于这四个框架,我们使用相同的设置:多尺度训练[8,56](将输入的较短边调整为480到800之间,较长边最大为1333),AdamW[44]优化器(初始学习率为0.0001,权重衰减为0.05,批大小为16),以及3x训练策略(36个epoch)。对于系统级比较,我们采用了改进的HTC[9](称为HTC++),其中包括instaboost[22]、更强的多尺度训练[7]、6x训练策略(72个epoch)、soft-NMS[5]和ImageNet-22K预训练模型作为初始化。
我们将Swin Transformer与标准的卷积神经网络(如ResNe(X)t)和之前的Transformer网络(如DeiT)进行了比较。比较是通过仅更改backbones而保持其他设置不变来进行的。需要注意的是,由于Swin Transformer和ResNe(X)t具有分层特征图,因此它们可以直接应用于所有上述框架,而DeiT只产生单一分辨率的特征图,不能直接应用。为了进行公平比较,我们按照[81]的方法使用反卷积层构建了DeiT的分层特征图。
与ResNe(X)t的比较 表2(a)列出了Swin-T和ResNet-50在四个目标检测框架上的结果。我们的Swin-T架构在与ResNet-50相比具有稍大的模型尺寸、FLOPs和延迟的情况下,带来了稳定的3.4∼4.2个box AP的提升。表2(b)在使用级联Mask R-CNN时比较了Swin Transformer和ResNe(X)t在不同模型容量下的表现。Swin Transformer实现了51.9个box AP和45.0个mask AP的高检测精度,相比于具有类似模型尺寸、FLOPs和延迟的ResNeXt101-64x4d,它们分别提高了3.6个box AP和3.3个mask AP。在使用改进的HTC框架时,基线更高,达到52.3个box AP和46.0个mask AP,Swin Transformer的提升也很高,分别为4.1个box AP和3.1个mask AP(见表2(c))。关于推理速度,虽然ResNe(X)t是由高度优化的Cudnn函数构建的,但我们的架构是使用内置的PyTorch函数实现的,并不都经过充分优化。深入的内核优化超出了本文的范围。
与DeiT的比较 在表2(b)中显示了使用级联Mask R-CNN框架的DeiT-S的性能。Swin-T的结果比具有相似模型尺寸(86M vs. 80M)的DeiT-S高出2.5个box AP和2.3个mask AP,并且推理速度显著更高(15.3 FPS vs. 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])。
4.3.ADE20K设置中的语义分割
设置 ADE20K[83]是一个广泛使用的语义分割数据集,包含150种广泛范围的语义类别。它总共有2.5万张图像,其中2万张用于训练,2千张用于验证,另外3千张用于测试。我们使用mmseg[16]中的UperNet[69]作为我们的基础框架,因为它的高效性。更多细节请参见附录。
结果 表3列出了不同方法/骨干网络对的mIoU,模型大小(#param),FLOPs和FPS。从这些结果可以看出,与相似计算成本的DeiT-S相比,Swin-S的mIoU更高,达到了+5.3(49.3比44.0)。它还比ResNet-101高+4.4的mIoU,比ResNeSt-101 [78]高+2.4的mIoU。我们的Swin-L模型在ImageNet-22K预训练的情况下,在val集上达到了53.5 mIoU,超过了以前最好的模型+3.2 mIoU(由SETR[81]获得,该模型大小更大)。
4.4.消融试验
在本节中,我们将在ImageNet-1K图像分类,COCO目标检测的级联掩蔽R-CNN和ADE20K语义分割的UperNet上消除建议的Swin Transformer中的重要设计元素。
移位窗口 移位窗口方法在三个任务上的消融结果见表4。在ImageNet-1K上,使用移位窗口划分的Swin-T在每个阶段顶部1精度上比单窗口划分构建的对应物高出1.1%,在COCO上的框AP /面膜AP上高出2.8/2.2,在ADE20K上高出2.8 mIoU。结果表明,使用移位窗口在前面的层之间建立连接是有效的。如表5所示,移位前的延迟开销也很小。
相对位置偏差 表4显示了不同位置嵌入方法的比较。使用相对位置偏差的Swin-T相对于没有位置编码和使用绝对位置嵌入的模型,可以在ImageNet-1K上提高1.2%/ 0.8%的顶部1精度,在COCO上提高了1.3 / 1.5框AP和1.1 / 1.3面膜AP,并在ADE20K上提高了2.3 / 2.9 mIoU。结果表明,相对位置偏差是有效的。此外,需要注意的是,尽管包括绝对位置嵌入可以提高图像分类的准确性(+0.4%),但它会损害目标检测和语义分割(COCO上的0.2框/面膜AP和ADE20K上的0.6mIoU)。尽管最近的ViT / DeiT模型在图像分类中放弃了平移不变性,尽管长期以来已经显示它对于视觉建模非常重要,但我们发现鼓励某种平移不变性的归纳偏差对于通用视觉建模仍然是可取的,特别是在目标检测和语义分割的密集预测任务中更是如此。
不同的自注意力方法 在表5中比较了不同自注意力计算方法和实现的实际速度。我们的循环实现比朴素填充更具硬件效率,特别是在更深的阶段。总体而言,在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)。
5.结论
本文介绍了Swin Transformer,一种新的视觉Transformer模型,它产生分层的特征表示,并且在输入图像尺寸方面具有线性的计算复杂度。Swin Transformer在COCO目标检测和ADE20K语义分割任务上取得了最先进的性能,明显超过了之前的最佳方法。我们希望Swin Transformer在各种视觉问题上的出色表现能够促进视觉和语言信号的统一建模。作为Swin Transformer的关键要素,基于移位窗口的自注意力机制在视觉问题上被证明是有效且高效的,我们期待进一步研究其在自然语言处理中的应用。
---------------------------------------------------------------------------------------------------------------------------------
A1.详细架构
规范详见表7,所有架构都假定输入图像尺寸为224×224。“Concat n ×n”表示合并n×n个相邻特征到一块,这个操作导致特征映射以n的速率降采样。“96-d”表示具有96个输出维度的线性层。“win.sz.7 ×7”表示窗口大小为7×7的多头自注意力模块。
A2.详细实验设置
A2.1.在ImageNet-1K上进行图像分类
图像分类通过在最后一个阶段的输出特征映射上应用全局平均池化层,然后接一个线性分类器来执行。我们发现这种策略与使用ViT [20]和DeiT [63]中的额外类记号一样准确。在评估中,使用单个裁剪报告top-1准确性。 常规ImageNet-1K训练 训练设置主要遵循[63]。对于所有模型变体,我们采用默认的输入图像分辨率2242。对于其他分辨率,例如3842,我们微调以2242分辨率训练的模型,而不是从头开始训练,以减少GPU消耗。
当使用2242输入从头开始训练时,我们使用AdamW [37]优化器进行300次迭代,使用余弦衰减学习率调度器,其中包括20个线性预热周期。使用批量大小为1024,初始学习率为0.001,权重衰减为0.05,最大范数为1的梯度剪裁。我们在训练中包括[63]的大多数增强和正则化策略,包括RandAugment [17]、Mixup [77]、Cutmix [75]、随机擦除 [82]和随机深度 [35],但不包括重复增强 [31]和指数移动平均(EMA)[45],因为它们不能增强性能。注意,这与ViT的训练稳定性密切相关的[63]不同。对于更大的模型,我们采用逐渐增加的随机深度增强,即Swin-T、Swin-S和Swin-B的值分别为0.2、0.3和0.5。对于在输入分辨率更大的情况下的微调,我们使用AdamW [37]优化器进行30次迭代,使用恒定的学习率10−5,权重衰减为10−8,以及与第一阶段相同的数据增强和正则化,除了随机深度的比率设为0.1。ImageNet-22K预训练:我们还对更大的ImageNet-22K数据集进行了预训练,该数据集包含1420万张图像和22K个类别。训练分两个阶段完成。对于第一个阶段采用2242输入,我们使用AdamW优化器进行90次迭代,使用线性衰减学习率调度器,其中包括5个线性预热周期。批量大小为4096,初始学习率为0.001,权重衰减为0.01。在ImageNet-1K微调的第二个阶段,采用2242/3842输入,我们将模型训练30次,批量大小为1024,恒定学习率为10−5,权重衰减为10−8。
'A2.2. COCO 数据集上的目标检测。
为了进行一项消融研究,我们考虑了四种典型的目标检测框架:Cascade Mask R-CNN [29,6]、ATSS [79]、RepPoints v2 [12] 和 Sparse RCNN [56] 在 mmdetection [10] 中。对于这四个框架,我们采用相同的设置:多尺度训练 [8,56](将输入的短边调整为 480 至 800 之间,长边最多为 1333),AdamW [44] 优化器(初始学习率为 0.0001,权重衰减为 0.05,批量大小为 16),以及 3x 日程表(36 个纪元,学习率在第 27 和第 33 个纪元时下降 10 倍)。对于系统级比较,我们采用改进的 HTC [9](标记为 HTC++),并使用 instaboost [22]、更强的多尺度训练 [7] (将输入的短边调整为 400 至 1400 之间,长边最多为 1600),6x 日程表(72 个纪元,学习率在第 63 和第 69 个纪元时以 0.1 为因子下降),softNMS [5],以及附加在最后阶段输出处的额外全局自注意层和 ImageNet-22K 预训练模型作为初始化。我们对所有 Swin Transformer 模型采用 0:2 的随机深度比率。'
'A2.3.ADE20K上的语义分割
ADE20K [83]是一个广泛使用的语义分割数据集,涵盖了150个语义类别。总共有25K个图像,其中20K用于训练,2K用于验证,另外3K用于测试。我们利用mmsegmentation [16]中的UperNet [69]作为基础框架,因为它具有高效率。在训练中,我们采用AdamW [44]优化器,初始学习率为6 x 10−5,权重衰减为0.01,采用线性学习率衰减的调度器,线性热身1,500次迭代。模型在8个GPU上训练,每个GPU有2个图像,总共进行160K次迭代。对于增强,我们采用mmsegmentation中的默认设置,如随机水平翻转,随机比例调整[0.5,2.0]和随机光度失真。对于所有Swin Transformer模型,采用比率为0.2的随机深度。Swin-T、Swin-S采用512×512的标准设置进行训练。Swin-B和Swin-L带有z表示这两个模型在ImageNet-22K上进行了预训练,并以640×640的输入进行训练。在推理中,采用多尺度测试,使用与训练的分辨率比例为[0.5,0.75,1.0,1.25,1.5,1.75]的分辨率。在报告测试分数时,遵循常用做法[71],同时使用训练图像和验证图像进行训练。'
A3.更多实验
A3.1.使用不同输入尺寸的图像分类
表8列出了使用2242至3842不同输入图像尺寸的Swin Transformer的表现。一般而言,较大的输入分辨率可以获得更好的top-1准确率,但推理速度较慢。
A3.2. COCO上ResNe(X)t的不同优化器
表9比较了ResNe(X)t骨干网络在COCO对象检测中AdamW和SGD优化器的性能。比较使用了级联掩膜R-CNN框架。尽管SGD通常在级联掩膜R-CNN框架中作为默认优化器使用,但我们通常会发现通过将其替换为AdamW优化器可以提高精度,尤其是对于较小的骨干网络。因此,与提出的Swin Transformer架构相比,我们在ResNe(X)t骨干网络中使用AdamW。
A3.3. Swin MLP-Mixer
我们将所提出的分层设计和移位窗口方法应用于MLP-Mixer架构 [61],并称为Swin-Mixer。表10显示了Swin-Mixer与原始MLPMixer架构MLP-Mixer [61]和后继方法ResMLP [61]的性能对比。Swin-Mixer使用略小的计算预算(10.4G vs. 12.7G)比MLP-Mixer表现显著更好(81.3% vs. 76.4%)。与ResMLP [62]相比,它还具有更好的速度精度平衡。这些结果表明所提出的分层设计和移位窗口方法是通用的。
表1.不同骨干网络在ImageNet-1K分类任务上的比较。吞吐量是使用GitHub上的[68]代码和V100 GPU,遵循[63]的方法进行测量。
Table 1.Comparison of different backbones on ImageNet-1K clas sification.Throughput is measured using the GitHub repository of [68]and a V100 GPU,following [63].
| |||||
method | Image size | #param. | FLOPs | Throughput (image/s) | ImageNet top-1 acc. |
RegNetY-4G | 2242 | 21M | 4.0G | 1156.7 | 80.0 |
RegNetY-8G | 2242 | 39M | 8.0G | 591.6 | 81.7 |
RegNetY-16G | 2242 | 84M | 16.0G | 334.7 | 82.9 |
EffNet-B3 | 3002 | 12M | 1.8G | 732.1 | 81.6 |
EffNet-B4 | 3802 | 19M | 4.2G | 349.4 | 82.9 |
EffNet-B5 | 4562 | 30M | 9.9G | 169.1 | 83.6 |
EffNet-B36 | 5282 | 43M | 19.0G | 96.9 | 84.0 |
EffNet-B7 | 6002 | 66M | 37.9G | 55.1 | 84.3 |
ViT-B/16 | 3842 | 86M | 55.4G | 85.9 | 77.9 |
ViT-L/16 | 3842 | 307M | 190.7G | 27.3 | 76.5 |
DeiT-s | 2242 | 22M | 4.6G | 940.4 | 79.8 |
DeiT-B | 2242 | 86M | 17.5G | 292.3 | 81.8 |
DeiT-B | 3842 | 86M | 55.4G | 85.9 | 83.1 |
Swin-T | 2242 | 29M | 4.5G | 755.2 | 81.3 |
Swin-S | 2242 | 50M | 8.7G | 436.9 | 83.0 |
Swin-B | 2242 | 88M | 15.4G | 278.1 | 83.5 |
Swin-B | 3842 | 88M | 47.0G | 84.7 | 84.5 |
(b)ImageNet-22K 预训练模型 | |||||
method | Image size | #param. | FLOPs | Throughput (image/s) | ImageNet top-1 acc. |
R-101x3 | 3842 | 388M | 204.6G | - | 84.4 |
R-152x4 | 4802 | 937M | 840.5G | - | 85.4 |
ViT-B/16 | 3842 | 86M | 55.4G | 85.9 | 84.0 |
ViT-L/16 | 3842 | 307M | 190.7G | 27.3 | 85.2 |
Swin-B | 2242 | 88M | 15.4G | 278.1 | 85.2 |
Swin-B | 3842 | 88M | 47.0G | 84.7 | 86.4 |
Swin-L | 3842 | 197M | 103.9G | 42.1 | 87.3 |
表2.COCO物体检测和实例分割结果。y表示使用了额外的解卷积层来生成分层特征映射。*表示多尺度测试。
Table 2.Results on COCO object detection and instance segmen tation.ydenotes that additional decovolution layers are used to produce hierarchical feature maps.*indicates multi-scale testing
| |||||||
Method | Backbone | APbox | Apbox50 | Apbox75 | #params | FLOPs | FPS |
Cascade | R-50 | 46.3 | 64.3 | 50.5 | 82M | 739G | 18.0 |
Mask R-CNN | 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-50 | 44.5 | 63.4 | 48.2 | 106M | 166G | 21.0 |
R-CNN | Swin-T | 47.9 | 67.3 | 52.3 | 110M | 172G | 18.4 |
这个表格是目标检测算法在不同的模型架构和训练方法下的性能表现比较。其中,APbox代表平均精确度,APbox 50和APbox 75分别代表IoU为0.5和0.75时的平均精确度,#param.FLOPs代表模型的参数数量和浮点运算次数,FPS代表每秒处理图像的帧数。
各个模型架构包括Backbone、Cascade Mask R-CNN、ATSS、RepPointsV2和Sparse R-CNN。其中,Backbone是指模型的主干网络,Cascade Mask R-CNN是一种级联式的目标检测算法,ATSS是一种基于anchor的目标检测算法,RepPointsV2是一种基于点的目标检测算法,Sparse R-CNN是一种稀疏特征的目标检测算法。
除了模型架构,也比较了不同的训练方法,例如在Swin-T架构下的表现等。通过比较这些性能指标和参数,可以评估不同模型和训练方法的优劣,以便选择最适合特定任务的模型。
APbox是指在目标检测任务中,根据检测框与真实框的IoU值计算得出的平均精确度,其中IoU(Intersection over Union)是指检测框和真实框的交集面积与它们的并集面积的比值。APbox 50和APbox 75是指在IoU阈值为0.5和0.75时计算得出的平均精确度。当IoU阈值越大时,代表着对于目标检测算法的检测结果要求更加严格,能检测出更准确的目标框,因此APbox 75的数值一般会比APbox 50更小,而APbox则是两者的综合评价。
| |||||||||
APbox | Apbox50 | Apbox75 | APmask | Apmask50 | Apmask75 | #params | FLOPs | FPS | |
DeiT-S+ | 48.0 | 67.2 | 51.7 | 41.4 | 64.2 | 44.3 | 80 | 889 | 10.4 |
R50 | 46.3 | 64.3 | 50.5 | 40.1 | 61.7 | 43.4 | 82 | 739 | 18.0 |
Swin-T | 50.5 | 69.3 | 54.9 | 43.7 | 66.6 | 47.1 | 86 | 745 | 15.3 |
X101-32 | 48.1 | 66.5 | 52.4 | 41.6 | 63.9 | 45.2 | 101 | 819 | 12.8 |
Swin-S | 51.8 | 70.4 | 56.3 | 44.7 | 67.9 | 48.5 | 107 | 838 | 12.0 |
X101-64 | 48.3 | 66.4 | 52.3 | 41.7 | 64.0 | 45.1 | 140 | 972 | 10.4 |
Swin-B | 51.9 | 70.9 | 56.5 | 45.0 | 68.4 | 48.7 | 145 | 982 | 11.6 |
(c)System-level Comprision | ||||||
Method | Mini-val | Test-dev | ||||
APbox | APmask | APbox | APmask | #params | FLOPs | |
RepPoint V2* | - | - | 52.1 | - | - | - |
GCNet* | 51.8 | 44.7 | 52.3 | 45.4 | - | 1041G |
RelationNet++* | - | - | 52.7 | - | - | - |
SpineNet-190 | 52.6 | - | 52.8 | - | 164M | 1885G |
ResNetSt-200* | 52.5 | - | 53.3 | 47.1 | - | - |
EfficientDet-D7 | 54.4 | - | 55.1 | - | 77M | 410G |
DetectoRS* | - | - | 55.7 | 48.5 | - | - |
YOLOv4 P7* | - | - | 55.8 | - | - | - |
Copy-paste | 55.9 | 47.2 | 56.0 | 47.4 | 185M | 1440G |
X101-64(HTC++) | 52.3 | 46.0 | - | - | 155M | 1033G |
Swin-B(HTC++) | 56.4 | 49.1 | - | - | 160M | 1043G |
Swin-L(HTC++) | 57.1 | 49.5 | 57.7 | 50.2 | 284M | 1470G |
Swin-L(HTC++)* | 58.0 | 50.4 | 58.7 | 51.1 | 284M | - |
1. RepPoint V2是一种基于点的目标检测算法,其通过将目标表示为一组可变形的点来实现目标检测。该算法在处理高密度物体时表现良好,并且能够精确地定位物体的边界。
2. GCNet是一种全局上下文注意力机制,其通过对特征图进行不同的通道注意力加权来改善目标检测的性能。该算法可以很好地捕捉全局上下文信息,从而提高目标检测的准确率。
3. RelationNet++是一种基于关系网络的目标检测算法,其通过对物体之间的关系进行建模来实现目标检测。该算法能够处理复杂场景下的目标检测任务,并且具有较高的准确率。
4. SpineNet-190是一种轻量级的神经网络架构,其通过减少卷积操作的数量来降低模型的计算复杂度。该算法能够在保持较高准确率的同时,大幅度减少计算资源的消耗。
5. ResNetSt-200是一种基于残差网络的目标检测算法,其通过多个残差块来提高模型的准确率。该算法具有较强的鲁棒性和泛化能力。
6. EfficientDet-D7是一种基于EfficientNet的目标检测算法,其通过使用轻量级的网络架构和可变形卷积来提高模型的准确率。该算法能够在保持较高准确率的同时,大幅度减少计算资源的消耗。
7. DetectoRS是一种基于RetinaNet的目标检测算法,其通过引入可变形卷积和多尺度特征融合来提高模型的准确率。该算法能够在处理不同尺度的物体时保持较高的准确率。
8. YOLOv4 P7是一种基于YOLOv4的目标检测算法,其通过使用大尺度的P7特征图和多尺度训练来提高模型的准确率。该算法可以很好地处理小目标检测问题,并且具有较高的速度和准确率。
9. Copy-paste是一种基于实例分割的目标检测算法,其通过将实例分割结果转化为检测结果来实现目标检测。该算法能够处理复杂场景下的目标检测任务,并且具有较高的准确率。
10. X101-64(HTC++)是一种基于Faster R-CNN的目标检测算法,其通过使用更加复杂的网络架构和多尺度训练来提高模型的准确率。该算法能够在处理大规模目标检测问题时保持较高的准确率。
11. Swin-B(HTC++)是一种基于Transformer的目标检测算法,其通过使用分层注意力机制和局部窗口机制来提高模型的准确率。该算法能够处理不同尺度的物体并具有较高的准确率。
12. Swin-L(HTC++)是一种基于Transformer的大型目标检测算法,其通过使用更多的特征层和更大的模型参数来提高模型的准确率。该算法能够在保持较高准确率的同时,适应更加复杂的目标检测任务。
13. Swin-L(HTC++)*是对Swin-L(HTC++)算法的改进版本,其在原有模型的基础上引入了可变形卷积和预测分支,并取得了更高的目标检测准确率
表3.ADE20K验证集和测试集上的语义分割结果。y表示使用额外的解卷积层生成分层特征图。z表示该模型在ImageNet-22K上预先训练。
Table 3.Results of semantic segmentation on the ADE20K val and test set.y indicates additional deconvolution layers are used to produce hierarchical feature maps.z indicates that the model is pre-trained on ImageNet-22K.
ADE20k | Val | Test | #params. | FLOPs | FPS | |
Method | Backbone | mIoU | score | |||
DANet | ResNet-101 | 45.2 | - | 69M | 1119G | 15.2 |
Dlab.v3+ | ResNet-101 | 44.1 | - | 63M | 1021G | 16.0 |
ACNet | ResNet-101 | 45.9 | 38.5 | - | ||
DNL | ResNet-101 | 46.0 | 56.2 | 69M | 1249G | 14.8 |
OCRNet | ResNet-101 | 45.3 | 56.0 | 56M | 923G | 19.3 |
UperNet | ResNet-101 | 44.9 | - | 86M | 1029G | 20.1 |
OCRNet | HRNet-w48 | 45.7 | - | 71M | 664G | 12.5 |
DLab.v3+ | ResNetSt-101 | 46.9 | 55.1 | 66M | 1051G | 11.9 |
Dlab.v3+ | ResNetSt-200 | 48.4 | - | 88M | 1381G | 8.1 |
SETR | 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 | 1941G | 8.7 |
UperNet | Swin-L | 53.5 | 62.8 | 234M | 3230G | 6.2 |
该表格是关于在ADE20K数据集上进行语义分割任务的结果。该数据集包括来自不同场景和环境下的图像,每张图像都被分为150类。
该表格主要展示了不同模型在ADE20K验证集和测试集上的平均交并比(mIoU)和得分(score),同时还展示了每个模型的FPS(每秒处理帧数),参数量和浮点运算量(FLOPs)等指标。
该表格揭示了在ADE20K数据集上进行语义分割任务时,不同模型的效果和性能。其中,DLab.v3+和ACNet等模型在mIoU和score指标上表现较好,而SETR和Swin-Bz等模型则在这些指标上取得了更好的成绩。此外,表格还展示了不同模型的FPS、参数量和FLOPs等指标,这些指标可以帮助研究人员选择合适的模型来适应不同的场景和需求。
具体来说,表格中的参数含义如下:
FPS:每秒处理帧数,值越大表示处理速度越快。
mIoU:平均交并比,表示模型对不同类别像素的识别准确度。
score:得分,也是模型对不同类别像素的识别准确度,但采用的评估方式和mIoU略有不同。
FLOPs:浮点运算量,表示模型进行推理时需要执行的浮点计算次数,值越大表示模型计算复杂度越高。
参数量:表示模型的参数数量,值越大表示模型规模越大。
而模型的具体含义如下:
DANet:基于残差网络ResNet-101和自注意力机制的语义分割模型。
DLab.v3+:基于ResNet-101或ResNeSt-101等网络和多尺度特征融合的语义分割模型。
ACNet:基于ResNet-101网络和多尺度注意力机制的语义分割模型。
DNL:基于ResNet-101网络和动态卷积机制的语义分割模型。
OCRNet:基于ResNet-101或HRNet-w48等网络和OCR模块的语义分割模型。
UperNet:基于ResNet-101或HRNet-w48等网络和上采样模块的语义分割模型。
ResNeSt-101/200:基于ResNet-101/200网络和特征重排模块的改进型网络。
SETR:基于Transformer结构和注意力机制的语义分割模型。
DeiT-S:基于Transformer结构和图像分类预训练模型DeiT-S的语义分割模型。
Swin-T/S/Bz/Lz:基于局部注意力机制和分级特征融合的新型网络结构Swin Transformer的语义分割模型。
总体来说,该表格揭示了在ADE20K语义分割数据集上不同模型的表现,提供了研究人员选择和评估模型的参考。
FPS是英文"Frames Per Second"的缩写,翻译为中文是"每秒帧数"。在计算机图形学中,FPS指的是显示器或计算机图形处理器每秒钟可以刷新多少次图像,也就是每秒钟可以显示多少帧画面。在计算机视觉领域中,FPS常常用来衡量一个计算机视觉算法或模型的性能,表示该算法或模型每秒钟能够处理的图像帧数。通常情况下,FPS数值越大表示算法或模型的处理速度越快。例如,在实时视频处理场景中,需要保证算法或模型的FPS数值足够高,以确保能够实时地处理视频数据。
要得到以上表格中的实验数据,首先需要选择合适的语义分割模型和数据集,例如在该表格中使用的语义分割模型有ResNet、ResNeSt、HRNet、SETR和Swin Transformer等,数据集为ADE20K。然后需要进行以下实验或工作:
数据集准备:将ADE20K数据集下载并解压,包括训练集、验证集和测试集。根据需要,可以对数据集进行预处理,例如对图像进行裁剪、缩放、旋转等操作,以便更好地适应模型的输入。
模型训练:使用选定的语义分割模型,在ADE20K训练集上进行模型训练。训练过程中需要设置合适的超参数,例如学习率、批量大小、训练轮数等。训练过程中可以使用数据增强技术提高模型的泛化能力。
模型评估:使用训练好的模型,在ADE20K验证集和测试集上进行模型评估。评估指标包括mIoU、FPS、FLOPs等。可以使用不同的评估技术,例如交叉验证、k折交叉验证等,以获得更准确和可靠的评估结果。
实验分析:根据评估结果,对模型的性能进行分析和比较。可以分析不同模型的优缺点,探究模型的性能瓶颈和改进方向。可以比较不同模型在不同硬件设备上的性能,例如CPU、GPU、TPU等。可以探究不同超参数设置对模型性能的影响,例如学习率、批量大小等。
需要注意的是,以上实验和工作只是语义分割领域的一部分,具体的实验准备和安排需要根据具体情况来确定。在进行实验之前,还需要进行文献调研,了解该领域的最新研究进展和技术趋势,以便更好地设计和实现实验
表格4.在三个基准测试中使用Swin-T架构对移位窗口方法和不同位置嵌入方法进行削减研究。没有移位:所有自注意模块采用常规窗口分割,不进行移位;abs.pos.:ViT的绝对位置嵌入项;rel.pos.:带有额外相对位置偏差项的默认设置(请参见方程(4));app.:方程(4)中第一个缩放点积项。
Table 4.Ablation study on the shifted windows approach and dif ferent position embedding methods on three benchmarks,using the Swin-T architecture.w/o shifting:all self-attention modules adopt regular window partitioning,without shifting;abs.pos.:ab solute position embedding term of ViT;rel.pos.:the default set tings with an additional relative position bias term (see Eq.(4));app.:the first scaled dot-product term in Eq.(4).
ImageNet | COCO | ADE20k | |||
Top-1 | Top-5 | APbox | APmask | mIoU | |
w/o shifting | 80.2 | 95.1 | 47.7 | 41.5 | 43.3 |
shifted windows | 81.3 | 95.6 | 50.5 | 43.7 | 46.1 |
no pos. | 80.1 | 94.9 | 49.2 | 42.6 | 43.8 |
abs. pos. | 80.5 | 95.2 | 49.0 | 42.4 | 43.2 |
Abs.+rel.pos. | 81.3 | 95.6 | 50.2 | 43.4 | 44.0 |
rel.pos.w/o app. | 79.3 | 94.7 | 48.2 | 41.9 | 44.1 |
rel.pos. | 81.3 | 95.6 | 50.5 | 43.7 | 46.1 |
该表格是对Swim-T架构在三个基准测试(ImageNet、COCO、ADE20k)中,使用移位窗口方法和不同位置嵌入方法进行削减研究的结果。其目的是探究不同参数和方法对模型性能的影响,以便更好地了解Swim-T架构的优势和局限性,从而进行模型优化和改进。
具体来说,该表格中的参数和模型含义如下:
w/o shifting:所有自注意模块采用常规窗口分割,不进行移位。
shifted windows:使用移位窗口方法。
no pos.:不使用任何位置嵌入方法。
abs.pos.:使用ViT的绝对位置嵌入项。
Abs.+rel.pos.:使用默认设置,即带有额外相对位置偏差项的位置嵌入方法。
rel.pos.w/o app.:使用默认设置中去掉第一个缩放点积项的位置嵌入方法。
rel.pos.:使用默认设置中的位置嵌入方法。
其中,移位窗口方法是一种新的窗口分割方法,通过在局部区域内进行移位,来获得更多的位置信息。位置嵌入方法是指将位置信息嵌入到模型中,以便模型能够更好地理解不同位置之间的关系。
通过对比不同参数和方法的实验结果,可以发现:
在所有三个基准测试中,使用移位窗口方法都可以显著提高模型性能,证明了该方法的有效性。
在ImageNet和COCO数据集上,使用Abs.+rel.pos.方法可以获得最好的性能,而在ADE20k数据集上,使用rel.pos.方法可以获得最好的性能。这说明了不同数据集和任务对位置嵌入方法的适应性不同。
相对位置偏差项对模型性能的提升贡献较大,而第一个缩放点积项的贡献相对较小。
综上所述,该表格揭示了Swim-T架构在不同参数和方法下的性能表现,为后续的模型优化和改进提供了重要的参考
表5.在V100 GPU上不同自注意力计算方法和实现的实际速度。
Table 5.Real speed of different self-attention computation meth ods and implementations on a V100 GPU.
method | MSA in a stage(ms) | Arch.(FPS) | |||||
S1 | S2 | S3 | S4 | T | S | B | |
Sliding window(naive) | 122.5 | 38.3 | 12.1 | 7.6 | 183 | 109 | 77 |
Sliding window(kernel) | 7.6 | 4.7 | 2.7 | 1.8 | 488 | 283 | 187 |
Performer | 4.8 | 2.8 | 1.8 | 1.5 | 638 | 370 | 241 |
Window(w/o shifting) | 2.8 | 1.7 | 1.2 | 0.9 | 770 | 444 | 280 |
Shifted window(padding) | 3.3 | 2.3 | 1.9 | 2.2 | 670 | 371 | 236 |
Shifted window(cyclic) | 3.0 | 1.9 | 1.3 | 1.0 | 755 | 437 | 278 |
表格6. Swin Transformer 在三个基准测试中使用不同的自注意力计算方法的准确性。
Table 6.Accuracy of Swin Transformer using different methods for self-attention computation on three benchmarks.
Backbone | ImageNet | COCO | ADE20k | |||
Top-1 | Top-5 | APbox | APmask | mIoU | ||
Sliding window | Swin-T | 81.4 | 95.6 | 50.2 | 43.5 | 45.8 |
Performer | Swin-T | 79.0 | 94.2 | - | - | - |
Shifted window | Swin-T | 81.3 | 85.6 | 81.3 | 95.6 | 46.1 |
表7.详细的架构规格。
Table 7.Detailed architecture specifications.
Downsp.rate (output size) | Swin-T | Swin-S | Swin-B | Swin-L | |
Stage1 | 4x (56x56) | concat4x4, 96-d,LN | concat4x4,96-d,LN | concat4x4,128-d,LN | concat4x4,192-d,LN |
[win.sz.7x7 Dim 96,head 3]x2 | [win.sz.7x7 Dim 96,head 3]x2 | [win.sz.7x7 Dim 128,head 4]x2 | [win.sz.7x7 Dim 192,head 6]x2 | ||
Stage2 | 8x (28x28) | Concat2x2, 192-d,LN | Concat2x2, 192-d,LN | Concat2x2, 256-d,LN | Concat2x2, 384-d,LN |
[win.sz.7x7 Dim192,head6]x2 | [win.sz.7x7 Dim192,head6]x2 | [win.sz.7x7 Dim256,head8]x2 | [win.sz.7x7 Dim384,head12]x2 | ||
Stage3 | 16x (14x14) | Concat2x2, 384-d,LN | Concat2x2, 384-d,LN | Concat2x2, 512-d,LN | Concat2x2, 768-d,LN |
[win.sz.7x7 Dim384,head12]x6 | [win.sz.7x7 Dim384,head12]x18 | [win.sz.7x7 Dim512,head16]x18 | [win.sz.7x7 Dim768,head24]x18 | ||
Stage4 | 32x (7x7) | Concat2x2, 768-d,LN | Concat2x2, 768-d,LN | Concat2x2, 1024-d,LN | Concat2x2, 1536-d,LN |
[win.sz.7x7 Dim768,head24]x2 | [win.sz.7x7 Dim768,head24]x2 | [win.sz.7x7 Dim1024,head32]x2 | [win.sz.7x7 Dim1536,head48]x2 |
表8.在ImageNet-1K分类中,使用不同输入图片尺寸的Swin Transformer。
Table 8.Swin Transformers with different input image size on ImageNet-1K classification.
Input size | Swin-T | Swin-S | Swin-B | |||
top-1 acc | throughput (image/s) | top-1 acc | throughput (image/s) | top-1 acc | throughput (image/s) | |
2242 | 81.3 | 755.2 | 83.0 | 436.9 | 83.3 | 278.1 |
2562 | 81.6 | 580.9 | 83.4 | 336.7 | 83.7 | 208.1 |
3202 | 82.1 | 342.0 | 83.7 | 198.2 | 84.0 | 132.0 |
3842 | 82.2 | 219.5 | 83.9 | 127.6 | 84.5 | 84.7 |
表9. 在Cascade Mask R-CNN框架下,SGD和AdamW优化器在ResNe(X)t骨干网络上进行的COCO物体检测比较。
Table 9.Comparison of the SGD and AdamW optimizers for ResNe(X)t backbones on COCO object detection using the Cas cade Mask R-CNN framework.
Backbone | Optimizer | APbox | APbox50 | APbox75 | APmask | APmask50 | APmask75 |
R50 | SGD | 45.0 | 62.9 | 48.8 | 38.5 | 59.9 | 41.4 |
Adam W | 46.3 | 64.3 | 50.5 | 40.1 | 61.7 | 43.4 | |
X101-32x3d | SGD | 47.8 | 65.9 | 51.9 | 40.4 | 62.9 | 43.5 |
Adam W | 48.1 | 66.5 | 52.4 | 41.6 | 63.9 | 45.2 | |
X101-64x4d | SGD | 48.8 | 66.9 | 53.0 | 41.4 | 63.9 | 44.7 |
Adam W | 48.3 | 66.4 | 52.3 | 41.7 | 64.0 | 45.1 |
这段文字提供了几个模型的backbone和优化器的信息,下面对其进行解释:
R50:指的是ResNet-50,是一种常用的卷积神经网络模型,其backbone采用的是50层的Residual Block。这里使用的优化器是SGD,即随机梯度下降法,是一种常用的优化器,通过不断更新模型权重来最小化损失函数,从而提高模型性能。
X101-32x3d:指的是X101-32x3d模型,是一种使用3D卷积的卷积神经网络模型,其backbone采用的是101层的ResNet,并且使用了3D卷积来提取时序特征。这里同样使用的是SGD优化器。
X101-64x4d:指的是另一种X101模型,其backbone同样采用的是101层的ResNet,但是使用的是64倍的通道数和4倍的特征大小。这里同样使用的是SGD优化器。
SGD和Adam W:是两种不同的优化器。前面已经提到,SGD是一种随机梯度下降法,其通过不断迭代来更新模型权重。而Adam W则是一种基于动量的自适应优化器,其通过考虑历史梯度信息来调整学习率和动量,从而更好地适应不同的数据分布和损失函数形态。Adam W是Adam优化器的一种变体,主要是针对权重衰减(weight decay)进行了优化。
表10. Swin MLP-Mixer在ImageNet-1K分类上的性能。D表示每个头部的通道数。吞吐量使用[68]的GitHub存储库和V100 GPU进行测量,遵循[63]。
Table 10.Performance of Swin MLP-Mixer on ImageNet-1K clas sification.D indictes the number of channels per head.Through put is measured using the GitHub repository of [68]and a V100 GPU,following [63].
method | Image size | #param. | FLOPs | throghput (image/s) | ImageNet Top-1 acc. |
MLP-Mixer-B/16 | 2242 | 59 | 12.7 | - | 76.4 |
ResMLP-S24 | 2242 | 30 | 6.0 | 715 | 79.4 |
ResMLP-B24 | 2242 | 116 | 23.0 | 231 | 81.0 |
Swin-T/D24 (transformer) | 2562 | 28 | 5.9 | 563 | 81.6 |
Swin-Mixer-T/D24 | 2562 | 20 | 4.0 | 807 | 79.4 |
Swin-Mixer-T/D12 | 2562 | 21 | 4.0 | 792 | 79.6 |
Swin-Mixer-T/D6 | 2562 | 23 | 4.0 | 766 | 79.7 |
Swin-Mixer-B/D24 (no shift) | 2242 | 61 | 10.4 | 409 | 80.3 |
Swin-Mixer-B/D24 | 2242 | 61 | 10.4 | 409 | 81.3 |
MLP-Mixer-B/16:指的是一种基于MLP的神经网络模型,其使用了多层感知机(MLP)来进行特征提取。B/16表示该模型的深度为B,分辨率降采样倍数为16。
ResMLP-S24:指的是一种基于ResNet的神经网络模型,其backbone采用的是一些Residual Block,并且使用了MLP来进行特征提取。S24表示该模型的深度为24,并且采用了分辨率降采样。
ResMLP-B24:指的是另一种基于ResNet的神经网络模型,其backbone同样采用的是Residual Block,并且使用了MLP来进行特征提取。B24表示该模型的深度为24。
Swin-T/D24:指的是一种基于Transformer的神经网络模型,其backbone采用的是Swin Transformer,并且使用了分层的分辨率降采样。T/D24表示该模型的深度为24,并且采用了分辨率降采样。
Swin-Mixer-T/D24、Swin-Mixer-T/D12、Swin-Mixer-T/D6:都是基于Swin Transformer和MLP的神经网络模型,其backbone同样采用了分层的分辨率降采样。其中T/D24、T/D12和T/D6分别表示模型深度和分辨率降采样程度不同。
Swin-Mixer-B/D24(no shift)、Swin-Mixer-B/D24:都是基于Swin Transformer和MLP的神经网络模型,其backbone同样采用了分层的分辨率降采样。其中B/D24(no shift)表示模型使用了无偏移注意力机制,而B/D24则表示模型使用了偏移注意力机制。