Swin Transformer——细节详解

Swin Transformer——细节详解

划分窗口与合并窗口

举例:
默认情况下window_size=7
划分窗口:将输入数据shape=[4, 224, 224, 196]的数据reshape成[4*num_windows, 7, 7, 196]
合并窗口:将输入数据shape=[4*num_windows, 7, 7, 196]的数据reshape成[4, 224, 224, 196]

def window_partition(x, window_size):
    """
    Args:
        x: (B, H, W, C)
        window_size (int): window size
    Returns:
        windows: (num_windows*B, window_size, window_size, C)
    """
    B, H, W, C = x.shape
    x = x.view(B, H // window_size, window_size, W // window_size, window_size, C)
    windows = x.permute(0, 1, 3, 2, 4, 5).contiguous().view(-1, window_size, window_size, C)
    return windows


def window_reverse(windows, window_size, H, W):
    """
    Args:
        windows: (num_windows*B, window_size, window_size, C)
        window_size (int): Window size
        H (int): Height of image
        W (int): Width of image
    Returns:
        x: (B, H, W, C)
    """
    B = int(windows.shape[0] / (H * W / window_size / window_size))
    x = windows.view(B, H // window_size, W // window_size, window_size, window_size, -1)
    x = x.permute(0, 1, 3, 2, 4, 5).contiguous().view(B, H, W, -1)
    return x
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Swin Transformer是在2021年提出的一种新型Transformer网络架构,它是由微软亚洲研究院和香港中文大学合作研究提出的。该网络引入了一种新的分层机制,将原本的连续的多头自注意力层和全连接层分开,然后通过分层连接的方式进行交互。 Swin Transformer网络的原理如下: 1. 基础块:网络的基础块是一个由两个子块组成的结构,分别是Patch Embedding和Local Self-Attention。Patch Embedding是将输入的图像分成一系列的小块,然后将这些小块映射成向量表示。Local Self-Attention是一种局部自注意力机制,可以提取局部特征。 2. 分层机制:Swin Transformer网络引入了一种新的分层机制,将原本的连续的多头自注意力层和全连接层分开,然后通过分层连接的方式进行交互。这种分层机制可以减少网络中的参数数量,提高训练和推理的效率。 3. Shift操作:Swin Transformer网络还引入了Shift操作,它可以将图像的特征沿着通道维度进行平移,从而增加了特征的多样性,提高了网络的泛化能力。 4. Token Swin:为了解决Swin Transformer对小尺寸图像的处理问题,Swin Transformer提出了Token Swin,它可以将输入的图像分解成更小的块,从而提高网络对小尺寸图像的处理能力。 总之,Swin Transformer是一种新型的Transformer网络架构,它通过分层机制、Shift操作和Token Swin等技术手段,提高了网络的效率和泛化能力,使得它在计算机视觉领域取得了很好的效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值