CBAM、通道注意力、空间注意力学习

  1. 各模块简介:

        CBAM 是一个轻量级的通用模块,其中包含了空间注意力和通道注意力。

        通道注意力是先对空间进行全局平均或最大池化后,在通道层面求得注意力。

空间注意力是先对通道进行全局平均或最大池化后,在空间层面求得注意力。

2.CBAM:

CBAM、通道注意力、空间注意力学习_第1张图片

 3.代码

空间注意力pytorch代码:

class SpatialAttention(nn.Module):
    def __init__(self, kernel_size=7):
        super(SpatialAttention, self).__init__()

        assert kernel_size in (3, 7), 'kernel size must be 3 or 7'
        padding = 3 if kernel_size == 7 else 1

        self.conv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):  # x.size() 30,40,50,30
        avg_out = torch.mean(x, dim=1, keepdim=True)
        max_out, _ = torch.max(x, dim=1, keepdim=True)  # 30,1,50,30
        x = torch.cat([avg_out, max_out], dim=1)
        x = self.conv1(x)  # 30,1,50,30
        return self.sigmoid(x)  # 30,1,50,30

参考:

 注意力机制学习(二)——空间注意力与pytorch案例_呆萌的代Ma的博客-CSDN博客_pytorch 空间注意力文章目录一、空间注意力机制简介二、空间注意力与pytorch代码三、使用案例一、空间注意力机制简介空间注意力的示意图如下:长条的是通道注意力机制,而平面则是空间注意力机制,可以发现:通道注意力在意的是每个特怔面的权重,而空间注意力在意的是面上每一个局部的权重。二、空间注意力与pytorch代码class SpatialAttention(nn.Module): def __init__(self, kernel_size=7): super(SpatialAttentiohttps://blog.csdn.net/weixin_35757704/article/details/119926246

注意力机制BAM和CBAM详细解析(附代码)_小小谢先生的博客-CSDN博客_空间注意力机制代码论文题目①:BAM: Bottleneck Attention Module论文题目②:CBAM:CBAM: Convolutional Block Attention ModuleBottlenet attention Module(BAM)依据人看东西时不可能把注意力放在所有的图像上,会把焦点目光聚集在图像的重要物体上。因此,作者提出了BAM注意力机制,仿照人的眼睛聚焦在图像几个重...https://blog.csdn.net/xiewenrui1996/article/details/105760359?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control 通道注意力,空间注意力,像素注意力 - 知乎

你可能感兴趣的:(深度学习,深度学习,pytorch,空间注意力)