注意力机制:SENet详解

2024-04-27 16:52
文章标签 senet 详解 注意力 机制

本文主要是介绍注意力机制:SENet详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  SENet(Squeeze-and-Excitation Networks)是2017年提出的一种经典的通道注意力机制,这种注意力可以让网络更加专注于一些重要的featuremap,它通过对特征通道间的相关性进行建模,把重要的特征图进行强化来提升模型的性能。论文链接 代码实现

模型

  SENet的模型结果如图所示:
在这里插入图片描述
  网络的输入 X X X是个多通道的图片,其维度为 [ H ′ , W ′ , C ′ ] [H',W^′,C^′] [H,W,C] ,经过一系列卷积等维度变化操作后得到U,其维度是 [ H , W , C ] [H,W,C] [H,W,C] ,其中C是通道的数量,那么我们融合不同通道的特征呢,这个时候就进入到了SENet,对于U,先经过全局平均池化的操作,即将U的维度由 [ H , W , C ] [H,W,C] [H,W,C]变成 [ 1 , 1 , C ] [1,1,C] [1,1,C],这一步对应着上图中的 F s q ( ⋅ ) F_{sq} ( \cdot) Fsq() ,实际上是对每一个特征图的特征通过池化的方式做了一个总结,这个总结作为初始值送入后面的多层神经网络,学习到不同通道的权重。全连接层的结构为:
在这里插入图片描述
  这个多层感知机的结构非常简单,就是两个全连接层和两个激活函数,在第一次全连接层后使用Relu激活函数,此时得到的输出维度为 [ 1 , 1 , C ′ ′ ] [1,1,C''] [1,1,C′′] 。第二个全连接层后使用Sigmoid函数,将每层数值归一化到0-1之间,以此表示每个通道的权重,第二个全连接的输出也为 [ 1 , 1 , C ] [1,1,C] [1,1,C]。得到了最后 [ 1 , 1 , C ] [1,1,C] [1,1,C]的输出后,我们将 U U U和刚刚得到的权重结果相乘,得到最终的特征图 X ^ \hat X X^,它和 U U U的维度一致,但是在 X ^ \hat X X^中,不同特征图已经根据权重结果进行了重新加权。

代码

附上SENet的一个简单实现:

def SENet(input):#全局平均池化x = nn.AdaptiveAvgPool2d((1,1))(input)x = x.view(1, -1)#第一个全连接层x = nn.Linear(2, 1)(x)x = nn.functional.relu(x)#第二个全连接层x = nn.Linear(1, 2)(x)x = nn.functional.sigmoid(x)return xif __name__ == '__main__':input = torch.ones(1, 2 ,2 ,2)output = SENet(input)# 将SENet的输出维度进行变化,以便后面的乘机操作output = output.view(input.shape[0], input.shape[1],1, 1)SE_output = input*output

这篇关于注意力机制:SENet详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941030

相关文章

细说夜莺监控系统告警自愈机制

虽说监控系统最侧重的功能是指标采集、存储、分析、告警,为了能够快速恢复故障,告警自愈机制也是需要重点投入建设的,所有可以固化为脚本的应急预案都可以使用告警自愈机制来快速驱动。夜莺开源项目从 v7 版本开始内置了告警自愈模块,本文将详细介绍告警自愈的原理和实现。 夜莺项目介绍 夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分

一种android安全机制-数字签名

本机制采用不对称加密算法。详细介绍如下: android客户端:     首先客户端要生成一串很长的base64串,同时将该串保存到key-value中,然后客户端带着这个base64串发送一个网络请求,从后台将数字签名的公钥下载下来,即证书下载,接下来客户端将证书导入,导入的证书应是可以获取的。    证书已经导入到前端,接下来就该用证书对我们要加密的数据进行数字签名了,将要加密的数据与之

Vue 插槽详解

Vue插槽,是学习vue中必不可少的一节,当初刚接触vue的时候,对这些掌握的一知半解,特别是作用域插槽一直没明白。 后面越来越发现插槽的好用。 分享一下插槽的一些知识吧。 分一下几点: 1、插槽内可以放置什么内容? 2、默认插槽 3、具名插槽 4、作用域插槽   一、插槽内容   一句话:插槽内可以是任意内容。    先看一下下面的代码:声明一个child-componen

YOLOv9全网最新改进系列:YOLOv9完美融合标准化的注意力模块NAM,高效且轻量级的归一化注意力机制,助力目标检测再上新台阶!

YOLOv9全网最新改进系列:YOLOv9完美融合标准化的注意力模块NAM,高效且轻量级的归一化注意力机制,助力目标检测再上新台阶!!! YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里! 详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先! YOLOv9全网最新改进系

【Linux】一步一步学Linux——Linux系统目录详解(09)

00. 目录   目录 00. 目录01. 文件系统介绍02. 常用目录介绍03. /etc目录文件04. /dev目录文件05. /usr目录文件06. /var目录文件07. /proc08. 比较重要的一些目录09. 参考   【Linux】一步一步学Linux系列教程:https://blog.csdn.net/dengjin20104042056/article/details

AXI Block RAM 控制器IP核的用法详解

本文描述了如何使用Xilinx的Vivado Design Suite环境中的工具来定制和生成AXI Block RAM (BRAM) IP 核。Vivado Design Suite是一个强大的FPGA设计和开发环境,它允许用户定制和配置各种IP核以适应他们的特定设计需求。 以下是针对如何定制IP核的步骤的简要概述: 1. 从IP Catalog中选择IP。 2. 定制IP核 双击选

详解如何把文件或应用开机自启动

相信很多人都想把某些开机都要用的软件或文件打开,但不知道如何操作,或不知道可以手动设置开机自启动这一操作,下面为大家讲解实现思路:         1.首先打开win+R打开运行框,在里面弄输入:shell:startup         2.回车进入文件夹 ,把要开机启动的放进文件夹就可以了         因为这两个exe文件都关联一些东西,需要一些文件和exe文

Spring 事务及事务传播机制(1)

目录 事务 回顾: 什么是事务 为什么需要事务 事务的操作 Spring事务的实现 Spring编程式事务(简单了解即可, 问就是基本不用)  观察事务提交 观察事务回滚 Spring声明式事务 @Transactional @Transactional作用 事务 回顾: 什么是事务 定义: 事务是指逻辑上的一组操作, 构成这组操作的各个单元, 要么全部执行

Python内置函数next()详解

Python的next()函数是一个内置函数,用于从迭代器中获取下一个元素。如果迭代器耗尽,则抛出StopIteration异常。 函数定义 next()函数的基本语法如下: next(iterator[, default]) iterator:一个迭代器对象。default:可选,当迭代器耗尽时返回的值。如果不提供此参数,迭代器耗尽将抛出StopIteration。 基本用法 获取

态、势、感、知四部分的注意力模型的融合

态、势、感、知在抢占注意力时往往是通过自身具有吸引力、引发情感共鸣或启发思考等方式来引起人们的注意和关注。态、势、感、知在抢占注意力方面的作用可以分别描述如下: 态:人们通常会被某种特定的姿态或面部表情所吸引,因为姿态能够传达出情感、意图或个性,从而引起观察者的共鸣或兴趣。 势:势具有一种引导和吸引注意力的能力,当事物或人物展现出强烈的力量或权威感时,往往会吸引人们的视线和注意力。 感:感情是人