白话详细解读(七)----- CBAM:Convolutional Block Attention Module
一、CBAM简介论文链接:https://x.sci-hub.org.cn/scholar?hl=zh-TW&as_sdt=0%2C5&q=CBAM%3A+Convolutional+Block+Attention+Module&btnG=&oq=CBCBAM这篇论文是在2018年提出的,自提出之后,已经被引用上千次,可见其影响力。CBAM是一种专门为了卷积神经网络
一、CBAM简介
论文链接:https://x.sci-hub.org.cn/scholar?hl=zh-TW&as_sdt=0%2C5&q=CBAM%3A+Convolutional+Block+Attention+Module&btnG=&oq=CB
CBAM这篇论文是在2018年提出的,自提出之后,已经被引用上千次,可见其影响力。CBAM是一种专门为了卷积神经网络而设计的注意力模块,传统的卷积存在只关注局部信息,而往往忽略全局信息的弊端,以3*3卷积为例,滤波器有9个像素点,目标像素的值只参照自身与周围的8个像素点,这就意味着卷积操作只能利用局部信息来计算目标像素,这可能会带来一些偏差,因为卷积操作只能看到局部信息,而对全局信息了解甚少。
二、论文的主要贡献及创新点
- (1)提出了一种简单而有效的注意模块(CBAM),可以广泛应用于提高CNN的表征能力。这也是该篇论文的最大创新点。
- (2)通过广泛的消融实验,验证了我们的注意模块的有效性。
- (3)在多个基准测试数据集(ImageNet-1K、MS Coco和VOC 2007)上,通过插入我们的CBAM,验证了各种网络的性能都得到了极大的提升。
三、CBAM网络结构
3.1 CBAM的大致流程
- 大致流程
- (1)首先,输入一张中间的特征图
- (2)输入图像经过Channel Attention Module,Channel Attention Module我们用Mc表示,得到Channel Attention maps Mc(F)。
- (3)得到的Mc(F)与输入图像进行像素级别的相乘操作,得到F’
- (4)F’继续进入到Spatial Attention Module,Spatial Attention Module我们用Ms表示,得到Spatial Attention maps Ms(F’)。
- (5)得到的Ms(F’)与输入图像F’进行像素级别的相乘操作,得到F’'
大致了解CBAM的工作流程之后,我们需要来看一下CBAM内部是如何计算出Attention maps的。
3.2 Channel Attention Module(通道注意力模块)
Channel Attention Module为什么要用AvgPool和MaxPool两条并行的池化路径呢?
这是因为对于空间信息的聚合,到目前为止,普遍采用的是平均池化方法(Average Pooling),因此使用AvgPool来获得聚合的空间信息。而MaxPooling收集的是特征的重要线索,以推断更精细的通道注意力,也可以这样理解,AvgPool是获得宏观上的信息,而MaxPool是获得局部的信息,同时使用MaxPool有利用网络获得鲁棒性。
- Channel Attention Module具体计算过程
- (1)输入Input feature F
- (2)经过AvgPool获得特征图AvgPool(F)、经过MaxPool获得特征图MaxPool(F)
- (3)同时,两条池化路径共享一个MLP(多层感知机结构),AvgPool(F)、MaxPool(F)分别经过MLP处理,得到MLP(AvgPool(F))、MLP(MaxPool(F))
- (4)然后经过激活函数,得到最终的输出Mc(F)
note: Mc(F)是一个1维的channel attention map,在与输入图像进行像素级别的乘法时,Python会自动的使用广播技术。
这里的W0、W1是分别MLP的第1层、第2层的权重参数。
3.3 Spatial Attention Module(空间注意力模块)
- Spatial Attention Module具体计算过程
- (1)经Channel Attention Module处理得到的输出F’输入到Spatial Attention Module中
- (2)经过MaxPool、AvgPool、7*7Conv的卷积操作,得到特征图
- (3)最后经过sigmoid激活函数,得到最终的Spatial Attention Maps
note: Ms(F)是一个2维的Spatial attention map.
四、Experiments
实验不是重点,就是普通的消融实验,简单了解以下即可。
(1)Comparison of different channel attention methods.
(2)Comparison of different spatial attention methods.
(3)Combining methods of channel and spatial attention.
(4)Classification results on ImageNet-1K.
参考文献
- CBAcM: Convolutional Block Attention Module
- https://my.oschina.net/u/1416903/blog/4582792
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)