注意力机制之ECA-Net:Efficient Channel Attention for Deep Convolutional Neural Network

论文link:link
code:code

1.摘要

  近年来,通道注意机制被证明在改善深层卷积神经网络(CNN)的性能方面提供了巨大的潜力。然而现有的大多数方法都致力于开发更复杂的注意模块以获得更好的性能,这不可避免地增加了模型的复杂性。为了克服性能和复杂度的矛盾,提出了一种高效的通道注意力(ECA)模块,该模块只需要很小的参数,同时可以带来明显的性能提升。通过对SENET中通道注意模块的剖析,我们实证地表明避免降维对于学习通道注意是重要的,适当的跨通道交互可以在显著降低模型复杂度的同时保持性能。因此我们提出了一种无需降维的局部交叉信道交互策略,该策略能通过一维卷积有效地实现。此外,我们还提出了一种自适应选择一维卷积核大小的方法,以确定跨信道相互作用的覆盖范围。建议的ECA模块是高效而有效的,例如,我们的模块相对于ResNet50主干的参数和计算分别是80vs.24.37M和4.7E-4GFLOP vs.3.86GFLOPS,在Top-1准确率方面性能提升超过2%。我们使用ResNet和MobileNetV2的主干,对我们的ECA模块在图像分类、目标检测和实例分割方面进行了广泛的评估。实验结果表明,与同类模块相比,该模块具有更高的效率和更好的性能。

2.模型结构图

在这里插入图片描述

ECA模块的示意图,给定通过GLobal Average Pooling得到的汇集特征,ECA使用卷积核大小为k的1D卷积生成各个通道的权重,其中,k通过输入维度的大小适应性地确定
  首先回顾SENet中的通道注意力模块,体而言,在给定输入特征的情况下,SE块首先对每个通道单独地进行global average pooling,然后使用两个非线性全连接(FC)层和一个Sigmoid函数生成通道权值。两个FC层旨在捕获非线性的跨通道交互,并通过降维来控制模型复杂性。尽管该策略被广泛应用于后续的通道注意模块中,但我们的实证研究表明降维会给通道注意预测带来副作用,而且捕获所有跨通道的依赖关系是低效且不必要的。
  为此,本文提出了一种针对深度CNNs的高效通道注意(Efficient Channel Attention,ECA)模块。该模块避免了降维,有效地捕获了跨通道间的相互作用。如图所示,在空间上降维、通道维度不变的global average pooling后,我们的ECA通过建模每个通道及其 个相邻通道的关系来捕获局部跨通道交互。实践证明,这种方法既能保证效率又能保证效果。注意,我们的ECA可以通过卷积核大小为 的1D卷积实现,其中 表示局部跨通道交互的覆盖范围,即有多少相邻通道参与了一个通道的注意力预测。为了避免通过交叉验证手动调优 ,我们开发了一种自适应的确定 的方法,其中交互的覆盖率(即卷积核大小 )与通道尺寸成正相关。如图1和表3所示,与骨干模型[19]不同,带有我们的ECA模块(称为ECA-Net)的深度CNN引入很少的附加参数和可以忽略的计算,同时带来显著的性能提高。例如,对于具有24.37M参数和3.86 GFLOPs的ResNet-50, ECA-Net50的附加参数和计算量分别为80和4.7e-4GFLOPs;与此同时,ECA-Net50在Top-1 acc. 上优于ResNet-50达2.28%。

3.方法

3.1 回顾SE模块中的注意力

另一个卷积层的输出为 x ∈ R W × H × C x \in {R^{W \times H \times C}} xRW×H×C,其中 W , H 和 C W,H和C W,HC分别表示特征图的宽、高和通道维度(即卷积核中使用的卷积核的数量),因此,SE块输出中各个通道的权重为:
ω = σ ( f { W 1 , W 2 } ( g ( x ) ) ) \omega = \sigma ({f_{\{ {W_1},{W_2}\} }}(g(x))) ω=σ(f{W1,W2}(g(x)))

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.linux操作系统CPU负载

目录 概述CPU平均负载查看平均负载结束 概述 CPU 使用率 和CPU 平均使用率。 CPU平均负载 单位时间内系统处于 [可运行状态] 和 [不可中断状态] 的平均进程数,就是平均活跃进程数,和CPU使用率并没有直接关系 可运行状态 正在使用CPU或者正等待CPU的进…

从头开始构建一个小规模的文生视频模型

OpenAI 的 Sora、Stability AI 的 Stable Video Diffusion 以及许多其他已经发布或未来将出现的文本生成视频模型,是继大语言模型 (LLM) 之后 2024 年最流行的 AI 趋势之一。 在这篇博客中,作者将展示如何将从头开始构建一个小规模的文本生成视频模型&a…

C# 实现websocket双向通信

🎈个人主页:靓仔很忙i 💻B 站主页:👉B站👈 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C# 🤝希望本文对您有所裨益,如有不足之处&#xff…

AWT的菜单组件

AWT的菜单组件 前言一、菜单组件的介绍常见的菜单相关组件常见菜单相关组件集成体系图菜单相关组件使用小要点 二、AWT菜单组件的代码示例示例一示例二实现思路 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默&…

如何使用sr2t将你的安全扫描报告转换为表格格式

关于sr2t sr2t是一款针对安全扫描报告的格式转换工具,全称为“Scanning reports to tabular”,该工具可以获取扫描工具的输出文件,并将文件数据转换为表格格式,例如CSV、XLSX或文本表格等,能够为广大研究人员提供一个…

MySQL详细介绍:开源关系数据库管理系统的魅力

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

理解GPT2:无监督学习的多任务语言模型

目录 一、背景与动机 二、卖点与创新 三、几个问题 四、具体是如何做的 1、更多、优质的数据,更大的模型 2、大数据量,大模型使得zero-shot成为可能 3、使用prompt做下游任务 五、一些资料 一、背景与动机 基于 Transformer 解码器的 GPT-1 证明…

容器技术-docker4

一、docker资源限制 在使用 docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说…

【Spring】DAO 和 Repository 的区别

DAO 和 Repository 的区别 1.概述2.DAO 模式2.1 User2.2 UserDao2.3 UserDaoImpl 3.Repository 模式3.1 UserRepository3.2 UserRepositoryImpl 4.具有多个 DAO 的 Repository 模式4.1 Tweet4.2 TweetDao 和 TweetDaoImpl4.3 增强 User 域4.4 UserRepositoryImpl 5.比较两种模式…

【机器学习】机器学习的重要技术——生成对抗网络:理论、算法与实践

引言 生成对抗网络(Generative Adversarial Networks, GANs)由Ian Goodfellow等人在2014年提出,通过生成器和判别器两个神经网络的对抗训练,成功实现了高质量数据的生成。GANs在图像生成、数据增强、风格迁移等领域取得了显著成果…

详细分析Springmvc中的@ModelAttribute基本知识(附Demo)

目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单…

ros笔记01--初次体验ros2

ros笔记01--初次体验ros2 介绍安装ros2测试验证ros2说明 介绍 机器人操作系统(ROS)是一组用于构建机器人应用程序的软件库和工具。从驱动程序和最先进的算法到强大的开发者工具,ROS拥有我们下一个机器人项目所需的开源工具。 当前ros已经应用到各类机器人项目开发中…

【Matlab 六自由度机器人】机器人动力学之推导拉格朗日方程(附MATLAB机器人动力学拉格朗日方程推导代码)

【Matlab 六自由度机器人】机器人动力学概述 近期更新前言正文一、拉格朗日方程的推导1. 单自由度系统2. 单连杆机械臂系统3. 双连杆机械臂系统 二、MATLAB实例推导1. 机器人模型的建立2. 动力学代码 总结参考文献 近期更新 【汇总】 【Matlab 六自由度机器人】系列文章汇总 …

Elasticsearch 第四期:搜索和过滤

序 2024年4月,小组计算建设标签平台,使用ES等工具建了一个demo,由于领导变动关系,项目基本夭折。其实这两年也陆陆续续接触和使用过ES,两年前也看过ES的官网,当时刚毕业半年多,由于历史局限性导…

大数据开发如何管理项目

在面试的时候总是 会问起项目,那在大数据开发的实际工作中,如何做好一个项目呢? 目录 1. 需求分析与项目规划1.1 需求收集与梳理1.2 可行性分析1.3 项目章程与计划 2. 数据准备与处理2.1 数据源接入2.2 数据仓库建设2.3 数据质量管理 3. 系统…

ARCGIS添加在线地图

地图服务地址:http://map.geoq.cn/ArcGIS/rest/services 具体方法: 结果展示:

Python逻辑控制语句 之 循环语句--for循环

1.for 的介绍 for 循环 也称为是 for 遍历, 也可以做指定次数的循环遍历: 是从容器中将数据逐个取出的过程.容器: 字符串/列表/元组/字典 2.for 的语法 (1)for 循环遍历字符串 for 变量 in 字符串: 重复执⾏的代码 字符串中存在多少个字符, 代码就执行…

flink的窗口

目录 窗口分类 1.按照驱动类型分类 1. 时间窗口(Time window) 2.计数窗口(Count window) 2.按照窗口分配数据的规则分类 窗口API分类 API调用 窗口分配器器: 窗口函数 增量聚合函数: 全窗口函数…

网络编程常见问题

1、TCP状态迁移图 2、TCP三次握手过程 2.1、握手流程 1、TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态; 2、TCP客户进程也是先创建传输控制块TCB&#xff…

Echarts地图实现:杭州市困难人数分布【动画滚动播放】

Echarts地图实现:杭州市困难人数分布 实现功能 杭州市地区以及散点图分布结合的形式数据展示动画轮播可进去杭州市下级地区可返回杭州市地图展示 效果预览 实现思路 使用ECharts的地图和散点图功能结合实现地区分布通过动画轮播展示数据变化实现下级地区数据的展…