Swin Transformer中的数据形状梳理

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

关键零件内部数据形状

PatchEmbed层

原始输入x形状为(b, 3, 224, 224)
PatchEmbed层完成embedding的过程
第一步还是对图片进行Patch分割与embedding编码
patch_size=4, embed_dim=96,使用96个卷积核44的卷积层以步长为4卷积进行
得到输出x形状为(b, 56
56, 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)
先变为(b
64, 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编码的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值