news 2026/6/10 17:36:47

SpatialAttention空间注意力模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpatialAttention空间注意力模块

一、空间注意力(SAM)

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

1、空间注意力结构

  1. 首先,对一个尺寸为 H×W×C的输入特征图 F 进行通道维度的全局最大池化和全局平均池化,得到两个 H×W×1 的特征图(在通道维度进行池化,压缩通道大小,便于后面学习空间的特征);

  2. 然后,将全局最大池化和全局平均池化的结果,按照通道拼接(concat),得到特征图尺寸为HxWx2,

  3. 最后,对拼接的结果进行7x7的卷积操作,得到特征图尺寸为 HxWx1,接着通过Sigmoid激活函数 ,得到空间注意力权重矩阵

​2、空间注意力计算公式

空间注意力权重矩阵可表示为:

同上,在通道维度使用两种池化方法产生2D特征图:

综上,空间注意力的计算公式如下:

3、实现代码

import torch import torch.nn as nn class SpatialAttentionModule(nn.Module): """ 空间注意力模块:增强特征图中空间位置信息,突出重要区域 1、首先,对一个尺寸为 H×W×C的输入特征图F进行通道维度的全局最大池化和全局平均池化,得到两个 H×W×1 的特征图; 2、然后,将全局最大池化和全局平均池化的结果,按照通道拼接(concat),得到特征图尺寸为HxWx2; 3、最后,对拼接的结果进行7x7的卷积操作,得到特征图尺寸为 HxWx1,接着通过Sigmoid激活函数 ,得到空间注意力权重矩阵 """ def __init__(self): super().__init__() # 7x7卷积,输入2通道(avg+max),输出1通道注意力权重 self.conv = nn.Conv2d(in_channels=2,out_channels=1,kernel_size=7,padding=3,bias=False) # (偏置会被Sigmoid抵消,无需设置) self.sigmoid = nn.Sigmoid() def forward(self,x): # 1. 通道维度做平均池化,keepdim=True保证形状为[B,1,H,W](不丢失维度) avgpool_out = torch.mean(x,dim=1,keepdim=True) # keepdim=True 保持输出与输入张量相同的维度。 # 2. 通道维度做最大池化,返回值[0]是池化结果,[1]是最大值索引(无用,舍弃) maxpool_out,_ = torch.max(x,dim=1,keepdim=True) # 3. 在通道维度拼接平均/最大池化结果,形状变为[B,2,H,W],作为卷积输入 out = torch.cat([avgpool_out,maxpool_out],dim=1) # 4. 7x7卷积融合空间信息,输出[B,1,H,W]的空间注意力图 out = self.conv(out) # 5. Sigmoid归一化,得到0~1的注意力权重(越接近1,该空间位置越重要) out = self.sigmoid(out) # 6. 注意力加权:原特征图和权重逐元素相乘(广播机制,1通道权重作用于C个通道) out = x * out return out

二、注意事项

1、为什么这么设计?

空间注意力模块的设计思路是先压缩通道信息,再融合空间信息,原因如下:

  1. 通道池化(mean+max):对每个空间位置(H,W),将 C 个通道的特征压缩为平均值最大值两个标量,得到 2 个[H,W]的二维特征图,既保留了空间信息,又大幅降低了计算量;

  2. 7x7 大卷积核:相比 3x3 卷积,7x7 能捕捉更大的空间感受野,更适合挖掘特征图中长距离的空间依赖关系(这也是空间注意力用 7x7,而通道注意力用 1x1 的原因);

  3. Sigmoid 归一化:将卷积输出映射到 0~1,保证注意力权重是非负的缩放因子,不会改变原特征的分布趋势,仅对重要区域做增强、不重要区域做抑制。

2、torch.mean与nn.AdaptiveAvgPool2d的区别?

空间注意力里的池化是「压通道」,nn 的自适应池化层是「压空间」,二者池化的对象完全不同。

回顾空间注意力的核心需求:对特征图中每个空间位置(h,w),把C个通道的特征压缩成 1 个标量(平均 / 最大),最终得到[B,1,H,W]的特征图,保留完整的 H/W 空间信息(这是空间注意力的核心,因为要对每个空间位置赋权重)。

这个池化操作的维度是dim=1(通道维度),操作对象是通道轴,和空间轴(H/W,dim=2/dim=3)无关。

nn.AdaptiveAvgPool2dnn.AdaptiveMaxPool2d是 PyTorch 封装的空间池化层,它们的设计目标是对空间维度(H/W)做自适应池化,压缩 H/W 的尺寸,和空间注意力的池化需求完全相悖。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:37:03

告别Docker拉取超时!三分钟搞定镜像加速与配置文件优化

摘要:本文手把手教你解决Docker拉取镜像时常见的超时错误,通过配置国内镜像源和优化daemon.json文件,让你的Docker体验飞起来!最近在部署Docker环境时,你是否也遇到过这样的报错? Error response from daem…

作者头像 李华
网站建设 2026/6/10 14:56:46

<span class=“js_title_inner“>让 AI 也能当“反洗钱专家“——一个通俗易懂的模型训练故事</span>

故事的开端:为什么要做这件事?想象一下,你是一家银行的合规专员。每天要面对厚厚的反洗钱法规文件,还要分析各种复杂的可疑交易案例。有些问题特别棘手:法律条文晦涩难懂,一个条款套着另一个条款真实的洗钱案例千奇百怪,要从蛛丝马迹中发现问题有时候一个问题涉及好…

作者头像 李华
网站建设 2026/6/10 14:53:52

堪比图吧工具箱!入梦工具箱 近百种硬件检测工具

下载链接https://pan.freedw.com/s/aHdahn给需要硬件检测的小伙伴推荐一款实用工具 —— 入梦工具箱,它和热门的图吧工具箱功能几乎一模一样,同样收集了近百种各类硬件检测工具,不管是检测电脑配置、排查硬件故障,还是性能测试&am…

作者头像 李华
网站建设 2026/6/10 16:02:52

梦笔记20260103

回家遇到侄女,说她是老奶抱大的,应该感恩。老姐在一个沙岛上,上班要坐飞机,先到陆地?出差到科大,交流工作。对方是个女的,问验收杀毒软件。我一愣:周总没说啊。回答呆会问问。问住宿…

作者头像 李华
网站建设 2026/6/10 14:44:24

<span class=“js_title_inner“>科技企业家 | 驭势科技吴甘沙:自动驾驶领域的“长跑者”</span>

当今科技创新已成为决定经济社会发展质量的关键。然而从“书斋”到“车间”,从“论文”到“产品”,创新之路绝非坦途。破局之道,则在于“人”。在“十五五”开局的关键节点,我们推出“科技企业家”系列报道,不为讲述个…

作者头像 李华