(即插即用模块-Attention部分) 九、(2021) Global Attention 全局注意力

在这里插入图片描述

paper:Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions


1、Global Attention Module

论文提出了一种全局注意力机制,通过减少信息减少和放大全局交互表示来提高深度神经网络的性能。引入了3D置换与多层感知器的通道注意力和卷积空间注意力子模块。减少信息约简和放大全局的交互功能,整体上,Global Attention采用了CBAM的整体结构,即通道-空间注意力机制,但是重新设计了子模块。


Global Attention Module 结构图:

在这里插入图片描述


2、Channel Attention & Spatial Attention

在Global Attention中:

  1. 通道注意力子模块:使用三维排列在三个维度上保留信息。然后,用一个两层的MLP(多层感知器)放大跨维通道-空间依赖性。
  2. 空间注意力子模块:为了关注空间信息,使用两个卷积层进行空间信息融合。还从通道注意力子模块中使用了与BAM相同的缩减比。与此同时,由于最大池化操作减少了信息的使用,产生了消极的影响。这里删除了池化操作以进一步保留特性映射。因此,空间注意力模块会显著增加参数的数量。此时为了防止参数显著增加,在ResNet50中采用带Channel Shuffle的Group卷积。

Channel Attention & Spatial Attention 结构图

在这里插入图片描述

3、代码实现

import torch
import torch.nn as nn


class GAM(nn.Module):
    def __init__(self, channels, rate=4):
        super(GAM, self).__init__()
        mid_channels = channels // rate

        self.channel_attention = nn.Sequential(
            nn.Linear(channels, mid_channels),
            nn.ReLU(inplace=True),
            nn.Linear(mid_channels, channels)
        )

        self.spatial_attention = nn.Sequential(
            nn.Conv2d(channels, mid_channels, kernel_size=7, stride=1, padding=3),
            nn.BatchNorm2d(mid_channels),
            nn.ReLU(inplace=True),
            nn.Conv2d(mid_channels, channels, kernel_size=7, stride=1, padding=3),
            nn.BatchNorm2d(channels)
        )

    def forward(self, x):
        b, c, h, w = x.shape
        # channel attention
        x_permute = x.permute(0, 2, 3, 1).view(b, -1, c)
        x_att_permute = self.channel_attention(x_permute).view(b, h, w, c)
        x_channel_att = x_att_permute.permute(0, 3, 1, 2)

        x = x * x_channel_att
        # spatial attention
        x_spatial_att = self.spatial_attention(x).sigmoid()
        out = x * x_spatial_att
        return out


if __name__ == '__main__':
    x = torch.randn(4, 512, 7, 7).cuda()
    model = GAM(512).cuda()
    out = model(x)
    print(out.shape)

本文只是对论文中的即插即用模块做了整合,对论文中的一些地方难免有遗漏之处,如果想对这些模块有更详细的了解,还是要去读一下原论文,肯定会有更多收获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御宇w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值