目录
出处:ICCV2018
代码:code
论文:paper
CBAM模块的主要目标是:通过在CNN中引入通道注意力和空间注意力来提高模型的感知能力,从而在不增加网络复杂性的情况下改善性能。
🍓🍓1.CBAM简介
简介:我们提出卷积块注意力模块(CBAM),一个简单而有效的前馈卷积注意力模块神经网络。 给定一个中间特征图,我们的模块自动沿着两个独立的维度:通道和空间,潜在地推断注意力图,然后将注意力图乘以输入特征用于自适应特征细化的特征图。 因为 CBAM 是一种轻量级的通用模块,它可以集成到任何 CNN 架构中,额外的计算量可以忽略不计,并且可以进行端到端的训练CNN。 我们通过广泛的实验验证我们的 CBAM在ImageNet-1K、MS COCO 检测和 VOC 2007 检测数据集上的表现。我们的实验表明各种模型的分类和检测性能均得到了一致改进,证明了 CBAM 的广泛适用性。
CBAM既然可以在图像分类、目标检测等多任务上表现良好,性能提升,那么我们是不是就可以将其插入到任何图像分类、目标检测等CNN神经网络模型中呢,答案是当然可以,因为CBAM模块的输入就是隐层特征图,输出的是同样尺寸大小的隐层特征图,在不改变网络结构的情况下,这种即插即用的模块是最方便使用的。接下来,我们就对CBAM里的具体操作一探究竟吧!
🍀🍀2.CBAM网络结构
首先来看CBAM网络结构图。
设特征图F为输入,1D通道注意图Mc ,2D空间注意图Ms,注意力计算过程如下:
💖💖3.详细计算过程
🌷3.1Channel attention module
通道注意力聚焦在输入图像“什么”是有意义的。采用平均池化层和最大池化层压缩了输入特征图的空间维度,然后前向传给一个共享多层感知机网络,最后将两个输入加起来,通过一个激活函数,产生了通道注意力图Mc。
通道注意力计算过程可描述如下:
值得注意的是,共享多层感知机(shared MLP)(包含一个隐藏层),r是 reduction ratio,代表放缩尺度,原文中取16。
🌷3.2Spatial attention module
空间注意力模块:与通道注意力不同,空间注意力集中于“何处”这一信息性部分,与通道注意力互补。
具体操作:首先沿通道轴应用平均池化和最大池化操作,并将它们连接起来生成有效的特征描述符,通过此操作合并通道信息,产生两个图,最后通过一个卷积操作串联一个激活函数,得到统建注意力Ms。
空间注意力计算过程可描述如下:
🍋🍋4.应用示范
以Resnet添加CBAM模块为例进行应用示范:
可以看到resnet添加CBAM模块的修改之处可以将两个相邻卷积模块之间添加CBAM模块,以增强特征图的表示。此外,为了保持残差链接的方式,在添加CBAM模块的输入处,添加一个残差链接,直接输出纸CBAM模块的输出处,一方面,保证了正常的残差网络连接方式,另一方面增加了CBAM模块的额外输入信息,丰富了特征图。
以此为依据,我们可以在任何想要丰富特征图的模块间,添加CBAM模块,即插即用,十分方便,不需要大动干戈的修改网络结构,调整参数。
🍇🍇5.实验
🍉5.1对比不同池化操作效果
🍉5.2对比不同空间注意力方法
🍉5.3对比通道、空间维度注意力对结果的影响
🍉5.4图像分类任务
🍉5.5特征图可视化
🍉5.6目标检测任务
整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷