BAM: Bottleneck Attention Module

BAM

参考
个人理解
  • 题外话:看完CBAM然后再看BAM,一个团队在同一天挂的两篇文章,妙啊妙啊,而且结构上也有相似之处,如果读过CBAM(参考CBAM: Convolutional Block Attention Module),那么BAM看看图和公式就可以理解了
  • 这个结构分也为两部分,关注下图红框的部分,分别为Channel attention和Spatial attention,与CBAM不同的是这俩是并行的这就比较有意思了,CBAM中的Channel和Spatial结构说是串行比较好,这里的结构说是并行比较好,这点是写的时候突然想到的,还没想明白~~

在这里插入图片描述

Channel attention
  • 先看Channel attention

在这里插入图片描述

  • input是Feature Map,对HxW面做一次全局AvgPool,然后再走MLP(至于MLP的结构看上图中结构大致就知道了就是两个FC中间夹个dropout (C/r)这个样子,或者去看看CBAM: Convolutional Block Attention Module这篇对应部分原理是一样的,只是图不同),最后归一化就是Channel attention了,公式如下:

在这里插入图片描述

Spatial attention
  • 然后看Spatial attention

在这里插入图片描述

  • 这个也比较一目了然,先通过1x1减少channel数(同时减少参数),然后走两个conv提Spatial的Feature,再走一个1x1减少channel到1,输出的是channel为1的Feature Map,当然另外两维还是HxW,公式的话就这样:

在这里插入图片描述

结构合并
  • 合并的时候关注这部分:

在这里插入图片描述

  • 首先要把这里加起来

    -

    • 然后整体点乘加残差

    -

    • 起初我还没理解这个加号是啥意思,翻了翻代码,代码上的实现是‘*’,也就是元素点乘:

    • class BAM(nn.Module):
          def __init__(self, gate_channel):
              super(BAM, self).__init__()
              self.channel_att = ChannelGate(gate_channel)
              self.spatial_att = SpatialGate(gate_channel)
          def forward(self,in_tensor):
              att = 1 + F.sigmoid( self.channel_att(in_tensor) * self.spatial_att(in_tensor) )
              return att * in_tensor
      
    • 稍微研究一下上面的代码不难发现,att * in_tensor是这么个逻辑:F(1+M(F)),因此得出结论上面第一个公式中的加号应该是元素点乘,属于笔误

    • 经一位老哥提醒,这可能是作者做comparison experiments忘记改回去了,实际上却是是+,如对任何人造成困扰,十分抱歉!

  • 然后我研究了下‘*’这个符号的计算过程,如下所示,如果不同形状的点乘会先得到下面的结果:

    -

如何融入ResBlock中?
  • 作者给的图上画着这个是加载block之间的,而CBAM是加载block内部的,但实际上我认为可以任意位置
效果如何?

-

  • 和CBAM的对应实验比较一下就知道这个结构的整体效果不如CBAM

  • 结尾可能有点意思的参考文献:42、27、26、9

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
BAM attention是指瓶颈注意模块(Bottleneck Attention Module)。这是一种提高神经网络表示能力的新方法。BAM模块通过两种不同的途径有效地学习聚焦或抑制什么和哪里,并改进中间特征。灵感来源于人类视觉系统,在信息流动最关键的网络瓶颈处放置BAM注意模块。实验证实BAM在不同基准数据集上的性能优于所有基线,并且通过观察模块如何作用于中间特征图,我们可以更清晰地理解其类似于人类感知过程的层次推理过程,在瓶颈处的自适应特征细化的发现对其他视觉任务也有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【CV中的Attention机制】CBAM的姊妹篇-BAM模块](https://blog.csdn.net/DD_PP_JJ/article/details/103826889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【注意力机制】BAM: Bottleneck Attention Module论文理解](https://blog.csdn.net/qq_36926037/article/details/117884889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰子奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值