论文阅读笔记Coordinate Attention for Efficient Mobile Network Design(CVPR2021)

本文介绍了Coordinate Attention,一种针对移动设备设计的高效注意力模块。该模块旨在解决现有注意力机制如SE和CBAM在建模通道间关系时丢失空间位置信息的问题。通过水平和垂直方向的全局池化,保留长距离依赖关系,然后通过卷积和Sigmoid函数获取精确的注意力图,从而增强目标定位。实验表明,坐标注意力在多种任务和模型上均表现出优越性能,且参数量较小,易于实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:投稿 作者:kenny_vincent 编辑:学姐

论文阅读笔记

Coordinate Attention for Efficient Mobile Network Design(CVPR2021)

动机&解决的问题

开始读论文的时候⼀定明确所读的论文要解决的是⼀个什么问题,这样才能在读论文的时候保持思路清晰,也为自己以后写论文打下良好的思维习惯。

该篇论文主要针对的是注意⼒机制中“通道注意⼒”的问题。作者认为之前优秀的注意力模块如SE(Squeeze-and-Excitation attention)和CBAM(Convolutional block attention module)在对通道间关系进行建模时虽然取得了不错的效果,但是却丢失了空间上的位置信息。而其他没有这个问题的注意力模块虽然效果也不错,但是参数量又太大了,不适合应用于移动端设备的网络。所以作者希望能有⼀个注意⼒模块既能在构建通道注意⼒时捕捉到准确的位置,⼜能像SE和CBAM⼀样轻型⾼效,也就提出这个“坐标注意⼒”。

整体框架

该论文方法主要对标的就是上面所提到的SE和CBAM,同时这三者⼜非常相似,所以作者直接放出了这三个注意⼒的框架图进⾏比较。

可以看到这三个注意力在整体架构很相近,都采用分支网络计算注意权重。

但是呢,SE是直接进行了⼀个全局平均池化获得了⼀个Cx1x1维的向量,然后在这个向量上计算通道注意力权重,这就相当于在直接把空间信息压缩成1维的了,也就像这篇论文所说的那样直接丢失了位置信息。

CBAM(上半部分计算通道注意⼒,下半部分计算空间注意力)尽管比SE好⼀些,刚开始的时候分成两部分——分别进行了全局最⼤池化和全局平均池化,但是在后面是将这两者加起来然后⽤⼀层卷积来计算注意力权重(后面的1x1卷积是用来升维的),这就导致了它只能够学习到局部关系,但难以学习到⻓距离的依赖关系(long-range dependencies), 然而这个长距离的依赖关系却对其他下游的视觉任务很重要。

ong-range dependencies: 简单来说,就是图像中两个相距较远的像素之间的相关性。

如果忘记了SE和CBAM具体长啥样,可以看看下图,但是建议还是回顾⼀下原论文。

论文:Coordinate Attention for Efficient Mobile Network Design(CVPR2021) 官⽅代码:https://github.com/Andrew-Qibin/CoordAttention

那么坐标注意⼒是怎么做的呢?

⼀开始也进行了全局池化,但是是分了两个方向进⾏的——水平(X)方向和垂直(Y)方向,这就为通道注意⼒保留这两个方向的长距离依赖关系;然后拼接起来进行卷积,这⼀步则是对两个方向上的信息进行交互;BN+非线性激活函数之后,再对这个特征图分割开来分别进行卷积,也就是在水平和垂直方向同时对它关注,最后进入Sigmoid函数;最后得到的这个这个两个注意力图就能够很好的反映出我们感兴趣的对象是否存在于相应的行和列中,使得我们能够准确地定位出目标对象地位置,解决了上面论文所提到的问题。

坐标注意力直观的计算过程如下图:

公式

⽽且这篇论文的公式也超简单,在论文所以给出的框架图中都可以⼀⼀找到对应:

1. 沿着水平和垂直方向计算1维平均池化

2. 拼接、卷积、BN、激活函数

3. 分别卷积、Sigmoid

4. 最后输出

实验

1. 下⾯这两张表是在分别以MobileNetV2,MobileNeXtV2为backbone下,采用不同权重乘数与SE、CBAM的性能比较,可以发现无论是哪个backbone哪个权重乘数,坐标注意力在分类任务上都有明显提高,并且它的参数增加的不多。

​2. 下表则是消融实验,可以发现加入坐标注意力后比没加之前性能确实提高了。

​3. 从下表中可以发现,坐标注意力在不同视觉任务下,性能都有所提高

Talk is cheap, Show me the code

这个注意力模块不仅仅看上去很简单,实现起来也很简单!


class CoordAtt(nn.Module):
    def __init__(self, inp, oup, reduction=32):
        super(CoordAtt, self).__init__()
        self.pool_h = nn.AdaptiveAvgPool2d((None, 1))
         self.pool_w = nn.AdaptiveAvgPool2d((1, None))
         mip = max(8, inp // reduction)
         self.conv1 = nn.Conv2d(inp, mip, kernel_size=1, stride=1, padding=0)
         self.bn1 = nn.BatchNorm2d(mip)
         self.act = h_swish()
 
         self.conv_h = nn.Conv2d(mip, oup, kernel_size=1, stride=1, padding=0)
         self.conv_w = nn.Conv2d(mip, oup, kernel_size=1, stride=1, padding=0)
 
     def forward(self, x):
         identity = x
 
         n,c,h,w = x.size()
         x_h = self.pool_h(x)
         x_w = self.pool_w(x).permute(0, 1, 3, 2)
         y = torch.cat([x_h, x_w], dim=2)
         y = self.conv1(y)
         y = self.bn1(y)
         y = self.act(y) 
 
         x_h, x_w = torch.split(y, [h, w], dim=2)
         x_w = x_w.permute(0, 1, 3, 2)
         a_h = self.conv_h(x_h).sigmoid()
         a_w = self.conv_w(x_w).sigmoid()
         out = identity * a_w * a_h
         return out

怎么样,加起来不到40行,而且每⼀步都清晰!但是还是推荐到官方github上面去看,毕竟作者在上⾯也做了不少实验,可以学习的也不少。

总结

一个实现简单,效果显著,轻量级,即插即用,可扩展性强的注意力模块。

— 完 —

点这里👇关注我,记得标星哦~

坐标注意力是一种新的注意力机制,通过将位置信息嵌入到通道注意力中,为移动网络提供了一种有效的方式来生成空间选择性注意力图。坐标注意力将通道注意力分解为两个一维特征编码过程,并沿空间方向聚合特征。这样做可以捕获远程依赖关系,并保留精确的位置信息。通过将得到的特征图编码成方向感知和位置敏感的注意力图,可以增强感兴趣对象的表示。坐标注意力可以灵活地插入到经典的移动网络中,几乎没有计算开销,并在下游任务中表现出更好的性能,如对象检测和语义分割。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [CVPR2021注意力机制——Coordinate Attention || Pytorch代码实现](https://blog.csdn.net/qq_42962681/article/details/120417410)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [注意力机制——Coordinate Attention](https://blog.csdn.net/qq_40716944/article/details/121787103)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值