我是靠谱客的博主 孤独枫叶,最近开发中收集的这篇文章主要介绍深度学习论文: NAM: Normalization-based Attention Module及其PyTorch实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

深度学习论文: NAM: Normalization-based Attention Module及其PyTorch实现
NAM: Normalization-based Attention Module
PDF: https://arxiv.org/pdf/2111.12419.pdf
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

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

  • NAM采用CBAM的模块整合,重新设计了通道和空间注意力子模块。
  • 在每个网络块的末端嵌入一个NAM模块。对于残差网络,它嵌入在残差结构的末端。
  • 利用权重的贡献因子来改善注意力机制。使用批归一化的比例因子,它使用标准差来表示权重的重要性。这可以避免添加SE、BAM和CBAM中使用的全连接层和卷积层。

2 NAM

2-1 channel attention

对于通道注意子模块,使用批归一化(BN)中的比例因子测量通道的方差并指出它们的重要性。
在这里插入图片描述

2-2 spatial attention

对于空间注意子模块,将BN的比例因子应用于空间维度,来衡量像素的重要性。称之为像素归一化。
在这里插入图片描述

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

在这里插入图片描述

最后

以上就是孤独枫叶为你收集整理的深度学习论文: NAM: Normalization-based Attention Module及其PyTorch实现的全部内容,希望文章能够帮你解决深度学习论文: NAM: Normalization-based Attention Module及其PyTorch实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部