空间注意力机制_CV中的Attention机制:简单而有效的CBAM模块

公众号关注 “Python遇见机器学习”

设为“星标”,第一时间知晓最新干货~

3d8423d23124ed2a562e14a40eb3a17f.png 作者丨pprp 来源丨GiantPandaCV 导读: CBAM模块由于其使用的广泛性以及易于集成得到很多应用。 目前CV领域中的Attention机制也是在20 19年论文中非常火。 这篇CBAM虽然是在2018年提出的,但是其影响力比较深远,在很多领域都用到了该模块。

1. 什么是注意力机制?

注意力机制(Attention Mechanism)是机器学习中的一种数据处理方法,广泛应用在自然语言处理、图像识别及语音识别等各种不同类型的机器学习任务中。通俗来讲:注意力机制就是希望网络能够自动学出来图片或者文字序列中的需要注意的地方。比如人眼在看一幅画的时候,不会将注意力平等地分配给画中的所有像素,而是将更多注意力分配给人们关注的地方。 从实现的角度来讲:注意力机制通过神经网络的操作生成一个掩码mask, mask上的值一个打分,评价当前需要关注的点的评分。注意力机制可以分为:
  • 通道注意力机制:对通道生成掩码mask,进行打分,代表是senet, Channel Attention Module
  • 空间注意力机制:对空间进行掩码的生成,进行打分,代表是Spatial Attention Module
  • 混合域注意力机制:同时对通道注意力和空间注意力进行评价打分,代表的有BAM, CBAM

2. CBAM模块的实现

CBAM全称是Convolutional Block Attention Module, 是在**ECCV2018**上发表的注意力机制代表作之一。本人在打比赛的时候遇见过有人使用过该模块取得了第一名的好成绩,证明了其有效性。在该论文中,作者研究了网络架构中的注意力,注意力不仅要告诉我们重点关注哪里,还要提高关注点的表示。目标是通过使用注意机制来增加表现力,关注重要特征并抑制不必要的特征。为了强调空间和通道这两个维度上的有意义特征,作者依次应用 通道和空间注意模块,来分别在通道和空间维度上学习关注什么、在哪里关注。此外,通过了解要强调或抑制的信息也有助于网络内的信息流动。主要网络架构也很简单,一个是通道注意力模块,另一个是空间注意力模块,CBAM就是先后集成了通道注意力模块和空间注意力模块。

2.1 通道注意力机制

fd18d11fffd897a050d809f3486c9bf8.png
通道注意力机制按照上图进行实现:
class ChannelAttention(nn.Module):    def __init__(self, in_planes, rotio=16):        super(ChannelAttention, self).__init__()        self.avg_pool = nn.AdaptiveAvgPool2d(1)        self.max_pool = nn.AdaptiveMaxPool2d(1)        self.sharedMLP = nn.Sequential(            nn.Conv2d(in_planes, i
  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值