【论文复现】CBAM: Convolutional Block Attention Module

CBAM: Convolutional Block Attention Module

论文原文

代码实现:PyTorch

Abstract

这是今年ECCV2018的一篇文章,主要贡献为提出一个新的网络结构。之前有一篇论文提出了SENet,在feature map的通道上进行attention生成,然后与原来的feature map相乘。这篇文章指出,该种attention方法只关注了通道层面上哪些层会具有更强的反馈能力,但是在空间维度上并不能体现出attention的意思。CBAM作为本文的亮点,将attention同时运用在channel和spatial两个维度上,CBAM与SE Module一样,可以嵌入了目前大部分主流网络中,在不显著增加计算量和参数量的前提下能提升网络模型的特征提取能力。

近几年,随着CNN的兴起,很多结构新颖、有效的网络结构被提出,比如ResNet、ResNext等;最近,大部分论文证明了在网络结构中引入attention机制可以提升网络模型的特征表达能力。attention不止能告诉网络模型该注意什么,同时也能增强特定区域的表征。本文的CBAM在channel和spatial两个维度上引入了attention机制。CBAM结构概览如下所示:

1.jpg

作者在ImageNet-1K上进行了测试,证明增加CBAM模块以后目前大部分网络的分类错误率都有一定程度的降低。同时通过grad-CAM进行可视化分析,可以发现增加CBAM模块的网络模型在推理过程中会将注意力更准确的放在正确待分类对象上。通过额外的实验(MS COCO和VOC 2007),作者也证明了增加CBAM在目标检测中也能取得更好的检测效果。

总结一下,本文的贡献点主要有以下三点:

  1. 提出了一个高效的attention模块----CBAM,该模块能够嵌入到目前的主流CNN网络结构中。
  2. 通过额外的分离实验证明了CBAM中attention的有效性。
  3. 在多个平台上(ImageNet-1K,MS COCO和VOC 2007)上证明了CBAM的性能提升。

Related Work

感兴趣的同学可以关注原论文。

Convolutional Block Attention Module

当输入F作为input feature map时,本文提出的CBAM主要对其进行以下两个运算:

2.jpg

其中等号右边的操作符表示的是element-wise的点乘。M_{c}表示在channel维度上做attention提取的操作,M_{s}表示的是在spatial维度上做attention提取的操作。下图分别表示了Channel Attention Module和Spatial Attention Module的处理过程。

3.jpg

Channel attention module

这部分的工作与SENet很相似,都是首先将feature map在spatial维度上进行压缩,得到一个一维矢量以后再进行操作。与SENet不同之处在于,对输入feature map进行spatial维度压缩时,作者不单单考虑了average pooling,额外引入max pooling作为补充,通过两个pooling函数以后总共可以得到两个一维矢量。global average pooling对feature map上的每一个像素点都有反馈,而global max pooling在进行梯度反向传播计算只有feature map中响应最大的地方有梯度的反馈,能作为GAP的一个补充。

具体做法如下,以F表示输入feature map,F_{avg}^{c}F_{max}^{c}分别代表经过global average pooling和global max pooling计算后的feature,W_{0}W_{1}代表的是多层感知机模型中的两层参数,在这部分的计算可以用如下公式表示:

4.jpg

值得注意的是,多层感知机模型中W_{0}W_{1}之间的feature需要使用ReLU作为激活函数去处理。

Spatial attention module

这部分工作是论文跟SENet区别开来的一个重要贡献,除了在channel上生成了attention模型,作者表示在spatial层面上也需要网络能明白feature map中哪些部分应该有更高的响应。首先,还是使用average pooling和max pooling对输入feature map进行压缩操作,只不过这里的压缩变成了通道层面上的压缩,对输入特征分别在通道维度上做了mean和max操作。最后得到了两个二维的feature,将其按通道维度拼接在一起得到一个通道数为2的feature map,之后使用一个包含单个卷积核的隐藏层对其进行卷积操作,要保证最后得到的feature在spatial维度上与输入的feature map一致,如同上图中下部分网络所示。

定义经过max pooling和average pooling操作后的feature map为,F_{avg}^{s}\in\mathbb{R}^{1*H*W}F_{max}^{s}\in\mathbb{R}^{1*H*W},该部分的数学处理可以用以下公式表示:

5.jpg

\sigma表示的是sigmoid激活函数,该部分显示的卷积层使用了7x7的卷积核,其实后面的实验中作者也是用了3x3的卷积核进行实验,总体来说7x7的卷积会表现更好。

Arrangement of attention modules

两个attention的module,以何种顺序去设置和组合同样很重要,作者在之后的实验中,也体现了channel-first、spatial-first和parallel的实验结果。

Experiments

这部分展示了论文的实验,作者总共在三个平台上对CBAM模块进行测试。首先作者展示了CBAM的有效性,然后对CBAM中的组合结构进行了分离实验。下图中展示了将CBAM嵌入到ResNet结构中的示意图。

6.jpg

在ImageNet-1K的实验中,作者在测试时对验证集的处理为size为224x224的center crop,初始学习率为0.1,每隔30个epochs下降为之前的0.1倍,总共训练90个epochs。

Channel attention

这部分作者对比了论文的channel attention方法,主要以ResNet50作为baseline,同时对比了SE-ResNet50和本文的两个实验,分别是ResNet50+MaxPool和ResNet50+MaxPool & AvgPool,实验结果如下所示:

7.jpg

通过与baseline的对比可以发现,attention方法能提升网络的表征能力,在其中使用了AvgPool作为spatial压缩的方法对比MaxPool体现出了更好的优越性,当将两者结合在一起以后网络的表征能力.

Spatial attention

这一部分在channel attention的基础上讨论了spatial attention的内部组成对全局的影响,实验结果如下:

8.jpg

k表示了最后用于得到feature map的卷积层中卷积核的大小,倒数四行中括号的第一个操作,分别表示作者使用avg&max或者1x1的卷积层去将输入feature map进行通道上的压缩。最终,使用了7x7的卷积核和avg&max的通道压缩方式可以得到最好的分类结果,表示了更大的卷积核在深层上能够组合更加全局的特征,这对分类任务是证明有效的。

Arrangement of the channel and spatial attention

关于channel attention module和spatial attention module的组合顺序,论文也做了实验,实验结果如下:

9.jpg

在SE-ResNet50作为baseline的对比中,作者考虑了三种情况:channel-first、spatial-first和parall的方式,可以看到,channel-first能取得更好的分类结果。

Conclusion

总的来说,这篇论文提出的CBAM还是挺有意思的,能更直观、更有逻辑性的表达了网络的设计思路,就是在channel和spatial维度上都生成attention map对输入特征进行约束增强处理。同时,作者也展示了这种方法在多种任务上都能取得较好的成绩。总的来说是一篇不错的文章。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容