SE注意力机制,升级SEA注意力机制。

个人感觉SE机制 ,其实在通道数量大的情况下,表现非常好。但是基于RESNET网络的时候,提取边界特征等,效果不是很好。所以提出了SEA注意力机制。

下面是我代码实现,代码进行了注释,大家可以看的懂:

大家点点赞,求求了

class SEA_Block(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SEA_Block, self).__init__()
        self.Max_pool = nn.AdaptiveMaxPool2d(1)
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        # reduced_channels = channel // reduction
        self.conv_reduce = nn.Conv2d(2 * channel, (2 * channel)//reduction, kernel_size=1, bias=False)
        self.relu = nn.ReLU(inplace=True)

        self.conv_expand_left = nn.Conv2d((2 * channel)//reduction, channel, kernel_size=1, bias=False)
        self.conv_expand_right = nn.Conv2d((2 * channel)//reduction, channel, kernel_size=1, bias=False)
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        avg_pool = self.Max_pool(x) # (B, C, 1, 1)
        max_pool = self.avg_pool(x)  # (B, C, 1, 1)

        concat_pool = torch.cat([avg_pool, max_pool], dim=1)  # (B, 2C, 1, 1)

        reduced = self.relu(self.conv_reduce(concat_pool))  # (B, 2C//r, 1, 1)

        left = self.sigmoid(self.conv_expand_left(reduced))  # (B, C, 1, 1)
        right = self.sigmoid(self.conv_expand_right(reduced))  # (B, C, 1, 1)

        left_weighted = x * left  # 左分支权重
        right_right = left_weighted * right

        out = right_right + x
        return out

### SEA注意力机制概述 SEA (Spatial Enhancement Attention) 注意力机制是一种专门设计用于增强空间特征表示的方法[^1]。该机制通过引入自适应的空间权重来突出重要区域并抑制不重要的背景噪声,从而提高模型对目标对象的感知能力。 在具体实现上,SEA模块通常由两个部分组成: - **空间特征提取层**:负责捕捉输入数据中的局部和全局上下文信息。 - **注意图生成器**:基于提取到的特征计算得到一张或多张二维注意图,这些注意图为后续卷积操作提供指导性的加权系数。 这种架构使得网络能够更专注于图像中有意义的部分,在处理复杂场景下的海浪高度预测等问题时表现出色。 对于合成孔径雷达(SAR)影像而言,由于其成像原理特殊性带来的 speckle noise 和几何畸变等因素影响,传统方法难以取得理想效果;而采用包含SEA在内的深度学习技术则可以有效克服上述挑战,显著提升检测精度与鲁棒性[^3]。 ```python import torch.nn as nn class SEAModule(nn.Module): def __init__(self, channels, reduction=16): super(SEAModule, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.fc = nn.Sequential( nn.Linear(channels, channels // reduction), nn.ReLU(inplace=True), nn.Linear(channels // reduction, channels), nn.Sigmoid() ) def forward(self, x): b, c, _, _ = x.size() y = self.avg_pool(x).view(b, c) y = self.fc(y).view(b, c, 1, 1) return x * y.expand_as(x) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值