SE、CBAM、CA注意力机制

  对于一张图片,不同的 channel 的权重一般都是不一样的。如果我们能够把这个信息捕获出来,那么我们的网络就可以获得更多的信息,那么自然就拥有更高得准确率。

1、SE注意力机制的实现步骤如下:

        (1)Squeeze:通过全局平均池化(nn.AdaptiveAvgPool2d(1)),将每个通道的二维特征(H*W)压缩为1个实数,将特征图从 [h, w, c] ==> [1,1,c],得到channel级的全局特征

        (2)excitation:给每个特征通道生成一个权重值,论文中通过两个全连接层构建通道间的相关性,输出的权重值数目和输入特征图的通道数相同。[1,1,c] ==> [1,1,c],学习各个channel间的关系,也得到不同channel的权重

        (3)Scale:将前面得到的归一化权重加权到每个通道的特征上。论文中使用的是乘法,逐通道乘以权重系数。[h,w,c]*[1,1,c] ==> [h,w,c]

        本质上,SE模块是在channel维度上做attention或者gating操作,这种注意力机制让模型可以更加关注信息量最大的channel特征,而抑制那些不重要的channel特征。另外一点是SE模块是通用的,这意味着其可以嵌入到现有的网络架构中。

SE注意力机制(Squeeze-and-Excitation,SE模块)使用nn.Sigmoid()而不是Softmax作为激活函数,主要是基于以下几个原因:

  1. 作用范围

    • Sigmoid函数的输出范围是(0, 1),这意味着它适用于对每个通道的特征图进行加权,权重可以独立于其他通道。在SE模块中,我们希望为每个通道分配一个权重,这些权重反映了该通道对于整体特征的重要性,而Sigmoid恰好满足了这一需求。
    • Softmax函数的输出是一个概率分布,所有输出的和等于1。这意味着它更适合于多分类问题,其中各个类别的概率需要相互竞争。在SE模块中,我们并不需要各个通道权重的和为1,我们关心的是根据每个通道的相对重要性来放大或抑制它们。
  2. 灵活性与独立性

    • 使用Sigmoid函数,SE模块可以独立地决定每个通道的激活程度,这意味着一个通道的权重增加不会直接影响其他通道的权重。这种独立性使得SE模块能够更加精细地控制每个通道的特征贡献。
    • Softmax则会强制所有通道的权重相互关联,一个通道权重的增加会减少其他通道的权重,这可能不是SE模块在调整通道权重时所期望的行为。
  3. 计算效率

    • Sigmoid函数的计算通常比Softmax更高效,因为它不需要在所有通道之间进行归一化。在深度学习模型中,特别是在较大的特征图上,这种效率差异可能会变得相当显著。
  4. 目标与功能

    • SE模块的目标是通过自适应地调整每个通道的权重来增强网络的表示能力,而Sigmoid函数正好可以实现这一点。它允许模型学习哪些通道应该被加强(接近1的输出),哪些应该被抑制(接近0的输出)。
    • Softmax函数虽然也可以用于权重分配,但其特性(输出和为1)并不直接符合SE模块的设计理念,即独立地调节每个通道的激活程度。

因此,SE模块使用Sigmoid函数作为激活函数,是为了让模型能够独立地为每个通道生成权重,并且这些权重可以直接用于特征图的加权求和,以增强或抑制特定的特征。这种机制有助于模型聚焦于更重要的特征,从而提高整体的性能。

2、CBAM注意力机制是由通道注意力机制(channel)和空间注意力机制(spatial)组成。

        传统基于卷积神经网络的注意力机制更多的是关注对通道域的分析,局限于考虑特征图通道之间的作用关系。CBAM从 channel 和 spatial 两个作用域出发,引入空间注意力和通道注意力两个分析维度,实现从通道到空间的顺序注意力结构。空间注意力可使神经网络更加关注图像中对分类起决定作用的像素区域而忽略无关紧要的区域,通道注意力则用于处理特征图通道的分配关系,同时对两个维度进行注意力分配增强了注意力机制对模型性能的提升效果。

可以看到该模块由两部分组成,Channel attention module(通道注意力模块,以下简称CAM) 和 Spatial Attention Module (空间注意力模块,以下简称SAM)。

 SAM首先做一个全局最大池化和全局平均池化,然后对于channel做从concat操作,经过一个卷积操作,将channel降为1,再经过sigmoid生成空间注意特征图,最后与通道注意特征图做乘法。

     CAM和SE类似,只是SE只采用了全局平均池化, 而CAM同时使用了平局池化和最大池化,这样在一定层度上能降低池化带来的信息丢失。

3、CA

CA注意力的实现如图所示,可以认为分为两个并行阶段:

将输入特征图分别在为宽度和高度两个方向分别进行全局平均池化,分别获得在宽度和高度两个方向的特征图。假设输入进来的特征层的形状为[H, W, C],在经过宽方向的平均池化后,获得的特征层shape为[H, 1, C],此时我们将特征映射到了高维度上;在经过高方向的平均池化后,获得的特征层shape为[1, W, C],此时我们将特征映射到了宽维度上。

然后将两个并行阶段合并,将宽和高转置到同一个维度,然后进行堆叠,将宽高特征合并在一起,此时我们获得的特征层为:[1, H+W, C],利用卷积+标准化+激活函数获得特征。需要注意的是,这里的卷积通道数一般会小一点,做一个缩放,可以减少参数量。卷积后的特征层的shape为[1, H+W, C/r],其中r为缩放系数。

之后再次分开为两个并行阶段,再将宽高分开成为:[1, H, C/r]和[1, W, C/r],之后进行转置。获得两个特征层[H, 1, C/r]和[1, W, C/r],再经过卷积变成[H, 1, C]和[1, W, C]。

然后利用1x1卷积调整通道数后取sigmoid获得宽高维度上的注意力情况,前者在宽上拓展一下,后者在高上拓展一下,然后一起乘上原有的特征就是CA注意力机制。

引用链接:常用的即插即用的注意力机制模块(SE、CBAM)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值