• 注意力机制论文 --- A Simple and Light-weight Attention Module for Convolutional Neural Networks(BAM)


    最近找了十几篇神经网络注意力机制的论文大概读了一下。这篇博客记录一下其中一篇,这篇论文大概只看了摘要,方法。在ADCM论文中我们提到它的设计参考了BAM来的,因而找了这篇论文。它主要利用channel和spatial来结合组成一种bottleneck attention module(BAM)的模块,这个模块可以直接插入到神经网络中。主要还是通道注意力与空间注意力结合的方法,当然它并没有ADCM中的dropout这个过程。

    Channel attention branch

    通道注意力分支,找出哪个通道特征是最有效的,只从特征来看。分为三部分,第一部分就是全局平均池化,它会将每一个通道特征都变成一个值,这个值代表该通道的总体特征。第二部分就是MLP,找出通道之间的关系,并且得出通道之间的权重。第三部分就是归一化层,将输入进行统一来看。整体的过程可以用如下的公式来表示:

    [ M_c(F) = BN(MLP(AvgPool( extbf{F}))) ]

    Spatial attention branch

    空间注意力分支,强调或者suppress不同空间位置,可以找出哪些空间位置是有效的。总共分为四部分,第一部分就是使用1X1卷积来缩减通道,缩减系数是r,经过这一层,通道数为C/r,第二部分就是俩层空洞卷积,为了得到上下文信息,这里需要更大的感受野,使用了俩层空洞卷积,第三部分又是一层1X1的卷积,将通道变为1。最终就是归一化层。整体的过程可以用如下公式来表示:

    [ M_s(F) = BN(f_3^{1X1}(f_2^{3X3}(f_1^{3X3}(f_0^{1X1}( extbf(F)))))) ]

    Combine two attention branches

    合并注意力分支,主要将$M_c(F)$和$M_s(F)$合并,在合并之前,将$M_c(F)$和$M_s(F)$统一维度为C个通道,长宽为H、W,然后将对应元素相加,之后使用sigmoid函数变成0到1范围内的值

    对于整个模块来说,它有俩大优势,第一有效的得到全局上下文信息,CNN堆积许多卷积层和池化层来获取上下文信息,虽然有效,但是增加了时间和空间复杂度,第二忽略了底层特征,而BAM可以放在模块的开始,那么底层特征也能得到上下文信息。整个模块的放置如下图所示

  • 相关阅读:
    Socket网络通信之数据传递
    多线程中join()的用法
    JAVA多线程实现的三种方式
    通过读取配置文件,启动mongodb
    利用ajax获取网页表单数据,并存储到数据库之二(使用SSH)
    利用ajax获取网页表单数据,并存储到数据库之一(使用JDBC)
    Null reference pointer was passed to the stub when not debugging with IE
    代码生成了解
    Linq to sql 入门
    SharePoint 2013 入门
  • 原文地址:https://www.cnblogs.com/mary1/p/13230780.html
Copyright © 2020-2023  润新知