classPatchEmbedding(nn.Layer):def__init__(self,patch_size=4,embed_dim=96):super().__init__()self.patch_embed=nn.Conv2D(3,embed_dim,kernel_size=patch_size,stride=patch_size)self.norm=nn.LayerNorm(embed_dim)defforward(self,x):x=self.patch_embed(x)# [n, embed_dim, h', w']x=...
进行完patch embedding之后,在每一个window size内的tokens进行multi-head self attention的计算。 patch merging的过程中存在1*embed到2*embed_dim的变换,需要使用标准化和投影完成。 2.3 计算量分析 下面分别来计算一下,对于一个尺寸大小同为h*w*embed_dim的特征图,使用之前正常的multi-head self attention(MSA)...
**patch ebedding模块: (b, h, w) --> (b, n, embed_dim) 用推导公式, n随图片尺寸变, embed_dim根据设定的patch尺寸和图像通道变.可以理解为一张图像的空间几何信息转换为了语义信息. 这样做的目的是利用Transforer. ** 自注意力 和MLP-Conv_MLP Patch Merging # patch merging import torch import...
Patch Merging操作能够有效地融合不同分辨率的图像信息,同时为模型提供更丰富的上下文信息。注意力计算:Swin Transformer采用自注意力机制来捕捉图像中的关键信息。通过在每个位置上计算注意力权重,能够关注到图像的不同区域,从而更好地理解和表示图像的复杂结构。Swin Transformer模型通过分层设计、Patch Embedding、Shifted W...