CBAM将空间注意力和通道注意力综合起来的公式推导
时间: 2023-02-08 16:31:26 浏览: 445
CBAM (Convolutional Block Attention Module) 是一种融合了空间注意力和通道注意力的模块。它的公式推导如下:
首先,通过卷积层和池化层获得输入特征图 $F$,再通过两个独立的线性层 $f_{s}$ 和 $f_{c}$ 得到空间注意力 $M_{s}$ 和通道注意力 $M_{c}$。其中,$f_{s}$ 和 $f_{c}$ 都是全连接层。
空间注意力 $M_{s}$ 的推导:
$$M_{s} =softmax(f_{s}(F))$$
通道注意力 $M_{c}$ 的推导:
$$M_{c} =softmax(f_{c}(F))$$
最后,将两个注意力权重相乘得到最终的注意力权重 $M$
$$M=M_{s} \times M_{c}$$
接着,用注意力权重 $M$ 去乘输入特征图 $F$ 得到最终输出特征图 $F^{'}$
$$F^{'}=M \times F$$
这就是 CBAM 的推导过程。
相关问题
CBAM是通道注意力机制还是空间注意力机制
CBAM是一种同时结合了通道注意力机制和空间注意力机制的注意力机制。它通过先对通道特征和空间特征进行分别的注意力计算,然后将它们结合起来,从而提高卷积神经网络的表达能力。其中,通道注意力机制主要考虑不同通道之间的信息交互,而空间注意力机制主要考虑不同空间位置之间的信息交互。CBAM的结合方式使得模型能够在通道和空间上同时学习到有用的特征信息,从而提高模型的分类准确率。
YOLOv5在neck添加cbam注意力机制公式推导
在 YOLOv5 的 neck 中添加 CBAM 注意力机制的公式推导如下:
假设输入特征图为 $X \in \mathbb{R}^{C \times H \times W}$,$C$、$H$、$W$ 分别表示通道数、高度和宽度。CBAM 注意力机制包括两个模块:通道注意力和空间注意力。
1. 通道注意力
首先,计算全局平均池化值:
$$\mathbf{a}_c = \frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} X_{c, i, j}$$
其中 $\mathbf{a}_c \in \mathbb{R}^C$ 表示通道 $c$ 的全局平均池化值。
接着,对全局平均池化值进行两层全连接层:
$$ \mathbf{z} = \mathrm{ReLU}(\mathbf{W}_2\delta(\mathbf{W}_1\mathbf{a})) $$
其中,$\mathbf{W}_1 \in \mathbb{R}^{C' \times C}$,$\mathbf{W}_2 \in \mathbb{R}^{C \times C'}$,$\delta$ 表示批归一化,ReLU 表示激活函数。
最后,对每个通道进行缩放,得到通道注意力的权重 $\mathbf{s} \in \mathbb{R}^C$:
$$\mathbf{s}_c = \frac{1}{Z} \mathbf{z}_c$$
其中,$Z = \sum_{c=1}^{C} \mathbf{z}_c$。
2. 空间注意力
对于每个通道 $c$,我们可以将其空间特征图视为一个向量 $\mathbf{x}_c \in \mathbb{R}^{H \times W}$,然后计算其对应的空间注意力权重 $\mathbf{r}_c \in \mathbb{R}^{H \times W}$:
$$ \mathbf{r}_c = \mathrm{softmax}(f(\mathbf{x}_c)) $$
其中,$f$ 表示一个卷积层和一个 sigmoid 激活函数,用于学习权重。$\mathrm{softmax}$ 表示对每个位置进行 softmax 归一化。
最后,将通道注意力权重和空间注意力权重相乘,得到最终的注意力权重 $\mathbf{w}_c \in \mathbb{R}^{H \times W}$:
$$\mathbf{w}_c = \mathbf{s}_c \odot \mathbf{r}_c$$
其中,$\odot$ 表示逐元素相乘。最终的特征图为:
$$Y_{c, i, j} = X_{c, i, j} \cdot \mathbf{w}_{c, i, j}$$
这样,我们就完成了 CBAM 注意力机制的推导。