参考Dynamic Head: Unifying Object Detection Heads with Attentions - 云+社区 - 腾讯云
1、摘要
在目标检测中,定位和分类相结合的复杂性导致了方法的蓬勃发展。以往的工作试图提高各种目标检测头的性能,但未能给出一个统一的视图。在本文中,我们提出了一种新的动态头网络框架,以统一目标检测头部与注意力。该方法通过将特征层次间、空间位置间、任务感知输出通道内的多自注意机制相结合,在不增加计算开销的情况下显著提高了目标检测头的表示能力。进一步的实验证明了所提出的动态头在COCO基准上的有效性和效率。有了标准的ResNeXt-101-DCN主干网,我们在很大程度上提高了性能,超过了流行的目标检测器,并在54.0 AP达到了新的最先进水平。
2、简介
物体检测是回答计算机视觉应用中“什么物体位于什么位置”的问题。在深度学习时代,几乎所有现代目标检测器都具有相同的范式——特征提取的主干和定位和分类任务的头部。如何提高目标检测头的性能已成为现有目标检测工作中的一个关键问题。
开发一个好的目标检测头的挑战可以概括为三类。首先,头部应该是尺度感知的,因为多个具有极大不同尺度的物体经常共存于一幅图像中。其次,头部应该是空间感知的,因为物体通常在不同的视点下以不同的形状、旋转和位置出现。第三,头部需要具有任务感知,因为目标可以有不同的表示形式(例如边界框、中心和角点),它们拥有完全不同的目标和约束。我们发现最近的研究只关注于通过各种方式解决上述问题中的一个。如何形成一个统一的、能够同时解决这些问题的头,仍然是一个有待解决的问题。
本文提出了一种新的检测头,即动态头,将尺度感知、空间感知和任务感知结合起来。如果我们把一个主干的输出(即检测头的输入)看作是一个具有维级×空间×通道的三维张量,我们发现这样一个统一的头可以看作是一个注意学习问题。一个直观的解决方案是在这个张量上建立一个完整的自注意力机制。然而,优化问题将是太难解决和计算成本是不可承受的。
相反地,我们可以将注意力机制分别部署在功能的每个特定维度上,即水平层面、空间层面和通道层面。尺度感知的注意模块只部署在level维度上。它学习不同语义层次的相对重要性,以根据单个目标的规模在适当的层次上增强该特征。空间感知注意模块部署在空间维度上(即高度×宽度)。它学习空间位置上的连贯区别表征。任务感知的注意模块部署在通道上。它根据目标的不同卷积核响应指示不同的特征通道来分别支持不同的任务(如分类、框回归和中心/关键点学习)。
这样,我们明确实现了检测头的统一注意机制。虽然这些注意机制分别应用于特征张量的不同维度,但它们的表现可以相互补充。在MS-COCO基准上的大量实验证明了我们的方法的有效性。它为学习更好的表示提供了很大的潜力,可以利用这种更好的表示来改进所有类型的目标检测模型,AP增益为1.2% ~ 3.2%。采用标准的ResNeXt-101-DCN骨干,所提出的方法在COCO上实现了54.0%的AP新状态。此外,与EffcientDet和SpineNet相比,动态头的训练时间为1/20,但表现更好。
2、相关工作
近年来的研究从尺度感知、空间感知和任务感知三个方面对目标检测器进行了改进。
Scale-awareness.
由于自然图像中经常同时存在不同尺度的物体,许多研究都认为尺度感知在目标检测中的重要性。早期的研究已经证明了利用图像金字塔方法进行多尺度训练的重要性。代替图像金字塔,特征金字塔[15]被提出,通过将下采样卷积特征串接一个金字塔来提高效率,已经成为现代目标检测器的标准组件。然而,不同层次的特征通常从网络的不同深度中提取,这就造成了明显的语义差距。为了解决这种差异,[18]提出了从特征金字塔中自下而上的路径增强较低层次的特征。后来[20]通过引入平衡采样和平衡特征金字塔对其进行了改进。最近,[31]在改进的三维卷积的基础上提出了一种金字塔卷积,可以同时提取尺度和空间特征。在这项工作中,我们提出了一个尺度感知注意在检测头,使各种特征级别的重要性自适应的输入。
Spatial-awareness.
先前的研究试图提高物体检测中的空间敏感性,以更好地进行语义学习。卷积神经网络在学习图像中存在的空间变换方面是有限的。一些工作通过增加模型能力(大小)或涉及昂贵的数据扩展来缓解这个问题,这导致了在推理和训练中极高的计算成本。随后,提出了新的卷积算子来改进空间变换的学习。[34]提出使用膨胀卷积来聚合来自指数扩展的接受域的上下文信息。[7]提出了一种可变形的卷积来对具有额外自学习偏移量的空间位置进行采样。[37]通过引入学习到的特征振幅来重新定义偏移量,进一步提高了其能力。
在这项工作中,在检测头上我们提出了一个空间感知的注意,它不仅适用于每个空间位置的注意,而且自适应地聚集多个特征级别在一起学习更有区别的表示。
Task-awareness.
目标检测起源于两阶段范式[39,6],该范式首先生成目标建议,然后将建议分类为不同的类别和背景。[23]通过引入区域建议网络(RPN)将这两个阶段形式化为一个单独的卷积网络。后来,单级目标检测器[22]因其高效而流行起来。[16]进一步改进了体系结构,通过引入特定任务分支,在保持原有单级检测器速度的同时,超越了两级检测器的精度。
最近,越来越多的工作发现,不同的目标表示方式可能会提高性能。[12]首先证明了结合边界框和目标分割掩码可以进一步提高性能。[28]提出使用中心表示以逐像素预测的方式解决目标检测问题。[35]进一步提高了基于中心的方法的性能,根据目标的统计特征自动选择正样本和负样本。之后,[33]将目标检测作为代表性关键点,以方便学习。[9]进一步提高了性能,通过检测每个目标为一个三元组,而不是一对关键点,以减少不正确的预测。最近,[21]提出从每个边界的极值点中提取边界特征,以增强点特征,并保存了最先进的性能。
在这项工作中,我们在检测头中提出了一种任务感知的注意力模块,它允许注意部署在通道上,可以自适应地有利于各种任务,无论是单/两级检测器,还是基于框/中心/关键点的检测器。
更重要的是,在我们的头部设计中,所有这些属性都被整合到一个统一的关注机制中。据我们所知,这是第一个通用的检测头框架,它向理解注意力在目标检测头成功中的作用迈出了一步。
3、方法
3.1、动机
为了在统一的目标检测头中同时实现尺度感知、空间感知和任务感知,我们需要大致了解以往目标检测头的改进。
给定特征金字塔中个不同级别的特征
的连接,我们可以使用上采样或下采样将连续级别特征的大小调整到中值级别特征的尺度。 重新缩放后的特征金字塔可以表示为一个4维张量
,其中
表示金字塔中的层数,H、W、C分别表示中位层特征的高度、宽度和通道数。 我们进一步定义S = H × W,将张量重塑为一个三维张量
。 在此基础上,我们将探讨每个张量维数的作用。
给定特征金字塔中L个不同级别的特征的连接,我们可以使用上采样或下采样将连续级别特征的大小调整到中值级别特征的规模。 重新缩放后的特征金字塔可以表示为一个4维张量
,其中L表示金字塔中的层数,H、W、C分别表示中位层特征的高度、宽度和通道数。 我们进一步定义S = H × W,将张量重塑为一个三维张量
。 在此基础上,我们将探讨每个张量维数的作用。
- 物体尺度的差异与不同层次的特征有关。 改进不同层次
的表示学习可以提高目标检测的尺度感知。
- 来自不同物体形状的各种几何变换与不同空间位置的特征有关。 改进
在不同空间位置上的表示学习,有利于目标检测的空间感知。
- 不同的目标表示和任务可以与不同通道的特征相关。 改进F中不同通道的表示学习可以提高目标检测的任务感知。
在本文中,我们发现在一个有效的注意学习问题中,所有这些方向是可以统一的。 我们的工作是首次尝试将三个维度的多重关注结合起来,形成一个统一的头,最大限度地改善它们。
3.2. Dynamic Head: Unifying with Attentions
已知特征张量,应用自我注意的一般公式为:
π(·)是一个注意函数。 这个关注功能的解决方案是通过完全连接的层来实现的。 但是直接学习所有维度上的注意函数在计算上是昂贵的,而且由于张量的高维,实际上是负担不起的。
相反,我们将注意力功能转换为三个顺序的注意力,每个注意力只关注一个角度:
其中,、
、
分别是适用于维度L、S、C的三个不同的注意函数。
Scale-aware Attention![](https://i-blog.csdnimg.cn/blog_migrate/917d62dd2b1ae5811d5aa0e525f1b54d.png)
我们首先引入了一种尺度感知注意,即根据不同尺度的语义重要性动态融合特征。
式中为1 × 1卷积层近似的线性函数,
是一个硬sigmoid函数。
Spatial-aware Attention ![](https://i-blog.csdnimg.cn/blog_migrate/1d1952a035091a860d69ad32bcfce9f9.png)
我们应用另一个基于融合特征的空间感知注意模块来关注空间位置和特征层之间一致共存的区分区域。 考虑到的高维,我们将该模块分解为两步:首先利用可变形卷积使注意学习稀疏化,然后在相同的空间位置跨层次聚合特征:
是稀疏采样地点的数量,
是self-learned空间位置的偏移量,通过自学习空间补偿
来关注有区别的区域,并且
是位置
处的自学习重要标量。两者都从
的输入特性从平均水平。
Task-aware Attention ![](https://i-blog.csdnimg.cn/blog_migrate/e346a93843bb527ebe39af45da78e335.png)
为了实现联合学习和归纳目标的不同表示,我们在最后部署了一个任务感知的注意。 它动态地开关特性的ON和OFF通道,以支持不同的任务:
其中为第c个通道通道的特征切片,
是一种学习控制激活阈值的超函数。
实现类似于,首先对L × S维进行全局平均池化降维,然后使用两个全连通层和一个归一化层,最后使用移位的sigmoid函数将输出归一化到[−1,1]。
最后,由于上述三种注意机制的应用顺序,我们可以多次嵌套式2,从而有效地将多个、
和
块叠加在一起。 图2 (a)展示了我们的动态头部(即简化的DyHead)块的详细配置。
总的来说,图1展示了我们提出的动态头部的目标检测整体范式。 任何类型的骨干网络都可以提取特征金字塔,再将其缩放到相同的尺度,形成一个三维张量,然后作为动态头部的输入。 接下来,几个DyHead模块,包括尺度感知、空间感知和任务感知的关注被依次堆叠。 动态头部的输出可用于不同的任务和目标检测表示,如分类、中心/框回归等。
在图1的底部,我们显示了每种注意力类型的输出。 正如我们所看到的,由于与ImageNet预处理的域差异,来自主干的初始特征映射是有噪声的。 通过尺度感知注意模块后,特征地图对前景物体的尺度差异更加敏感;在进一步通过我们的空间感知注意模块后,特征图变得更加稀疏,并聚焦于前景对象的可辨别空间位置。 最后,在通过我们的任务感知注意模块后,特征映射根据不同下游任务的需求重新形成不同的激活。 这些可视化效果很好地证明了每个注意力模块的有效性。
3.3. Generalizing to Existing Detectors
在本节中,我们将演示如何将所提出的动态头集成到现有的检测器中,以有效地提高其性能。
One-stage Detector.
一阶段检测器通过在特征图中密集采样目标位置来预测目标位置,简化了检测器的设计。 典型的一级检测器(如RetinaNet[16])由一个主干网络和多个特定任务的子网络分支组成,分别处理不同的任务。 如前面的工作[3]所示,目标分类子网的行为与边界框回归子网有很大的不同。 这种传统方法存在争议,我们只在主干上附加一个统一的分支,而不是多个分支。 由于我们的多重注意力机制的优势,它可以同时处理多个任务。 这样可以进一步简化体系结构,提高效率。 最近,无锚定的单级检测器开始流行起来,例如FCOS, ATSS和RepPoint将目标重新定义为中心和关键点来提高性能。 与RetinaNet相比,这些方法需要在分类分支或回归分支上附加中心预测或关键点预测,这使得任务特定分支的构造变得不简单。 相比之下,动态头的部署更加灵活,因为它只将各种类型的预测附加到头的末尾,如图2 (b)所示。
Two-stage Detector.
两阶段检测器利用区域提议和ROI池化层从骨干网的特征金字塔中提取中间表示。 为了配合这一特征,我们首先在ROI池层之前的特征金字塔上应用尺度感知注意和空间感知注意,然后使用任务感知注意替换原来的全连通层,如图2 (c)所示。
3.4. Relation to Other Attention Mechanisms
Deformable.
变形卷积通过引入稀疏采样,显著改善了传统卷积层的变换学习。 它被广泛应用于目标检测骨干中以增强特征表示。 虽然在目标检测头中很少使用它,但我们可以把它看作是在我们的表示中单独建模子维。 我们发现在主干中使用的可变形模块可以作为所提出的动态头的补充。 事实上,通过ResNext-101-64x4d骨干的可变形变体,我们的动态头部实现了一个新的最先进的目标检测结果。
Non-local.
非本地网络是利用注意模块提高目标检测性能的先驱。 然而,它使用一个简单的点积公式,通过融合来自不同空间位置的其他像素的特征来增强像素特征。 这种行为可以看作是在我们的表示中仅建模L×S子维度。
Transformer.
近年来,将Transformer模块从自然语言处理引入到计算机视觉任务中是一种趋势。 初步的工作已经证明了改进目标检测的良好结果。 Transformer提供了一个简单的解决方案,学习交叉注意通信和熔断功能,从不同的模式,通过应用多头全连接层。 这种行为可以被视为在我们的表示中只建模S × C子维度。
上述三种类型的注意只在特征张量中部分地建模子维度。 作为一个统一的设计,我们的动态头将不同维度的关注结合成一个连贯和高效的实施。 下面的实验表明,这种专门的设计可以帮助现有的目标探测器取得显著的收益。 此外,与现有解决方案中隐含的工作原理相比,我们的注意机制明确地解决了目标检测的挑战。
4、实验
我们按照常用设置评估了我们在MS-COCO数据集上的方法。 MS-COCO包含了从网上收集的80个类别的约16万张图片。 数据集分为train2017、val2017、test2017三个子集,分别包含118K、5K、41K图像。 标准平均精度(AP)度量用于报告不同IoU阈值和对象尺度下的结果。 在我们所有的实验中,我们只训练train2017,没有使用任何额外的数据。 对于消融研究的实验,我们评估了val2017子集的性能。 当与最先进的方法比较时,我们报告测试服务器在测试-开发子集上返回的官方结果。
4.1、实现细节
我们实现我们的动态头块作为一个插件,基于流行的Mask R-CNN基准实现。 如果没有特别提到,我们的动态头是用ATSS框架训练的。 所有型号都使用一个计算节点进行训练,该计算节点拥有8个V100 GPU,每个GPU都有32GB内存。
Training.
我们在所有消融研究中使用ResNet-50作为模型骨干,并使用标准的1x配置对其进行训练。 其他模型使用[12]中介绍的标准2x训练配置进行训练。 我们使用初始学习速率0.02,重量衰减为1e−4,动量为0.9。 在67%和89%的训练时期,学习率下降了一个0.1的因素。 使用随机水平翻转的标准增强。 为了与以往使用多尺度输入训练的方法相比较,我们还对选择性模型进行了多尺度训练。
Inference.
为了与使用测试时间增加的最新方法进行比较,我们还用多尺度测试评估了我们的最佳模型。 其他技巧,如模型EMA,mosaic,混淆,标签平滑,soft-NMS或自适应多尺度测试,没有使用。
4.2、消融研究
我们进行了一系列的消融研究,以证明我们的动态头的有效性和效率。
Effectiveness of Attention Modules.
我们首先对动态头块中不同组件的有效性进行了对照研究,逐步将它们添加到基线中。 如表1所示,“L。 ”、“S. ”、“C.”。 分别代表了我们的尺度感知注意模块、空间感知注意模块和任务感知模块。 我们可以观察到,将每个组件单独添加到基线实现中可以提高0.9 AP、2.4 AP和1.3 AP的性能。 由于空间感知注意模块在三个模块中占主导地位,因此有望获得最大的增益。 当我们把两个L都加起来。 和“S”到基线,不断提高性能2.9 AP。 最后,我们的全动态头部块显著改善基线3.6 AP。 这个实验表明,不同的组件作为一个相干模块工作。
Effectiveness on Attention Learning.
然后,我们在动态头部模块中演示了注意力学习的有效性。 图3展示了在我们的尺度感知注意模块中,学习到的尺度比(学习到的高分辨率的权重除以学习到的低分辨率的权重)在不同级别特征上的变化趋势。 直方图使用来自COCO val2017子集的所有图像计算。 可以清楚地看到,我们的scale-aware关注模块往往调节高分辨率特征图(“5级”图中紫色的直方图)对低分辨率和低分辨率特征图(“1级”图中蓝色的直方图)向高分辨率光滑水平差异形成规模不同的特性。 这证明了尺度意识注意学习的有效性。
图4可视化了使用不同数量(即2、4、6)注意力模块块前后的特征图输出。 在应用我们的注意模块之前,从主干中提取的特征图噪声很大,不能聚焦于前景目标。 随着特征图经过更多的注意模块(从block 2到block 6,如图所示),可以明显地看到特征图覆盖了更多的前景目标,并更准确地聚焦于它们的区分性空间位置。 这种可视化很好地证明了空间意识注意力学习的有效性。
Efficiency on the Depth of Head.
我们通过控制深度(块的数量)来评估我们的动态头的效率。 如表2所示,我们改变使用的DyHead块的数量(例如,1、2、4、8、10块),并与基线比较它们的性能和计算成本(GFLOPs)。 我们的动态头可以受益于增加的深度,通过堆叠更多的块,直到8。 值得注意的是,我们的2块方法已经以更低的计算成本超过了基线。 同时,即使是6块,与骨干网的计算代价相比,计算代价的增量可以忽略不计,但在很大程度上提高了精度。 证明了该方法的有效性。
Generalization on Existing Object Detectors.
我们通过将动态头部插入流行的目标检测器,如Faster-RCNN、RetinaNet、ATSS、FCOS和RepPoints来评估其泛化能力。 这些方法代表了各种各样的目标检测框架(例如,两阶段vs.一阶段,基于锚点vs.无锚点,基于框vs.基于点)。 如表3所示,我们的动态头显著地提高了所有流行的目标检测器的AP值为1.2 ~ 3.2。 说明了该方法的通用性。
4.3、Comparison with the State of the Art
我们比较了动态头的性能与几个标准的骨干和最先进的目标检测器。
Cooperate with Different Backbones.
我们首先演示了动态头部与不同backbone的兼容性。 如表4所示,我们通过将动态头与ResNet-50、ResNet-101和ResNeXt-101骨干网集成来评估目标检测器的性能,并与Mask R-CNN[12]、Cascade-RCNN[1]、FCOS[28]、ATSS[35]和BorderDet[21]等类似配置的最新方法进行比较。 我们的方法始终比以前的方法有很大的优势。 与相同设置下的最佳检测器BorderDet[21]相比,我们的方法在ResNet-101骨干上的性能比它高1.1 AP,在ResNeXt-64x4d-101骨干上的性能比它高1:2 AP,由于COCO基准中的挑战,改进是显著的。
Compared to State-of-the-Art Detectors.
我们将我们的方法与最新的检测器进行比较,包括一些并发工作。 如表5所示,我们将这些现有工作归纳为两类:一类使用多尺度训练,另一类同时使用多尺度训练和多尺度测试。
与仅采用多尺度训练的方法相比,我们的方法在只有2倍训练计划的情况下达到了52.3 AP的新水平。 与EffcientDet和SpineNet相比,我们的方法具有竞争力,学习效率更高,1/20的训练时间明显减少。 与利用Transformer模块的最新研究成果相比,我们的动态头优于其他方法,AP增益超过2.0,而训练时间比其他方法少。 证明了我们的动态头可以将不同角度的多种注意方式连贯地组合成一个统一的头,从而获得更好的效率和效果。
我们利用多尺度训练和多尺度测试,将我们的方法与测试时间增强(TTA)的最新结果进行了比较。 我们的动态头帮助实现了一个新的最先进的结果在54.0 AP,这明显优于并发最佳方法1.3 AP。
5、结论
在本文中,我们提出了一种新的目标检测头,它将尺度感知、空间感知和任务感知的注意力统一在一个单一的框架中。 提出了一种新的目标检测头的研究思路。 作为一个插件块,动态头可以灵活地集成到任何现有的目标检测器框架,以提高其性能。 此外,它是有效的学习。 我们的研究表明,在目标检测头中设计和学习注意事项是一个值得关注的方向。 这项工作只是迈出了一步,在如何使全注意模型易于学习和高效计算,以及如何系统地将更多的注意模式考虑到头部设计中以获得更好的性能等方面可以进一步改进。
附录
我们在提交后不断改进我们的表现。 近年来,将变压器改造成视觉骨架并表现出良好的性能成为一个热门趋势。 当我们用最新的变压器骨干[19]、额外的数据和加大的输入规模来训练我们的动态头时,我们可以进一步改进COCO基准上的现有SOTA。
Cooperate with Transformer Backbones.
我们的动态头与最新的Transform为基础的骨干,如[19]。 如表6所示,我们的动态磁头与[1]竞争,[1]需要额外的掩模ground-truth来帮助提高性能。 同时,与我们框架中使用的基线方法[35]相比,我们将其性能进一步提高了2:5 AP。这很好地证明了我们的动态头与基于Transform的骨干是互补的,可以进一步提高其在下游目标检测任务中的性能。
Cooperate with Larger Inputs and Extra Data.
我们发现,我们的动态头部可以从更大的输入尺寸和使用自训练方法[40]生成的额外数据中获益。 我们将图像最大边从1333增加到2000,并采用多尺度训练,最小边从480增加到1200。 类似于4.1节中描述的训练方案,我们避免使用更多的技巧来确保再现性。 如表7所示,与最新的工作相比,我们的动态磁头有显著的增益,并且在不使用额外的掩模ground-truth的情况下与[19]的性能相匹配。 同时,我们的动力头对这些作品的训练时间不超过1=3。 这说明我们的工作效率和效益很高。 此外,我们遵循[40]在ImageNet数据集上生成伪标签,并将其用作额外的数据。 我们的动态磁头可以很大程度上受益于大规模的数据,并进一步提高COCO的最先进的结果,以一个新的记录在60.6 AP。