我是靠谱客的博主 孤独枫叶,最近开发中收集的这篇文章主要介绍深度学习论文: 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实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复