通俗易懂理解通道注意力机制(CAM)与空间注意力机制(SAM)

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。

一、参考资料

通道注意力,空间注意力,像素注意力

通道注意力机制和空间注意力机制

视觉 注意力机制——通道注意力、空间注意力、自注意力

二、通道注意力与空间注意力机制

1. 通道注意力机制(CAM)

通道注意力机制(Channel Attention Mechanism, CAM),通过特征内部之间的关系来通道注意力机制。特征图的每个通道都被视作一个特征检测器,所以通道特征聚焦的是图像中有用的信息是"什么"(what)。

1.1 通道注意力的结构

通道注意力模块的结构,如下图所示:

1.2 通道注意力流程

通道注意力的思路流程是:

  1. 首先,对一个尺寸为 H×W×C的输入特征图F进行空间维度的全局最大池化和全局平均池化,得到两个 1×1×C 的特征图;(在空间维度进行池化,压缩空间尺寸,便于后面学习通道的特征)
  2. 然后,将全局最大池化和全局平均池化的结果,分别送入一个共享的多层感知机(MLP)中学习,得到两个 1×1×C 的特征图。MLP的第一层神经元个数为 C/r,激活函数为 Relu,第二层神经元个数为 C;(基于MLP学习通道维度的特征,和各个通道的重要性)
  3. 最后,将MLP输出的结果进行Add操作,接着经过Sigmoid激活函数的映射处理,最终得到通道注意力权重矩阵 M c M_c Mc

1.3 通道注意力的计算公式

空间注意力权重矩阵 M c M_c Mc,可以表示为:
M c ∈ R C × 1 × 1 M_{c}\in R^{C\times1\times1} McRC×1×1
为了降低计算参数,在MLP中采用一个降维系数r, M c ∈ R C / r × 1 × 1 M_{c}\in R^{C/r\times1\times1} McRC/r×1×1

综上,通道注意力计算公式如下:
M c ( F ) = σ ( M L P ( A v g P o o l ( F ) ) + M L P ( M a x P o o l ( F ) ) ) = σ ( W 1 ( W 0 ( F a v g c ) ) + W 1 ( W 0 ( F m a x c ) ) ) \begin{gathered} M_{c}(F) =\sigma(MLP(AvgPool(F))+MLP(MaxPool(F))) \\ =\sigma(W_{1}(W_{0}(F_{avg}^{c}))+W_{1}(W_{0}(F_{max}^{c}))) \end{gathered} Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=σ(W1(W0(Favgc))+W1(W0(Fmaxc)))
上式中, F a v g c F_{avg}^{c} Favgc F m a x c F_{max}^{c} Fmaxc 分别表示全局平均池化特征和最大池化特征。

2. 空间注意力(SAM)

通过对特征图空间内部的关系来产生空间注意力特征图。不同于通道注意力,空间注意力(Spatial Attention Mechanism, SAM)聚焦于特征图上的有效信息在"哪里"(where)

2.1 空间注意力的结构

与通道注意力相似,给定一个 H×W×C 的输入特征 F’,先分别进行一个通道维度的全局最大池化和平均池化,得到两个 H×W×1 的通道描述,并将这两个特征图按照通道拼接(concat)起来。然后,经过一个 7×7 的卷积层,激活函数为 Sigmoid,得到空间注意力权重矩阵 M s M_s Ms。最后, M s M_s Ms与输入特征F’ 相乘,即可得到缩放后的新特征。

2.2 空间注意力流程

空间注意力的思路流程是:

  1. 首先,对一个尺寸为 H×W×C的输入特征图F进行通道维度的全局最大池化和全局平均池化,得到两个 H×W×1 的特征图;(在通道维度进行池化,压缩通道大小,便于后面学习空间的特征)
  2. 然后,将全局最大池化和全局平均池化的结果,按照通道拼接(concat),得到特征图尺寸为HxWx2,
  3. 最后,对拼接的结果进行7x7的卷积操作,得到特征图尺寸为 HxWx1,接着通过Sigmoid激活函数 ,得到空间注意力权重矩阵 M s M_s Ms,;

2.3 空间注意力的计算公式

空间注意力权重矩阵 M s M_s Ms,可以表示为:
M s ( F ) ∈ R H , W M_{s}(F)\in R^{H,W} Ms(F)RH,W
同上,在通道维度使用两种池化方法产生2D特征图:
F a v g s ∈ R 1 × H × W F m a x s ∈ R 1 × H × W F_{avg}^s\in R^{1\times H\times W}\\F_{max}^s\in R^{1\times H\times W} FavgsR1×H×WFmaxsR1×H×W
综上,空间注意力的计算公式如下:
M s ( F ) = σ ( f 7 × 7 ( [ A v g P o o l ( F ) ; M a x P o o l ( F ) ] ) ) = σ ( f 7 × 7 [ F a v g s ; F m a x s ] ) \begin{aligned} M_{s}(F)& =\sigma(f^{7\times7}([AvgPool(F);MaxPool(F)])) \\ &=\sigma(f^{7\times7}[F_{avg}^{s};F_{max}^{s}]) \end{aligned} Ms(F)=σ(f7×7([AvgPool(F);MaxPool(F)]))=σ(f7×7[Favgs;Fmaxs])

3. 混合注意力机制

在混合注意力机制中,通道注意力和空间注意力可以通过串联、或者并联的方式进行组合。关于混合注意力机制的介绍,请参考下文的CBAM网络模型。

三、SENet:通道注意力

SENet:[1]

深入理解SENet:自适应特征提取的注意力机制

//TODO

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

在这里插入图片描述

上图是SE模块的结构, 在压缩部分,输入特征图的尺寸为 H×W×C。压缩部分的功能是将维数从 H×W×C 压缩至1×1×C,即把 H×W 压缩为 1×1 维,这个过程由**全局平均池化(GAP)**实现。

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

在通道注意力机制,学习各个通道的重要性时,是先对特征图的空间进行压缩,然后在通道维度进行学习,得到各个通道的重要性。

四、STN:空间注意力

原始论文:[2]

空间变形网络——STN

详细解读Spatial Transformer Networks(STN)-一篇文章让你完全理解STN了

通俗易懂的Spatial Transformer Networks(STN)(一)

通俗易懂的Spatial Transformer Networks(STN)(二)

从仿射变化到STN网络

1. STN网络简介

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

举个例子,在MNIST 数字分类的中应用STN,该分类过程一共包含 4 个步骤:

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

在这里插入图片描述

上图中,a是输入图片,b 是 STN 中的 localisation 网络检测到的物体区域,c是 STN 对检测到的区域进行线性变换后输出,d 是有 STN 的分类网络的最终输出。

2. STN网络结构

STN更准确地说应该是 STL(spatial transformer layer),它就是网络中的一层,并且可以在任何两层之间添加一个或者多个。如下图所示,STL由三部分组成,分为是局部网络(localisation net)、网格生成器(grid generator, 参数化网络采样))和差分图像采样。

在这里插入图片描述

上图中,输入的特征图U被局部网络处理得到参数 θ \theta θ,然后经过网格生成器得到采样器,映射到原图U上,从而得到输出V。

2.1 局部网络

局部网络 用于预测输入数字的变换(是平移了?还是缩放了?或是旋转了?)

2.2 网格生成器

网格生成器获得输出特征图坐标点在输入特征图中坐标点的对应位置。

五、CBAM:混合注意力

BAM:[3]

CBAM:[4]

github代码:attention-module

注意力机制BAM和CBAM详细解析(附代码)

CBAM:通道注意力和空间注意力的集成者

CBAM网络简介

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

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

在这里插入图片描述

六、参考文献

[1] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.

[2] Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[J]. Advances in neural information processing systems, 2015, 28.

[3] Park J, Woo S, Lee J Y, et al. Bam: Bottleneck attention module[J]. arxiv preprint arxiv:1807.06514, 2018.

[4] Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 3-19.

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

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

相关文章

git使用方法(简易版)

一、git使用过程 1.注册git账号,并新建一个仓库; http://t.csdnimg.cn/ePcsx可以参考链接 2.在电脑文件夹中,右键选择 Git Bash Here,输入git init(初始化仓库); git init - 初始化仓库。 Git 使用 git …

Linux ---- Shell编程三剑客之AWK

一、awk处理文本工具 1、awk概述 awk 是一种处理文本文件的语言,是一个强大的文本分析工具。AWK是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作。用来处理列。数据可以来自标准输入也可以是管道或文件。…

Linux系统管理和Shell脚本笔试题

1、写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB #写入内…

Aigtek大功率信号源怎么使用的

大功率信号源是在实验室、测试和通信系统中经常使用的重要设备。它能够提供高功率的信号,用于驱动各种设备和系统。在使用大功率信号源时,有一些关键的步骤和指南,可以确保安全、有效地操作设备并获得稳定的输出。本文将详细介绍大功率信号源…

如何使用docker部署Swagger Editor并实现无公网ip远程协作编辑文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

whale-quant 学习 part6:量化择仓策略

量化择调仓策略 投资组合收益率衡量投资组合收益率计算方法投资组合的绝对收益率和相对收益率 投资组合的风险衡量最优方法计算投资组合的最佳仓位等权重市场加权最小方差组合最大分散度风险平价均值方差优化(最经典与常用)常见约束 python实现最佳仓库控制参考 投资组合收益率…

【C++】类和对象万字详解

目录 一、类与对象 1、类是什么 二、类和对象的基础知识 2.1 定义类:成员变量和成员函数 2.2 创建对象:实例化一个类的对象。 2.3对象的生命周期:构造函数和析构函数。 a. 构造函数 b. 析构函数 c.小结: 三、成员变量和…

车载语音交互赛道研究:大模型揭幕2.0时代 商业模式重塑

大模型正给车载语音交互赛道带来颠覆性变革。 根据高工智能汽车研究院调研获取的信息,核心原因为:1.0时代,车载语音交互玩家可使用自身的小模型;2.0时代,很可能需基于通用大模型(训练成本极为高昂&#xf…

LeetCode:49. 字母异位词分组

49. 字母异位词分组 1)题目2)代码3)结果 1)题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs…

SAP 检验批QA32质检放行后使用程序RQEVAC50冲销报错:Material XXX is serialized

场景: 成品采购时,如果成品物料启用了序列号管理,此时使用程序RQEVAC50冲销时候,就会出现报错Material XXX is serialized 解决办法: 第一步:非限制库存转质检库存 使用MIGO A08转账过账 R10其他 移动…

BSV区块链将凭借Teranode的创新在2024年大放异彩

​​发表时间:2024年1月15日 2024年1月15日,瑞士楚格 – BSV区块链协会研发团队今日官宣了Teranode的突破性功能,这些功能将显著提升BSV区块链网络的效率和速度。在不久的将来,BSV区块链的交易处理能力将达到每秒100万笔交易。 T…

cilium-agent的DaemonSet启动流程

文章目录 概述架构分析configmount-cgroupapply-sysctl-overwritesmount-bpf-fsclean-cilium-stateinstall-cni-binariescilium-agent 总结参考资料 概述 本文主要分析 cilium-agent 作为 DaemonSet 在每个节点的启动流程。 架构分析 下面按照 cilium-agent 从 init-contain…

江科大stm32学习笔记9——OLED调试工具

一、OLED OLED:有机发光二极管,供电3~5.5V,0.96寸OLED通信协议:I2C/SPI,分辨率:128*64 二、调试方式 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手…

canvas的一些基础

在 Canvas 中,基本图形有两种:直线图形和曲线图形 直线图形:直线、矩形(描边矩形和填充矩形)、多边形 曲线图形:曲线和弧线(弧线是圆的一部分,曲线则不一定,弧线上的每个点都具有相同的曲率&…

npm ERR! reason: certificate has expired(淘宝镜像过期)

npm ERR! request to https://registry.npm.taobao.org/yauzl/-/yauzl-2.4.1.tgz failed, reason: certificate has expired 今天在执行npm install命令时,报错百度了下是淘宝证书过期原因 解决方法一 执行下面两个命令再进行npm install即可 npm cache clean --…

C语言中大小写字母的转化的方法

C语言中大小写字母的转化 介绍 在C语言中&#xff0c;我们经常需要在大小写字母之间进行转换。这篇文章将详细介绍如何在C语言中实现这个功能。 方法 C语言的标准库 <ctype.h> 提供了一些函数&#xff0c;可以帮助我们在大小写字母之间进行转换。这些函数包括 toupper…

PPT、PDF全文档翻译相关产品调研笔记

主要找一下是否有比较给力的全文档翻译 文章目录 1 百度翻译2 小牛翻译3 腾讯交互翻译4 DeepL5 languagex6 云译科技7 快翻:qtrans8 simplifyai9 officetranslator10 火山引擎翻译-无文档翻译1 百度翻译 地址: https://fanyi.baidu.com/ 配套的比较完善,对于不同行业也有区…

Qt代码添加日志管理的模块功能

在程序中一般需要添加日志管理的记录&#xff0c;在学习Httpserver的过程中&#xff0c;学习到了日志管理模块&#xff0c;将QtwebApp的日志模块提取出来可作为一般性程序的日志管理&#xff0c;记录实验的过程&#xff0c;项目源代码也附在后面。 项目运行结果 项目代码结构 参…

Spring Bean 定义常见错误

Spring 的核心是围绕 Bean 进行的。不管是 Spring Boot 还是 Spring Cloud&#xff0c;只要名称中带有 Spring 关键字的技术都脱离不了 Bean&#xff0c;而要使用一个 Bean 少不了要先定义出来&#xff0c;所以定义一个 Bean 就变得格外重要了。 当然&#xff0c;对于这么重要…

Jmeter分布式压测

Jmeter分布式压测 Jmeter分布式压测 分布式压测原理&#xff1a; image1140682 27.7 KB 1、安装从节点slave环境 保证slave与master所有jdk&jmeter都是同一个大版本jdk-11jmeter-5.6.2 2、禁用SSL连接模式 配置 JMETER_HOME/bin 目录下 user.properties文件 server.rm…