zoukankan      html  css  js  c++  java
  • CBAM(Convolutional Block Attention Module)使用指南

    转自知乎

    这货就是基于 SE-Net [5]中的 Squeeze-and-Excitation module 来进行进一步拓展

    具体来说,文中把 channel-wise attention 看成是教网络 Look 'what’;而spatial attention 看成是教网络 Look 'where',所以它比 SE Module 的主要优势就多了后者

    ------------------------------------

    我们先看看 SE-module:

    SE-module

    流程:

    1. 将输入特征进行 Global AVE pooling,得到 11 Channel

    2. 然后bottleneck特征交互一下,先压缩 channel数,再重构回channel数

    3. 最后接个 sigmoid,生成channel 间0~1的 attention weights,最后 scale 乘回原输入特征

    -----------------------------------

    再看看 CBAM :

    CBAM

    Channel Attention Module,基本和SE-module 是一致的,就额外加入了 Maxpool 的 branch。在 Sigmoid 前,两个 branch 进行 element-wise summation 融合。

    Spatial Attention Module, 对输入特征进行 channel 间的 AVE 和 Max pooling,然后 concatenation(并联),再来个7*7大卷积,最后 Sigmoid

    CBAM 特别轻量级,也方便在端部署,也可再cascade(串联)一下temporal attention,放进 video 任务里用~~

    CDANet把Self-attention的思想用在图像分割,可通过long-range上下文关系更好地做到精准分割。

    主要思想也是上述文章 CBAM 和 non-local 的融合变形:

    把deep feature map进行spatial-wise self-attention,同时也进行channel-wise self-attetnion,最后将两个结果进行 element-wise sum 融合。

    Dual Attention Network[6]

    这样做的好处是:

    在 CBAM 分别进行空间和通道 self-attention的思想上,直接使用了 non-local 的自相关矩阵 Matmul 的形式进行运算,避免了 CBAM 手工设计 pooling,多层感知器 等复杂操作。

    [6]CDANet:Jun Fu et al., Dual Attention Network for Scene Segmentation, 2018

    [5]Momenta, Squeeze-and-Excitation Networks,2017

  • 相关阅读:
    Mat类具体解释(二)
    Android NDK开发篇(六):Java与原生代码通信(异常处理)
    Redis源代码剖析--对象object
    NioEventLoopGroup源码分析与线程设定
    零拷贝剖析以及用户空间与内核空间切换
    Java 字符集编码
    NIO网络编程
    NIO网络访问模式实践
    Spring Boot使用Html
    内存映射文件MappedByteBuffer和Buffer的Scattering与Gathering
  • 原文地址:https://www.cnblogs.com/tay007/p/11175637.html
Copyright © 2011-2022 走看看