首页 > 其他分享 >注意力机制

注意力机制

时间:2023-12-15 13:12:16浏览次数:20  
标签:特征 池化 维度 机制 注意力 通道

注意力机制

一、注意力机制

人可以通过眼睛看到各种各样的事物,感知世界上的大量信息,但可以让自己免受海量信息的干扰,可以选择重要信息而忽视不重要信息。

例如一张图片,我们会把下意识把注意力集中在主体身上,而非背景。

同样,希望网络也具有这种能力,引入注意力机制是对输入进行加权再输出,希望网络关注到的地方给较大的权重。

二、通道注意力机制

通道注意力机制的代表模型是:压缩和激励网络(Squeeze-and-Excitation Networks, SENet)。SENet分为压缩和激励两个部分,其中压缩的目的是对全局空间信息进行压缩,然后在通道维度进行特征学习,得到各个通道的重要性,最后通过激励部分对各个通道进行分配不同的权重。

image-20231129155508992

上图是SE模块的结构,在压缩部分,输入的元素特征图的维度是H x W x C,H、W和C分别代表高度、宽度和通道数。压缩部分的功能是将维数从H x W x C压缩至1 x 1 x C,即把H x W压缩为1 x 1维,这个过程由全局平均池化实现。

在激励部分,需要将压缩部分得到的1 x 1 x C的维度融入全连接层,预测各个通道的重要程度,然后再激励到前面特征图对应通道上面进行操作。采用简单的门控机制与Sigmoid函数。

三、空间注意力机制

空间注意力机制的代表模型是:空间变换神经网络(Spatial Transformer Networks,STN),STN能够对各种形变数据在空间中进行转换并自动捕获重要区域。它能够保证图像在经过裁剪、平移或者旋转等操作之后,依然可以获得和操作前的原始图像相同的结果。

例如,在MNIST数字分类中应用STN,该分类过程包含4个步骤:

  1. MNIST中的数字,是经过随机平移、缩放和旋转处理;把它们输入到STN网络中;
  2. 通过STN网络,预测前面输入数字的变换(到底进行了什么变换);
  3. 网络预测出“变换前的数字”;
  4. 最终进行分类预测。

image-20231130100619982

STN网络包括局部网络、参数化网络采样(网络生成器)和差分图像采样。

  • 局部网络:预测输入数字的变换
  • 网络生成器:获得输出特征图坐标点在输入特征图中坐标点的对应位置

image-20231130101340714

四、混合注意力机制

在混合注意力机制中,通道注意力和空间注意力可以通过串联或并联的方式进行组合。

混合注意力机制的代表模型的:卷积注意力模块(Convolutional Block Attention Module,CABM),它包括通道注意力模块CAM、空间注意力模块SAM。

CABM的模型结构如下,它对输入的特征图,首先进行通道注意力模块处理,得到结果再经过空间注意力模块处理,最后得到调整后特征。

image-20231130104212411

通道注意力模块CAM

CAM的输入是特征图,维度设为H x W x C;其中H是指特征图的高度,W是指宽度,C是指通道数。它的思路流程是:

  1. 首先对输入的特征图进行全局池化和平均池化;(在空间维度进行池化,压缩空间尺寸,便于后面学习通道的特征)
  2. 然后将得到的全局和平均池化的结果,送入到多层感知机中学习(多层感知机也即全连接神经网络,基于多层感知机学习通道维度的特征,和各个通道的重要性)
  3. 最后将多层感知机输出的结果,进行“加”操作,接着经过Sigmoid函数的函数映射处理,得到最终的“通道注意力值”

image-20231204200203568

计算公式如下:

image-20231204200318666

空间注意力模块SAM

SAM的输入是CAM输出的特征图。

它的思路流程是:

  1. 首先对输入的特征图,进行全局池化和平均池化;(在通道维度进行池化,压缩通道大小,便于后面学习空间的特征)
  2. 然后将全局池化和平均池化的结果,按照通道拼接;得到的特征图维度是H x W x 2;
  3. 最后把拼接的结果,进行卷积操作,得到特征图维度是H x W x 1;接着通过激活函数处理。

、

计算公式如下:

image-20231206150658722

五、自注意力机制

在注意力机制引入计算机视觉前,主要是靠叠加卷积层与池化层来进行特征提取,并扩大感受野。举个例子,在语义分割中,Deeplab系列提出的带有多尺度空间卷积的ASPP模块:

  • ASPP对输入的特征图,采用不同的dilation rate的空洞卷积进行卷积操作,以多个不同比例获取图像的上下文信息。
  • ASPP模块只能利用空洞卷积从像素点周围的少数点去获取上下文信息,而不能形成密集的全局上下文信息。

为了获取密集的上下文信息,从而建立像素两两之间的依赖关系,引入“自注意力机制”。

六、注意力机制基础

6.1注意力机制原理

注意力机制在语义分割和图像描述生成方面被广泛的应用。使用注意力处理任务时,不同信息的重要程度由权值来体现。

注意力机制对不同信息关注度的区分体现在权值分配,注意力机制可以视为查询矩阵、键以及加权平均值构成了多层感知机。

注意力的思想,类似于寻址。给定Query,去Source中计算Query和不同的Key的相关性,即计算Source中不同的Value值的权重系数;Value的加权平均结果可以作为注意力值。

image-20231206161643100

注意力的计算公式如下:

image-20231206161813423

其中,Lx代表Source的长度。

6.2注意力机制计算过程

大多数方法采用的注意力机制计算过程可以细化成如下三个阶段。

三阶段的注意力机制计算流程:

  • 第一阶段是计算Query和不同的Key的相关性,即计算不同Value值的权重系数;
  • 第二阶段对上一阶段的输出进行归一化处理,将数值的范围映射到0和1之间。
  • 第三阶段,对值和每个对应的权重相乘的结果做累加操作,从而获得注意力值。

image-20231207153906229

公式化表示:

第一阶段是计算Query和不同Key的相关性,即计算不同Value值的权重系数;相关性计算主要包括点积、余弦相似性或者引入神经网络这三种方法。计算方式分别如下:

image-20231207155440239

第二阶段对上一阶段的输出进行归一化处理,将数值的范围映射到0和1之间。其中,ai表示第i个值被分为的权重值。

image-20231207161015846

第三阶段,对值和每个值对应的权重相乘的结果做累加操作,从而获得注意力数值。

image-20231207164245361

标签:特征,池化,维度,机制,注意力,通道
From: https://www.cnblogs.com/dxmstudy/p/17903169.html

相关文章

  • redis 使用主从机制复制数据
    查看主从情况127.0.0.1:6379>inforeplication#Replicationrole:masterconnected_slaves:0master_repl_offset:12539repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0建立主从(在备机操作)注意,如果让有数据的......
  • UE4 World Composition机制
    世界场景构成(WorldComposition)属于关卡流送的一种,旨在简化大型世界场景的子关卡管理,通过关卡流送的方式读取地块信息,减轻运行压力,从而实现大型世界场景的运行。与传统关卡管理方式的区别:无需手动将关卡添加到场景中,只需将关卡放置到主地图所在的目录下(可建子目录)。 主关卡(Pe......
  • net core 异步超时取消机制
    方法一:利用Task.WhenAnynamespaceConsoleApp1{internalclassProgram{staticvoidMain(string[]args){Console.WriteLine("Hello,World!");CancellationTokenSourcects=newCancellationTokenSource......
  • Guava的注解处理机制
    第1章:引言Guava不仅仅是一个工具库,它更像是Java程序员的瑞士军刀,提供了一系列强大的功能,从集合操作到函数式编程,再到今天咱们要深入探讨的——注解处理机制。注解(Annotations),在Java世界里,它们就像是给代码加的小便签,既能标记信息,又能影响程序的运行。Guava对注解处理的方式,不仅......
  • 垃圾回收机制
    垃圾回收机制(GC)专门用来回收不可用的变量值所占用的内存空间(在内存中,没有变量名指向的数据都是垃圾数据)引用计数标记清除分代回收【1】引用计数name='heart'#'heart'的引用计数就是1a=name#'heart'的引用计数就是2【2】标记清除一旦内存空间装满了,溢......
  • 如何实现SPI机制
     一.定义SPI(ServiceProviderInterface)是一种面向接口编程的技术,它可以让一个程序根据接口约定规范自动发现和加载对应的实现类。它是一种Java种的接口编程规范,它定义了接口和服务提供者之间的约定规范,使得在运行时动态加载实现该接口的类。SPI机制是通过在服务提供者接口......
  • Go Work Stealing 机制
    一、什么是WorkStealingGo语言的WorkStealing机制是一种用于调度协程(Goroutines)的策略,有助于充分利用多核CPU,提高并发性能,降低锁竞争,从而使Go程序更高效地运行WorkStealing机制的核心思想:每个操作系统线程(M)都有一个本地任务队列,它会尽可能地先执行自己队列中的协程。当某......
  • 一文详解大模型归因机制,幻觉问题有救了!
    作者|谢年年、python大模型的幻觉问题一直是一个亟待解决的挑战。由于大模型的训练语料来源广泛,且都是未经筛选的现实世界文本,预训练的目标也仅在于预测下一个单词,并未对生成内容的真实性进行建模和验证,这导致了大模型幻觉问题的频繁出现。为了增强模型事实准确性和可验证性,一种......
  • 15、自定义绘制图形(双缓冲机制)
    效果图 //drawwidget.h#ifndefDRAWWIDGET_H#defineDRAWWIDGET_H#include<QObject>#include<QWidget>#include<QtGui>#include<QMouseEvent>//鼠标事件#include<QPaintEvent>//绘制事件#include<QResizeEvent>//实时获取窗口操作等的大......
  • mysql的锁机制运行原理是什么
    MySQL的锁机制是数据库管理系统用来协调多个并发事务对共享资源(例如数据库表)进行访问的一种方式。MySQL支持多种锁类型,包括共享锁和排它锁。以下是MySQL锁机制的一些基本原理:锁的类型:共享锁(SharedLock):多个事务可以同时持有共享锁,用于读取共享资源,不阻塞其他事务的共享锁。排它锁(E......