点击上方↑↑↑“OpenCV学堂”关注我
来源:公众号 AI公园 授权
导读
来自微软,在一个框架中集成了尺度注意力,空间注意力和通道注意力。
公众号后台回复 “d-head”,获取文章链接。
摘要:这篇文章提出了Dynamic Head的框架,将物体检测头和注意力机制整合到了一起。使用这种框架,可以在不同尺度的特征层之间做注意力,可以在空间范围内做空间注意力,可以在输出通道之间做任务的注意力。在不增加计算的情况下,该方法显著提升了目标检测头的表达能力。
好的物体检测head的特点:1、要和尺度相关,2、要和空间相关,3、要任务相关。这篇文章中提出了一个统一的框架,把这三点统一到了一起。我们把backbone的输出看成是3位的张量,level x shape x channel,我们发现可以统一到注意力的问题上。方案就是构建一个全方位的注意力机制,但是代价太大。
但是,我们可以在每个单独的维度上分别去做注意力,level-wise,spatial-wise和channel-wise。尺度的注意力只在level维度上做,空间注意力只在shape维度上做,任务注意力只在channel维度上做。
这样,我们可以为检测head构建一个统一的注意力机制,可以为head提供更好的表达能力。在各种物体检测的模型上都可以有1.2%~3.2%的提升。
从特征金字塔中,我们可以得到L个不同level的特征图,我们通过上采样和下采样,可以将这些不同level的特征图缩放到中间的尺度上,然后拼接在一起。然后可以得到一个4维的张量,维度为LxHxWxC,其中,L表示L个不同的level,H,W表示特征图的宽和高,C表示通道数量。我们进一步定义S=HxW,然后将这个张量reshape成LxSxC的3维张量。在这种表达方式下,可以进一步研究各个维度的作用。
基于上面的张量,自注意力可以表示为:
这里是注意力函数,最简单的就是全连接层,但是这样代价太大。于是,我们在3个维度上分别做注意力:
尺度注意力:
这里是一个线性函数,用1x1的卷积来近似,。
空间注意力:
由于在S维度上,维数很高,我们将这个模块分解为两个步骤,先用可变卷积学习稀疏的空间注意力,然后在同样的位置上,对不同level的特征进行集成。
任务注意力:
动态的对通道进行开关,来适应不同的任务。
其中Fc是第c个通道的特征切片,是超参数,用来学习激活的阈值。和(3)类似,先在LxS维度上做全局的池化,然后用2个全连接和1个归一化层,最后用shifted sigmoid归一化到[-1, 1]。
总体结构体如下:
一阶段检测器:
用这个统一的模块来代替原来的多分支。
二阶段检测器:
在ROI Pooling之前使用尺度和空间的注意力,在ROI Pooling之后使用通道注意力。
主干网络为ResNet50,检测框架为ATSS,初始学习率0.02,使用了多尺度的infer。
动态head的有效性的实验:
动态head的不同深度的实验:
用在不同物体检测器上的实验:
和最先进的物体检测器的对比:
论文链接:https://arxiv.org/abs/2106.08322