论文地址:https://arxiv.org/pdf/2102.00240.pdf
Github地址:https://github.com/wofmanaf/SA-Net/blob/main/models/sa_resnet.py

注意机制使神经网络能够准确地聚焦于输入的所有相关元素,已成为改善深层神经网络性能的重要组成部分。计算机视觉研究中广泛使用的注意机制主要有两种:空间注意力和通道注意力,它们分别用于捕捉像素级的成对关系和通道依赖。尽管将它们融合在一起可能会获得比各自实现更好的性能,但这将不可避免地增加计算开销。在本文中,作者提出了一个有效的Shuffle Attention(SA)模块来解决这个问题,该模块采用Shuffle单元来有效地结合两种类型的注意机制。具体来说,SA首先将通道尺寸分组为多个子特征,然后再并行处理它们。然后,对于每个子特征,SA利用一个Shuffle单元来描述空间和通道维度上的特征依赖关系。然后,对所有子特征进行聚合,并采用“channel shuffle”算子来实现不同子特征之间的信息通信。

一、文章简介

本文的主要贡献总结如下:
1)为深度CNN引入了一个轻量级但有效的注意模块SA,该模块将通道维度分为多个子特征,然后利用Shuffle单元为每个子特征集成互补通道和空间注意模块。
2) 在ImageNet-1k和MS COCO上的大量实验结果表明,与最先进的注意方法相比,所提出的SA具有更低的模型复杂度,同时实现了优异的性能。

二、实现细节

SA模块将输入的特征映射划分为多个组,并使用Shuffle单元将通道注意和空间注意集成到每个组的一个块中。之后,所有子特征被聚合,并使用“channel shuffle”操作符来实现不同子特征之间的信息通信。SA模块的总体架构如下所示。 它采用“通道分割”来并行处理每组的子特征。对于通道注意分支,使用GAP生成通道统计信息,然后使用一对参数缩放和移动通道向量。对于空间注意分支,采用群体范数生成空间统计信息,然后创建一个类似于通道分支的紧凑特征。然后将这两个分支连接起来。之后,所有子特征被聚合,最后使用“channel shuffle”操作符来实现不同子特征之间的信息通信。


Channel Attention:对于给定的特征映射X∈RC×H×WX∈ R^{C×H×W}X∈RC×H×W,其中C、H、W分别表示通道、空间高度和宽度,SA首先沿通道尺寸将X分为G组,即X=[X1,⋅⋅,XG]X=[X_1,··,X_G]X=[X1​,⋅⋅,XG​],Xk∈RC/G×H×WXk∈ R^{C/G×H×W}Xk∈RC/G×H×W,其中每个子功能XkX_kXk​逐渐捕获训练过程中的特定语义响应。然后,通过注意模块为每个子特征生成相应的重要性系数。具体来说,在每个注意单元的开始,XkX_kXk​的输入沿着通道维度分为两个分支,即Xk1、Xk2∈RC/2G×高×宽X_{k1}、X_{k2}∈ R^{C/2G×高×宽}Xk1​、Xk2​∈RC/2G×高×宽。如上所示,一个分支通过利用通道之间的关系来生成通道注意力图,而另一个分支通过利用特征之间的空间关系来生成空间注意力图,因此模型可以关注“什么”和“哪里”是有意义的。
SE模可以完全捕获通道依赖性。然而,它会带来太多的参数,这不利于在速度和准确性之间进行权衡。此外,ECA执行更快的大小为k的一维卷积来生成通道权重是不适合的,因为k往往更大。为了改进这一点,作者提供了一种替代方法,该方法首先通过简单地使用全局平均池(GAP)来嵌入全局信息,以生成通道统计信息s∈RC/2G×1×1s∈ R^{C/2G×1×1}s∈RC/2G×1×1,可通过空间尺寸H×WH×WH×W收缩Xk1X_{k1}Xk1​来计算:

此外,还创建了一个紧凑的功能,以实现精确和自适应选择的指导。这是通过一个sigmoid实现的。然后,通道注意的最终输出为:

W1∈RC/2G×1×1W_1∈ R^{C/2G×1×1}W1​∈RC/2G×1×1,b1∈RC/2G×1×1b_1∈ R^{C/2G×1×1}b1​∈RC/2G×1×1为用于缩放和移动s的参数。
Spatial Attention:与通道注意力不同,空间注意力侧重于“何处”是有用的信息,是通道注意力的补充。首先,使用Xk2X_{k2}Xk2​上的Group Norm(GN)来获得空间统计信息。然后,采用Fc(⋅)Fc(·)Fc(⋅)来增强Xk2X_{k2}Xk2​的表示性。空间注意的最终输出为

其中W2W_2W2​和b2b_2b2​是形状为RC/2G×1×1R^{C/2G×1×1}RC/2G×1×1的参数。
然后将这两个分支连接起来,使通道的数量与输入的数量相同,即Xk’=[Xk1’,Xk2’]∈RC/G×H×WX_k^’=[X^’_{k1},X^’_{k2}]∈ R^{C/G×H×W}Xk’​=[Xk1’​,Xk2’​]∈RC/G×H×W。
之后,所有子特征都被聚合。最后,与ShuffleNet v2类似,采用了一个“通道shuffle”操作符,使跨组信息能够沿着通道维度流动。SA模块的最终输出与X的大小相同,这使得SA很容易与其他结构集成。
请注意,W1、b1、W2、b2W_1、b_1、W_2、b_2W1​、b1​、W2​、b2​和 Group Norm超参数为SA中引入的参数。在单个SA模块中,每个分支中的通道数为C/2G。因此,总参数为3C/G(通常G为32或64),与整个网络的数百万个参数相比,这是微不足道的,这使得SA相当轻量级。

为了充分验证SA的有效性,作者绘制了SA-Net50(带shuffle)中不同深度的三个类别(“狗”、“金鱼”和“飞机”)的平均激活分布(每组通道特征图的平均值,类似于SE)。结果如上所示。对SA模块的作用进行了一些观察:
(1)在早期阶段,不同类别之间的分布非常相似(例如,SA 2_3和SA 3_4),这表明在早期阶段,不同类别可能共享特征组的重要性;
(2) 在更深的层次上,由于不同的类别对特征的鉴别价值表现出不同的表现(例如,SA 4_6和SA 5 _3),每个组的激活变得更具有类别特异性;
(3) SA 5_2在不同类别上表现出相似的模式,这意味着SA 5_2在为网络提供重新校准方面不如其他模块重要。

三、实验结果

四、相关代码

class sa_layer(nn.Module):"""Constructs a Channel Spatial Group module.Args:k_size: Adaptive selection of kernel size"""def __init__(self, channel, groups=64):super(sa_layer, self).__init__()self.groups = groupsself.avg_pool = nn.AdaptiveAvgPool2d(1)self.cweight = Parameter(torch.zeros(1, channel // (2 * groups), 1, 1))self.cbias = Parameter(torch.ones(1, channel // (2 * groups), 1, 1))self.sweight = Parameter(torch.zeros(1, channel // (2 * groups), 1, 1))self.sbias = Parameter(torch.ones(1, channel // (2 * groups), 1, 1))self.sigmoid = nn.Sigmoid()self.gn = nn.GroupNorm(channel // (2 * groups), channel // (2 * groups))@staticmethoddef channel_shuffle(x, groups):b, c, h, w = x.shapex = x.reshape(b, groups, -1, h, w)x = x.permute(0, 2, 1, 3, 4)# flattenx = x.reshape(b, -1, h, w)return xdef forward(self, x):b, c, h, w = x.shapex = x.reshape(b * self.groups, -1, h, w)x_0, x_1 = x.chunk(2, dim=1)# channel attentionxn = self.avg_pool(x_0)xn = self.cweight * xn + self.cbiasxn = x_0 * self.sigmoid(xn)# spatial attentionxs = self.gn(x_1)xs = self.sweight * xs + self.sbiasxs = x_1 * self.sigmoid(xs)# concatenate along channel axisout = torch.cat([xn, xs], dim=1)out = out.reshape(b, -1, h, w)out = self.channel_shuffle(out, 2)return out

SA-NET: SHUFFLE ATTENTION FOR DEEP CONVOLUTIONAL NEURAL NETWORKS相关推荐

  1. 论文阅读——ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

    ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 改进版通道注意力 from CVPR2020 期 ...

  2. CV:翻译并解读2019《A Survey of the Recent Architectures of Deep Convolutional Neural Networks》第一章~第三章

    CV:翻译并解读2019<A Survey of the Recent Architectures of Deep Convolutional Neural Networks>第一章~第三 ...

  3. AlexNet论文翻译(中英文对照版)-ImageNet Classification with Deep Convolutional Neural Networks

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[AlexNet纯中文版] ImageNet Classification with De ...

  4. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  5. 论文《ImageNet Classification with Deep Convolutional Neural Networks》阅读及AlexNet的Tensorflow2复现

    论文<ImageNet Classification with Deep Convolutional Neural Networks>阅读及AlexNet的Tensorflow2复现 论文 ...

  6. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  7. 文献阅读(63)NIPS2012-ImageNet Classification with Deep Convolutional Neural Networks

    本文是对<ImageNet Classification with Deep Convolutional Neural Networks>一文的浅显翻译与理解,如有侵权即刻删除. 更多相关 ...

  8. 人群计数--Cross-scene Crowd Counting via Deep Convolutional Neural Networks

    Cross-scene Crowd Counting via Deep Convolutional Neural Networks CVPR2015 本文主要使用深度学习来完成跨场景人群计数 cros ...

  9. 有效感受野--Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    Understanding the Effective Receptive Field in Deep Convolutional Neural Networks NIPS 2016 本文主要分析了 ...

最新文章

  1. Python基础教程:正则表达式re高级用法与案例
  2. oracle节点1关闭节点2的集群,[Oracle] Oracle两个节点分裂,识别不到对方节点的状态...
  3. 先验概率与后验概率的区别
  4. Audiolatry RetroVibes for Mac - 虚拟乐器插件
  5. Map集合Key 按照ASCII码从小到大(字典序)排序
  6. Unity3D 最实用的插件推荐
  7. Houdini学习笔记003
  8. CMSIS RTOS API,内核通用API接口
  9. Mac安装rocketmq
  10. Android微信抢红包服务源码
  11. server2003服务器安全攻略
  12. iPhone的快捷键
  13. www.chinaz.com 站长之家
  14. noip初赛复习(全)(转)
  15. 03_建立 Windows 和虚拟机 Ubuntu 共享文件夹
  16. 【iOS开发】AFNetworking上传语音文件(.mp3)到服务器
  17. mysql外键约束分数_MySQL 高级查询
  18. 牛客网-SQL题库笔记
  19. alert导致ajax数据交互问题,用ajax获得数据,可是页面显示的时不加个alert就显示不出来,随意加个alert就可以 解决办法...
  20. oracle用sys用户导入dmp命令,Oracle导入dmp文件步骤

热门文章

  1. RescoPhotoViewer图片查看v5.0_s60v3破解汉化版by八神
  2. 图像处理用什么神经网络,神经网络输入图片大小
  3. 艾美捷硫代巴比妥酸反应物质 (TBARS)检测试剂盒试剂准备
  4. 韩束母公司IPO,能否成为下一个 “完美日记“?
  5. 锴威特递交上会稿:员工不足百人 9个月营收1.75亿
  6. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键
  7. CNN进行非接触掌纹识别的改进过程
  8. 计算机鼠标不动了,电脑上鼠标不动了怎么解决 鼠标不动了怎么办解决方案
  9. java计算机毕业设计水果销售管理网站源码+系统+数据库+lw文档
  10. BACnet基础入门