首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

论文笔记(7):BAM: Bottleneck Attention Module

  • 25-03-03 17:02
  • 4553
  • 7915
blog.csdn.net

BAM: Bottleneck Attention Module

BMVC 2018 (oral),是CBAM的姊妹篇,原班人马打造。

摘要

在这项工作中,把重心放在了Attention对于一般深度神经网络的影响上,提出了一个简单但是有效的Attention模型—BAM,它可以结合到任何前向传播卷积神经网络中,模型通过两个分离的路径 channel和spatial,得到一个Attention Map,实验验证了算法的有效性。

网络结构图

image-20201221095013776

将BAM放在了Resnet网络中每个stage之间。有趣的是,通过可视化我们可以看到多层BAMs形成了一个分层的注意力机制,这有点像人类的感知机制。BAM在每个stage之间消除了像背景语义特征这样的低层次特征,然后逐渐聚焦于高级的语义–明确的目标(比如图中的狗)。

这个模块的输入是中间的feature map F ∈ R C ∗ H ∗ W F \in \mathbb R^{C ∗ H ∗ W} F∈RC∗H∗W,BAM可以得到一个3D的Attention map M ( F ) ∈ R C ∗ H ∗ W M(F)\in \mathbb R^{ C ∗ H ∗ W} M(F)∈RC∗H∗W,然后得到加强的feature map F ′ F′ F′:
F ′ = F + F ⊗ M ( F ) \mathbf{F}^{\prime}=\mathbf{F}+\mathbf{F} \otimes \mathbf{M}(\mathbf{F}) F′=F+F⊗M(F)
为了设计一个有效且强大的模型,Attention map M ( F ) M(F) M(F)通过两个单独的Attention 分支通道注意力channel attention: M c ( F ) M_c(F) Mc​(F) 和空间注意力spatial attention: M s ( F ) M_s(F) Ms​(F)。把两个分支合在一起之后进行加和之后激活。这时 M ( F ) M(F) M(F)就变成:
M ( F ) = σ ( M c ( F ) + M s ( F ) ) M(F)= \sigma(M_c(F)+M_s(F)) M(F)=σ(Mc​(F)+Ms​(F))

这里 σ \sigma σ 代表sigmoid函数,两个分支的形状在加和之前都会被整形成 R C ∗ H ∗ W \mathbb R^{ C ∗ H ∗ W} RC∗H∗W

这个module计算对应的这里有两个超参数 dilation value ( d d d)和reduction ratio( r r r)。 d d d参数决定了感受野大小这对空间分支聚合上下文信息非常重要, r r r参数决定了通道分支和空间分支的压缩比例。这里我们设置 d = 4 , r = 16 d=4 ,r=16 d=4,r=16。

由于这两个注意图的形状不同,在加和之前会把将注意图扩展到 R C ∗ H ∗ W \mathbb R^{C ∗ H ∗ W} RC∗H∗W,然后将它们合并。

在逐项求和、乘法、max运算等多种分支组合方法中,针对梯度流的特点,选择逐项求和。我们通过实证验证了基于元素的求和在三种选择中效果最好。求和后,取一个sigmoid函数进行激活,得到0到1范围内的最终三维注意映射 M ( F ) M(F) M(F)。将该三维注意图与输入特征图 F F F巧妙相乘,然后将其添加到原始输入特征图上,得到细化后的特征图 F ′ F′ F′

channel attention branch

为了聚合feature map在每个通道维度,我们采用全局平均池化得到代表空间的向量信息 F c ∈ R c ∗ 1 ∗ 1 F_c \in \mathbb R^{c*1*1} Fc​∈Rc∗1∗1。通过这个向量然后再对全局信息在每个通道进行软编码。试图评估Attention在每个通道的效果,使用了一个多层感知MLP用一层隐藏层(隐藏层的维度较低,有编解码的内涵在里面)。在MLP之后,我们增加了BN去调整分布和空间分支一样的输出,channel attention可以被计算为:
M c ( F ) = B N ( M L P ( A vgPool ⁡ ( F ) ) ) = B N ( W 1 ( W 0 A v g Pool ⁡ ( F ) + b 0 ) + b 1 )

Mc(F)=BN(MLP(AvgPool(F)))=BN(W1(W0AvgPool(F)+b0)+b1)Mc(F)=BN(MLP(AvgPool⁡(F)))=BN(W1(W0AvgPool⁡(F)+b0)+b1)
Mc​(F)​=BN(MLP(AvgPool(F)))=BN(W1​(W0​AvgPool(F)+b0​)+b1​)​

Spatial attention branch

这个空间分支产生了空间Attention去增强或者抑制特征在不同的空间位置,众所周知,利用上下文信息是去知道应该关注哪些位置的关键点。在这里我们为了高效性运用空洞卷积去增大感受野。
我们观察到,与标准卷积相比,空洞卷积有助于构造更有效的spatial map。
M s ( F ) ∈ R 1 ∗ H ∗ W \mathbf{M}_{\mathbf{s}}(\mathbf{F}) \in \mathbb R^{1*H*W} Ms​(F)∈R1∗H∗W

M s ( F ) = B N ( f 3 1 × 1 ( f 2 3 × 3 ( f 1 3 × 3 ( f 0 1 × 1 ( F ) ) ) ) ) \mathbf{M}_{\mathbf{s}}(\mathbf{F})=B N\left(f_{3}^{1 \times 1}\left(f_{2}^{3 \times 3}\left(f_{1}^{3 \times 3}\left(f_{0}^{1 \times 1}(\mathbf{F})\right)\right)\right)\right) Ms​(F)=BN(f31×1​(f23×3​(f13×3​(f01×1​(F)))))

  • 空洞卷积的加入:增大感受野
  • 压缩比:增加编码的内涵,减少计算量
  • 1*1卷积核:减少计算量

实验

做了如下的实验

针对不同压缩比例参数的参数搜索实验

针对不同空洞卷积参数的参数搜索实验

针对两个分支都有,仅有一个分支,没有分支的消融实验

针对两个分支拼接实验的方式进行遍历实验

针对BAM模块和其他相似类型模块的比较实验

现有网络加入之后的多数据集验证

针对空洞卷积的实验

表1为四种不同dilation值的对比结果。虽然dilation值为4时已经饱和,但膨胀值越大,性能改善越明显。这种现象可以用上下文推理来解释,上下文推理在密集预测任务中早就得到了广泛的应用。

由于空洞卷积会形成感受野的指数级扩展,因此它使我们的模块能够无缝地聚合上下文信息。注意,标准卷积(即dilation值为1)的准确率最低,这表明上下文先验在推断空间注意图方面的有效性。

针对链接方式的实验

从经验上证实了元素求和这种方式获得了最好的性能。

就信息流而言,元素求和是整合和保护来自前几层的信息的有效方法。

在前向阶段,它使网络能够使用来自通道和空间两个互补分支的信息,而不会丢失任何信息。

在后向阶段,梯度被平均分配给所有输入,导致有效的训练。

逐元素乘积可以将大的梯度赋给小的输入,使得网络难以收敛,从而产生较差的性能。

元素方向的最大值,只将梯度路由到较高的输入,在某种程度上提供了正则化效果,导致不稳定的训练,因为我们的模块几乎没有参数。

请注意,所有三种不同的实现都优于基线,这表明利用每个分支是至关重要的,而最佳组合策略进一步提高了性能。

参考文献

[1807.06514] BAM: Bottleneck Attention Module

BAM: Bottleneck Attention Module__实现_xu_fu_yong的专栏-CSDN博客

BAM: Bottleneck Attention Module算法笔记_DBG的博客-CSDN博客

注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/111476529"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top