注意力模块
通道(时间)注意力模块
为了汇总空间特征,作者采用了全局平均池化和最大池化两种方式来分别利用不同的信息。
输入是一个 H×W×C 的特征 F,
- 我们先分别进行一个空间的全局平均池化和最大池化得到两个 1×1×C 的通道描述。
- 接着,再将它们分别送入一个两层的神经网络,第一层神经元个数为 C/r,激活函数为 Relu,第二层神经元个数为 C。这个两层的神经网络是共享的。
- 然后,再将得到的两个特征相加后经过一个 Sigmoid 激活函数得到权重系数 Mc。
- 最后,拿权重系数和原来的特征 F 相乘即可得到缩放后的新特征。
实现代码如下:
class ChannelAttention(nn.Module):
def __init__(self, in_planes, rotio=16):
super(ChannelAttention, self).__init__()
#两个 1×1×C 的通道描述
self.avg_pool = nn.AdaptiveAvgPo