一篇搞懂swin-transformer:Hierarchical Vision Transformer using Shifted Windows
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows:Swin Transformer:使用移位窗口的分层视觉转换器。作者大都是华人,论文由亚洲微软团队,中国科学技术大学,西安交通大学,清华大学写出。刊会是计算机视觉方面的三大顶级会议:ICCV,CVPR,ECCV,被评为2021年最佳论文的荣誉
备注:可以用于组会上给别人讲ppt😄
一、背景与意义
Transformer是为序列建模和转导任务而设计的,它以关注数据中的远程依赖关系建模而闻名。它在语言领域的巨大成功促使研究人员研究它对计算机视觉的适应性,特别是图像分类和联合视觉语言建模。在本文中,试图扩大Transformer的适用性,使其可以作为计算机视觉的通用主干。
*远程序列关系就是说:第一个得到的结果会受到离它很远的元素影响
但是把语言领域的高性能转移到视觉领域有两个重大挑战。其中一个差异为规模:与语言转换器中用作处理基本元素的单词标记不同,视觉元素的规模可能会有很大变化,在现有的基于Transformer的模型中,token都是固定规模的,这一特性不适合这些视觉应用。另一个区别是,与文本段落中的单词相比,图像中的像素分辨率高得多。
为了克服这些问题,我们提出了一种通用的Transformer主干,称为Swin Transformer,它构建分层特征图,并对图像大小具有线性计算复杂性。线性计算复杂性是通过在划分图像(红色轮廓)的非重叠窗口内局部计算自注意来实现的。每个窗口中的补丁数量是固定的,因此复杂性与图像大小成线性关系。本质思想就是注意力机制结合CNN的分层。
二、网络框架
通过网络框架能看到,图片大小在减少,但是图片的深度在上升,接下来为每层进行讲解:
1、Patch partition和Linear Embedding--理解为对图片进行大小通道的处理
Patch partition:可以用一个4*4、步长为4的卷积核来做卷积,通道数48
Linear Embedding:用1*1卷积核,步长为1的卷积核来做卷积,通道数96
2、W-MSA
W-MSA是在MSA(多头自注意力机制)的基础上进行改进。先简单介绍一下MSA,主要就是对下面图片公式的一个理解。
W都是经过学习得到的,输出b的向量长度和输入的a长度是一样的,Q和K相乘得到一个结果是矩阵,矩阵做softmax激活函数。除以根号d是为了什么:根号d表示的是向量k的长度,会使得分布重新归一化到数据原分布,防止出现梯度消失,除以之后到达的位置可能在(0-1)之间,Softmax使用在多分类的情况下的结果在0-1之间。
接下来就是W-MSA层做的事情:
原先的MSA是每个patch都与和其他的patch有关,因为计算QKV的时候都有相互联系。而W-MSA是先把特征矩阵分成很多windows(窗口),论文里面使用的7*7的窗口大小来分,然后每个window内做MSA。
优:目的是减少计算量; 缺:各个window之间不能通信,且导致感受野变小
使得计算量减少:
对于MSA:首先计算Q矩阵对应的计算量为HW×C ×C再加上还有KV,故计算量为3 HW×C ×C ,然后就算QK相乘的计算量为 HW× HW×C ,假设忽略SoftMax等计算得到的结果设为Z,然后Z和V相乘的计算量为HW× HW× C ,最后因为多头再进行融合计算量为HW× HW× C 。
对于W-MSA:我们在W-MSA中把特征图划分了各个window,窗口的宽高为M,所以原图有h/M× w/M窗口。所以先把M带入到MSA中的宽高,得到的结果再乘以h/M× w/M。
3、SW-MSA
为了解决上面W-MSA的缺点,所以才有了这一步:首先从layer1变为layer1+1,变完之后各个window中大小不为4*4那么如何做注意力机制,如果填充就会加大计算。论文做法就是把所有块进行移动变成4*4。
移动完之后它们原先的相对位置改变了,并且本身不是同一个window,论文是对于移动完生成4*4的块照常做attention,但是对于不是同一个区域的QKV得到的相关性设置为0,经过以上所有计算,我们要把移动完的块再次移动到初始的位置。
4、W-MSA和SW-MSA公式
W-MSA比MSA在公式上多加上了矩阵B,B的意思是相对位置偏置,其本质就是希望attention map进一步有所偏重。因为attention map中某个值越低,经过softmax之后,该值会更低,对最终特征的贡献就低。B的计算是通过深度网络学习学到的,但是前面的qk计算得到是一个矩阵,矩阵中不同的位置要对应不同的参数B,而B学习到的参数保存在一个一维数组中,所以要实现一维数组和二维数组之间的对应关系,下图案例就是实现B的一维数组和二维数组对应关系。假设qk计算的矩阵大小为2*2.先得到矩阵所有像素的相对位置索引,而不是相对位置偏置参数,我们要根据相对位置索引找到相对位置偏置参数,而相对位置偏置参数是训练出来的,保存在relative position bias table表里的,如果表是二维,则可以直接一对一找到相应的参数,如果表是一维的,则表的长度为2M-1 ×2M-1,两种都能实现不过论文采用一维。
经过这些操作就能实现一维数组和二维数组的一一对应。
4、MLP
5、Patch Merging
通过下采样,那么矩阵大小变小,但是深度变深,当进行下一次的划分窗口的时候窗口的数量会变少。
三、实验结果
四、总结
Swin Transformer是一种新的视觉Transformer ,它产生层次特征表示,并且对输入图像大小具有线性计算复杂度。Swin Transformer在COCO对象检测和ADE20K语义分割方面实现了最先进的性能,大大超过了以前的最佳方法。我们希望Swin Transformer在各种视觉问题上的强大表现将鼓励视觉和语言信号的统一建模。
更多推荐
所有评论(0)