《Squeeze-and-Excitation Networks》

news2025/2/26 14:51:43

Squeeze-and-Excitation Networks

  • 1. 摘要
  • 2. 介绍
  • 3. 网络设计
  • 4. 代码实现

1. 摘要

  • 卷积操作可以使网络通过在每层的局部感受野内融合空间和通道级信息以构建信息特征;
  • 空间信息尝试通过加强CNN整个特征层次的空间编码质量以加强CNN的表示能力;
  • 本文主要聚焦于通道级信息,并提出SE块,该模块可以通过明确建模通道之间的相互依赖关系自适应调整通道级特征
  • 可通过堆栈式叠加SE块,构建SE网络架构;
  • 代码地址:https://github.com/hujie-frank/SENet.;
  • 原文链接:Squeeze-and-Excitation Networks

2. 介绍

  • CNN的每层中的滤波器集合表示沿着输入通道的领域空间连接模式;
  • CNN网络可以产生图像表示、捕捉层次模式、获取理论的全局感受野;
  • 作者从通道间的关系角度进行网络设计:1)提出SE块:通过对卷积特征通道间的相互依赖关系进行明确建模,以提高网络表示能力;2)提出一个可让网络进行特征重新校正的机制,该机制可以学习使用全局信息有选择地强调信息特征,并抑制不太有用的信息;
    在这里插入图片描述
  • 特征U(H*W*C)首先经过压缩操作Fsq,通过聚合空间维度的特征映射产生一个通道描述符(1*1*C);
  • 通道描述符的函数用于产生一个通道级特征的全局分布的嵌入,允许来自网络的全局感受野的信息可以被所有网络层使用;
  • 通道描述符后接激励操作,该操作采用一个自门控的机制。以通道描述符的输出(全局分布的嵌入)作为输入,产生一个每通道调制权重的集合(1*1*C);
  • 激励操作的输出权重结合特征U得到SE块的最终输出特征;
  • SE块可用于堆叠构建SE网络,也可直接替换某现有网络中的模块(插入在非线性层之后);
    在这里插入图片描述
  • SE块在网络不同深度处作用不同,浅层处以不知类的方式激励特征加强低级特征表示,深层处会以特定于类的方式处理不同的输入特征;

3. 网络设计

  • Ftr可使用卷积操作表示,每个卷积核的参数中混合了局部空间相关性和通道间依赖关系,其中通道间依赖关系是隐式学习的;
    在这里插入图片描述

  • 本文研究旨在显式学习通道间依赖关系,增强卷积特征的学习;

  • 所谓的特征校正机制,我理解就是为原始卷积特征进行压缩、激励操作学习一个各通道对应的权重,然后对原始特征进行一个校正(通道级乘法);

  • 压缩操作:卷积结果中的每个点代表上层特征的一个局部表示,无法利用全局信息,该操作(利用全局平均池化操作实现)将全局信息压缩为一个通道表示器;实质就是将U中每个通道的所有像素点进行平均,得到各通道的一个平均全局表示;
    在这里插入图片描述

  • 激励操作:用于利用前面压缩操作聚合的信息,完全捕捉通道级依赖;
    建立激励操作需要遵循两个标准:1)该函数必须是灵活的,必须可以学习通道间的非线性相互作用;2)该函数一定可以学习一个非互斥关系,因为通道间是具有相互关系的,通道注意力要做的是强调某些通道信息或抑制某些通道信息;
    使用具有Sigmoid激活的简单门控机制实现激励操作:
    在这里插入图片描述
    实际通过两个FC层(全卷积层)形成的瓶颈结构实现,一层用于降维,一层用于恢复维度(FC+ReLU+FC+Sigmoid)。

  • SE块的输出为原始特征U与激励操作的输出S进行通道级乘法对应结果:
    在这里插入图片描述

4. 代码实现

# SE注意力机制
class SE_Block(nn.Module):
    def __init__(self,r,feature_h,feature_w,feature_c):
        super(SE_Block, self).__init__()
        self.avg_pool=nn.AvgPool2d(kernel_size=(feature_h, feature_w), stride=1)
        self.block=nn.Sequential(
            nn.Linear(in_features=feature_c, out_features=int(feature_c / r)),  # 输入特征形状为:N,in_features
            nn.ReLU(inplace=False),
            nn.Linear(in_features=int(feature_c / r), out_features=feature_c),
            nn.Sigmoid()
        )

    def forward(self, x):
        n=x.shape[0]
        c=x.shape[1]
        avg_x = self.avg_pool(x)
        # print(avg_x.shape)
        y=self.block(avg_x.view(n,c)).view(n,c,1,1)
        return y*x


if __name__=='__main__':
    # 模拟tensor
    # data:1,,5,5,16
    # r=2
    device=torch.device("cuda" if torch.cuda.is_available() else "cpu")
    data=np.array(np.random.uniform(0,255,(1,16,5,5)))
    img=torch.tensor(data,dtype=torch.float32)
    img=img.to(device)
    print("输入形状",img.shape)
    r=2
    se_block=SE_Block(r,img.shape[2],img.shape[3],img.shape[1])
    print(se_block)

    se_block.to(device)
    out=se_block(img)
    print("输出形状",out.shape)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络-应用层】万维网

文章目录1 统一资源定位符 URL2 万维网文档2.1 超文本标记语言 HTML2.2 层叠样式表 CSS2.3 JavaScript3 超文本传输协议 HTTP3.1 HTTP 报文格式3.1.1 HTTP 请求报文3.1.2 HTTP 响应报文3.2 HTTP 的工作过程3.2.1 HTTP/1.03.2.2 HTTP/1.13.2.3 相关例题4 Cookie1 统一资源定位符…

如何从根本上防止服务器被攻击

随着互联网的发展,服务器成为了企业和个人网络应用的重要基础设施。但是,随之而来的网络安全威胁也在不断增加,服务器安全问题也成为了影响企业信息安全的重要因素。针对这种情况,服务器安全防御变得尤为重要。   服务器安全防御…

6.Swagger的实战使用

六.Swagger的实战使用 1.什么是swagger 2.swagger的基本使用 3.swagger实战使用 六.Swagger的实战使用 1.什么是swagger swagger是后端接口文档的生成并且提供ui界面进行测试过去用postman测试 缺点:需要自己写地址,如果项目变了需要自己更改 2.sw…

CF区间DP作业题解

1. Recovering BST 由于互质关系不是传递的,所以尽量挂在树的最下面,刚好构成二叉树 f[i][j][0]f[i][j][0]f[i][j][0] 表示区间 [i,j][i,j][i,j] 以 iii 为根,是否可以构成一棵树。 f[i][j][1]f[i][j][1]f[i][j][1] 表示区间 [i,j][i,j][i,j…

Spring理论学习

1、什么是IOC IoC(Inversion of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。不过, IoC 并非 Spring 特有,…

阿里通义千问、ChatGPT和文心一言有何区别,在哪里能使用?

目前,聊天机器人技术在人工智能领域的发展越来越成熟了。现在已经有几款备受关注的聊天机器人产品问世,例如ChatGPT、阿里的通义千问和百度的文心一言。它们有什么区别,怎么使用呢? 其实,我也挺好奇的,毕竟…

人人拥有ChatGPT的时代来临了,这次微软很大方!

技术迭代的在一段时间内是均匀发展甚至止步不前的,但在某段时间内会指数级别的爆发。 ChatGPT背后的GPT 3.5训练据说花了几百万美金外加几个月的时间,参数大概有1700多亿。 这对于绝大多数的个人或企业来说绝对是太过昂贵的。 然而,微软&am…

月薪过 3w 的 软件测试工程师 都是怎么做到的?

对任何职业而言,薪资始终都会是众多追求的重要部分。前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。 当然,我说的是最基础的功能测试的岗…

如何使用双轴XY平台绘制正弦曲线

1. 功能说明 本文示例将实现双轴XY平台绘制正弦曲线的功能。 2. 电子硬件 在这个示例中,采用了以下硬件,请大家参考: 主控板 Basra主控板(兼容Arduino Uno) 扩展板 Bigfish2.1扩展板 SH-ST步进电机扩展板 电池11.1V动…

跟着原子学I2C

I2C通讯 1、IIC总线介绍 集成电路总线,是一种同步串行半双工通信总线。 总线or协议?! 总线是数据传输通道,协议是数据传输规则。 1、1介绍 a、由时钟线SCL和数据线SDA组成,并且都接上拉电阻,确保总线空…

UDP套接字

大家好,又见面了,🎉🎉🎉🌸🌸🌸 今天为大家带来UDP套接字的相关知识 文章目录认识socketUDP和TCP认识UDPAPI有关方法基于UDP实现回显服务器UDP的方法基于UDP实现回显程序认识socket UDP和TCP 认识UDPAPI有…

【数据结构】二叉树的概念及结构

🚀write in front🚀 📜所属专栏: 初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是…

Linux内核设备驱动设备树概念与使用

一、设备树概念以及作用 1.1设备树概念 设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(DeviceTree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比…

prometheus基本介绍

001 基本介绍 1.主要功能 多维数据模型(时序由metric名字和k/v的labels构成)灵活的查询语句无依赖存储,支持local和remote不同的模型采用http协议,使用pull模式,拉取数据,简单易懂监控目标,可…

session,zookeeper,mq-rabbitmq,kafka,websocket

spring-boot-demo-session pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://…

INSERT INTO IF NOT EXISTS问题

情景说明&#xff1a;工作上遇到一个树形结构的数据&#xff0c;如有文件夹和子文件夹这样的数据。由于后端逻辑问题&#xff0c;导致在前端页面操作了删除功能后&#xff0c;数据库中仅部分数据被删除&#xff0c;比如只把根节点或是父节点删除了&#xff0c;没有级联删除所有…

九龙证券|什么是庄家洗盘和出货?各有什么特征?

在股市独占的是庄家&#xff0c;在市场上独占的是商人。庄家的存在便是为了把资金投入市场变成本钱&#xff0c;使用本钱获取最大赢利。庄家的各类方法也是为了不惜一切代价获取最大赢利。今天我们来了解什么是庄家洗盘和出货&#xff1f;各有什么特征&#xff1f;下面就为大家…

所有知识付费都可以用 ChatGPT 再割一次?

伴随春天一起到来的&#xff0c;还有如雨后春笋般冒出的 ChatGPT / AI 相关的付费社群、课程训练营、知识星球等。 ChatGPT 吹来的这股 AI 热潮&#xff0c;这几个月想必大家多多少少都能感受到。 ▲ 图片来源&#xff1a;网络 这两张图是最近在圈子里看到的。 一张是国内各…

SpringBoot —— 日志基本操作

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ SpringBoot —— 日志基本操作一、日志的作用二…

Adobe全家桶功能介绍

Adobe全家桶是一套由Adobe公司开发的创意设计软件集合&#xff0c;包含了许多功能强大的软件&#xff0c;可以帮助用户完成各种创意设计任务。 以下是Adobe全家桶中一些主要软件的功能介绍&#xff1a; Photoshop&#xff1a;用于图像处理和编辑&#xff0c;可以进行图像裁剪…