初识attention

  近年来,attention机制在机器视觉和机器翻译领域受到了广泛的关注,有很多文章都是融合attention来提高性能。attention受启发于人类的视觉系统,最先应用于序列化的机器翻译(NLP)后又推广到计算机视觉中,本篇文章就来简单学习一下attention机制吧~
注意:attention在视觉和NLP领域均有所应用,虽然底层原理相同,但在应用上还是有所不同,结合笔者的研究领域,本篇文章主要介绍视觉中的attention。主要内容如下所示:
  一、 attention的主要思想
  二、 什么是视觉中的attention机制?
  三、 视觉attention的分类
    3.1 channel attention(通道attention)
    3.2 spatial attention(空间attention)
    3.3 channel and spatial attention(通道和空间混合attention)
  四、attention机制的优缺点
  五、attention的应用领域
  六、attention结合语义通信

一、 Attention的主要思想

  其实attention的思想很简单:从大量信息中筛选出有用的信息,就能够称为注意力机制,就是把关注点聚焦于局部信息,随着任务变化,聚焦的内容也发生变化。从数学思想角度说,attention就是把输入X每个部分赋予不同权重,对关键的信息赋予高权重,使模型做出更加准确的判断。这个输入X也叫做特征图,attention就是特征图的权重分布,有用特征权重增大,无用特征权重减少,再用学到的权重再次应用到特征图上,最终得到最优权重分布。
  在视觉上,输入的往往是一张图像,这里的特征也就是图像特征啦,视觉attention就是确定图像权重啦~
注意attention是一个机制,也就是一个模块,可以加到任何一个视觉网络中来帮助特征提取。

二、 什么是视觉中的attention机制?

  attention机制伴生:显著目标检测(salient object detection),输入是一张图,输出是一张概率图,概率越大的地方,代表是图像中重要目标的概率越大,即人眼关注的重点。
  前面说到attention机制的本质就是利用相关特征图学习权重分布,再用学出来的权重施加在原特征图之上最后进行加权计算。落实到视觉中即结合深度学习技术,大多数是集中于使用掩码(mask)来形成注意力机制。掩码原理在于通过另一层新的权重(每轮利用特征图计算的权重),将图片数据中关键的特征标识出来,通过学习训练,让深度神经网络学到每一张图片中需要关注的区域。
  在权重的计算方式上略有差别,大致总结为如下四点:
  1) 可以是保留所有分量平均做加权(即soft attention);
  2) 可以是在分布中以某种采样策略选取部分分量(即hard attention),通常使用RL
  3)可以作用在空间尺度上,给不同空间区域加权;
  4)可以作用在Channel尺度上,给不同通道特征加权;

三、 视觉attention的分类

  在分类上,可以从两个角度上分:强弱和attention关注的对象。本文主要介绍后者,但对于强弱的区分做一个简要的描述。
  强弱上的区分也就是:一种是软注意力(soft attention),另一种则是强注意力(hard attention)。其不同之处有以下几点:
  1) 软注意力更关注区域或者通道,而且软注意力是确定性的注意力,学习完成后直接可以通过网络生成。
  2) 软注意力是可微的,可通过神经网络算出梯度并且前向传播和后向反馈来学习得到注意力的权重。
  3) 强注意力更加关注点,也就是图像中的每个点都有可能延伸出注意力
  4) 强注意力是一个随机的预测过程,更强调动态变化。
  5) 强注意力是一个不可微的注意力,训练过程往往是通过强化学习(reinforcement learning) 来完成的。
  在计算机视觉中,很多领域的相关工作(例如,分类、检测、分割、生成模型、视频处理等)都在使用Soft Attention,典型代表:SENet、SKNet。
  总体来说使用soft比使用hard更为普遍(可微是巨大的优势),以下介绍的几类都可以算作soft。
  下面结合具体的例子介绍下不同分类:通道attention,空间attention,通道空间融合attention。
  其实本质上不同分类就代表不同的权重计算方式,通道attention是按照图片的RGB通道计算,空间attention就是不论通道以位置计算,混合就是两者都有。下面来结合例子具体说说。
  预备知识:一张图片是由RGB三个通道组成,每个通道上具有相同空间,尺寸为H x W

  3.1 通道attention

  通道attention就是对每个Channel(通道),在channel维度上学习到不同的权重,平面维度上权重相同。基于通道域的attention通常是对一个通道内的信息直接全局平均池化,而忽略每一个通道内的局部信息。也就是建模各个特征通道的重要程度,然后针对不同的任务增强或者抑制不同的通道。这样通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的通道并抑制对当前任务用处不大的通道。
  实例:Squeeze-and-Excitation Networks(SENet)
  论文地址:https://arxiv.org/abs/1709.01507
  官方代码地址:https://github.com/hujie-frank/SENet
  Pytorch实现代码:https://github.com/moskomule/senet.pytorch
  SENet的系统结构如下:
在这里插入图片描述
  SENet里面主要就是这个SE模块,主要三个阶段:提取通道数据、通道数据权重确定、通道数据权重反馈
在这里插入图片描述
  目前大多数的主流网络都是以repeat方式叠加来构造的。因此SE模块可以嵌入到现在几乎所有的网络结构中。通过在原始网络结构的building block 单元中嵌入SE模块,可以获得不同种类的SENet
参考:https://blog.csdn.net/xjz18298268521/article/details/79078551

  3.2 空间attention:

  空间attention是对H x W尺寸的特征图学习到一个权重,即每个像素都会学习到一个权重。可以理解成一个像素是C维的一个向量,深度是C,在C个维度上,权重都是一样的,但是在平面上,也就是不同像素之间,权重不一样。空间attention可以提高网络的对图像变形、旋转等几何变换的鲁棒性。
  实例:Spatial Transformer Networks(2D图像定位感兴趣区域,STN网络)
  STN论文原文:https://arxiv.org/abs/1506.02025
  Pytorch版Github代码:https://github.com/fxia22/stn.pytorch
  STN是学习对输入数据进行空间变换,从而增强网络的对图像变形、旋转等几何变换的鲁棒性。原文中提到是面向CNN的,STN 可以在端到端的训练过程中自适应地学习变换参数,无需人为设置变换方式和参数。
  STN 的基本结构如下图所示,包括三个部分:定位网络(Localization Network)、网格生成器(Grid Generator)和采样器(Sampler)。
在这里插入图片描述
  因为STN主要面向的问题是图片的一些平移空间变换,也就是建立变换前后坐标之前的映射关系就好了(上图的UV就是两个坐标)。三个模块各自对应的功能如下:
在这里插入图片描述
参考:https://blog.csdn.net/qq_45122568/article/details/124293622

  3.3 通道空间融合attention

  融合的attention就是即考虑通道维度也考虑空间维度
  实例:Convolutional Block Attention Module(CBAM网络)
  论文原文网址:https://arxiv.org/pdf/1807.06521.pdf
  Pytorch源码:https://github.com/Jongchan/attention-module
  CBAM结合了使用了通道与空间注意力机制。作者认为通道注意力决定了“what is important",空间注意力决定了"where is important"。
  CBAM的网络架构如下图所示,其中分别包含了Channel attention module和spatial attention module,并且两者是线性关系,简单来说就是先计算一轮通道再计算一轮空间,这样最后计算得到的就包含两部分了:
在这里插入图片描述
在这里插入图片描述
  Channel attention module原理
  1)特征聚合: 对输入的特征图(通常是前一层卷积层的输出)执行全局平均池化和全局最大池化,这两种池化操作均沿着空间维度(宽度和高度)进行,以生成两个不同的通道描述符。每个描述符是一维的,并且其长度等于输入特征图的通道数。
  2)多层感知机(MLP):获取到的两个通道描述符分别通过共享权重的多层感知机(MLP,具有一个隐藏层),这个过程相当于在通道空间中进行特征编码。
  3)融合:使用元素级别的加法将两个通道描述符合并起来,得到通道注意力的权重。这种方式能够同时考虑到不同通道间最大值和平均值的信息,使得模型能够捕捉到更全面的通道级特征信息。
  4)激活和再缩放:对合并后的通道权重进行激活函数处理,如Sigmoid或者Softmax,然后将这个激活后的权重与原始输入特征图按通道相乘(即特征重标定),这个步骤实现了对输入特征图通道的重加权。
  通过这个模块,网络便能够凸显那些对当前任务最有帮助的通道中的特征,并关注于这些重要的特征。CBAM中的Channel Attention Module可以有效提升网络表征特征的能力,给出更具区分性的特征表示,通常可以帮助改善许多视觉任务的性能。
在这里插入图片描述
  Spatial attention module原理
  1)特征聚合:首先,对特征图执行通道维度上的聚合操作。模型通常使用最大池化和平均池化来凸显不同类型的信息:最大池化能够帮助模型捕捉到最显著的特征,而平均池化能够帮助捕捉到全局的统计特征。这两种池化操作均沿着通道轴执行,生成两个二维特征图(每个的尺寸等于输入特征图的空间维度)。
  2)特征融合:然后,通过将最大池化和平均池化之后产生的两个特征图在通道维度上堆叠起来,形成一个两通道的特征图。
  3)卷积:接着,通过一个具有单个滤波器的7x7卷积层来处理这个两通道特征图。该卷积层有效地对空间位置的特征进行编码,产生一个二维的空间注意力图。通过该操作,模型学习到了输入特征图的哪些空间位置最为重要。
  4)激活和再缩放:利用激活函数(如Sigmoid函数)对得到的空间注意力图进行激活,使得每个空间位置的像素值范围在0和1之间。将激活后的空间注意力图与原始输入特征图进行逐元素相乘,从而在空间维度上重新调整原始特征图的权重。
  经过Spatial Attention Module处理后,网络的注意力被引导到重要的空间区域上,忽略了那些不太重要的区域,从而使网络能更有效地进行特征学习。空间注意力与通道注意力的结合应用,共同增强了CNN在处理视觉任务时的性能。
参考:https://blog.csdn.net/qq_34554039/article/details/122892781

四、Attention机制的优缺点?

  4.1 优点

  1)目标关注:注意力机制能够帮助模型更加集中地关注图像中的重要区域,从而提高目标检测、图像分类等任务的性能。通过给予不同区域不同的注意力权重,模型可以更好地聚焦于关键信息。
  2)视觉解释性:注意力机制能够提供一定程度的视觉解释性,即指示模型注重哪些区域用于决策。这使得注意力机制在解释模型决策的可解释性任务中有所帮助。

  4. 2缺点

  1)计算复杂度:与其他基础模型相比,引入注意力机制会增加计算复杂度。在处理大规模图像数据时,这可能导致显著的计算开销,影响模型的实时性能。
  2)受限的区域范围:某些注意力机制设计可能限制了模型只能在有限的局部区域上进行注意力调整,而无法对整个图像进行全局处理。这可能导致模型错过一些全局上的关键信息。
  3)迁移性问题:由于注意力机制的设计依赖于具体任务和数据集,因此在不同任务和数据集上迁移时,注意力机制的性能可能会下降。这可能需要额外的调整和训练来适应新的任务。

五、Attention的应用领域

  1)目标检测(Object Detection):应用注意力机制来集中识别图像中的特定对象,从而提高检测性能和准确度。
  2)场景理解(Scene Understanding):注意力模型帮助算法关注图像中的关键要素来更好地理解场景的内容。
  3)图像分类(Image Classification):通过突出重要区域和抑制不重要的部分,注意力驱动的方法提高了图像分类的准确性。
  4)图像和视频字幕(Image and Video Captioning):视觉注意力机制可以用于挑选出与生成描述最相关的图像或视频区域。
  5)医学影像分析(Medical Image Analysis):在诸如肿瘤检测或器官分割的任务中,注意力机制让模型集中在预期区域,从而提高了分析的准确性。
  6)人机交互(Human-Computer Interaction):利用注意力机制,可以创建出更自然的交云接口,如通过跟踪用户的视线来判断他们的注意焦点。
  7)机器人导航和控制(Robotics Navigation and Control):机器人可以使用注意力驱动模型来识别并关注在其环境中最重要的对象或障碍。
  8)增强现实(Augmented Reality):在 AR 应用中,视觉注意力可以帮助强调重要信息或融合现实与增强内容。
  9)自然语言处理(Natural Language Processing, NLP):尽管这是一个非视觉任务,注意力机制也被用于模型中的非结构化数据,使模型能够识别和关注在文本中最具信息量的部分。
  10)艺术创作(Artistic Creation):自动化艺术和设计软件可以利用注意力模型来创建吸引人的视觉元素。

六、attention结合语义通信

  因为笔者自己是处于语义通信领域的,这里介绍下和本领域的结合。
  目前看到一种结合方法是:因为现在语义通信里比较常用的DeepJSCC结构,也就是channel本身是参与网络训练的。导致训练出来的模型和训练channel是强相关的,在SNR稍微低一点儿的信道上通信效率大幅下降。所以融合attention就是把信道也作为编解码模型训练的考虑标准之一,attention会对不同信道进行特征提取,这样训练出来的模型在不同信道上的鲁棒性比较好。

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

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

相关文章

JS基础 - 遍历对象方法(6种)

初始值: var obj {a: 1,b: 2,c: 3,d: 4,e: 5,}; 第一种:for in for (let key in obj) {console.log(key ":" obj[key]);} 第二种:Object.keys 获取key Object.keys(obj).forEach((key) > {console.log(key ":" …

AI绘画:PhotoMaker Win11本地安装记录!

昨天介绍一个叫PhotoMaker的AI绘画开源项目。挺不错的! 通过这个项目可以快速制作特定人脸的AI绘画作品,相比传统的技术效果会好很多,效率也高很多。 今天趁热打铁,本地电脑装装看,并且记录,分享一下&#…

js padEnd方法介绍笔记

padEnd() 是 JavaScript 字符串的方法之一,它用于在当前字符串的末尾添加指定数量的字符,直到字符串达到指定的长度。 padEnd() 方法接受两个参数: 目标长度和要添加的填充字符。 如果当前字符串的长度已经等于或超过目标长度,则不…

程序员怎么写简历_写简历软件

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历…

vue预览pdf文件的几种方法

文章目录 vue预览pdf集中方法方法一:方法二:展示效果:需要包依赖:代码: 方法三:展示效果:需要包依赖:代码:自己调参数,选择符合自己的 vue预览pdf集中方法 我…

第 9 章:理解C++内存模型

本章是继[第8章]讨论的延续,我们在那里讨论了一些多进程和多线程技术;本章将增强它们的使用。我们将引导你了解各种技术,同时聚焦于本章的主要内容——C内存模型。但为了讨论这一点,你首先将简要检视通过智能指针和可选对象实现的…

ZK鉴权设计以及相关探讨

文章目录 1. zk的鉴权设计2. zk鉴权应用范围3. zk鉴权的常用方法4. 推荐配置5. 参考文档 鉴权,分别由鉴和权组成 鉴: 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致权: 完成身份的鉴后,还需要判断…

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统,具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…

【C++】std::variant

上一篇文章讲到了 union,union union存在很多问题,因此C17设计了一个新的variant替代原来的union。 union的问题 无法知道当前使用的类型是什么。而且union无法自动调用底层数据成员的析构函数。 这些使得一般只对一些“基本类型”使用union&#xf…

Redis 安装 redistimeseries.so(时间序列数据类型)教程

配置步骤 1.下载 redistimeseries.so 文件 2.在 redis.conf 中增加配置 loadmodule /home/chenjian/redis-lib/RedisTimeSeries/redistimeseries.so DUPLICATE_POLICY LAST3.重启 Redis 服务 4.连接客户端,测试 RedisTimeSeries 相关命令,下图表明 R…

Java玩转《啊哈算法》排序之快速排序

心无挂碍,无挂碍故,无有恐怖,远离颠倒梦想,究竟涅槃。 地图 引子代码地址快速排序核心代码优劣完整代码演示 课后习题 引子 搭嘎好!本人最近看的《啊哈算法》这本书写的确实不错,生动形象,在保…

安全耐用 一路稳行 极固轮胎3大系列产品重磅上市

临近年关,全国范围内雨雪天气多发,让极端天气环境下的行车安全再次成为热议话题。路面寒冷湿滑,交通事故频发,也让大家开始关注一个话题:如何确保汽车在湿滑路面上的安全系数?或者说,如果遭遇类…

如何让wordpress首页只显示某一篇文章全部内容?在您的主页显示选择

大多数WordPress站点首页默认都是显示最新发布的文章列表,不过有些站点比较特殊,只想显示某一篇文章的全部内容,那么应该怎么设置呢? 其实,WordPress后台 >> 设置 >> 阅读 >> 在“您的主页显示”中…

基于flask的个人博客项目从0到1

项目展示 首页 文章时间线页面 笔记页面 留言页面 关于页面 后台页面-文章管理 后台页面-笔记页面 后台页面-分类 后台管理-新增标签 后台管理-标签页面 后台管理-新增标签 后台管理-关于页面 2.项目详述 该博客开源地址点击跳转,该项目已部署上线,…

《HTML 简易速速上手小册》第8章:HTML 表单高级技术(2024 最新版)

文章目录 8.1 数据收集与处理8.1.1 基础知识8.1.2 案例 1:创建一个注册表单8.1.3 案例 2:创建一个调查问卷表单8.1.4 案例 3:创建一个动态添加输入字段的表单 8.2 定制化表单元素8.2.1 基础知识8.2.2 案例 1:创建一个带有定制选择…

【GAMES101】Lecture 12 阴影 Shadow Mapping

这里是光栅化的最后一部分,讲这个光栅化里面怎么实现这个阴影 实际上阴影就是光源看不到的地方但是是我们能看到的地方,那这个地方就应该有阴影,那具体怎么做呢,这个就叫做Shadow Mapping,分两步做 我们之前说过这个解…

Stable Diffusion系列(四):提示词规则与使用

文章目录 基础规则高级规则插件使用基于相机镜头增强提示词常用提示词总结奇特提示词珍藏 基础规则 所谓提示词,也就是文生图中的文,由连贯的英语单词或句子组成。其最基础的规则是: 不同提示词之间需要用英文逗号分隔,空格和换…

基于大数据的B站数据分析系统的设计与实现

摘要:随着B站(哔哩哔哩网)在国内视频分享平台的崛起,用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据,设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…

mfc140.dll找不到了要怎么解决?教你多种修复mfc140.dll的方法

遭遇 mfc140.dll 文件缺失的状况时,首要任务是保持冷静,并深入理解问题所在,随后按照科学的方法来应对这一挑战。本篇文章概述了多种应对策略,从适合新手的基本步骤到针对有技术基础用户的高级方案,各种手段都能有效地…

linux系统查看占用cpu程序

目录 一:top 二: ps 三:perf 四:/proc/stat 五:pidstat 一:top 使用 top 命令:在终端中输入 top 命令,系统会显示当前正在运行的进程和它们的资源占用情况。默认情况下&#…