[论文阅读]CBAM——代码实现和讲解

CBAM

论文网址:CBAM

论文代码:CBAM

本文提出了一种卷积块注意力模块(CBAM),它是卷积神经网络(CNN)的一种轻量级、高效的注意力模块。该模块沿着通道和空间两个独立维度依次推导注意力图,然后将这些注意力图与输入特征图相乘,进行自适应特征细化。CBAM 可以无缝集成到任何 CNN 架构中,开销几乎可以忽略不计,并且可以与基本 CNN 一起进行端到端训练。作者通过在 ImageNet-1K、MS COCO 检测和 VOC 2007 检测数据集上的大量实验验证了 CBAM,结果表明各种模型在分类和检测性能上都有一致的提高。论文还讨论了网络工程和注意力机制方面的相关工作,并强调了所提出的 CBAM 模块的贡献。

CBAM 模块由两个分支组成:通道注意力分支和空间注意力分支。

Channer Attention Module

通道注意力分支旨在捕捉特征图不同通道之间的相互依存关系。它使用全局平均池化操作来获取通道统计信息,然后应用两个全连接层来生成通道注意图。然后将这些注意力图与原始特征图按要素相乘,以突出重要通道。

python 复制代码
class ChannelAttention(nn.Module):
    def __init__(self, in_planes, ratio=16):
        super(ChannelAttention, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.max_pool = nn.AdaptiveMaxPool2d(1)
           
        self.fc = nn.Sequential(nn.Conv2d(in_planes, in_planes // 16, 1, bias=False),
                               nn.ReLU(),
                               nn.Conv2d(in_planes // 16, in_planes, 1, bias=False))
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        avg_out = self.fc(self.avg_pool(x))
        max_out = self.fc(self.max_pool(x))
        out = avg_out + max_out
        return self.sigmoid(out)

Spatial Attention Module

另一方面,空间注意力分支侧重于捕捉每个通道内的空间依赖性。它采用挤压-激发操作,首先使用全局平均池化技术对输入特征图进行挤压,以获得通道统计信息。然后,应用两个全连接层生成空间注意力图。这些图随后与原始特征图按元素相乘,以强调重要的空间位置。

python 复制代码
class SpatialAttention(nn.Module):
    def __init__(self, kernel_size=7):
        super(SpatialAttention, self).__init__()

        self.conv1 = nn.Conv2d(2, 1, kernel_size, padding=kernel_size//2, bias=False)
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        avg_out = torch.mean(x, dim=1, keepdim=True)
        max_out, _ = torch.max(x, dim=1, keepdim=True)
        x = torch.cat([avg_out, max_out], dim=1)
        x = self.conv1(x)
        return self.sigmoid(x)

CBAM 模块通过元素相加的方式将通道和空间注意力图结合起来。这样,该模块就能在网络中学习 "关注什么 "和 "关注哪里",从而有效改善信息流并增强 CNN 的表示能力。

就是这么简单!!

相关推荐
小玮看世界20 小时前
从“画图”到“Mermaid”:AI语义理解与架构绘制的演进之路
人工智能·深度学习·计算机视觉
Eric.461 天前
AI漫剧量产Prompt参数实操手册:Stable Diffusion+ComfyUI+OpenClaw通用复制即用配置
人工智能·深度学习·stable diffusion·prompt·ai漫剧
阿图灵1 天前
Seq2Seq Transformer 中英翻译实战:从 GRU 到 Transformer,BLEU 0.225 → 0.307
pytorch·深度学习·gru·transformer·机器翻译·seq2seq
手写码匠1 天前
华为云Flexus+DeepSeek征文|Dify 多 Agent 会话管理与上下文工程实战:让智能体“记住该记住的,忘掉该忘掉的“
人工智能·深度学习·算法·aigc
杀生丸学AI1 天前
【世界模型】Lyra 2.0:可探索的生成式3D世界(NVIDIA)
人工智能·深度学习·3d·数据挖掘·transformer·世界模型·高斯泼溅
bittersuite1 天前
BERT,fine-tuning
人工智能·深度学习·bert
今天AI了吗1 天前
深度学习基础-Harness:从评估框架到工程落地
数据库·人工智能·sql·深度学习·机器学习
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-08-18
人工智能·经验分享·深度学习·神经网络·产品运营
XLYcmy1 天前
小红书 算法一面 八
深度学习·llm·sgd·adam·deepseek·mla·adamw
m4Rk_1 天前
【论文阅读】Agent 记忆机制(43):Mem²Evolve——让经验与能力在双记忆中共同进化
论文阅读·人工智能·学习·开源·github