NBJL 2020论文导读15:CBAM: Convolutional Block Attention Module
史嘉琪
论文下载地址:
http://openaccess.thecvf.com/content_ECCV_2018/papers/Sanghyun_Woo_Convolutional_Block_Attention_ECCV_2018_paper.pdf
论文信息:
发表时间:2018年
发表会议:ECCV
作者信息:Sanghyun Woo, Jongchan Park, Joon-Young Lee, and In So Kweon
论文摘要
文章提出了一种简单但有效的注意力网络Convolutional Block Attention Module(CBAM)。给定一个中间的特征图,module沿着channel和spatial两个维度依次计算attention map,然后将输出的attention map与输入的feature map逐元素相乘,以进行自适应特征细化。由于CBAM是轻量级的,因此它可以融合到任何一个CNN架构中,并且有可忽略不计的开销。并且可以与基本CNN一起进行端到端的训练。文章通过对ImageNet-1K,MS COCO和VOC 2007数据集的大量实验证明了CBAM的广泛适用性和有效性。
论文内容
卷积神经网络在很大程度上推动了计算机视觉任务的发展,最近的研究主要研究了网络的三个重要因素:深度,宽度,维度。除了上述三点,而文章研究了架构设计的不同方面:注意力。注意力不仅告诉我们要注意到哪块,而且提高感兴趣区域的代表性。文章的目标是通过使用注意力机制来增加表现力:注意到重要的特征同时压缩不必要的特征。
由于卷积运算通过将跨通道和空间信息混合在一起来提取信息特征,本文提出了CBAM模块来强调通道维度和空间维度这两个主要维度的有意义的特征。下图是对CBAM模块总体的概览,特征图依次通过通道注意力模块和空间注意力模块,最终得到细化后的特征图。
Channel attention module:
一张图片经过几个卷积层会得到一个特征矩阵,这个矩阵的通道数就是卷积层核的个数。一个常见的卷积核经常达到1024,2048个,并不是每个通道都对于信息传递非常有用了的。因此,通过对这些通道进行过滤,增大有效通道权重,减少无效通道的权重,来得到优化后的特征。
具体而言,通道注意力模块首先将feature map在spatial维度上进行压缩,得到一个一维矢量,通过average pooling和max pooling两个pooling函数以后总共可以得到两个一维矢量,再经过同一个MLP得到权重,相加作为最终的注意力向量(权重)。这里global average pooling对feature map上的每一个像素点都有反馈,而global max pooling在进行梯度反向传播计算只有feature map中响应最大的地方有梯度的反馈,能作为GAP的一个补充。
Spatial attention module:
除了在channel上生成了attention模型,作者表示在spatial层面上也需要网络能明白feature map中哪些部分应该有更高的响应。首先,还是使用average pooling和max pooling对输入feature map进行压缩操作,只不过这里的压缩变成了通道层面上的压缩,对输入特征分别在通道维度上做了mean和max操作。最后得到了两个二维的feature,将其按通道维度拼接在一起得到一个通道数为2的feature map,之后使用一个包含单个卷积核的隐藏层对其进行卷积操作,要保证最后得到的feature在spatial维度上与输入的feature map一致。模型如下图所示:
两个模块的连接方式既可以平行连接也可以顺序连接。文中经过实验证明,顺序排列比并行排列提供更好的结果,且通道注意在前比空间注意在前效果更好。
三、自己的认识和体会
文章这种轻量且实用的attention模块可以运用于任何网络架构,未来研究中可以应用此类模块,并优化调整,增加网络的有效性。同时,文章采用grad-CAM可视化的方式证明了采用CBAM以后模型会更加的关注于目标物体本身,这种基于梯度的可视化方式可以直观的看到网络各部分的功能,值得借鉴。