新手小白快速理解——SENet注意力机制
官方GitHub链接:https://github.com/hujie-frank/SENethttps://github.com/hujie-frank/SENet
原文链接:[1709.01507] Squeeze-and-Excitation Networkshttps://arxiv.org/abs/1709.01507
感兴趣的朋友可以自行下载,下面就让我们开始今天的分享。
一、引言
SENet(Squeeze-and-Excitation)是由来自Momenta的胡杰及其所在的WMW团队提出的一种通道注意力机制,在这之前,传统CNN面临着这样一个情况:每个特征通道的响应强度都是固定的,网络无法根据当前输入的具体内容,动态地决定“哪些特征通道更重要”。SENet则解决了这个问题,可以自适应地学习到每个通道的重要性,根据全局信息重新校准通道权重,进而可以大大提升模型的性能。
二、核心思想
SE模块核心思想是三步走战略:
1.压缩(Squeeze):
通过全局平均池化将每个通道的HW空间信息压缩成一个数值,这个数值携带该通道的全局感受野信息,让浅层网络也能获得全局信息:
:Squeeze操作
:第c个通道的全剧平均池化结果,标量
:第c个通道的特征图,形状为
2.激励(Excitation):
通过两次全连接层(FC → ReLU → FC → Sigmoid)网络学习通道间的相关性,先将通道数压缩为原来的1/r(r默认取16,平衡性能和计算量),经ReLU激活后再恢复到原始通道数,最后通过Sigmoid得到每个通道0-1之间的权重值:
表示Sigmoid 激活函数
表示ReLU激活函数
3.重标定(Scale):
将学习得到的权重逐通道乘到原始特征上,完成对原始特征的重标定:
表示重标定后的新特征图
表示得到的新权重
表示原始特征图第c个通道的二维矩阵
三、小结
SENet(Squeeze-and-Excitation Networks)是一种通道注意力机制,本质上是一个即插即用的轻量级模块,而非独立的网络架构。它可以嵌入到ResNet、Inception等已有网络中,用极低成本让网络学会“注意力”,动态地为每个特征通道学习0~1之间的权重,让重要特征更突出,让无关特征被忽略。