一、CBAM简介

论文链接:https://x.sci-hub.org.cn/scholar?hl=zh-TW&as_sdt=0%2C5&q=CBAM%3A+Convolutional+Block+Attention+Module&btnG=&oq=CB

CBAM这篇论文是在2018年提出的,自提出之后,已经被引用上千次,可见其影响力。CBAM是一种专门为了卷积神经网络而设计的注意力模块,传统的卷积存在只关注局部信息,而往往忽略全局信息的弊端,以3*3卷积为例,滤波器有9个像素点,目标像素的值只参照自身与周围的8个像素点,这就意味着卷积操作只能利用局部信息来计算目标像素,这可能会带来一些偏差,因为卷积操作只能看到局部信息,而对全局信息了解甚少。

二、论文的主要贡献及创新点

  • (1)提出了一种简单而有效的注意模块(CBAM),可以广泛应用于提高CNN的表征能力。这也是该篇论文的最大创新点。
  • (2)通过广泛的消融实验,验证了我们的注意模块的有效性。
  • (3)在多个基准测试数据集(ImageNet-1K、MS Coco和VOC 2007)上,通过插入我们的CBAM,验证了各种网络的性能都得到了极大的提升。

三、CBAM网络结构

3.1 CBAM的大致流程

  • 大致流程

    • (1)首先,输入一张中间的特征图
    • (2)输入图像经过Channel Attention Module,Channel Attention Module我们用Mc表示,得到Channel Attention maps Mc(F)
    • (3)得到的Mc(F)与输入图像进行像素级别的相乘操作,得到F’
    • (4)F’继续进入到Spatial Attention Module,Spatial Attention Module我们用Ms表示,得到Spatial Attention maps Ms(F’)
    • (5)得到的Ms(F’)与输入图像F’进行像素级别的相乘操作,得到F’'

大致了解CBAM的工作流程之后,我们需要来看一下CBAM内部是如何计算出Attention maps的。

3.2 Channel Attention Module(通道注意力模块)


Channel Attention Module为什么要用AvgPool和MaxPool两条并行的池化路径呢?
这是因为对于空间信息的聚合,到目前为止,普遍采用的是平均池化方法(Average Pooling),因此使用AvgPool来获得聚合的空间信息。而MaxPooling收集的是特征的重要线索,以推断更精细的通道注意力,也可以这样理解,AvgPool是获得宏观上的信息,而MaxPool是获得局部的信息,同时使用MaxPool有利用网络获得鲁棒性。

  • Channel Attention Module具体计算过程

    • (1)输入Input feature F
    • (2)经过AvgPool获得特征图AvgPool(F)、经过MaxPool获得特征图MaxPool(F)
    • (3)同时,两条池化路径共享一个MLP(多层感知机结构),AvgPool(F)、MaxPool(F)分别经过MLP处理,得到MLP(AvgPool(F))、MLP(MaxPool(F))
    • (4)然后经过激活函数,得到最终的输出Mc(F)

note: Mc(F)是一个1维的channel attention map,在与输入图像进行像素级别的乘法时,Python会自动的使用广播技术。

这里的W0、W1是分别MLP的第1层、第2层的权重参数。

3.3 Spatial Attention Module(空间注意力模块)

  • Spatial Attention Module具体计算过程

    • (1)经Channel Attention Module处理得到的输出F’输入到Spatial Attention Module中
    • (2)经过MaxPool、AvgPool、7*7Conv的卷积操作,得到特征图
    • (3)最后经过sigmoid激活函数,得到最终的Spatial Attention Maps

note: Ms(F)是一个2维的Spatial attention map.

四、Experiments

实验不是重点,就是普通的消融实验,简单了解以下即可。

(1)Comparison of different channel attention methods.


(2)Comparison of different spatial attention methods.

(3)Combining methods of channel and spatial attention.

(4)Classification results on ImageNet-1K.

参考文献

  • CBAcM: Convolutional Block Attention Module
  • https://my.oschina.net/u/1416903/blog/4582792

白话详细解读(七)----- CBAM:Convolutional Block Attention Module相关推荐

  1. CBAM CBAM: Convolutional Block Attention Module

    #https://blog.csdn.net/u011699990/article/details/81276851?utm_medium=distribute.pc_relevant.none-ta ...

  2. CBAM: Convolutional Block Attention Module

    CBAM: Convolutional Block Attention Module 1. 摘要 作者提出了一个简单但有效的注意力模块 CBAM,给定一个中间特征图,我们沿着空间和通道两个维度依次推断 ...

  3. 论文研读2018:卷积中的注意力和keras实现。CBAM: Convolutional Block Attention Module

    文章目录 Abstract 1 Introduction 2 Related Work 3 Convolutional Block Attention Module Channel attention ...

  4. CBAM(Convolutional Block Attention Module)

    目录 总体介绍 CBAM(Convolutional Block Attention Module )模块 CAM(Channel attention module) SAM(Spatial atte ...

  5. 【CBAM 解读】混合注意力机制:Convolutional Block Attention Module

    摘要 本文提出了卷积块注意模块(CBAM),这是一种简单而有效的前馈卷积神经网络注意模块.在给定中间特征图的情况下,我们的模块沿着通道和空间两个不同的维度顺序地推断关注图,然后将关注图与输入特征图相乘 ...

  6. 白话详细解读(七)----- Batch Normalization

    转载:https://www.cnblogs.com/guoyaohua/p/8724433.html Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要 ...

  7. 白话详细解读(二)-----AlexNet

    一.AlexNet简介 2012年,Alex Krizhevsky可以算作是LeNet的一个更深和更广的版本,可以用来学习更加复杂的对象. Alex的要点 1.用ReLU得到非线性,用ReLU非线性函 ...

  8. 白话详细解读(一)-----GoogLeNet(Inception V1-Inception V3)

    一.背景 GoogLeNet.VGGNet分别是2014年ImageNet挑战赛的第一名和第二名,相对于VGGNet的网络结构,GoogLeNet则进行了大胆的尝试,提出了Inception结构,这种 ...

  9. 白话详细解读(六)----- BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation

    一.论文简介 论文链接:https://openaccess.thecvf.com/content_ECCV_2018/html/Changqian_Yu_BiSeNet_Bilateral_Segm ...

最新文章

  1. 黄金点游戏之客户端(homework-05)
  2. 研效优化实践:Python单测——从入门到起飞
  3. 3d button - where is OS type and version detected
  4. ButtonRenderer
  5. 模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST
  6. 论文浅尝 | 动态知识图谱对齐
  7. C - 思考使用差分简化区间操作
  8. 玩大了!别再埋头学Python了,它真的无用!
  9. spark中saveAsTextFile如何最终生成一个文件
  10. 卷积神经网络(CNN)及其实践
  11. 实战系列-分布式缓存
  12. gitlab 安装_安装Gitlab-注意端口
  13. 十步轻松搞定IIS+PHP环境搭建
  14. java生成 折线图
  15. python气象包_Python-Cartopy包: 地图投影
  16. 三种嵌入式操作系统的分析与比较
  17. 的it生活_双子IT男性格随和、爱美食懂生活,会给女朋友准备小惊喜 | 企鹅来电VOL.03...
  18. python闰年统计_利用Python写一个闰年计算器和每月天数计算器
  19. 各种零知识证明的比较!
  20. 解决电脑无法通过网线直连海康摄像机的问题

热门文章

  1. 手机安装(Fiddler)证书
  2. 在CentOS上安装和配置Guacamole
  3. 分布式系统消息中间件——RabbitMQ的使用基础篇
  4. 河北科技创新平台年报系统 - 头脑风暴会
  5. 2. getline()和get()
  6. 对css float 浮动的学习心得
  7. Oracle配置OneMap中的sql数据库问题及解决方案
  8. HTML5开发 桌面提醒功能
  9. Cognos 云最佳实践: 调整架构提供性能和可伸缩性
  10. 吴恩达 coursera ML 第四课总结+作业答案