【注意力机制】CBAM详解(文末附代码)

论文题目:《CBAM: Convolutional Block Attention Module》
论文地址:https://arxiv.org/pdf/1807.06521.pdf

1. 前言

       论文(2018年)提出了一种轻量的注意力模块( CBAM,Convolutional Block Attention Module ),可以在通道和空间维度上进行 Attention 。论文在 ResNet 和 MobileNet 等经典结构上添加了 CBAM 模块并进行对比分析,同时也进行了可视化,发现 CBAM 更关注识别目标物体,这也使得 CBAM 具有更好的解释性。

2. CBAM(Convolutional Block Attention Module)

       CBAM结构如下图所示:

在这里插入图片描述
       可以看到 CBAM 包含2个独立的子模块, 通道注意力模块(Channel Attention Module,CAM) 和空间注意力模块(Spartial Attention Module,SAM) ,分别进行通道与空间上的 Attention 。 这样不只能够节约参数和计算力,并且保证了其能够做为即插即用的模块集成到现有的网络架构中去。通道上的 Attention 机制在 2017 年的 SENet 就被提出,SENet可以参考我的这篇文章。事实上,CAM 与 SENet 相比,只是多了一个并行的 Max Pooling 层。至于为何如此更改,论文也给出了解释和实验数据支持。

2.1. Channel Attention Module(CAM)

       通道上的Attention模块以及具体计算如下图所示:

在这里插入图片描述

在这里插入图片描述
具体流程如下:
       将输入的特征图F(H×W×C)分别经过基于width和height的global max pooling(全局最大池化)和global average pooling(全局平均池

### CBAM与Transformer架构的结合 在深度学习领域,卷积块注意力模块(Convolutional Block Attention Module, CBAM)和Transformer架构均被广泛应用于提升模型性能。CBAM通过引入通道和空间维度上的注意机制来增强特征表示能力[^1]。 对于Transformer而言,其核心优势在于能够处理长距离依赖关系并行计算自注意力机制。然而,原始版本中的self-attention层并不显式考虑输入序列的位置信息,这可能导致某些情况下难以捕捉到局部结构特性。为此,在后续改进工作中出现了多种位置编码方案以及与其他组件相结合的方法以弥补这一不足之处。 当将CBAM融入到基于Transformer的设计当中时,可以实现两者优点的有效融合: - **多尺度感受野**:利用CBAM的空间注意力分支可以在不同尺度上聚合上下文信息,从而帮助Transformer更好地理解图像内部复杂的几何布局; - **强化局部细节感知力**:借助于CBAM所提供的细粒度区域权重调整功能,使得网络能够在保持全局视野的同时更加关注重要部位; - **提高表达多样性**:由于加入了额外的学习参数用于建模跨通道间相互作用模式,因此整体框架具备更强的数据拟合能力和泛化潜力。 具体来说,一种可能的方式是在每个Encoder Layer之后插入一个带有双线性池化的CBAM单元作为加子层操作,如下所示伪代码所展示: ```python class EnhancedTransformerLayer(nn.Module): def __init__(self, d_model=512, nhead=8, dim_feedforward=2048, dropout=0.1): super().__init__() self.self_attn = nn.MultiheadAttention(d_model, nhead) self.cbam = CBAM(gate_channels=d_model) def forward(self, src): attn_output, _ = self.self_attn(src, src, src) enhanced_feature = self.cbam(attn_output + src) # Add & Normalize steps omitted for brevity. return enhanced_feature ``` 上述设计不仅保留了原有Transformer强大的语义解析能力,还进一步增强了对视觉信号的理解精度,适用于诸如目标检测、姿态估计等多种计算机视觉任务场景中[^2]。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值