Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读

paper:https://arxiv.org/pdf/2106.08322v1.pdf
code: https://github.com/microsoft/DynamicHead

摘要

在目标检测中,定位和分类相结合的复杂性导致了方法的蓬勃发展。以往的工作试图提高各种目标检测head的性能,但未能给出统一通用的观点。论文提出一个新的dynamic head框架通过attention来统一目标检测head,通过在尺度感知的特征层之间空间感知的空间位置之间以及任务感知的输出通道内连贯地结合多种self-attention,该方法显著地提高了目标检测head的表示能力,而无需任何计算开销。在coco基准上的实验证明了提出的dynamic head框架的有效性,在ResNeXt-101-DCN backbone上,实现了新的SOTA,54.0AP。更换更强大的backbone:Swin transformer,实现了60.6mAP,COCO基准的新SOTA。

介绍

开发一个好的目标检测head面临的挑战可以归纳为三类。

  1. 由于多个尺度不一的目标会出现在一张图上,所以head应该是scale-aware的;
  2. 在不同的视角下,物体通常以截然不同的形状、旋转和位置出现,所以head应该是 spatial-aware的。
  3. 由于目标可以有多种不同的表示(边框,中心,边角点),所以head应该是task-aware的。

论文中提出了一个统一的目标检测head,Dynamic head,来统一scale-awareness, spatial-awareness, task-awareness。
可以将backbone】的输出看做一个3-d(level x space x channel)的tensor,统一这三个维度的awareness可以看做是一个attention学习问题;
一种直接的方法是:直接使用整个self-attention机制来处理这个tensor,但是这样处理,是很困难去优化的,并且计算花费也是不可承受的。

作者将注意力机制分开处理为level-wise、spatial-wise、channel-wise,scale-aware注意力模块只在level维度处理,学习多个语义层的相对重要性,根据对象的尺度在适当的层次上增强特征。spatial-aware注意力模块只在space(h x w)维度处理,在空间位置上学习连贯的区别表示。task-aware注意力模块值处理channels,根据对象的不同卷积核响应,引导不同的特征通道分别支持不同的任务(如分类、边框回归和中心/关键点学习)。
实验证明Dynamic head可以统一提高检测器1.2% ~ 3.2%的mAP,相比于EffcientDet和SpineNet,dynamic head仅使用1/20的训练时间,能够实现更好的精度。

相关工作

Scale-awareness: 特征金字塔网络中,不同层级的特征通常是从网络的不同深度提取的,这就造成了明显的语义差距,直接将不同层级的特征层融合不是最优的。为了解决这个问题,PANet提出通过一个自下而上的路径来增强低层的特征,Libra r-cnn引入平衡采样和平衡特征金字塔,SEPC提出一个金字塔卷积来提出尺度和空间特征。

Spatial-awareness: 卷积神经网络在学习图像中存在的空间变换方面受到限制,一些工作通过增加模型size或者探索更强的数据增强来缓解这个问题,这导致了在inference和training过程中更多的计算花费。之后,提出了新的卷积操作来提升卷积对空间变换的学习,例如空洞卷积,deformable conv v1/v2。

Task-awareness: 最近,越来越多的研究发现,目标的各种表示可能会提高性能。Fcos提出用中心表示法以逐像素预测的方式解决目标检测问题;ATSS提出自动的选择positive来提高精度;Reppoints将目标检测看作是关键点来简化学习;Centernet(Keypoint)将每个目标看作是三个关键点,而不是一对关键点,从而减少了错误的预测,提高了精度;Borderdet提出了从每个边界的极值点提取边界特征,增强点特征,并达到了SOTA的精度。

方法

在这里插入图片描述
对于来自特征金字塔不同层级L,一个特征图Fin = {Fi}Li=1,可以使用上采样或下采样调整连续级别特征的大小,使其接近中间级别特征的比例。re-scaled的金字塔可以用一个4-d的tensor F∈RLxHxWxC表示,L表示特征金字塔的层数,H,W,C分别表示height,width,中间层级的channels。设置S = HxW,将F reshape到LxSxC维度。

Dynamic Head

对于给定的tensor F∈RLxSxC,使用self-attention的表示为:
在这里插入图片描述
其中π(·)是一个attention方法,该attention的一个简单的实现方式是直接采用全连接层,但是直接学习所有维度的attention,由于tensor的高维度,计算量是巨大的。
所以,作者提出将attention分为三个连续的attention,每个负责一个部分
在这里插入图片描述
其中πL(·),πS(·),πC(·)分别表示三个在L,S,C维度的不同attention方法;

Scale-aware Attention πL
在这里插入图片描述
其中f(·)是一个1x1卷积实现的线性函数,σ(x) = max(0, min(1,

x

+

1

2

\frac{x+1}{2}

2x+1))是hard-sigmoid函数。

Spatial-aware Attention πS 作者应用另一个基于融合特征的空间感知注意模块,将注意力集中在空间位置和特征层次上一致存在的区分区域上。考虑到S的高维性,作者将该模块分解为两个步骤:首先使用可变形卷积[7]使注意力学习变得稀疏,然后在相同的空间位置聚合不同层次的特征
在这里插入图片描述
其中K是稀疏采样位置的数量,pk + ∆pk 是通过自学习的空间偏移∆pk来移动的位置聚焦于一个有区别的区域,∆mk是位置pk处的自学习的重要性标量。都是从中层级输入特征F学习的;

Task-aware Attention πC
在这里插入图片描述
其中Fc是特征c-th通道的切片,[α1 , α2 , β 1 , β 2]T = θ(·)是一个学习控制阈值的超函数Dynamic relu,首先使用一个全局平均池化对L× S维降维,然后使用两个全连接层和一个归一化层,最后应用移位的sigmoid函数对输出进行归一化[−1, 1]。

最后,可以多次嵌套等式2,以有效地叠加多个πL,πS,和πC块在一起,详情配置如图2(a)所示;
在这里插入图片描述
使用Dynamic Head的整个目标检测范式如图1所示,任何backbone都可以用来提取特征金字塔F,然后将F resize到相同的尺寸,形成3-d tensor F ∈ RL×S×C,然后作为dynamic head的输入,然后几个Dynamic head模块串联堆叠,dynamic head的输出可以为目标检测的不同任务表征;

如图1所示:

  1. 经过backbone提取特征之后,由于ImageNet预训练权重适用域与目标检测不同,可以看到还有许多噪声;在这里插入图片描述

  2. 经过scale-aware注意力模块之后,特征图对不同尺度变得更加敏感;
    在这里插入图片描述

  3. 经过spatial-aware注意力模块之后,特征图变得更加稀疏并且聚焦于不同位置的目标;在这里插入图片描述

  4. 经过task-aware注意力模块之后,特征图会基于不同的下游任务而形成不一样的激活;在这里插入图片描述

扩展到现存的检测器

One-stage Detector: 对于one-stage检测器,只需要在backbone之后添加一个统一的分支Dynamic Head,如图2(b)所示;FCOS,ATSS,RepPoint重新定义目标为中心点,关键点来提高精度,这需要重新添加一个centerness分支或者是回归分支,这使得特定于任务的分支的构造非常简单。相比之下,部署Dynamic Head更灵活,因为它只在头的末尾附加各种类型的预测,如图2(b)所示。

Two-stage Detector: two-stage通过伴随着ROI-Pooling的使用,作者首先在使用ROI-Pooling之前使用scale-aware和spatial-aware注意力,然后使用task-aware注意力代替原本的全连接层,如图2©所示;

实验

实验细节

训练:
基于Mask R-CNN,采用ATSS的框架训练;
初始学习率0.02,权重衰减1e-4,动量0.9,在训练总epochs的67%和89%乘以0.1;
推理: 与SOTA模型比较时,使用TTA,其他tricks,EMA,mosaic,mix-up,标签平滑,soft-NMS等没有使用;

消融实验

消融实验使用ResNet50作为backbone实现

在这里插入图片描述

scale与spatial可视化

注意力模块的效果: 图3显示的是不同层级学习的scale ratios(通过将高分辨率的学习权重除以低分辨率的学习权重来计算),该直方图是由COCO val2017子集的所有图片计算。很明显,scale-aware注意模块倾向于将高分辨率特征图(“图中level5”紫色直方图)调整为低分辨率,将低分辨率特征图(“图中level1”蓝色直方图)调整为高分辨率,以平滑不同特征级别的比例差异。这证明了scale-aware知注意学习的有效性。
在这里插入图片描述

图4可视化了添加Dynamic Head模块之前,以及添加了不同数量的Dynamic Head模块的特征图。证明了spatial-aware注意力模型的学习。
在这里插入图片描述

Dynamic Head的深度

当堆叠2个Dynamic Head的时候,精度以及比baseline高,且计算量也有减少。当堆叠6个时,效果最好,且计算量相比于backbone可以忽略不计;
在这里插入图片描述

扩展到现存的目标检测器

可以看到下表,均有提升1.2%~3.2%不等的AP提升;
在这里插入图片描述

与SOTA比较

与不同的ResNe(X)t系列backbone搭配

在这里插入图片描述

与SOTA检测器的比较

在这里插入图片描述

与transformer backbone搭配

在这里插入图片描述

SOTA

使用更大的input-size和额外数据集;
使用额外的数据集和自训练,增加最大边1333到2000,多尺度训练最小边480到1200;
训练设置与前面一致,没有使用额外的tricks;
在没有使用额外数据集的情况下达到了之前SOTA的精度;
将imagenet图片生成伪标签将其作为额外数据集,实现了新SOTA:60.6%mAP。
在这里插入图片描述

版权声明:本文为CSDN博主「Laughing-q」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Q1u1NG/article/details/117983338

Laughing-q

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐