CBAM: Convolutional Block Attention Module
1.前提情要
1.1 注意力机制
提到注意力这个名词,打个比方,人看事物时并不是注意事物的全体,而是注意感兴趣的地方或者更加有辨别性的地方,类似的是,特征提取网络中也有注意力机制,让网络提取到更重要的特征,而抑制对任务不重要的特征。注意力分为以下两种:
- 通道注意力:回答what,即哪些特征[通道]是对识别重要的,是颜色还是边缘。
- 空间注意力:回答where。即在某个特征图上,哪个位置的信息是最重要的,比如一张猫的图像,我们应该关注猫所在的位置,而抑制背景所在位置的特征。
1.2 池化
池化是将几个特征值变成一个特征值,可以用来降维和提取局部/全局信息。
平均池化:将特征值求和取平均。对整个特征图做平均池化可以更好地反映全局信息。
最大池化:取特征值中的最大值。较强的预知识假设(我也不懂),反映最显著部分的程度。
随机池化:随机取一个特征值。确保了特征图中不是最大激励的神经元也能够被利用到, 随机池化具有最大池化的优点(消除非极大值,降低了上层的计算复杂度),同时由于随机性它能够避免过拟合。
平均池化和最大池化各有优势,其实可以作为相互之间信息的补充。
2.背景
Squeeze-and-excitation networks(压缩-激励网络)利用通道注意力找到了图像中吸引人的通道,即重要的特征(通过多个特征提取器[卷积核]生成的多个特征图代表着提取到的不同的特征),比如是颜色特征重要还是边缘更重要,SE模块没有用到空间注意力。
论文基于提出一种卷积块注意模块(CBAM),利用了通道注意力和空间注意力,提高了检测的准确率,同时它也是一个轻量级的通用模块,可以无缝地集成到任何CNN架构中,而开销可以忽略不计,并且可以与基本的CNN一起进行端到端的训练。
3.backbone
3.1 总体模块图
将特征图输入到卷积块注意力模块中,首先经过通道注意力模块获得全局信息对特征图进行调整,随后通过空间注意力模块获得的局部信息再对特征图进行调整,两个小模块分别在通道和空间的角度上放大重要的特征,抑制不重要的特征。公式如下:
F指原始的特征图,F’指经过通道注意力模块的特征图,而F’'指经过通道和空间注意力的特征图,即最后需要的特征图。
3.2 通道注意力模块
论文的通道注意力模块类似SE模块,只是在后者的使用平均池化的基础上补充了最大池化得到的信息,实验证明,两者的信息互为补充,提高了检测效果。
过程大致为:分别对输入的特征图的各个通道进行最大池化和平均池化,结果维度大小均为c11,然后通过共享MLP网络(降低参数量)进行训练,最终将各自的输出进行求和,形成通道注意力矩阵,乘以原始特征图即可以实现重要的通道信息被放大,公式如下:
3.3 空间注意力模块
经过通道注意力模块后特征图变样了,开始进入空间注意力模块找到空间维度上哪些位置的特征点更值得注意。同样是最大池化和平均池化,但是维度变了,现在是穿过通道方向对特征点进行池化,产生2个维度为1HW的特征图,叠加后执行一层卷积和激活函数,获得空间上各个位置的注意力矩阵,最后和输入的特征图进行相乘获得最终的特征图。空间注意力模块公式如下:
4.收获
1.平均池化和最大池化的作用各有千秋,互为补充。
2.通道注意力和空间注意力的结合比单独使用某一个更有效。
3…