Swin Transformer中的数据形状梳理
关键零件内部数据形状
PatchEmbed层
原始输入x形状为(b, 3, 224, 224)
PatchEmbed层完成embedding的过程
第一步还是对图片进行Patch分割与embedding编码
patch_size=4, embed_dim=96,使用96个卷积核44的卷积层以步长为4卷积进行
得到输出x形状为(b, 5656, 96) -> (b, 3136, 96)
输入形状为 (b, 3136, 96)
Swin-transformer层
输入形状为 (b, 3136, 96)
Swin-tran层
先变为(b, 56, 56, 96)
如果是SW-MSA需进行位移操作,操作完成后仍是(b, 56, 56, 96)
经过window_partition层
经过窗口分割窗口尺寸为7,因此最终有64个窗口,因而分割后变成为(b64, 7, 7, 96),之前5656的矩阵中每个点96个编码值对应原图中一个44的一个patch,经过窗口分割,此时77的矩阵中每个点仍有96个编码值对应原图中仍是一个44的patch,即不改变感受野,且自注意力机制发生在这77=49个patchs之间。
输出为(b64, 7, 7, 96)
先变为(b64, 49, 96)
正式开始窗口自注意力操作层
对于形状是(b64, 49, 96)的输入数据先通过mlp生成QKV矩阵(b64,49,963),则经过拆分后Q,K,V为(b64,49,96),由于有3个头,Q,K,V为(b64, 3, 49, 32),即Q,K,V的原始长度与输入embedding编码的长度

本文详细介绍了SwinTransformer的工作原理,从原始输入的图像开始,经过PatchEmbed层进行图像切分与编码,接着通过Swin-transformer层进行窗口自注意力操作,包括位移操作、窗口分割、多头自注意力机制等。之后,利用PatchMerging层进行特征融合,逐步扩大感受野。整个过程展示了SwinTransformer如何在不同尺度上捕获图像信息,以实现高效的视觉表示学习。
最低0.47元/天 解锁文章
692

被折叠的 条评论
为什么被折叠?



