当前位置:   article > 正文

Swin Transformer:Hierarchical Vision Transformer using Shifted Windows——论文分析_多头注意力的计算复杂度

多头注意力的计算复杂度

一、摘要

挑战:物体尺寸差异和高分辨率
Transformer可以用作一个通用的网络,而不像ViT那样只用于分类。
在这里插入图片描述
如上图,ViT全局建模,始终处理的是16倍下采样之后的特征,不适合密集预测型任务。
Swin Transformer为了减少序列长度,在小窗口内做自注意力,用了locality的归纳偏置,节省资源。patch merging,相邻小patch合成大patch,类似池化。
在这里插入图片描述
如上图,在 l 层加上shift操作,窗口之间能进行交互,从而有全局自注意力的效果。

二、模型

在这里插入图片描述
Stage 1
输入X:224×224×3
patch:4×4×3=48
patch-num:56×56
X=56×56×48

C=96
X = 56×56×96 = 3136×96
序列长度太长,通过Swin Transformer Block在窗口内做自注意力,最后输出尺寸不变,如下图所示:
在这里插入图片描述
输出56×56×96

Stage 2
输入56×56×96
patch merging:cnn下采样一个特征图的效果
在这里插入图片描述输出28×28×192

Stage 3
输入28×28×192
patch merging
输出14×14×384

Stage 4
输入14×14×384
patch merging
输出7×7×768
最后全局池化拉成1×768

2.1 基于移动窗口的自注意力

假设尺寸是56×56×96
patch大小是7×7
一共有8×8个窗口,分别算自注意力。
在这里插入图片描述
多头自注意力的计算复杂度如公式1,输入图片尺寸是hw×C(C是向量长度),输出q、k、v,复杂度是3hwC2;q和k相乘,复杂度是(hw)2C;softmax后再与v相乘,复杂度是(hw)2C;得到的结果最后乘以映射权重矩阵C×C,复杂度是hwC2

基于窗口的同理,每个窗口大小是M×M(M=7),1式中的hw=M2,总窗口数是hw/M2,故而窗口数乘以1式得2式。

图(b)所示得两个连续transformer的计算公式如下,先进行基于窗口的自注意力,然后移动窗口再计算自注意力。
在这里插入图片描述

2.2 通过掩码提高移动窗口的性能

在这里插入图片描述
对于移动窗口的图,可以通过padding0的方式对相同尺寸的窗口做自注意力,但效率不高;而cyclic shift通过如图所示的拼接,依然是划分成4×4个窗口,然后对包含不连续信息的窗口做masked MSA,如下所示,67是C,8是A,25是B,在对左下角的窗口做MSA时,会累加一个如右图矩阵模板,softmax后变为0。
在这里插入图片描述
同时还提出使用相对位置编码。

2.3 较传统移动窗口的区别

在这里插入图片描述
在传统的滑动窗口方法中。不同的查询q和q’ 将具有不同的相邻窗口,该窗口指示不同的key集。计算对内存访问不友好,因此实际速度不好。

在Swin Transformer中使用的非重叠窗口方法中,例如,在同一红色窗口中的不同查询,例如q和q’,将共享相同的key集。

官方代码库:https://github.com/microsoft/Swin-Transformer

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/909699
推荐阅读
相关标签
  

闽ICP备14008679号