简介
在轻量级网络上的研究表明,通道注意力会给模型带来比较显著的性能提升,但是通道注意力通常会忽略对生成空间选择性注意力图非常重要的位置信息。因此,新加坡国立大学的提出了一种为轻量级网络设计的新的注意力机制,该机制将位置信息嵌入到了通道注意力中,称为Coordinate Attention(下文也称CA),该论文收录于CVPR2021。不同于通道注意力将输入通过2D全局池化转化为单个特征向量,CoordAttention将通道注意力分解为两个沿着不同方向聚合特征的1D特征编码过程。这样的好处是可以沿着一个空间方向捕获长程依赖,沿着另一个空间方向保留精确的位置信息。然后,将生成的特征图分别编码,形成一对方向感知和位置敏感的特征图,它们可以互补地应用到输入特征图来增强感兴趣的目标的表示。CA简单灵活且高效,可以插入经典的轻量级网络(如MobileNetV2)在几乎不带来额外计算开销的前提下,提升网络的精度。实验表明,CoordAttention不仅仅对于分类任务有不错的提高,对目标检测、实例分割这类密集预测的任务,效果提升更加明显。
论文地址:http://arxiv.org/abs/2103.02907
论文源码https://github.com/Andrew-Qibin/CoordAttention
模型结构
CA是一种高效的注意力机制,通过将位置信息嵌入到通道注意力中,使得轻量级网络能够在更大的区域上进行注意力,同时避免了产生大量的计算开销。为了缓解2D全局池化造成的位置信息丢失,作者将通道注意力分解为两个并行的1D特征编码过程,有效地将空间坐标信息整合到生成的注意图中。更具体来说,作者利用两个一维全局池化操作分别将垂直和水平方向的输入特征聚合为两个独立的方向感知特征图。然后,这两个嵌入特定方向信息的特征图分别被编码为两个注意力图,每个注意力图都捕获了输入特征图沿着一个空间方向的长程依赖。因此,位置信息就被保存在生成的注意力图里了,两个注意力图接着被乘到输入特征图上来增强特征图的表示能力。SEAttention、CBAM以及CA结构如下所示。
一个coordinate attention模块可以看作一个用来增强特征表示能力的计算单元。它可以将任何中间张量X作为输入并输出一个有着增强的表示能力的同样尺寸的输出Y。CA模块通过精确的位置信息对通道关系和长程依赖进行编码,类似SE模块,也分为两个步骤:坐标信息嵌入(coordinate information embedding)和坐标注意力生成(coordinate attention generation)。首先,我们来看坐标信息嵌入这部分。全局池化常用于通道注意力中来全局编码空间信息为通道描述符,因此难以保存位置信息。为了促进注意力模块能够捕获具有精确位置信息的空间长程依赖,作者将全局池化分解为一对一维特征编码操作。具体而言,对输入X,先使用尺寸( H , 1)和(1, W)的池化核沿着水平坐标方向和竖直坐标方向对每个通道进行编码。接着,为了更好地利用上面coordinate information embedding模块产生的具有全局感受野并拥有精确位置信息的表示,设计了coordinate attention generation操作,它生成注意力图。
实现代码
CA的实现代码如下所示:
YOLOv5模型改进
本文在YOLOv5目标检测算法的Backbone和Head部分分别加入CoordAttention来增强目标提取能力,以下分别是在Backbone以及Head中改进的模型结构和参数(以YOLOv5s为例)。
在Backbone部分
在Head部分
总结
为了将空间信息加入通道注意力,Coordinate Attention被提出,在轻量级网络上取得了比较大的成功,它既能捕获通道之间的依赖也能很好地建模位置信息和长程依赖,实验表明其在图像识别、目标检测和语义分割任务上都有不错的改进。此外,CA可进一步应用于YOLOv7、YOLOv8等模型中,欢迎大家关注本博主的微信公众号 BestSongC,后续更多的资源如模型改进、可视化界面等都会在此发布。另外,本博主最近也在MS COCO数据集上跑了一些YOLOv5的改进模型,实验表明改进后的模型能在MS COCO 2017验证集上分别涨点1-3%,感兴趣的朋友关注后回复YOLOv5改进。