CVPR 2021 | CA:用于高效移动网络设计的同位注意力 | 代码开源

简介: Coordinate Attention (CA) 可以插入到移动网络中,如助力MobileNetV2、EfficientNet等网络涨点,性能优于SE、CBAM等注意力模块,还可提高检测、分割性能,代码已开源!

640.png


Coordinate Attention (CA) 可以插入到移动网络中,如助力MobileNetV2、EfficientNet等网络涨点,性能优于SE、CBAM等注意力模块,还可提高检测、分割性能,代码已开源!


640.png


作者单位:南洋理工大学

代码:https://github.com/Andrew-Qibin/CoordAttention

论文:https://arxiv.org/pdf/2103.02907.pdf

移动网络设计的最新研究表明,通道注意力(例如,SE注意力)对于提升模型性能具有显著效果,但它们通常会忽略位置信息,这对于生成空间选择性注意图非常重要。


在本文中,我们通过将位置信息嵌入到通道注意力中提出了一种新颖的移动网络注意力机制,我们将其称为“coordinate attention”。与通过2D全局池化将特征张量转换为单个特征向量的通道注意力不同,coordinate注意力将通道注意力分解为两个1D特征编码过程,分别沿两个空间方向聚合特征。这样,可以沿一个空间方向捕获远程依赖关系,同时可以沿另一空间方向保留精确的位置信息。


然后将生成的特征图分别编码为一对方向感知和位置敏感的注意图,可以将其互补地应用于输入特征图,以增强关注对象的表示。


640.png


我们的coordinate注意力很简单,可以灵活地插入到经典的移动网络中,例如MobileNetV2,MobileNeXt和EfficientNet,而几乎没有计算开销。


协调注意块(Coordinate Attention Blocks)


算法细节(推荐看原文,深入学习)


我们的注意力集中在两个步骤中,利用精确的位置信息对渠道关系和远程依存关系进行编码:嵌入信息协调注意力生成。所建议的坐标注意块的图可以在图2的右侧找到。在下文中,我们将对其进行详细描述。


坐标信息嵌入


全局池通常用于频道注意中以对空间信息进行全局编码,但是它将全局空间信息压缩到频道描述符中,因此很难保留位置信息,这对于在视觉任务中捕获空间结构至关重要。为了鼓励注意力块利用精确的位置信息在空间上捕获远程交互,我们将等式中公式化的全局池分解。


image.png


式(1)进行一对1D要素编码操作。具体来说,给定输入X,我们使用池核的两个空间范围(H,1)或(1,W)分别沿水平坐标和垂直坐标对每个通道进行编码。因此,高度为h的第c个通道的输出可表示为


image.png


类似地,第c个通道在宽度w处的输出可以写成


image.png


上面的两个变换分别沿两个空间方向聚合了特征,从而生成了一对方向感知的特征图。这与产生单个特征向量的通道注意方法中的压缩操作(等式(1))完全不同。这两个变换还使我们的注意力块能够捕获沿一个空间方向的远距离依赖关系,并沿另一空间方向保留精确的位置信息,这有助于网络更准确地定位感兴趣的对象。


协调注意力生成


如上所述等式(4)和等式(5)启用全局接受域并编码精确的位置信息。为了利用由此产生的表现形式,我们提出了第二种转换,称为坐标注意力生成。我们的设计参考以下三个标准。首先,关于移动环境中的应用程序,新的转换应该尽可能简单和便宜。其次,它可以充分利用捕获的位置信息,从而可以准确地突出显示感兴趣的区域。最后但并非最不重要的一点是,它还应该能够有效地捕获渠道间的关系,这在现有研究中已被证明是必不可少的。


640.png


设计轻量级注意力块的一些技巧


  1. SiLU激活(代码中的h_swish)比ReLU6更好
  2. 水平或垂直方向注意都与SE注意相同
  3. 当应用于MobileNeXt时,在第一个深度3x3卷积后添加关注块效果更好
  4. 请注意,如果在水平和垂直要素之间应用softmax,结果是否会更好


640.jpg

640.jpg


实验结果


大量实验表明,我们的coordinate注意力不仅有益于ImageNet分类,而且更有趣的是,它在下游任务(如目标检测和语义分割)中表现更好。


640.png

640.png

640.png

640.png

640.png


相关文章
|
1月前
|
JSON 监控 安全
Julia企业网络监控的实现:科学计算代码解析
使用Julia语言进行企业网络监控,通过定义带宽利用率和延迟等指标及阈值来检测网络状态。示例代码展示了如何监控带宽和延迟,当超过阈值时触发警报。此外,还介绍了如何通过HTTP请求将监控数据自动提交到网站,以便及时处理网络问题,保障网络安全和稳定性。
74 0
|
2月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
267 1
|
3月前
|
机器学习/深度学习 算法 PyTorch
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
47 0
|
7天前
|
机器学习/深度学习 自然语言处理 数据可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
21 1
|
5天前
|
数据可视化 算法 数据挖掘
R语言SIR模型网络结构扩散过程模拟SIR模型(Susceptible Infected Recovered )代码实例
R语言SIR模型网络结构扩散过程模拟SIR模型(Susceptible Infected Recovered )代码实例
13 0
|
5天前
|
机器学习/深度学习 算法 计算机视觉
【CVPR轻量级网络】- 追求更高的FLOPS(FasterNet)
【CVPR轻量级网络】- 追求更高的FLOPS(FasterNet)
|
7天前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow、Keras 和 Python 构建神经网络分析鸢尾花iris数据集|代码数据分享
TensorFlow、Keras 和 Python 构建神经网络分析鸢尾花iris数据集|代码数据分享
18 0
|
7天前
|
传感器 存储 监控
编写Arduino代码:构建物联网设备,实现上网行为管理软件对网络的实时监控
使用Arduino和ESP8266/ESP32等Wi-Fi模块,结合传感器监控网络活动,本文展示了如何编写代码实现实时监控并自动将数据提交至网站。示例代码展示如何连接Wi-Fi并检测网络状态,当连接成功时,通过HTTP POST请求将“Network activity detected.”发送到服务器。通过调整POST请求的目标URL和数据,可将监控数据上传至所需网站进行处理和存储。
33 0
|
20天前
|
JSON Kubernetes 网络架构
Kubernetes CNI 网络模型及常见开源组件
【4月更文挑战第13天】目前主流的容器网络模型是CoreOS 公司推出的 Container Network Interface(CNI)模型
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
22 0