Squeeze-and-Excitation Networks总结

介绍

关注通道关系,并提出了一种新的架构单元,我们称之为 "压缩-激发"(SE)块,目的是通过明确建模卷积特征通道之间的相互依存关系,提高网络生成的表征质量。为此,提出了一种允许网络执行特征重新校准的机制,通过这种机制,网络可以学会使用全局信息来有选择地强调有信息量的特征,并抑制不那么有用的特征。(SENet网络的创新点在于关注 channel 之间的关系,希望模型可以自动学习到不同 channel 特征的重要程度。)

A Squeeze-and-Excitation block

挤压激励区块是一个计算单元,可以建立在将输入 X∈R^{H'\times W'\times C'}映射到特征映射 U∈R^{H\times W\times C} 的变换 Ftr 上。在接下来的符号中,我们将 Ftr 视为卷积算子,并使用 V = [v1, v2, ... , vC ] 表示学习到的滤波器核集,其中 vC 指的是第 C 个滤波器的参数。然后,我们可以将输出写成 U = [u1, u2, ... , uC ],其中

∗ 表示卷积,V_{c} = [V^{_{c}^{1}}, V^{_{c}^{2}}, ... , V_{c}^{C'}] ,X=[x^{1},x^{2},...,x^{C'}]U^{_{c}}\in R^{H\times W}V_{c}^{s}是一个二维空间核,代表 Vc 的单通道,作用于 X 的相应通道。

Squeeze-and-Excitation Networks

将全局空间信息压缩到通道描述符中。这是通过使用全局平均池化来生成通道统计来实现的。

将H*W大小的特征图压缩成1*1大小

统计量Zc是由U通过其空间维度H × W收缩生成的,Zc表示第C个统计量,Uc表示第C通道的特征图。

Excitation: Adaptive Recalibration

为了利用挤压操作中汇总的信息,我们在挤压操作之后进行了第二次操作F^{_{ex}},目的是充分捕捉渠道方面的依赖关系。作用是通过Zc学习每个通道的权重。

为了实现这一目标,函数必须满足两个标准:
首先,它必须具有灵活性(必须能够学习通道之间的非线性互动),保证学习到的权重值比较具有价值;
其次,它必须学习一种非相互排斥的关系,确保允许强调多个通道(而不是强制执行单次激活)。为了满足这些标准,我们选择采用一种简单的门控机制,并采用曲线激活方式:

\delta 指 ReLU函数,\sigma指sigmoid函数,W1∈ R^{\frac{C}{r}\times C},W2∈ R^{C\times \frac{C}{r}}是两个全连接层的权值矩阵。r是维度衰减因子,论文中是16,C/r是中间层的隐层节点数。

返回到转换输出 U 的通道维度的增维层:

\widetilde{x}_{c} 是 \widetilde{x} 某个特征通道的Feature map。 s_{c}是门控单元S(向量)中的一个标量值。

SENet的应用

左图为SE模块嵌入到Inception中的示例,方框旁的维度信息代表该层的输出。只需将转换 Ftr 视为整个 Inception 模块(见Fig.2),并对架构中的每个此类模块做出这一改变,就能得到一个 SE-Inception 网络。SE 模块也可以直接用于残差网络(Fig.3 描述了 SE-ResNet 模块的模式)。在这里,SE 模块变换 Ftr 被视为残差模块的非同一性分支。挤压(Squeeze)和激励(Excitation)都是在与特征分支相加之前起作用的。

模型和复杂度计算

在使用了SE模块后,计算量会略有增加,精确度会提高.(SE的优势不局限于ImageNet数据集)

由拟议的 SE 模块引入的额外参数。这些附加参数完全来自门控机制的两个 FC 层,因此只占网络总容量的一小部分。这些 FC 层的权重参数引入的总数量为其中 r 为降维系数,S表示 stage数量,Cs 为第 s 个 stage的通道数,Ns 为第 s 个 stage的重复 block量。

SE 块可以进行图像分类,也能改进场景分类,SE 区块具有通用性,在广泛的架构、任务和数据集上都能实现诱导改进。

消融实验

缩减率

缩减率r 是一个超参数,允许我们改变网络中 SE 区块的容量和计算成本。性能对一系列缩减率都很稳定。复杂度的增加并不会单调地提高性能,而较小的比率则会显著增加模型的参数大小。

压缩操作

使用全局平均集合而不是全局最大集合作为压缩运算符的意义(因为这 种方法效果很好,所以我们没有考虑更复杂的替代方法)。虽然最大池化和平均池化都很有效,但平均池化的性能略胜一筹,因此有理由选择它作为挤压操作的基础。

激励操作

对激发机制的非线性选择进行评估。考虑了另外两种选择:ReLU 和 tanh,并尝试用这两种非线性替代 sigmoid。用 tanh 代替 sigmoid 会略微降低性能,而使用 ReLU 则会大幅降低性能,实际上会导致 SE-ResNet-50 的性能低于 ResNet-50 基线。这表明,要使 SE 块有效,必须仔细构建激励算子。

不同阶段

在架构的每个阶段引入 SE 块都能带来性能优势。此外,不同阶段的 SE 区块所带来的收益是互补的,它们可以有效地结合在一起,进一步提高网络性能。

一体化策略

评估将 SE 区块整合到现有架构中时 SE 区块位置的影响。该实验表明,只要在分支聚合之前应用 SE 单元,SE 单元所产生的性能改进对其位置相当稳健。

结论

SENets 在多个数据集和任务中都取得了最先进的性能。此外,SE 块还揭示了以前的架构无法充分模拟信道特征依赖性的问题。最后,SE 块产生的特征重要性值可能会用于其他任务,如模型压缩的网络剪枝。

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

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

相关文章

【深度学习】吴恩达课程笔记(四)——优化算法

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【吴恩达课程笔记专栏】 【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础 【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络 【深度学习】吴恩达课程笔记(三)——参数VS超参数、深度…

【chatglm3】(4):如何设计一个知识库问答系统,参考智谱AI的知识库系统,

0,视频地址 https://www.bilibili.com/video/BV16j411E7FX/?vd_source4b290247452adda4e56d84b659b0c8a2 【chatglm3】(4):如何设计一个知识库问答系统,参考智谱AI的知识库系统,学习设计理念,…

unity3d与vs 附加到unity debug报错

点击 附加到unity报错 选择在 调试-》附加unity->选择unity实例

1、LeetCode之两数之和

两数之和 给定一个整数数组 nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 nums [2,7,11,15]target 9[0,1]枚…

C++ STL简介

1. 什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室…

Unity 代码控制Text文本换行

Unity 要通过代码控制Text文本换行,实现方法比较简单,无论是传统的Text,还是TMP文本,都是通过在字符串需要换行的地方加上换行符【\n】。 不过在Text属性栏中要确保设置自动换行模式: 如传统的设置如图: …

【计算机网络】TCP协议

文章目录 TCP协议TCP的结构TCP的特点 TCP如何保证可靠传输确认应答(可靠机制)超时重传(可靠机制)连接管理(可靠机制)滑动窗口(效率机制)流量控制(可靠机制)拥…

场景图形管理-多视图多窗口渲染示例(4)

多视图多窗口渲染示例的代码如程序清单8-6所示 // 多视图多窗口渲染示例 void compositeViewer_8_6(const string &strDataFolder) {// 创建一个CompositeViewer对象osg::ref_ptr<osgViewer::CompositeViewer> viewer new osgViewer::CompositeViewer();// 创建两个…

vue源码分析(八)—— update分析(首次渲染)

文章目录 前言一、update首次渲染的核心方法__path__二、__path__方法详解1. 文件路径2. inBrowser的解析&#xff08;1&#xff09;noop 的空函数定义&#xff1a;&#xff08;2&#xff09;patch 的含义 3. createPatchFunction 的解析4. path 方法解析&#xff08;1&#xf…

基于JavaWeb+SpringBoot+Vue医疗器械商城微信小程序系统的设计和实现

基于JavaWebSpringBootVue医疗器械商城微信小程序系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 摘 要 目前医疗器械行业作为医药行业的一个分支&#xff0c;发展十分迅速。…

μC/OS-II---消息邮箱管理2(os_mbox.c)

目录 消息邮箱发送&#xff08;扩展&#xff09;从消息邮箱获取/无等待消息邮箱状态查询消息邮箱中断等待用邮箱作为二值信号量&#xff08;无&#xff09;用邮箱实现延时&#xff08;无&#xff09; 消息邮箱发送&#xff08;扩展&#xff09; #if OS_MBOX_POST_OPT_EN > …

私域电商:实体商家想通过异业联盟引流,应该怎么做?

​异业联盟引流是一种有效的营销策略&#xff0c;通过与不同行业的企业或品牌合作&#xff0c;共同推广产品或服务&#xff0c;扩大品牌影响力和用户群体。以下是异业联盟引流的一些详细过程&#xff1a; ​选择合作联盟&#xff1a; 首先&#xff0c;需要选择与自己企业或品…

C#创建并调用dll

文章目录 1.VS2019创建C#主程序2.编译主程序3.添加类库工程&#xff0c;并添加计算逻辑4.给主程序添加引用项5.重新编译主程序6.主程序添加测试逻辑 1.VS2019创建C#主程序 2.编译主程序 debug目录下生成exe&#xff1a; 3.添加类库工程&#xff0c;并添加计算逻辑 添加计算逻…

应用层使用select进行检测连接状态

可以参考TCP连接保活机制来设计应用层的连接状态监测&#xff0c;同时需要注意到有两个关键点&#xff1a; 1.需要使用定时器&#xff0c;这可以通过使用 I/O 复用自身的机制来实现&#xff0c;这点可以先看一下《使用select实现定时任务》&#xff1b; 2.需要设计一个 PING-PO…

alias linux 命令别名使用

如果在系统中你想要快速的完成一个命令&#xff0c;你可以使用alias命令&#xff1a; 如&#xff1a; alias ppsystemctl status httpd输入pp命令后即可得到如下结果 但这之时临时生效&#xff0c;一旦重启机器&#xff0c;命令就会失效&#xff1b;想要永久生效&#xff0c;…

vue-admin-template

修改登录接口 1.f12查看请求接口 模仿返回数据写接口 修改方式1 1.在env.devolopment修改 修改方式2 vue.config.js 改成本地接口地址 配置转发 后端创建相应接口&#xff0c;使用map返回相同的数据 修改前端请求路径 修改前端返回状态码 utils里面的request.js

成功解决:com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl.

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 前言 使用Spring 整合 mybatis的时候 报错…

ES5中实现继承

本篇文章主要说明在ES5中最通用最兼容的继承实现方式&#xff0c;继承作为面向对象的三大特性之一&#xff0c;在js中实现继承对代码的简洁性&#xff0c;逻辑的连贯性都有很大的帮助。 实现思路 封装创建中间联系对象的函数 继承可以简单理解为建立子类和父类之间的联系&…

Django测试环境搭建及ORM查询(创建外键|跨表查询|双下划线查询 )

文章目录 一、表查询数据准备及测试环境搭建模型层前期准备测试环境搭建代码演示 二、ORM操作相关方法三、ORM常见的查询关键字四、ORM底层SQL语句五、双下划线查询数据查询&#xff08;双下划线&#xff09;双下划线小训练Django ORM __双下划线细解 六、ORM外键字段创建基础表…