《CBAM: Convolutional Block Attention Module》论文阅读之 Channel Attention 与 Spatial Attention

为了提高神经网络的性能,许多研究都集中在 “depth, width, and cardinality” 上,而本文的重点在 “Attention”。

“注意力机制(Attention mechanism)”听起来很高大上,实际上是关于调整权重的问题,这篇论文提出了一个“即插即用的”的网络结构——CBAM,能够很方便的加到其他的CNN结构中。CBAM利用了通道注意力(channel attention)与空间注意力(spatial attention)。实际上就是在通道(channel)维度上与空间(spatial)维度上对传进来的特征图(intermediate feature map)进行加权处理,权重越大,说明这一通道(channel 维度)或这一点(spatial维度)的信息很重要。如何确定给每一个channel或每一点的权重大小,不同的论文可能会有不同的衡量方法,例如采用均值,例如采用方差等等,这篇论文是通过最大池化(MaxPool)与平均池化(AvgPool)来决定的。

先看Channel Attention,结构如图所示:

Channel Attention 关注的是channel维度。特征图的每个通道被认为是一种特征检测器检测到的特征(每个通道特征由不同的卷积核(Kernel)得到),论文中说的是“what”,就是说哪一个channel比较重要(有用信息多)。对于一个特征图(C*H*W),计算出每个channel的重要性,也就是权值(C*1*1),将权值与特征图相乘得到加权的特征图,就是Channel Attention。权值通过MaxPool与AvgPool计算(为什么是这两个,因为实验结果证明使用这两个比单独地使用其中一个效果要好)。为了获得Channel维度上的权值,需将每一个Channel(1*H*W)压缩成一个数(1*1*1),两种方法:计算每个Channel的平均值(AvgPool)和最大值(MaxPool)。计算完后,将它们通过一个共同的多层感知机MLP(也就是含有一个隐层的全连接网络),MLP的结构是(输入神经元:C,隐层神经元:C/r,输出神经元:C),再将这两个输出相加,通过sigmoid函数归一化,得到最后的权重。将此权重与原始特征图相乘,得到channel维度上的加权特征图。Channel Attention基本完成。

Spatial Attention 关注的是“where”,就是每一个通道上(1*H*W)哪一点比较重要,因此我们需要生成一个维度为(1*H*W)的空间权重。怎么生成这个权重,同样,我们将不同的channel在同一平面空间点上的值做平均(AvgPool)和取最大值(MaxPool)来获得(1*H*W)的权重。再通过一个卷积层和sigmoid函数来得到最终的权重,将此权重在spatial维度上和每一个channel(1*H*W)相乘,得到spatial维度上的加权特征图。spatial attention基本完成。

最后的问题是按什么顺序给传进来的特征图加上Channel Attention与Spatial Attention。这里有两种思路,(1)并行模型,Channel Attention 与Spatial Attention并行;(2)顺序模型,先让特征图通过Channel Attention再通过Spatial Attention或者相反。实验证明先通过Channel Attention比较好(深度学习有时候就是不讲道理,看结果调)。因此最后的结构如下所示:

 

 

原文地址:CBAM: Convolutional Block Attention Module

Official PyTorch code:https://github.com/Jongchan/attention-module

 

 

 

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Convolutional Block Attention Module (CBAM) 是一种用于提高卷积神经网络性能的注意力机制。其公式推导主要分为两部分: 1. Channel Attention: 首先,我们计算每个通道的重要性权重。这可以通过使用全局平均池化和全局最大池化来实现。公式如下: $$ w_i = \frac{1}{1 + exp(-\frac{1}{\sqrt{d}}(avg_i - max_i))} $$ 其中 $d$ 为通道维度,$avg_i$ 和 $max_i$ 分别表示第 $i$ 个通道的全局平均值和全局最大值。 2. Spatial Attention: 接下来,我们计算每个位置的重要性权重。这可以通过使用卷积层和池化层实现。公式如下: $$ w_{i,j} = \frac{1}{1 + exp(-\frac{1}{\sqrt{d}}(avg_{i,j} - max_{i,j}))} $$ 其中 $d$ 为输入特征图的尺寸,$avg_{i,j}$ 和 $max_{i,j}$ 分别表示第 $(i,j)$ 位置的全局平均值和全局最大值。 最后,我们可以使用重要性权重对输入特征图进行加权平均以得到输出特征图。 $$ O = w_c \times C + w_s \times S $$ 其中 $C$ 为输入特征图,$S$ 为输入特征图经过空间注意力机制得到的特征图,$w_c$ 和 $w_s$ 分别表示 ### 回答2: Convolutional Block Attention ModuleCBAM)是一种用于图像识别任务的注意力机制模块,主要用于提取图像特征并加强具有重要信息的部分。 CBAM模块包含两个主要组成部分:通道注意力模块(Channel Attention Module)和空间注意力模块(Spatial Attention Module)。 通道注意力模块的目标是根据通道特征的重要性对其进行加权。具体来说,通道注意力模块通过全局平均池化操作将输入特征图的通道维度降低,然后将其通过两个全连接层进行特征变换。这两个全连接层一般包括一个降维层和一个升维层。降维层将通道特征映射成一个低维特征,升维层将低维特征映射回原始通道数。然后,这些特征经过激活函数得到通道权重,并与原始通道特征进行相乘得到加权特征。 空间注意力模块旨在根据像素级特征的重要性对其进行加权。首先,将输入特征图沿着通道维度通过最大池化和平均池化操作分别得到最大值特征图和平均值特征图。然后,这两个特征图经过一个卷积层得到注意力图,表示了每个像素的重要性。接下来,将注意力图与原始输入特征图进行相乘得到最终的加权特征。 综合而言,CBAM模块的计算流程如下: 1. 输入特征图 2. 通道注意力模块:通过全局平均池化操作对输入特征图进行特征降维和升维,获得通道权重 3. 通道权重与输入特征图进行点乘得到加权特征图 4. 空间注意力模块:通过最大池化和平均池化操作得到最大值特征图和平均值特征图,经过卷积层获得注意力图 5. 注意力图与加权特征图进行点乘得到最终特征图 这就是Convolutional Block Attention Module的计算过程和推导。 ### 回答3: Convolutional Block Attention ModuleCBAM)是一种用于图像处理任务的注意力机制,用于增强卷积神经网络的表达能力和特征提取能力。CBAM结合了通道注意力和空间注意力机制,以适应不同图像区域的特征关注度。 CBAM的公式推导主要包括两个部分:通道注意力机制和空间注意力机制。 1. 通道注意力机制: 通道注意力用于增强卷积神经网络在通道维度上的特征提取能力。其公式推导如下: 首先,将输入的特征图通过全局平均池化(Global Average Pooling)操作,将特征图的高和宽的维度降为1,得到通道维度的特征向量a。即, a = GlobalAvgPool(x) 然后,通过一个全连接层将通道特征向量a映射为权重向量W。即, W = FC(a) 其中FC表示全连接层操作。 最后,将权重向量W与输入特征图进行乘法运算,得到通道注意力加权的特征图。即, x_{ca} = x \cdot \sigma (W) 其中 \sigma 表示激活函数,这里一般选择sigmoid函数。 2. 空间注意力机制: 空间注意力用于增强卷积神经网络在空间维度上的特征提取能力。其公式推导如下: 首先,将输入的特征图通过一个平均池化操作,得到特征图的通道维度的平均特征图b。即, b = AvgPool(x) 然后,将通道平均特征图b输入到一个全连接层以产生权重向量w。即, w = FC(b) 其中FC表示全连接层操作。 最后,将权重向量w与输入特征图相乘,并通过一个sigmoid激活函数,得到空间注意力加权的特征图。即, x_{sa} = x \cdot \sigma (w) 综合上述通道注意力和空间注意力机制的计算过程,可以得到最终的CBAM特征图x_{cbam}。即, x_{cbam} = x_{ca} \cdot x_{sa} 这样,CBAM模块就能够对输入特征图进行通道和空间注意力加权,从而增强模型对不同区域的特征关注度,提升图像处理任务的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值