GAM注意力机制:三维排列与去池化如何重塑特征交互范式
计算机视觉领域的注意力机制发展至今,已经历了从单一维度到多维度交互的进化。当SENet首次将通道注意力引入主流架构时,研究者们突然意识到——神经网络中的特征图并非平等重要。随后的CBAM通过叠加空间注意力模块,将准确率推向了新高。但当我们站在2023年回望这些经典设计时,一个根本性问题逐渐浮现:在通道与空间的交叉维度上,信息究竟是如何流动与丢失的?
GAM(Global Attention Mechanism)的诞生正是对这一问题的系统性回应。与前辈们不同,GAM从三个关键维度重构了注意力机制:通过三维排列操作重构通道注意力的信息流,通过去池化设计保留空间注意力中的高频细节,最终形成跨维度协同的全局交互体系。这种设计在ImageNet-1K上实现了1.2%-1.8%的稳定提升,其背后的思想价值可能远超指标本身。
1. 通道注意力的维度革命:从扁平MLP到3D排列
传统通道注意力机制存在一个被忽视的结构性缺陷——当特征图通过全局平均池化(GAP)被压缩为1×1×C的向量时,空间维度的信息实际上经历了不可逆的降维。SENet和CBAM中的多层感知机(MLP)处理的是"扁平化"后的通道描述符,这就像试图通过邮政编码来还原整栋建筑的立体结构。
1.1 三维排列的数学本质
GAM的通道子模块引入的3D-permutation操作,本质上是一种张量重组技术。给定输入特征图F∈R^(C×H×W),其处理流程可分解为:
- 维度置换:将张量从(C,H,W)排列为(H,W,C)
- 特征展开:保持HW维度关联性,视为N=H×W个C维向量
- MLP处理:在保持三维结构的前提下进行特征变换
- 维度还原:将结果重新排列回原始维度顺序
python复制# PyTorch实现的核心代码段
x_permute = x.permute(0, 2, 3, 1) # [B,C,H,W] -> [B,H,W,C]
x_att = self.mlp(x_permute) # MLP处理保持三维结构
x_out = x_att.permute(0, 3, 1, 2) # [B,H,W,C] -> [B,C,H,W
