pyiqa.archs.maniqa_swin ======================= .. py:module:: pyiqa.archs.maniqa_swin Module Contents --------------- .. py:class:: Mlp(in_features, hidden_features=None, out_features=None, act_layer=nn.GELU, drop=0.0) Bases: :py:obj:`torch.nn.Module` .. py:method:: forward(x) .. py:function:: window_partition(x, window_size) :param x: (B, H, W, C) :param window_size: window size :type window_size: int :returns: (num_windows*B, window_size, window_size, C) :rtype: windows .. py:function:: window_reverse(windows, window_size, H, W) :param windows: (num_windows*B, window_size, window_size, C) :param window_size: Window size :type window_size: int :param H: Height of image :type H: int :param W: Width of image :type W: int :returns: (B, H, W, C) :rtype: x .. py:class:: WindowAttention(dim, window_size, num_heads, qkv_bias=True, qk_scale=None, attn_drop=0.0, proj_drop=0.0) Bases: :py:obj:`torch.nn.Module` Window based multi-head self attention (W-MSA) module with relative position bias. It supports both of shifted and non-shifted window. :param dim: Number of input channels. :type dim: int :param window_size: The height and width of the window. :type window_size: tuple[int] :param num_heads: Number of attention heads. :type num_heads: int :param qkv_bias: If True, add a learnable bias to query, key, value. Default: True :type qkv_bias: bool, optional :param qk_scale: Override default qk scale of head_dim ** -0.5 if set :type qk_scale: float | None, optional :param attn_drop: Dropout ratio of attention weight. Default: 0.0 :type attn_drop: float, optional :param proj_drop: Dropout ratio of output. Default: 0.0 :type proj_drop: float, optional .. py:method:: forward(x, mask=None) :param x: input features with shape of (num_windows*B, N, C) :param mask: (0/-inf) mask with shape of (num_windows, Wh*Ww, Wh*Ww) or None .. py:method:: extra_repr() -> str .. py:method:: flops(N) .. py:class:: SwinBlock(dim, input_resolution, num_heads, window_size=7, shift_size=0, dim_mlp=1024.0, qkv_bias=True, qk_scale=None, drop=0.0, attn_drop=0.0, drop_path=0.0, act_layer=nn.GELU, norm_layer=nn.LayerNorm) Bases: :py:obj:`torch.nn.Module` Swin Transformer Block. :param dim: Number of input channels. :type dim: int :param input_resolution: Input resolution. :type input_resolution: tuple[int] :param num_heads: Number of attention heads. :type num_heads: int :param window_size: Window size. :type window_size: int :param shift_size: Shift size for SW-MSA. :type shift_size: int :param mlp_ratio: Ratio of mlp hidden dim to embedding dim. :type mlp_ratio: float :param qkv_bias: If True, add a learnable bias to query, key, value. Default: True :type qkv_bias: bool, optional :param qk_scale: Override default qk scale of head_dim ** -0.5 if set. :type qk_scale: float | None, optional :param drop: Dropout rate. Default: 0.0 :type drop: float, optional :param attn_drop: Attention dropout rate. Default: 0.0 :type attn_drop: float, optional :param drop_path: Stochastic depth rate. Default: 0.0 :type drop_path: float, optional :param act_layer: Activation layer. Default: nn.GELU :type act_layer: nn.Module, optional :param norm_layer: Normalization layer. Default: nn.LayerNorm :type norm_layer: nn.Module, optional .. py:method:: forward(x) .. py:class:: BasicLayer(dim, input_resolution, depth, num_heads, window_size=7, dim_mlp=1024, qkv_bias=True, qk_scale=None, drop=0.0, attn_drop=0.0, drop_path=0.0, norm_layer=nn.LayerNorm, downsample=None, use_checkpoint=False) Bases: :py:obj:`torch.nn.Module` A basic Swin Transformer layer for one stage. :param dim: Number of input channels. :type dim: int :param input_resolution: Input resolution. :type input_resolution: tuple[int] :param depth: Number of blocks. :type depth: int :param num_heads: Number of attention heads. :type num_heads: int :param window_size: Local window size. :type window_size: int :param mlp_ratio: Ratio of mlp hidden dim to embedding dim. :type mlp_ratio: float :param qkv_bias: If True, add a learnable bias to query, key, value. Default: True :type qkv_bias: bool, optional :param qk_scale: Override default qk scale of head_dim ** -0.5 if set. :type qk_scale: float | None, optional :param drop: Dropout rate. Default: 0.0 :type drop: float, optional :param attn_drop: Attention dropout rate. Default: 0.0 :type attn_drop: float, optional :param drop_path: Stochastic depth rate. Default: 0.0 :type drop_path: float | tuple[float], optional :param norm_layer: Normalization layer. Default: nn.LayerNorm :type norm_layer: nn.Module, optional :param downsample: Downsample layer at the end of the layer. Default: None :type downsample: nn.Module | None, optional :param use_checkpoint: Whether to use checkpointing to save memory. Default: False. :type use_checkpoint: bool .. py:method:: forward(x) .. py:method:: extra_repr() -> str .. py:method:: flops() .. py:class:: SwinTransformer(patches_resolution, depths=[2, 2, 6, 2], num_heads=[3, 6, 12, 24], embed_dim=256, drop=0.1, drop_rate=0.0, drop_path_rate=0.1, dropout=0.0, window_size=7, dim_mlp=1024, qkv_bias=True, qk_scale=None, attn_drop_rate=0.0, norm_layer=nn.LayerNorm, downsample=None, use_checkpoint=False, scale=0.8, **kwargs) Bases: :py:obj:`torch.nn.Module` .. py:method:: forward(x)