提到Transformer,很多人首先想到的是自然语言处理模型。
然而,Transformer如今也能够在计算机视觉领域发挥重要作用,效果不容小觑。
例如,微软研究院最新提出的Swin Transformer,在COCO数据集的分割检测任务上实现了显著的提升,达到了最新的技术水平。

关注自然语言处理的朋友们可能会问,使用Transformer处理计算机视觉任务的想法早已有之,但并未对CNN的主导地位造成影响。Swin Transformer有何不同之处呢?
这里涉及到Transformer在计算机视觉应用中存在的两个主要挑战:
首先,基于Transformer的模型,Token的长度是固定的。这在自然语言处理中是可行的,但在计算机视觉中,由于视觉元素的大小各异,例如同一场景中可能存在不同尺寸的物体,这就带来了挑战。其次,图像中的像素对分辨率的要求更高,而传统自注意力的计算复杂度是图像大小的平方,这在进行像素级密集预测时产生了困难。
Swin Transformer旨在解决这些NLP与CV之间的差异所带来的问题。
通过移动窗口计算的分层Transformer

Swin Transformer的关键在于两个方面:
首先,基于分层特征图,采用特征金字塔网络(FPN)或U-Net等技术进行密集预测;其次,将自注意力计算限制在不重叠的局部窗口中,同时允许跨窗口连接,以提高效率。

第二个方面是基于移动窗口的自注意力:
在第l层,采用常规的窗口分区方案,在每个窗口内计算自注意力。
在下一层l+1,窗口分区会被移动,产生新的窗口。新窗口中的自注意力计算跨越了l层中窗口的边界,从而提供新的关联信息。

具体而言,Swin Transformer的整体架构如下:
- 将RGB图像分割成不重叠的图像块(Token);
- 应用多层感知机(MLP)将原始特征转化为任意维度;
- 应用多个修改后的自注意力计算的Swin Transformer块,并保持Token的数量;
- 下采样层:通过合并2×2窗口中的相邻图像块来减少Token的数量,同时将特征深度增加一倍。
实验结果显示,研究人员让Swin Transformer在imageNet-1K、COCO和ADE20K上进行图像分类、对象检测和语义分割任务。
其中,预训练使用的是imageNet-22K数据集,imageNet-1K数据集则用于微调。
结果表明,在COCO的分割和检测任务,以及ADE20K的语义分割任务上,Swin Transformer均超过了CNN,达到了最新的技术水平。
而在imageNet-1K的分类任务上,尽管未能超越EfficientNet,但表现相当且速度更快。

以上是论文笔记的分享,如需了解更多细节,请查看文末的链接。
期待你的读后感分享!
论文地址:
https://aRxiv.oRg/abs/2103.14030
开源地址:
https://Github.coM/MicRosoft/Swin-TRansfoRMeR
