SENet模型原理及代码介绍

一.模型简介:

        SENet的全称叫Squeeze-and-Excitation Networks(挤压-激励网络,简称SENet),于2017年提出,并拿下了当年的ImageNet分类比赛的冠军。ResNet是2015年ImageNet的冠军,2016年ResNeXt(由ResNet和Inception网络结合而成)拿下了亚军。论文链接:Squeeze-and-Excitation Networks

        这个网络通过学习channel之间的相关性,提出了针对通道的注意力机制,在增加了一点计算量的代价下,较大的提高了网络的效果。模型的原理图如下所示:

从原理图中大家可能理解优点困难,结合代码便比较容易理解了。使用pytorch实现的SE注意力机制的代码实现如下:

class SELayer(nn.Module):
    def __init__(self, channel, reduction=16):
        super(SELayer, self).__init__()

        # 1. squeeze过程,使用全局平均池化来获得具有全局感受野的特征图,输出特征图形状为1*1*C
        self.avg_pool = nn.AdaptiveAvgPool2d(1)

        # 2. excitation过程,使用全连接层对squeeze之后的特征图进行非线性变换
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        # 全局平均池化后展平得到形状为b*c的张量
        y = self.avg_pool(x).view(b, c)
        # 进行非线性变换后将形状调整为b*c*1*1
        y = self.fc(y).view(b, c, 1, 1)

        # 3. 特征重标定,使用得到的结果作为权重,乘到输入特征上。expand_as是调整y的形状与x一致。
        return x * y.expand_as(x)

可以看出SE注意力机制其实特别简单,它只针对特定的特征图做了一些变换工作,并不改变特征图的形状。这种注意力机制实现简单,使其可以任意加在某一个CNN网络的实现过程中。

SE注意力机制的工作步骤:

1.获取特征图x的形状 [b,c,H,W];

2.Squeeze过程。对特征图进行平均池化,调整形状为[b,c]; 对特征图的空间维度进行压缩,生成通道描述符。

3.Excitation过程。对输出的特征图进行非线性变换并调整形状为[b,c,1,1]; 对通道进行压缩,学习不同通道的依赖关系。

4.特征重标定。将得到的结果作为注意力权重与输入特征图x进行相乘,返回结果。

        总结来说,就是3个比较重要的过程:Squeeze,Excitation, 特征重标定。SE注意力机制通过明确建模通道之间的相互依赖性,可以自适应地重新校准通道特征响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545359.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

暖宝轻工机械有限公司现已加入2024第13届生物发酵展

参展企业介绍 公司坐落于富饶的长江三角洲,美丽的瓯越山水---温州,成立20多年来,专业从事换热器新品研发、应用设计、生产制造、销售服务为一体的综合性生产企业。 公司致力于食品、饮料、果酒、制药、暖通、化工等行业领域的加热冷却、蒸发…

Magnet AXIOM 7.8 Windows Multilingual - 数字取证与分析

Magnet AXIOM 7.8 Windows Multilingual - 数字取证与分析 Digital Forensic Software 请访问原文链接:https://sysin.org/blog/magnet-axiom/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 恢复并分析一个案件中…

商业照明专用SLM211A系列24V,15mA到200mA支持PWM调光功能的线性恒流LED驱动芯片

SLM211A系列SLM211AAC-7GTR--SOT23-6,SLM211ACB-13GTR--SOP8-EP是用于产生单通道、高精度恒流源的 LED 驱动芯片,在各种 LED 照明产品中非常简单易用。SLM211A 具有宽输入电压范围、高输出精度、超低 drop-out 压降、卓越的线性/负载调整率等特性&#x…

Python中的list()和map() 用法

list() 在Python中,list() 是一个内置函数,用于创建列表(list)对象。它有几个不同的用途,但最常见的是将一个可迭代对象(如元组、字符串、集合或其他列表)转换为一个新的列表。 以下是一些使用…

理解计算中的随机性与伪随机性:Avi Wigderson的理论计算科学贡献

目录 前言1 随机性和伪随机性在计算中的角色2 随机性的动态理解3 伪随机性的应用4 理论到实践的应用结语 前言 近期,普林斯顿大学数学教授Avi Wigderson荣获了2023年图灵奖,以表彰他在理论计算机科学领域的杰出贡献。他的研究聚焦于计算复杂性理论&…

ODI(境外投资备案)作用、类别和申请流程详解

中国企业越来越多地选择在境外进行投资,而国家相关部门也出台了多项政策以规范这一行为。在进行海外投资前,企业必须在政策指导下进行合法操作并办理相应手续,其中ODI(境外投资备案)是其中一种最常见的方式之一。 以…

太好玩了,我用 Python 做了一个 ChatGPT 机器人

毫无疑问,ChatGPT 已经是当下编程圈最火的话题之一,它不仅能够回答各类问题,甚至还能执行代码! 或者是变成一只猫 因为它实在是太好玩,我使用Python将ChatGPT改造,可以实现在命令行或者Python代码中调用。…

华为昇腾AI芯片加持,9.1k Star 的 Open-Sora-Plan,国产Sora要来了吗

Aitrainee | 公众号:AI进修生 哇,今天Github趋势榜第一啊,为了重现Sora,北大这个Open-Sora-Plan,希望通过开源社区力量的复现Sora,目前已支持国产AI芯片(华为昇腾),这回不用被卡脖子…

LoRa无线电机温振传感器,FlexLua低代码技术助力快速实现。

在物联网时代,无线传感技术的应用愈发广泛。其中,LoRa(长距离低功耗无线技术)作为一种适用于远距离、低功耗的通信技术,被广泛应用于各种物联网场景。而结合温度和振动传感技术,能够构建出用于监测机器状态…

UE5学习日记——制作多语言版本游戏,同时初步学习UI制作、多语言化、控制器配置、独立进程测试、打包配置和快速批量翻译等

所有的文本类,无论变量还是控件等都能实现本地化,以此实现不同语言版本。 在这里先将重点注意标注一下: 所有文本类的变量、控件等都可以多语言;本地化控制板中收集、编译时,别忘了编译这一步;支持批量复制…

【蓝桥杯 2020 省 A2】门牌制作 题解(Word+Excel+提交答案)

问题描述 小蓝要为一条街的住户制作门牌号。 这条街一共有2020位住户,门牌号从1到2020编号。 小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1…

802.1X认证原理

IEEE802 LAN/WAN委员会为解决无线局域网网络安全问题,提出了802.1X协议。后来,802.1X协议作为局域网接口的一个普通接入控制机制在以太网中被广泛应用,主要解决以太网内认证和安全方面的问题。 802.1X协议是一种基于接口的网络接入控制协议。…

python的算术运算符

python常用算术运算符代码如下: #算术运算符操作 x 10 y 20 z 30 #加法运算 a x y print("a的值为:", a) #减法运算 a x - y print("a的值为:", a) #乘法运算 a x*y print("a的值为:", a) …

FFmpeg: 自实现ijkplayer播放器--06封装打开和关闭stream

文章目录 流程图stream openstream close流程图 stream open 初始化SDL以允许⾳频输出;初始化帧Frame队列初始化包Packet队列初始化时钟Clock初始化音量创建解复用读取线程read_thread创建视频刷新线程video_refresh_threadint FFPlayer::stream_open(const char

LangChain简明讲义:从0到1构建LLM应用程序

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

实习僧网站的实习岗位信息分析

目录 背景描述数据说明数据集来源问题描述分析目标以及导入模块1. 数据导入2. 数据基本信息和基本处理3. 数据处理3.1 新建data_clean数据框3.2 数值型数据处理3.2.1 “auth_capital”(注册资本)3.2.2 “day_per_week”(每周工作天数&#xf…

Open3D(C++) 0~1归一化到0~255

目录 一、算法原理二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 0-1归一化到0~255的计算原理如下: g ′ = 255 ∗

探索分布式技术--------------注册中心zookeeper

目录 一、ZooKeeper是什么 二、ZooKeeper的工作机制 三、ZooKeeper特点 四、ZooKeeper数据结构 五、ZooKeeper应用场景 5.1统一命名服务 5.2统一配置管理 5.3统一集群管理 5.4服务器动态上下线 5.5软负载均衡 六、ZooKeeper的选举机制 6.1第一次启动选举机制 6.2非…

火绒安全的用法

火绒安全软件是一款综合性的电脑安全防护工具,提供了病毒查杀、系统防护、网络安全等多种功能,以帮助用户保护电脑免受恶意软件和网络威胁的侵害。以下是火绒安全软件的一些主要用法: 病毒查杀:火绒安全软件提供全盘查杀、快速查杀…

Ubuntu20.04版本部署MySQL8.0关闭库名表名区分大小写和自定义数据目录(datadir)路径

本篇文章记录关闭数据库表名库名区分大小写和设置自定义数据目录,安装时建议一个一个步骤进行,这样比较容易成功,下面是设置关闭区分表名库名大小写的。 一、关闭库名表名区分大小写 1、先安装数据库 步骤如下: # 第一步:更新…