『论文笔记』BAM:Bottleneck Attention Module(注意力机制)+TensorFlow2.0复现!

CBAM:Convolutional Block Attention Module(注意力机制)+TensorFlow2.0复现!

文章目录

    • 一. 论文摘要
    • 二. BAM的网络结构
      • 2.1. 总体的描述
      • 2.2. 通道注意力机制
      • 2.3. 空间注意力机制
    • 参考文献

  • 本论文是上篇CBAM的姊妹篇,原班人马打造,论文地址:CBAM!
  • 本文使用Tensorflow2.0实现,代码地址:zhangkaifang/CBAM-TensorFlow2.0

一. 论文摘要

深度神经网络的最新进展是通过架构搜索来获得更强的表示能力。在本文中,我们重点研究了一般深度神经网络中注意力的影响。我们提出了一个简单有效的注意力模块,称为瓶颈注意模块(BAM: Bottleneck Attention Module),它可以整合到任何前馈卷积神经网络当中。我们的模型通过两个分离的路径channel和spatial, 得到一个Attention Map。我们将此模块放在模型的每个瓶颈处,在那里发生了特征图的下采样。我们的模块在瓶颈处构造了一个具有多个参数的层次注意,它可以与任何前馈模型以端到端的方式联合训练。我们通过在CIFAR-100、ImageNet-1K、VOC 2007和MS COCO基准上的大量实验来验证BAM。实验结果表明,在分类和检测性能的不断改善与各种模型,证明了广泛的适用性BAM。

二. BAM的网络结构

2.1. 总体的描述

『论文笔记』BAM:Bottleneck Attention Module(注意力机制)+TensorFlow2.0复现!_第1张图片

对于一个中间层的Feature map F ∈ R C × H × W \mathbf F \in \mathbb{R}^{C \times H \times W} FRC×H×W,BAM将会得到一个3D的attention map M ( F ) ∈ R C × H × W \mathbf{M}(\mathbf{F}) \in \mathbb{R}^{C \times H \times W} M(F)RC×H×W,细化后的feature map F ′ \mathbf{F}^{\prime} F 能被表示为:

F ′ = F + F ⊗ M ( F ) (1) \mathbf{F}^{\prime}=\mathbf{F}+\mathbf{F} \otimes \mathbf{M}(\mathbf{F})\tag{1} F=F+FM(F)(1) 其中: ⊗ ⊗ 为element-wise multiplication。为了设计一个高效而强大的模块,我们首先在2个分支分别计算通道注意力 M c ( F ) ∈ R C \mathbf{M}_{\mathbf{c}}(\mathbf{F}) \in \mathbb{R}^{C} Mc(F)RC 和空间注意力 M s ( F ) ∈ R H × W \mathbf{M}_{\mathbf{s}}(\mathbf{F}) \in \mathbb{R}^{H \times W} Ms(F)RH×W,然后计算attention map M ( F ) \mathbf{M}(\mathbf{F}) M(F)

M ( F ) = σ ( M c ( F ) + M s ( F ) ) (2) \mathbf{M}(\mathbf{F})=\sigma\left(\mathbf{M}_{\mathbf{c}}(\mathbf{F})+\mathbf{M}_{\mathbf{s}}(\mathbf{F})\right)\tag{2} M(F)=σ(Mc(F)+Ms(F))(2) 其中: σ \sigma σ 表示Sigmoid函数,在进行上面add之前两个分支输出都被resize为 R C × H × W \mathbb{R}^{C \times H \times W} RC×H×W

2.2. 通道注意力机制

为了聚合feature map在每个通道维度,我们对feature map F \mathbf{F} F 进行全局平均池化得到,得到一个通道向量 F c ∈ R C × 1 × 1 \mathbf{F}_{\mathbf{c}} \in \mathbb{R}^{C \times 1 \times 1} FcRC×1×1,这个向量对全局信息在每个通道进行软编码。为了评估Attention在每个通道的效果?我们使用了一个多层感知(MLP)用一层隐藏层。为了节省参数开销,将隐藏的激活大小设置为 R C / r × 1 × 1 \mathbb{R}^{C / r \times 1 \times 1} RC/r×1×1,其中 r r r 为比例。在MLP之后,我们增加了BN去调整规模和空间分支一样的输出,channel attention可以被计算为:

M c ( F ) = BN ( MLP ⁡ ( AvgPool ( F ) ) ) = BN ( W 1 ( W 0 AvgPool ( F ) + b 0 ) + b 1 ) (3) \begin{aligned} \mathbf{M}_{\mathbf{c}}(\mathbf{F}) &=\text {BN}(\operatorname{MLP}(\text {AvgPool}(\mathbf{F}))) \\ &=\text {BN}\left(\mathbf{W}_{\mathbf{1}}\left(\mathbf{W}_{0} \text {AvgPool}(\mathbf{F})+\mathbf{b}_{0}\right)+\mathbf{b}_{1}\right)\tag{3} \end{aligned} Mc(F)=BN(MLP(AvgPool(F)))=BN(W1(W0AvgPool(F)+b0)+b1)(3) 其中: W 0 ∈ R C / r × C , b 0 ∈ R C / r , W 1 ∈ R C × C / r , b 1 ∈ R C \mathbf{W}_{0} \in \mathbb{R}^{C / r \times C}, \mathbf{b}_{0} \in \mathbb{R}^{C / r}, \mathbf{W}_{1} \in \mathbb{R}^{C \times C / r}, \mathbf{b}_{1} \in \mathbb{R}^{C} W0RC/r×C,b0RC/r,W1RC×C/r,b1RC

2.3. 空间注意力机制

『论文笔记』BAM:Bottleneck Attention Module(注意力机制)+TensorFlow2.0复现!_第2张图片

这个空间分支产生了空间Attention去增强或者抑制特征在不同的空间位置,众所周知,利用上下文信息是去知道应该关注哪些位置的关键点。在这里我们为了高效性运用空洞卷积去增大感受野。我们观察到与标准卷积相比,空洞卷积有助于构造更有效的spatial map。空间分支通过产生一个空间spatial map M s ( F ) ∈ R H × W \mathbf{M}_{\mathbf{s}}(\mathbf{F}) \in \mathbb{R}^{H \times W} Ms(F)RH×W 去强调或压制不同空间位置的特征。

M s ( F ) = BN ( f 3 1 × 1 ( f 2 3 × 3 ( f 1 3 × 3 ( f 0 1 × 1 ( F ) ) ) ) ) (4) \mathbf{M}_{\mathbf{s}}(\mathbf{F})=\text {BN}\left(f_{3}^{1 \times 1}\left(f_{2}^{3 \times 3}\left(f_{1}^{3 \times 3}\left(f_{0}^{1 \times 1}(\mathbf{F})\right)\right)\right)\right)\tag{4} Ms(F)=BN(f31×1(f23×3(f13×3(f01×1(F)))))(4)其中: f f f 表示卷积运算,BN表示批量归一化运算,上标表示卷积滤波器大小。 通道缩减有两个 1 × 1 1×1 1×1 卷积。中间 3 × 3 3×3 3×3 扩张卷积用于聚合具有较大感受野的上下文信息。

参考文献

  • Bottleneck Attention Module

你可能感兴趣的:(Deep,Learning学习笔记,论文阅读笔记)