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

  • 相关阅读:
    Javascript的ajax
    关于跨模块拿取数据的思路AJAX实现
    JAVA的整型与字符串相互转换
    接口返回数据和数组
    接口返回数据是一条数据和一个数组的区别
    最初的代码
    http发送请求方式;分为post和get两种方式
    Java学习---- 数组的引用传递
    Java学习--数组与方法
    Java学习--数组的定义和使用
  • 原文地址:https://www.cnblogs.com/tay007/p/11175637.html
Copyright © 2011-2022 走看看