CBAM: Convolutional Block Attention Module(ECCV2018)
文章目录
实验部分详见原文,文章为原文翻译,如有错误请参照原文
摘要
- 方法
- 我们提出了Convolutional Block Attention Module (CBAM),一种简单高效的前馈卷积神经网络注意力模块
- 给定一个中间的feature map,我们的模型沿着两个独立的维度推断出attention map,即通道与空间,然后将attention map与输入feature map相乘进行自适应特征细化
- 由于CBAM是一个轻量级的泛化模型,它可以被无缝整合到任意CNN结构,开销可以忽略不计,同时是端到端可训练的
- 贡献
- 我们通过大量的实验在ImageNet-1K、MS COCO检测与VOC 2007检测数据集上验证了CBAM
- 我们的实验展现出,分来上一致的提升与各种模型的检测性能展现出CBAM更宽泛的适应性
- 代码与模型:https://github.com/luuuyi/CBAM.PyTorch
1.引言
Fig. 1 : The overview of CBAM. The module has two sequential sub-modules: channel and spatial. The intermediate feature map is adaptively refined through our module (CBAM) at every convolutional block of deep networks.
1st Para: 背景
- CNNs自身丰富的表达能力已经在CV有了出色的表现
- 为了提升CNNs的性能,最近的研究主要在三个网络的重要因素:depth, width, and cardinality
2st Para:
- depth
- 从LeNet到ResNet,网络变得更深且更具表达性
- VGGNet展现出相同形状堆叠的block可以得到公平的结果
- 出于相同的目的,ResNet堆叠相同拓扑的残差块连同跳跃连接去建立极深的结构
- width
- GoogLeNet表示width是另一个提升模型性能的重要因素
- Zagoruyko and Komodakis提出增加网络的宽度在ResNet架构
- 他们已经证明在CIFAR benchmark上增加width的28层ResNet可以超越depth为100层的ResNet
- cardinality
- Xception and ResNeXt 提出增加网络cardinality(指的是网络中某个层或某个操作的输出维度或通道数量)
- 他们的经验表明基数不仅可以保存所有参数,也能导致比depth和width更强的表达能力
3st Para:
- attention优点
- 除了这些原因外,我们调查了结构设计上不同方面,attention
- attention的重要性普遍的出现在之前的研究中
- attention不仅表达了融合之处,也提升了表达能力
- 我们的目标是通过使用注意力机制提升表达能力:聚焦在重要特征的同时抑制不必要的那个
- 利用attention我们怎么做,达到什么目的
- 在本文中,我们提出了一个新的网络模块“Convolutional Block Attention Module”
- 由于卷积操作通过混合跨通道与空间的信息提取丰富的特征,我们用我们的模块在两个主要维度(channel and spatial axes)强调有意义的特征
- 为了达到此目的,我们用通道与空间注意力模块(Fig. 1),为了使每一个branches在各自的channel and spatial axes能够学习到‘what’ and ‘where’ to attend(特征,空间)
- 因此,我们的模型有效的通过学习强调与抑制的信息来帮助信息流进网络
4st Para: 模型有效性
- 在ImageNet-1K数据集,在各种baseline中通过插入我们的模块获得了提升,揭示了CBAM的有效性
- 我们使用grad-CAM可视化训练模型,并观察到与基线网络相比,经CBAM增强的网络更正确地关注目标物体
- 之后我们进行用户研究,定量评估模型可解释性的提升
- 通过CBAM我们展现出更好的性能与可解释性
- 综合考虑,我们认为性能提升来自精准的注意力与噪声的减小
- 最后,我们证实MS COCO与VOC2007目标检测的性能提升,展现CBAM广泛的应用性
- 由于我们设计的模型是轻量级的,在大多数情况下,参数和计算的开销可以忽略不计
5st Para: 贡献
- 我们提出简单高效的注意力模块,它可以被宽泛的应用于CNNs的表达能力
- 通过丰富的消融实验我们证实的模块的有效性
- 我们证实通过插入我们轻量级的模块,各种网络的性能于 (ImageNet-1K, MS COCO, and VOC 2007)得到提升
2.相关工作
3.方法(Convolutional Block Attention Module)
Fig. 2:Diagram of each attention sub-module. As illustrated, the channel sub-module utilizes both max-pooling outputs and average-pooling outputs with a shared network; the spatial sub-module utilizes similar two outputs that are pooled along the channel axis and forward them to a convolution layer.
1st Para: 总过程
- 给定中间特征映射 F ∈ R C × H × W \mathbf{F}\in \mathbb{R}^{C\times H\times W} F∈RC×H×W 作为输入,随后CBAM推断出 1D通道注意力映射 M c ∈ R C × 1 × 1 \mathbf{M_c}\in\mathbb{R}^{C\times 1\times 1} Mc∈RC×1×1 与2D空间注意力映射 M s ∈ R C × 1 × 1 \mathbf{M_s}\in \mathbb{R}^{C\times 1\times 1} Ms∈RC×1×1 如Fig. 1
- 以上注意力过程可以被描述为:
F ′ = M c ( F ) ⊗ F , F ′ ′ = M s ( F ′ ) ⊗ F ′ , (1) \mathbf{F'}=\mathbf{M_c}(\mathbf{F})\otimes \mathbf{F}, \\ \mathbf{F''}=\mathbf{M_s}(\mathbf{F'})\otimes \mathbf{F'}, \tag{1} F′=Mc(F)⊗F,F′′=Ms(F′)⊗F′,(1)
- 这里 ⊗ \otimes ⊗ 代表逐个元素相乘
- 在相乘期间,注意力值被广播(复制):通道注意力值被广播到空间维度,反之亦然
- F ′ ′ \mathbf{F''} F′′ 是最终的细粒度输出
- Fig. 2 描绘每一个注意力映射的计算过程
- 随后描述每一个注意力模块的细节
2st Para: Channel attention module
- 我们通过利用特征的通道间关系生成通道注意力映射
- 由于特征映射的每一个通道被当作一个特征检测器,通道注意力集中在给定输入图像的“什么”是有意义的
- 为了有效的计算通道注意力,我们缩减输入特征映射的空间维度
- 为了聚合空间信息,average-pooling已经被普遍应用
- Zhou et al.建议使用它有效学习目标对象的范围,Hu et al.应用它在注意力模块计算空间统计
- 与以前工作不一样的是,我们认为,最大池化收集了不同对象特征的另一个重要线索,以推断更精细的通道注意力
- 那么,我们同时使用average-pooled and max-pooled特征
- 我们的经验证实,利用这两个特征大大提高了网络的表示能力,而不是单独使用每个特征,展现出我们设计选择的有效性
- 我们将在下面描述详细的操作
3st Para:
- 我们首先使用averagepooling and max-pooling 聚合特征映射的空间信息,生成两个不同的空间上下文表示: F a v g c , F m a x c \mathbf{F_{avg}^c},\mathbf{F_{max}^c} Favgc,Fmaxc ,代表各自的平均池化与最大池化特征
- 两者进入权重共享网络生成通道注意力映射 M c ∈ R C × 1 × 1 \mathbf{M_c}\in \mathbb{R}^{C\times 1\times 1} Mc∈RC×1×1
- 共享网络由具有一个隐藏层的多层MLP组成
- 为了减少参数负担,隐藏的激活大小设置为 R C / r × 1 × 1 \mathbb{R}^{C/r\times 1\times 1} RC/r×1×1 ,其中 r r r 表示reduction ratio
- 在共享网络后,我们使用逐元素求和来合并输出的特征向量
- 简而言之,通道注意力:
M c ( F ) = σ ( M L P ( A v g P o o l ( F ) ) + M L P ( M a x P o o l ( F ) ) ) = σ ( W 1 ( W 0 ( F a v g c ) ) + W 1 ( W 0 ( F m a x c ) ) ) , (2) \begin{gathered} \mathbf{M_{c}(F)} \begin{aligned}=\sigma(MLP(AvgPool(\mathbf{F}))+MLP(MaxPool(\mathbf{F})))\end{aligned} \\ =\sigma(\mathbf{W_1}(\mathbf{W_0}(\mathbf{F_{avg}^c}))+\mathbf{W_1}(\mathbf{W_0}(\mathbf{F_{max}^c}))), \end{gathered} \tag{2} Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=σ(W1(W0(Favgc))+W1(W0(Fmaxc))),(2)
- 其中 σ \sigma σ 表示sigmoid, W 0 ∈ R C / r × C , W 1 ∈ R C × C / r \mathbf{W_0}\in\mathbb{R}^{C/r\times C},\mathbf{W_1}\in\mathbb{R}^{C\times C/r} W0∈RC/r×C,W1∈RC×C/r
- 注意MLP权重 W 0 , W 1 \mathbf{W_0},\mathbf{W_1} W0,W1 为共享的
4st Para: Spatial attention module
- 我们利用特征的通道间关系生成空间注意力映射
- 与通道注意力不同的是,聚焦在‘where’的空间注意力是信息丰富的部分,是与通道注意力互补的
- 为了计算空间注意力,我们首先沿着通道轴应用平均池化和最大池化操作,并将它们连接起来以生成有效的特征
- 应用池化操作在通道轴上在突出丰富信息区域是有效的
- 在cat的特征中,我们应用卷积层生成空间注意力映射 M s ( F ) ∈ R H × W \mathbf{M_s}(\mathbf{F})\in \mathbf{R}^{H\times W} Ms(F)∈RH×W
- 下面为我们描述的操作细节
4st Para:
- 我们使用两种pooling聚合特征的通道信息,生成 2D映射: F a v g s ∈ R 1 × H × W , F m a x s ∈ R 1 × H × W \mathbf{F_{avg}^s}\in\mathbb{R}^{1\times H\times W},\mathbf{F_{max}^s}\in\mathbb{R}^{1\times H\times W} Favgs∈R1×H×W,Fmaxs∈R1×H×W
- 每一个代表跨通道的平均池化与最大池化特征
- 然后将它们通过标准卷积层进行cat和卷积,生成我们的二维空间注意力图
- 简而言之,空间注意力:
M s ( F ) = σ ( f 7 × 7 ( [ A v g P o o l ( F ) ; M a x P o o l ( F ) ] ) ) = σ ( f 7 × 7 ( [ F a v g s ; F m a x s ] ) ) , (3) \begin{aligned} \mathbf{M_s(F)}& =\sigma(f^{7\times7}([AvgPool(\mathbf{F});MaxPool(\mathbf{F})])) \\ &=\sigma(f^{7\times7}([\mathbf{F_{avg}^s};\mathbf{F_{max}^s}])), \end{aligned} \tag{3} Ms(F)=σ(f7×7([AvgPool(F);MaxPool(F)]))=σ(f7×7([Favgs;Fmaxs])),(3)
- 其中 σ \sigma σ 表示sigmoid, f 7 × 7 f^{7\times7} f7×7 表示卷积核7*7的卷积核
5st Para: Arrangement of attention modules
- 给定一个输入图像,两个注意模块,通道和空间,计算互补注意力,聚焦在‘what’ and ‘where’
- 考虑此,两个模块可以以并行或顺序的方式放置
- 我们发现顺序排列比并行排列的结果更好
- 对于序列过程的排列,我们的实验结果表明,通道优先顺序略优于空间优先顺序
4.实验
Fig. 3: CBAM integrated with a ResBlock in ResNet. This figure shows the exact position of our module when integrated within a ResBlock. We apply CBAM on the convolution outputs in each block.
5.结论
- 我们提出了卷积块注意模块(CBAM),这是一种提高CNN网络表示能力的新方法
- 我们将基于注意力的特征细化应用于两个不同的模块,通道和空间,在保持较小开销的同时实现了相当大的性能改进
- 对于通道注意力,我们建议使用最大池特征和平均池特征,从而产生比SE更精细的注意力
- 我们通过利用空间注意力来进一步推动性能
- 模块(CBAM)学习在哪里强调或抑制什么,并有效地改进中间特征
- 为了验证其有效性,我们对各种最先进的模型进行了广泛的实验,并确认CBAM在三个不同的基准数据集(ImageNet1K、MS COCO和VOC 2007)上优于所有基线
- 此外,我们可视化了模块如何准确地推断给定的输入图像。有趣的是,我们观察到我们的模块诱导网络正确地聚焦于目标物体
- 我们希望CBAM成为各种网络架构的重要组成部分
为了验证其有效性,我们对各种最先进的模型进行了广泛的实验,并确认CBAM在三个不同的基准数据集(ImageNet1K、MS COCO和VOC 2007)上优于所有基线 - 此外,我们可视化了模块如何准确地推断给定的输入图像。有趣的是,我们观察到我们的模块诱导网络正确地聚焦于目标物体
- 我们希望CBAM成为各种网络架构的重要组成部分