Advertisement

深度学习论文: NAM: Normalization-based Attention Module及其PyTorch实现

阅读量:

深度学习论文:NAM(基于归一化的注意力模块)及其在PyTorch中的实现

1 概述

NAM作为一种高效、轻量级的注意力机制。

  • 基于CBAM模块整合的设计下重构了通道和空间注意力子模块。
  • 每个网络块末尾集成一个NAM模块;其中残差网络将其置于残差结构尾部。
  • 通过权重贡献度评估改进了注意力机制;而批归一化中的比例因子则用标准差量化权重重要性;这样就无需额外引入SE、BAM或CBAM中的全连接层或卷积层。

2 NAM

2-1 channel attention

基于通道注意子模块,在批归一化(BN)中采用比例因子来计算通道的方差,并强调其重要性

在这里插入图片描述

2-2 spatial attention

在空间注意子模块中,将BN缩放因子施加于空间维度以评估像素的重要性,并将其命名为pixel normalization

在这里插入图片描述

PyTorch代码:

复制代码
    import torch
    import torch.nn as nn
    
    
    class NAM(nn.Module):
    def __init__(self, channels, t=16):
        super(NAM, self).__init__()
        self.channels = channels
        self.bn2 = nn.BatchNorm2d(self.channels, affine=True)
    
    def forward(self, x):
        residual = x
        x = self.bn2(x)
        weight_bn = self.bn2.weight.data.abs() / torch.sum(self.bn2.weight.data.abs())
        x = x.permute(0, 2, 3, 1).contiguous()
        x = torch.mul(weight_bn, x)
        x = x.permute(0, 3, 1, 2).contiguous()
        x = torch.sigmoid(x) * residual  #
        return x
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

3 Experiment

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~