Advertisement

Swin Transformer网络

阅读量:

一、前言

1.1各项优点

Swin Transformer 的优点主要体现在以下几个方面:

分类任务 :Swin Transformer 使用了层次化的设计,能够有效捕捉不同尺度的特征,提升分类精度,尤其在图像分类中相较于传统的卷积神经网络(CNN)具有更强的表达能力。

分割任务 :通过局部窗口的自注意力机制和跨窗口连接,Swin Transformer 提供了高效的空间信息传递,使得在图像分割任务中,能更好地保留图像的细节,同时避免了计算上的高昂成本。

检测任务 :Swin Transformer 的强大特征提取能力和跨尺度信息融合,使其在物体检测任务中能够获得更精细的定位信息,并且通过其可变形的网络结构,处理复杂场景中的物体识别和定位更加准确。

这些优点使得 Swin Transformer 在视觉任务中,尤其是在大型数据集上的表现超过传统方法。并且以及开源,各预训练模型已经给出,是新一代backbone,可直接套用在各项下游任务中。

1.2 解决了什么问题?

1.传统的transformer中要将图像做成一个一个的patch,每个patch组成了序列的小部分,所以要将每个patch做的详细一些(因为每个patch都包含了许多信息),这就必须要做成非常大的序列。

2.越长的序列算注意力肯定越慢,效率问题。

能否运用窗口和分层的形式来替代长序列呢?答案是可以的,这也是本质。这个过程有点像卷积+池化。

二、网络结构

核心就是,得到各patch特征构建序列,分层计算attention,其中block最为重要,对attention的计算方法进行了改进。

输入图像,先卷积成为特征图,再进行分为patch,每次经过Patch Merging特征图会变小(就是下采样),并同时特征图进行翻倍操作。

以上就是Transformer Blocks,上图是个组合,得一起上。W-MSA(WIndow Multi head self attention)基于窗口的注意力计算。SW-MSA就是滑动窗口后重新计算注意力。它两串联在一起就是block

2.1 Patch Embedding

输入:图像数据(224,224,3)输出(3136,96)即就是序列长度是3136个,每个向量是96维特征。这个是通过卷积得到的(源码的默认参数)

2.2 window_partition

输入:特征图(56,56,96)(56=224/4)默认窗口大小为7所以可以分成8*8个窗口,输出:特征图(64,7,7,96).之前的单位是序列,现在是窗口(64个窗口)

2.3 W-MSA(Window Multi-head Self Attention)

对得到的每个窗口,计算各个窗口自己的自注意力得分。qkv三个矩阵放在一起:(3,64,3,49,32)即3个矩阵,64个窗口,heads为3,窗口大小为7*7=49,每个head的特征是96/3=32 attention结果为:(64,3,49,49)每个头都会得出每个窗口内的自注意力

2.4 window_reverse

通过得到的attention计算新的特征(64,49,96),总共64个窗口,每个窗口7*7大小,每个点对应96维向量。window_reverse就是通过reshape操作还原回去(56,56,96)这样就得到了和输入特征图一样大小,但其已经计算过attention。

2.5 SW-MSA(Shifted Window)

通过滑动窗口,就可得到窗口直接的关系。窗口数会增加,那么计算量增加,如何解决?

首先得到新窗口,对其进行位移操作,依然按四大块计算,只需计算自己的窗口。

2.6 Patch Merging

相当于下采样的操作,但是不同于池化,这个是间接的(对H和W维度进间隔采样然后拼接)

全部评论 (0)

还没有任何评论哟~