深度学习|论文中常用的注意力模块合集(下)

news2024/10/2 22:22:38

注意力机制可以增加少量参数的情况下来提升计算精度和模型性能,在论文中常用的注意力模块合集(上)中介绍了三种注意力机制,它们分别是CA、CBAM和SE,均在目标检测和语义分割领域内能够提升模型的性能,废话不多说,直接开始讲解剩下的论文中常用的注意力模型。

1、有效通道注意力(Efficient Channel Attention Module, ECA)

深度学习中,降维不利于学习通道注意力,但是适当的跨通道交互可以在显著降低模型复杂性的同时保持性能。因此,这里的有效通道注意力(Efficient Channel Attention Module, ECA)模块是一种通过1D卷积实现无降维的局部跨信道交互策略,且可以自适应地选择1D卷积的核大小,以确定本地跨信道交互的覆盖范围,可以带来比较明显的性能增益,结构如图1所示。

图1 ECA结构图

ECA模块需要确定交互的覆盖范围来捕获本地跨信道交互,但手动调整交互的优化覆盖范围会导致耗费大量计算资源。由于组卷积改进CNN架构中的高维(低维)信道会共享给定固定数量组的长距离(短距离)卷积,因此,相互作用的覆盖范围(即1D卷积核的大小k)与通道维度C成比例,即k和C之间存在映射φ:

最简单的映射是线性函数,即φ(k)=γ*k−b,但是线性函数所表征的关系过于有限。另一方面,通道维度C常常是2的指数幂。故可将线性函数扩展为非线性函数:

因此,当给定通道维度C时,卷积核大小k可以通过下述公式进行自适应确定:

其中,

表示离t最近的奇数,这里将将γ和b分别设置为2和1。因此,通过使用非线性映射,高维通道具有更长距离的相互作用,而低维通道具有更短距离的相互作用。

2、双重注意力(Dual attention network,DANet)

双重注意网络以自适应地将局部特征与其全局依赖性集成,如图2所示,具体是分别在空间维度和通道维度上对语义相关性进行建模,空间维度上通过所有位置的特征加权和来选择性地聚集每个位置的特征,通道维度上通过整合所有通道特征图中的相关特征来选择性地强调相互依赖的通道特征。然后,将两个注意力模块的输出相加,以进一步改进特征表示,有利于获得更精确的分割结果。

图2 DANet模块

2.1 空间注意力模块

空间注意力模块能够在局部特征上建立丰富的上下文关系模型,同时可以将更广泛的上下文信息编码为局部特征,从而增强其表示能力。

如图3所示,给定局部特征

,将其输入卷积层以分别生成两个新的特征映射B和C,其中

,然后令它们重塑为

,其中N=H×W表示为像素数。之后,在C和B的转置之间执行矩阵乘法,并应用softmax层来计算空间注意力图

其中

是计算第i个位置对第j个位置的影响。两个位置的更相似的特征表示有助于它们之间的更大相关性。

同时,也将特征A输入到卷积层中,以生成新的特征映射

并依旧对其进行重塑为

。然后在D和S的转置之间执行矩阵乘法,并将结果重塑为

。最后,将其乘以比例系数α,并对特征A执行逐元素求和运算,以获得最终输出

,如下所示

其中α初始化为0,并逐渐分配更多权重,且由此式可以推断出,每个位置处的结果特征E是所有位置上的特征和原始特征的加权和。因此,通过全局上下文视图,并根据空间注意力图选择性地聚合上下文,使得相似的语义特征得到了增强,从而提高了类内紧凑性和语义一致性。

图3 空间注意力模块

2.2 通道注意力模块

高级特征的每个通道图都可以被视为一个特定类的响应,不同的语义响应彼此关联。通过利用通道图之间的相互依赖性,可以强调相互依赖的特征图,并改进特定语义的特征表示。

通道注意力模块如图3所示。与空间注意力模块不同,直接从原始特征

计算通道注意力图

,即先将A重塑为

,然后让A和A的转置之间进行矩阵相乘。最后,应用softmax层来获得通道注意力映射

其中

是计算第i个通道对第j个通道的影响。此外,在X和a的转置之间进行矩阵乘法,并将其结果重塑为

。然后,将结果乘以比例参数β,并与a执行逐元素求和运算,以获得最终输出

:

其中Β是从0逐渐开始学习权重。该式表明每个通道的最终特征是所有通道的特征和原始特征的加权和,也就是能够对特征图之间的长距离语义依赖性进行了建模,有利于提高特征的可分辨性。

图4 通道注意力模块

为了充分利用长程上下文信息,通过卷积层变换两个注意力模块的输出,并执行元素和以实现特征融合。最后,跟随卷积层以生成最终预测图。该注意力模块简单,可以直接插入现有的FCN等框架中来有效增强特征表示,且不会增加太多参数。

3、柔性注意力

柔性注意力通过捕获不同通道特征图之间的特征依赖关系,计算所有通道特征图的加权值,进行显式地建模特征通道之间地相关性。

结构如图5所示,对于输入任意的HxWxC的特征层F,然后分别进行空间的全局平均池化和最大池化,池化大小为HxW,得到两个1x1xC的通道描述行向量Favg和Fmax。共享两个全连接层(Total Fully Connected,TFC),采用Relu激活函数,拟合通道之间的复杂相关性。再将得到的两个通道描述行向量相加,经过Sigmoid激活函数得到1x1xC的特征权重向量w,将原始的特征层和特征权重向量w进行全乘操作,得到不同通道重要性不一样的特征层。在重新生成的特征图上通过滑动窗口找到感兴趣的区域,完成图像分割。

图4 柔性注意力模块

4、其他

以上是在图像中常用的注意力模块的方法,此外还有依据任务的多样性和复杂度来进行修改注意力模块,达到更轻便的架构,比如说论文里面会采用多尺度拼接、残差连接、扩张卷积、自监督机制、多头自注意力、与多样性正则化以及软、硬注意力结合等等一些方法来提高模型性能。

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

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

相关文章

java分治算法

分治算法介绍 分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或 相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题 的解的合并。这个技…

【机器学习】Linear and Nonlinear Regression 线性/非线性回归讲解

文章目录一、回归问题概述二、误差项定义三、独立同分布的假设四、似然函数的作用五、参数求解六、梯度下降算法七、参数更新方法八、优化参数设置一、回归问题概述 回归:根据工资和年龄,预测额度为多少 其中,工资和年龄被称为特征&#xff0…

flea-msg使用之JMS初识

JMS初识 1. JMS 基本概念 1.1 什么是 JMS ? Java 消息服务【Java Message Service】,又简称 JMS,它是 Java 平台上有关面向消息中间件(MOM)的技术规范。 1.2 JMS 规范 JMS 中定义了 Java 中访问消息中间件的接口,并没有给予实…

分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测

分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测 目录分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测分类效果基本介绍模型描述程序设计参考文献分类效果 基本介绍 1.Matlab实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测&…

Python操作的5个坏习惯,你中了几个呢?

很多文章都有介绍怎么写好 Python,我今天呢相反,说说写代码时的几个坏习惯。有的习惯会让 Bug 变得隐蔽难以追踪,当然,也有的并没有错误,只是个人觉得不够完美。 注意:示例代码在 Python 3.6 环境下编写 …

数据与C(布尔类型和虚数和实数)

一._Bool类型(%d占位符) C99标准添加了_Bool类型,用于表示布尔值,既逻辑值true(1)和false(0)。原则上_Bool在原则上仅占用1位存储空间,因为对0和1而言,1位的…

数据与C(位,字节,进制转换和C数据内部存储)

程序的运行离不开数据,所以在本数据章节我们会比较详细的讲解不同数据的重要内容 本章主要讲解一些基础知识便于后面后面的数据类型学习,如果本章知识都懂的同学可以直接从下章开始阅读 目录 一.常量和变量 二.位,字节和字 三.四种进制形…

BI-SQL丨ALL、ANY、SOME

ALL、ANY、SOME ALL、ANY和SOME,这三个关键字,在SQL中使用频率较高,通常可以用来进行数据比较筛选。 注:SQL中ALL的用法和DAX中ALL的用法是完全不同的,小伙伴不要混淆了。 那么三者之间的区别是什么呢? A…

spring 笔记

一、spring概述 1.1 spring介绍 spring是一个轻量级的控制反转和面向切面的容器框架,用来解决企业项目开发的复杂度问题---解耦 轻量级:体积小,对代码没有侵入性控制反转:IOC inverse of control, 把创建对象的工作交…

JUC并发编程Ⅰ -- Java中的线程

文章目录线程与进程并行与并发进程与线程应用应用之异步调用应用之提高效率线程的创建方法一:通过继承Thread类创建方法二:使用Runnable配合Thread方法三:使用FutureTask与Thread结合创建查看进程和线程的方法线程运行的原理栈与栈帧线程上下…

MAC Boook打印长图

有时老师给留的作业是一张长图,直接打印或者通过把图放入word打印都不能实现把长页分成多页进行打印。通过网上找到思路可以通过EXCEL实现将长图分成多页打印。 测试版本 macos:ventura 13.1 office 365 注:同样适用windows版本的excel 第…

cass10.1+鸿业生成平纵横数据

cass10.1鸿业生成平纵横数据前言1 纵断面数据获取1.1 数据准备1.2 纵断面桩号设置(1)桩号设置(2)桩号标注(3)标注显示1.3 高程数据处理1.4 纵断面里程标高文件生成2. cass10.1生成横断面数据2.1 生成横断面…

区块链技术与应用2——BTC-数据结构

文章目录比特币中的数据结构1. 区块链(block chain)2. 默克尔树(Merkle tree)3.哈希指针的问题比特币中的数据结构 1. 区块链(block chain) 哈希指针: (1)保存数值的位置…

基于 Python 实时图像获取及处理软件图像获取;图像处理;人脸识别设计 计算机毕设 附完整代码+论文 +报告

界面结果:图像获取;图像处理;人脸识别 程序结构设计 图形用户界面设计与程序结构设计是互为表里的。或者说,程序结构设计是软件设计最本质、最核心的内容。徒有界面而内部逻辑结构混乱的软件一无是处。 Windows 操作系统是一款图形化的操作系统,相比于早期的计算机使用的命…

XXL-JOB 任务调度平台实践

XXL-JOB 任务调度平台实践一、调度中心(服务端)1、从gitbub 获取项目源码:[https://github.com/xuxueli/xxl-job](https://github.com/xuxueli/xxl-job)2、从源码中得到SQL脚本创建和初始化数据库3、Maven 编译打包 xxl-job-admin 并部署为调度中心4、启动运行 xxl-…

Linux 编译器 gcc/g++

本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 gcc/g常用命令 自定义可执行程序名命令-o 预处理指令-E 编译指令-S 汇编指令-c 链接指令gcc 命令巧记口诀 链接库 动态库-动态链接 静态库…

双11大型互动游戏“喵果总动员” 质量保障方案总结

推荐语:互动游戏是一个系统化工程,在笔者的“喵果总动员”质量方案中,可以看到为保障用户体验,我们在各个难点的解决方案, 例如:用线上压测能力支持业务及时调整各服务容量、通过强化学习覆盖游戏行业的测试…

设计师一定要知道这几个网站,解决你80%的设计素材。

本期推荐一波设计师必备的设计素材网站,设计党赶紧马住!能解决你日常设计中80%的素材。 1、菜鸟图库 菜鸟图库-免费设计素材下载 这是一个为新手设计师提供免费素材的设计网站,站内有超多平面模板、海报、UI设计、电商设计等相关素材&#x…

数据与C(浮点数)

目录 一.基本概念 二.声明和初始化 三.浮点数上溢和下溢 浮点数在数据类型上一共就两个,一个是float,另一个是double。但两个唯一的区别就在于double精度方面是float的两倍 一.基本概念 首先介绍浮点数的三种书写形式 第一种 数字 :103…

K近邻算法和KD树详细介绍及其原理详解

相关文章 K近邻算法和KD树详细介绍及其原理详解 文章目录相关文章前言一、K近邻算法二、KD树总结前言 K近邻算法一般是我们学习机器学习的入门算法,本篇文章详细介绍了K近邻算法,并对其原理进行了说明。同时,为了优化K近邻算法查找最近K个邻…