本注意力机制的实现来源于:
摘要:
通道关注和空间关注分别在提取各种下游视觉任务的特征依赖关系和空间结构关系方面带来了显著的改进。它们的结合更有利于发挥各自的优势,但通道和空间注意之间的协同作用尚未得到充分挖掘,缺乏充分利用多语义信息的协同潜力来进行特征引导和缓解语义差异。本研究试图在多个语义层面揭示空间和通道注意之间的协同关系,提出了一个新的空间和通道协同注意模块(SCSA)。
import torch
import typing as t
import torch.nn as nn
from einops import rearrange
from mmengine.model import BaseModule
from thop import profile
# 确保正确导入SCSA
class SCSA(BaseModule):
# SCSA类的初始化和方法定义见上方代码
def __init__(
self,
dim: int,
head_num: int,
window_size: int = 7,
group_kernel_sizes: t.List[int] = [3, 5, 7, 9],
qkv_bias: bool = False,
fuse_bn: bool = False,
norm_cfg: t.Dict = dict(type='BN'),
act_cfg: t.Dict = dict(type='ReLU'),
down_sample_mode: str = 'avg_pool',
attn_drop_ratio: float = 0.,
gate_layer: str = 'sigmoid',
):
super(SCSA, self).__init__()
self.dim = dim
self.head_num = head_num
self.head_dim = dim // head_num
self.scaler = self.head_di