CBAM: Convolutional Block Attention Module


  • 论文地址:
    http://openaccess.thecvf.com/content_ECCV_2018/papers/Sanghyun_Woo_Convolutional_Block_Attention_ECCV_2018_paper.pdf
  • 收录:ECCV 2018 (European Conference on Computer Vision)
  • 论文代码: github-PyTorch

更多注意力机制相关文章,请看这篇论文总结RAM: Residual Attention Module for Single Image Super-Resolution

概述

  1. 为了提升CNNs(卷积神经网络)效果,一些研究者尝试从三个方面着手:depthwidthcardinality,各自典型代表:
  • depth:VGGNet、ResNet
  • width:GoogLeNet
  • cardinality:Xception、ResNeXt
  1. 作者尝试从另一个角度出发—attention,attention适用于很多计算机视觉任务,例如图片分类、语义分割、边缘检测、姿态估计等。Attention可分为两类:基于通道(channel)和基于空间(spatial),前者关注更重要的特征(每个通道都是一种特征),后者留意在哪个位置关注,即作者所说的learn ‘what’ and ‘where’
  2. 作者组合这两类attention,提出 Convolutional Block Attention Module(CBAM)。基于主干网络ResNet18、ResNet34、ResNet101、WideResNet18、ResNeXt50、ResNeXt101、MobileNet、VGG16,在数据集ImageNet-1K上测试图片分类,在数据集 MS COCOVOC 2007上测试物体检测。验证了CBAM不仅通用性强,而且在不明显增加参数量的情况下,能提升网络效果。

CBAM结构

CBAM: Convolutional Block Attention Module_第1张图片

在给定输入特征F的情况下,CBAM模块先学到1维的 通道注意力图(Channel Attention map)—Mc,再学到2维的 空间注意力图(Spatial Attention map)—Ms,这个attention过程可用如下公式表达:
CBAM: Convolutional Block Attention Module_第2张图片

其中,
CBAM: Convolutional Block Attention Module_第3张图片

  • 通道注意力模块(Channel attention module)
    该模块先利用全局平均池化(global average-pooling)全局最大值池化(global max-pooling)操作同时抽取通道上的特征;然后通过共享一个多层感知机(multi-layer perceptron)进一步得到通道上的特征;最终这两种特征点加(element-wise summation),并使用sigmoid激活后得到Channel Attention map。公式表达为:
  • 空间注意力模块(Spatial attention module)
    该模块同时在通道维度上取平均值和最大值,得到两个二维空间特征;之后concatenate一起,经过卷积得到最终的Spatial Attention map。公式表达为:

    这里的7x7代表卷积核大小。
  • 如何组合通道和空间注意力模块?
    后续实验证明:串联比并联效果好,通道模块接空间模块效果好

实验

  1. Ablation studies
    数据集:ImageNet-1K
    Baseline:ResNet50
    在现有ResNet结构中,CBAM可以添加到每个block的输出特征之后:
    CBAM: Convolutional Block Attention Module_第4张图片

    作者针对 Channel attentionSpatial attention以及二者如何组合做了各个实验:
  • Channel attention


    CBAM: Convolutional Block Attention Module_第5张图片

    该实验结果中发现综合AvgPool和MaxPool效果比单一使用其中之一要好。

  • Spatial attention


    CBAM: Convolutional Block Attention Module_第6张图片
    image.png

    该实验结果中发现综合Avg和Max,并使用7x7卷积核效果最好。

  • 二者如何组合


    CBAM: Convolutional Block Attention Module_第7张图片

    该实验结果表明:串联比并联效果要好;先通道注意力后空间注意力效果要更好。

  1. Image Classification on ImageNet-1K
  • 该实验基于主干网络:ResNet、WideResNet、ResNext,验证了CBAM的有效性,而且参数量和计算量提升不明显:


    CBAM: Convolutional Block Attention Module_第8张图片
  • 作者同时也对不同主干网络的最后一层输出特征做了可视化,并给出目标分类的softmax值(P):

    发现添加CBAM之后,网络能更加关注到目标分类的区域。可视化方法来自:
    Selvaraju, R.R., Cogswell, M., Das, A., Vedantam, R., Parikh, D., Batra, D.: Grad- cam: Visual explanations from deep networks via gradient-based localization. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. (2017) 618–626
  1. Object Detection
  • MS COCO
    目标检测采取方法Faster-RCNN,主干为带预训练权重的 ResNet50和ResNet101:


    CBAM: Convolutional Block Attention Module_第9张图片

    实验证明:添加CBAM模块后,不同主干网络的效果都有提升。

  • VOC 2007
    目标检测采取方法StairNet,它又基于SSD,主干网络有VGG16和MobileNet:


    CBAM: Convolutional Block Attention Module_第10张图片

    实验证明:添加CBAM模块后,不同主干网络的效果都有提升,即使在轻量级网络MobileNet下也有提升。

你可能感兴趣的:(CBAM: Convolutional Block Attention Module)