首页 > 其他分享 >SE、CBAM注意力机制

SE、CBAM注意力机制

时间:2024-09-03 10:21:36浏览次数:7  
标签:权重 CBAM channel 模块 注意力 SE 通道

  对于一张图片,不同的 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同时使用了平局池化和最大池化,这样在一定层度上能降低池化带来的信息丢失。

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

标签:权重,CBAM,channel,模块,注意力,SE,通道
From: https://blog.csdn.net/KIKI3666/article/details/141853479

相关文章

  • 论文阅读01-Improving Closed and Open-Vocabulary Attribute Prediction using Trans
    论文框架研究背景和动机这篇论文试图解决什么问题?为什么这个问题重要?这个问题在当前的研究领域中有哪些已知的解决方案?研究方法和创新点论文提出了什么新的方法或模型?这个方法或模型是如何工作的?它与现有的方法相比有哪些改进?论文中的创新点是否显著且有实际意义?理......
  • VMware Workstation 17.5.2 Pro for Linux 更新 OEM BIOS 2.7 支持 Windows Server 20
    VMwareWorkstation17.5.2ProforLinux更新OEMBIOS2.7支持WindowsServer2025VMwareWorkstation17.5.2PromacOSUnlocker&OEMBIOS2.7forLinux在Linux上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker-linux/,查......
  • VMware Workstation 17.5.2 Pro for Windows 更新 OEM BIOS 2.7 支持 Windows Server
    VMwareWorkstation17.5.2ProforWindows更新OEMBIOS2.7支持WindowsServer2025VMwareWorkstation17.5.2PromacOSUnlocker&OEMBIOS2.7forWindows在Windows上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker-win......
  • 【Geeksend邮件营销】为什么在发送邮件前要进行邮箱预热?
    发邮件前进行邮箱预热是一个重要的步骤,主要原因有以下几点:提高邮件发送成功率:许多邮件服务提供商(例如Gmail、Outlook等)使用复杂的算法来识别和过滤垃圾邮件或来自不可靠发件人的邮件。而邮箱预热不仅是一个短期的过程,更是一种长期的策略。通过逐步增加邮件发送量和活跃度,你可......
  • 【异常解决】springBoot单元测试es报错availableProcessors is already set to [12],
    单元测试的时候,报错异常信息片段2024-09-0309:07:12.439ERROR5676---[main]c.a.m.c.c.es.ElasticsearchConfig:availableProcessorsisalreadysetto[12],rejecting[12]java.lang.IllegalStateException:availableProcessorsisalreadyset......
  • 启动应用程序出现SebBackgroundManagerPolicy.dll找不到问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个SebBackgroundManagerPolicy.dll文件(挑选合......
  • Python自动化批量创建CloudWatch告警监控Amazon OpenSearch Service数据传输
    在使用AmazonOpenSearchService时,确保数据传输的可靠性和完整性至关重要。本文将介绍如何使用Python脚本自动批量创建CloudWatch告警,以监控多个KinesisDataFirehose向OpenSearch传输数据的成功率。为什么要监控数据传输成功率?及时发现问题:当数据传输出现异常时,......
  • 什么是base64?
    Base64是一种用于将二进制数据转换为文本格式的编码方法。这种编码方式由64个字符组成,包括26个大写字母(A-Z)、26个小写字母(a-z)、数字0-9,以及两个特殊字符“+”和“/”。Base64编码的主要特点和用途如下:编码原理分组与转换:Base64编码将输入的二进制数据按照6个比特(bit)为一组进......
  • redis命令:set
    saddkeymember:向set中添加一个或多个元素127.0.0.1:6379>saddusers2u11u22u33(integer)6sremkeymember:移除set中的指定元素 127.0.0.1:6379>sremusers2u3(integer)1127.0.0.1:6379>sremusers23(integer)1scardkey:返回set中元素个数127.0.......
  • SCKG:Reliable Semantic Communication System Enabled by Knowledge Graph——智能化
    1.语义通信的背景和重要性1.1.传统通信vs.语义通信        传统的通信技术关注的是比特和符号的准确传输,即如何在不丢失信息的前提下将数据从发送端传输到接收端。然而,随着数据量的爆炸性增长和对通信带宽的需求增加,传统通信方式逐渐接近香农容量的上限,难以满足......