Swin Transformer(Liu et al。,2021)是一个基于Transformer的深度学习模型,在视觉任务中取得了最先进的性能。与VIT不同Swin Transformer更加高效并且有更高的精度。由于Swin Transformer的一些特性,现在许多视觉的模型体系结构中,Swin Transformers还是被用作模型的骨干。本文旨在使用插图和动画为Swin Transformers提供全面的指南,以帮助您更好地理解这些概念。
Swin Transformer 一个改进的VIT
近年来,Transformer(Vaswani ,2017)在自然语言处理(NLP)任务中占据了深度学习体系结构。Transformer在NLP中的巨大成功激发了研究它用于其他任务的研究。
2020年,将纯粹的Transformer体系结构应用视觉任务的Vision Transformer(VIT)引起了AI社区的广泛关注。尽管有希望,但VIT并不完美,还是包含了几个缺点。这里面最严重的一个就是VIT和高分辨率图像的兼容性,因为其计算会产生与图像大小相关的二次复杂度。
VIT的一系列研究工作大多数是对标准Transformer体系结构进行了增强。2021年微软研究人员发表了Swin Transformer(Liu,2021),这可以说是原始VIT后最令人兴奋的研究之一。
Swin架构和关键概念
Swin Transformer引入了两个关键概念来解决原始ViT面临的问题——层次化特征映射和窗口注意力转换。事实上,Swin Transformer的名字来自于“Shifted window Transformer”。Swin Transformer的总体架构如下所示。
Swin Transformer总体架,' patch partition '被用作第一个块。为了简单起见,我使用“patch merging’”作为图中的第一个块,因为它们的操作类似。
正如我们所看到的,“patch merging”块和“Swin Transformer块”是Swin Transformer中的两个关键构建块。在下一节中,我们将详细介绍这两个块。
分层特征图
VIT的第一个重大区别是是Swin Transformer构建“分层特征图”。让我们将其分为两个部分
首先,“特征图”只是从每个连续层生成的中间张量。至于“分层”,在这里指的是特征映射从一层到另一层合并(下一节详细介绍),有效地降低了从一层到另一层的特征映射的空间维数(即向下采样)。
Swin Transformer中的分层特征映射。特征映射在每一层之后逐步合并和下采样,创建具有层次结构的特征映射。本图为了简单起见,省略了特性映射的深度。
可能会注意到,这些分层特征映射的空间分辨率与ResNet中的相同。因为这样做是有意的,这样Swin Transformer就可以方便地在现有的视觉任务方法中替换ResNet骨干网络。
更重要的是,这些分层的特性映射允许Swin Transformer应用于需要细粒度预测的领域,例如语义分割。而ViT在整个架构中使用单一的、低分辨率的特性图并不适应这类的任务。
Patch Merging
在前一节中,我们已经看到了如何通过逐步合并和降低特征图的空间分辨率来构建分层特征图。在ResNet等卷积神经网络中,特征映射的下采样是通过卷积操作完成的。那么在不使用卷积的情况下,我们如何对纯Transformer网络中的特征映射进行下采样呢?
Swin Transformer中使用的无卷积下采样技术被称为Patch Merging。在这种情况下,“Patch ”指的是特征图中的最小单位。换句话说,在一个14x14的feature map中,有14x14=196个Patch 。
为了对特征映射下采样n倍,patch merge将每一组n × n个相邻patch的特征连接起来。通过语言描述可能很难理解,所以我创建了一个动画来更好地说明这一点。
完整文章
https://avoid.overfit.cn/post/50b62c574f364a62b53c4db363486f74