Abstract
目标检测中定位与分类相结合的复杂性导致了各种方法的蓬勃发展。以前的工作试图提高在各种目标检测头部的性能,但未能呈现一个统一的视图。在本文中,我们提出了一种新的动态头部框架来统一目标检测头部和注意力。该方法通过在尺度感知的特征层次之间、空间感知的空间位置之间以及任务感知的输出通道内连贯地组合多种自注意机制,显著提高了目标检测头部的表示能力,且不增加任何计算开销。进一步的实验证明了该方法在COCO基准上的有效性和有效性。使用标准的ResNeXt-101DCN骨干网,我们大大提高了流行的目标检测器的性能,并实现了54.0 AP的新技术。此外,使用最新的transformer骨干网和额外的数据,我们可以将当前最好的COCO结果推送到60.6 AP的新记录。代码将在https: //github.com/microsoft/DynamicHead上发布。
1. Introduction
在计算机视觉应用中,目标检测是为了回答“什么物体位于哪里”的问题。如何提高目标检测头的性能已成为现有目标检测工作中的一个关键问题。
开发一个好的目标检测头的挑战可以概括为三类。首先,头部应该是尺度感知的,因为图像中通常存在多个具有不同比例的物体。其次,头部应该是空间感知的,因为目标通常以不同的形状、旋转以及位置并且在不同视角下出现。第三,检测头应该是任务感知,因为物体可以有不同的表示(例如,边界框[12]、中心[28]和角点[33]),这些表示具有完全不同的目标和约束。我们发现,最近的研究[12,35,28,31,33]只侧重于以各种方式解决上述问题中的一个。如何形成一个能够同时解决所有这些问题的统一的头脑,仍然是一个悬而未决的问题。
在本文中,我们提出了一种新的检测头,称为动态头,将尺度感知、空间感知和任务感知统一在一起。如果我们将主干的输出(即检测头部的输入)看作一个维度为level×space×channel的三维张量,我们发现这样一个统一的头部可以看作是一个注意学习问题。一个直观的解决方案是在这个张量上建立一个完整的自关注机制。然而,优化问题将很难解决,并且计算成本难以承受。
相反,我们可以在特征的每个特定维度上分别部署注意力机制,即level-wise、space-wise和channel-wise。尺度感知注意力模块仅部署在水平维度上。它学习各个语义层次的相对重要性,根据单个对象的尺度在适当的层次上增强特征。空间感知注意力模块部署在空间维度上(即高×宽)。它在空间位置上学习连贯的判别表征。任务感知关注模块部署在通道上。它根据对象的不同卷积核响应,指导不同的特征通道分别支持不同的任务(例如,分类、盒回归和中心/关键点学习)。
通过这种方式,我们明确地实现了检测头的统一注意机制。尽管这些注意机制分别应用于特征张量的不同维度,他们的表现可以相互补充,在MS-COCO数据集上的大量实验证明了我们方法的有效性。它为学习更好的表示提供了巨大的潜力,在各种目标检测模型上提升了1.2%-3.2%的AP。采用标准ResNeXt101-DCN骨干网,该方法在COCO上实现了54:0%的AP。此外,与EffcientDet[27]和SpineNet[8]相比,动态头部的训练时间为1=20,但性能更好。此外,利用最新的变压器主干和来自自我训练的额外数据,我们可以将当前最佳COCO结果推至60.6 AP的新记录(详见附录)。
2. 相关工作
近年来的研究主要从尺度感知、空间感知和任务感知等方面对目标检测器进行改进。
尺度感知 由于不同尺度的物体在自然图像中经常共存,许多研究都认识到尺度感知在物体检测中的重要性。早期的工作已经证明了利用图像金字塔方法进行多尺度训练的重要性[6,24,25]。为了提高效率,人们提出了特征金字塔[15]来代替图像金字塔,将下采样卷积特征拼接成一个金字塔,并已成为现代目标检测器的标准组件。然而,不同层次的特征通常是从网络的不同深度提取的,这导致了明显的语义差距。为了解决这一差异,[18]提出从特征金字塔开始,通过自下而上的路径增强来增强下层的特征。后来[20]通过引入平衡采样和平衡特征金字塔对其进行了改进。最近,[31]提出了一种基于改进的三维卷积的金字塔卷积来同时提取尺度和空间特征。
在这项工作中,我们在检测头中提出了一种尺度感知的注意力,使各种特征级别的重要性自适应于输入.
空间感知 以前的工作试图提高物体检测中的空间意识,以更好地进行语义学习。众所周知,卷积神经网络在学习图像中存在的空间变换方面是有限的[41]。一些工作通过增加模型能力(大小)[13,32]或涉及昂贵的数据增强[14]来缓解这个问题,导致推理和训练的计算成本极高。后来,提出了新的卷积算子来改进空间变换的学习。[34]提出使用扩张卷积从指数扩展的感受野中聚合上下文信息。提出了一种带有额外自学习偏移量的可变形卷积采样空间位置。[37]通过引入学习到的特征幅度,重新制定了偏移量,并进一步提高了其能力。
在这项工作中,我们提出了检测头部的空间感知注意力,它不仅将注意力应用于每个空间位置,而且还自适应地将多个特征级别聚合在一起以学习更具判别性的表征。
任务感知 目标检测起源于两阶段范式[39,6],首先生成目标建议,然后将建议分为不同的类别和背景。[23]通过引入区域建议网络(Region Proposal Networks, RPN)将这两个阶段形成一个单一的卷积网络,形式化了现代两阶段框架。后来,一级目标检测器因其效率高而流行起来[22]。[16]进一步改进了架构,引入了特定于任务的分支,在保持先前一级检测器速度的同时,超越了两级检测器的精度。
最近,更多的研究发现,物体的各种表示可能会提高性能。[12]首先证明了结合对象的边界盒和分割掩码可以进一步提高性能。[28]提出使用中心表示以逐像素预测的方式解决目标检测问题。[35]进一步提高了基于中心的方法的性能,根据对象的统计特征自动选择正、负样本。后来,[33]为了便于学习,将目标检测作为代表性关键点。[9]进一步提高了性能,将每个对象检测为一个三元组,而不是一对关键点,以减少错误的预测。最近,[21]提出了从每个边界的极值点提取边界特征来增强点特征,并存档了最先进的性能。
在这项工作中,我们在检测头中提出了一个任务感知的注意力,它允许注意力部署在通道上,它可以自适应地支持各种任务,无论是单/两阶段探测器,还是基于框/中心/关键点的探测器。
更重要的是,在我们的头部设计中,上述所有属性都被整合到一个统一的注意机制中。据我们所知,这是第一个通用的检测头框架,它朝着理解注意力在目标检测头的成功中所起的作用迈出了一步。
3. Our Approach
3.1 Motivation
为了让尺度感知、空间感知和任务感知在一个统一的目标检测头上同时实现,我们需要大致了解之前对目标检测头的改进。
给定特征金字塔中L个不同级别的特征的串联,我们可以使用上采样或下采样来调整连续级别特征的大小,使其接近中位数水平特征的规模。重新缩放的特征金字塔可以表示为一个四维张量,式中,L表示金字塔中的层级数,H、W、C分别表示中位层级特征的高度、宽度和通道数。我们进一步定义S = H × W将张量重塑为三维张量。基于这种表示,我们将探讨每个张量维度的作用。
•物体尺度的差异与不同层次的特征有关。改进不同层次F的表示学习有利于目标检测的尺度感知。
•不同物体形状的各种几何变换与不同空间位置的特征有关。改进F在不同空间位置上的表征学习有利于物体检测的空间感知。
•不同的对象表示和任务可能与不同渠道的特征相关。改进不同通道F的表示学习有利于目标检测的任务感知。
在本文中,我们发现在一个有效的注意学习问题中,上述所有方向都可以统一。我们的工作是第一次尝试将所有三个维度的多重关注结合起来,以制定一个统一的头部,以最大限度地提高它们的改进。
3.2 Dynamic Head: Unifying with Attentions
给定特征向量,通常应用自注意力公式如下:
其中π(·)为注意函数。这种注意力功能的解决方案是通过完全连接的层来实现的。但是直接学习所有维度上的注意函数在计算上是昂贵的,而且由于张量的高维,实际上是负担不起的。
相反,我们将注意功能转换为三个连续的注意,每个注意只关注一个角度:
其中πL(·)、πS(·)、πC(·)是分别作用于维度L、S、C的三个不同的注意函数。
Scale-aware Attention ΠL.我们首先引入尺度感知关注,根据不同尺度的语义重要性动态融合特征:
其中f(·)是由1 × 1卷积层近似的线性函数,是hard-sigmoid函数。
Spatial-aware Attention ΠS. 我们采用另一种基于融合特征的空间感知注意力模块来关注空间位置和特征层次之间一致共存的判别区域。考虑到S的高维性,我们将该模块分解为两步:首先使用可变形卷积使注意学习稀疏化[7],然后在同一空间位置跨层聚集特征:
其中,K为稀疏采样位置的个数,pk +∆pk为自学习的空间偏移量∆pk所移位的位置,以聚焦于一个判别区域,∆mk为自学习的位置pk上的重要标量。他们都是从输入特征和F的中间水平学习到的。
Task-aware Attention ΠC. 为了实现联合学习和概括对象的不同表示,我们在最后部署了任务感知注意力。它动态地切换功能的ON和OFF通道,以支持不同的任务:
式中Fc为第c通道的特征片, 是一个学习控制激活阈值的超函数。θ(·)的实现与[3]类似,首先在L × S维上进行全局平均池化降维,然后使用两个完全连接层和一个归一化层,最后使用移位的sigmoid函数将输出归一化为[−1,1]。
最后,由于上述三种注意机制是顺序应用的,我们可以多次嵌套公式2,从而有效地将多个πL、πS和πC块叠加在一起。图2 (a)显示了我们的动态头部(即DyHead简化)模块的详细配置。
作为总结,我们提出的动态头部的整个目标检测范式如图1所示。任意种类的骨干网络都可以用来提取特征金字塔,将其进一步调整到相同的尺度,形成一个三维张量,然后作为动态头部的输入。接下来,包括规模感知、空间感知和任务感知在内的几个DyHead块依次堆叠。动态头部的输出可用于不同的任务和对象检测的表示,如分类、中心/盒回归等.
在图1的底部,我们显示了每种类型的注意力的输出。我们可以看到,来自backbone的初始特征图存在噪声由于ImageNet预训练的区域差异。经过我们的尺度感知注意模块后,特征图对前景物体的尺度差异变得更加敏感;在进一步通过我们的空间感知注意模块后,特征图变得更加稀疏,并集中在前景物体的判别空间位置上。最后,特征映射通过我们的任务感知关注模块后,根据不同下游任务的需求重新形成不同的激活。这些可视化很好地展示了每个注意力模块的有效性
3.3 已有检测器中的使用
在本节中,我们将演示如何将所提出的动态头集成到现有检测器中,以有效地提高其性能。
One-stage Detector 一级检测器通过从特征图中密集采样位置来预测目标位置,简化了检测器的设计。典型的一级检测器(如RetinaNet[16])由一个提取密集特征的骨干网和多个特定任务的子网分支组成,分别处理不同的任务。如前期工作[3]所示,分类子网和bbox回归子网表现非常不同。与这种传统方法相比,我们只将一个统一的分支连接到主干,而不是多个分支。它可以同时处理多个任务,这要归功于我们多重注意力机制的优势。这样可以进一步简化体系结构,提高效率。最近,无锚的单级探测器变体开始流行,例如FCOS[28]、ATSS[35]和RepPoint[33]将目标重新制定为中心和关键点,以提高性能。与retanet相比,这些方法需要在分类分支或回归分支上附加一个中心预测或关键点预测,这使得特定任务分支的构建变得非常重要。相比之下,部署动态头部更加灵活,因为它只将各种类型的预测附加到头部的末尾,如图2 (b)所示。
Two-stage Detector 两阶段检测器利用区域提议和roi池[23]层从骨干网络的特征金字塔中提取中间表示。为了配合这一特性,我们首先在roi池层之前的特征金字塔上应用尺度感知注意力和空间感知注意力,然后使用任务感知注意力替换原来的全连接层,如图2 (c)所示。
3.4 和其他Attention机制的关系
Deformable 变形卷积[7,37]通过引入稀疏采样,显著改进了传统卷积层的变换学习。它已被广泛应用于目标检测主干,以增强特征表征。虽然它很少用于目标检测头,但我们可以将其视为在我们的表示中单独建模S子维。我们发现在主干中使用的可变形模块可以与所提出的动态头部相补充。事实上,通过ResNext-101-64x4d骨干的可变形变体,我们的动态头部实现了新的最先进的目标检测结果。
Non-local 非局部网络[30]是利用注意力模块来提高目标检测性能的先驱工作。然而,它使用一种简单的点积公式,通过融合来自不同空间位置的其他像素的特征来增强像素特征。这种行为可以看作是在我们的表示中只建模L×S子维度。
Transformer 最近,有一种趋势是将Transformer模块从自然语言处理引入到计算机视觉任务中[29]。初步工作[2,38,5]已经证明了在改进目标检测方面有希望的结果。Transformer提供了一个简单的解决方案,通过应用多个头部全连接层来学习不同模态的交叉注意对应和融合特征。这种行为可以看作是在我们的表示中只对S × C子维度进行建模。
上述三种注意类型仅部分地对特征张量中的子维度进行建模。作为一个统一的设计,我们的动态头部将不同维度的关注结合到一个连贯有效的实施中。下面的实验表明,这种专门的设计可以帮助现有的目标检测器取得显着的增益。此外,与现有解决方案中的隐式工作原理相比,我们的注意力机制明确地解决了目标检测的挑战。
4. Experiment
我们根据常用的设置在MS-COCO数据集[17]上评估了我们的方法。MS-COCO包含从网络上收集的大约16万张图片的80个类别。数据集被分成train2017、val2017和test2017三个子集,分别有118K、5K和41K的图像。标准平均精度(AP)度量用于报告不同IoU阈值和对象尺度下的结果。在我们所有的实验中,我们只在train2017图像上进行训练,没有使用任何额外的数据。对于烧蚀研究的实验,我们评估了val2017子集上的性能。当与最先进的方法进行比较时,我们报告从测试服务器返回的官方结果。
4.1 Implementation Details
我们基于流行的Mask R-CNN基准的实现[12],将动态头部块作为插件实现。如果没有特别提到,我们的动态头部是用ATSS框架训练的[35]。所有模型都使用一个计算节点,每个计算节点有8个V100 gpu,每个gpu有32GB内存。
训练。我们在所有消融研究中使用ResNet-50作为模型主干,并使用标准1x配置对其进行训练。其他模型使用[12]中介绍的标准2x训练配置进行训练。我们使用初始学习率为0.02,权重衰减为1e−4,动量为0.9。在67%和89%的训练阶段,学习率下降了0.1。采用随机水平翻转的标准增广。为了与以往使用多尺度输入训练的方法进行比较,我们还对选择性模型进行了多尺度训练。
推理 为了与使用测试时间延长的最新方法进行比较,我们用多尺度测试评估了我们的模型。其他技巧,如model EMA、mosaic、mix-up、标签平滑、soft-NMS或自适应多尺度测试[25],没有被使用。
4.2 消融实验
我们进行了一系列的消融研究,以证明我们的动态头部的有效性和效率。
Attention Module的有效性 我们首先通过逐步将不同组件添加到基线中,对动态头部块中的不同组件的有效性进行对照研究。如表1所示,“L”,"S"和"C"分别代表我们的尺度感知注意模块、空间感知注意模块和任务感知模块。我们可以观察到,分别将每个组件添加到基线实现中,其性能提高了0.9 AP, 2.4 AP和1.3 AP。由于空间感知注意力模块在三个模块中占主导地位,因此有望看到最大的收益。当我们加上两个“L”。和“S”,持续提高了2.9 AP的性能。最后,我们的全动态头块显著提高了3:6 AP的基线性能。这个实验表明,不同的组件作为一个连贯的模块工作。
注意学习的有效性。然后,我们在动态头部模块中演示了注意学习的有效性。图3显示了在我们的尺度感知注意模块中,在不同级别的特征上学习到的尺度比率(通过用高分辨率的学习权重除以低分辨率的学习权重计算)的趋势。直方图是使用来自COCO val2017子集的所有图像计算的。可以清楚地看到,我们的尺度感知注意模块倾向于调节高分辨率特征图(图中“5级”紫色直方图)向低分辨率倾斜,调节低分辨率特征图(图中“1级”蓝色直方图)向高分辨率倾斜来平滑不同特征维度上的尺度差异。这证明了尺度感知注意学习的有效性。
图4可视化了应用不同数量(即2、4、6)关注模块块前后的特征图输出。在应用我们的注意力模块之前,从主干提取的特征图噪声很大,无法聚焦到前景对象上。随着特征图经过更多的关注模块(如图2到6块),我们可以明显地看到,特征图覆盖了更多的前景对象,并且更准确地聚焦于它们的判别空间位置。这种可视化很好地证明了空间感知注意学习的有效性。
头部深度的效率。我们通过控制深度(块的数量)来评估动态头的效率。如表2所示,我们改变使用的DyHead块的数量(例如,1、2、4、8、10块),并将它们的性能和计算成本(GFLOPs)与基线进行比较。我们的动态头部可以从深度的增加中受益,通过堆叠更多的方块直到8。值得注意的是,我们的2块方法已经以更低的计算成本优于基线。同时,即使有6个区块,与骨干的计算成本相比,计算成本的增量可以忽略不计,同时大大提高了准确性。它证明了我们方法的有效性。
现有目标检测器的通用性。我们通过将动态头部插入流行的目标检测器(如FasterRCNN[23]、RetinaNet[16]、ATSS[35]、FCOS[28]和RepPoints[33])来评估动态头部的泛化能力。这些方法代表了各种各样的目标检测框架(例如,两阶段vs单阶段,基于锚点vs无锚点,基于框的vs基于点的)。如表3所示,我们的动态头显着将所有流行的目标检测器提高了1.2 ~ 3.2 AP。这表明了我们方法的通用性。
4.3 和SOTA的比较
我们将动态头部的性能与几种标准骨干和最先进的目标探测器进行比较。
在不同骨干网络中使用。我们首先证明了动态头部与不同骨干的兼容性。如表4所示,我们通过将动态头部与ResNet-50、ResNet-101和ResNeXt-101骨干网相结合来评估目标检测器的性能,并与最近使用类似配置的方法(包括Mask R-CNN[12]、Cascade-RCNN[1]、FCOS[28]、ATSS[35]和BorderDet[21])进行比较。我们的方法一直大大优于以前的方法。和最好的检测器BorderDet在相同条件下比较,我们的方法以1.1的AP优于ResNet-101骨干网,以1:2的AP优于ResNeXt-64x4d-101骨干网,由于COCO基准测试中的挑战,改进是显着的。
与最先进的探测器相比。我们将我们的方法与最先进的检测器[35,31,21,4,2,27,8]进行了比较,包括一些并行工作[38,5]。如表5所示,我们将这些现有的工作归纳为两类:一类是使用多尺度训练,另一类是同时使用多尺度训练和多尺度测试。
与只进行多尺度训练的方法相比,我们的方法以52.3的AP达到了新的水平,只需要2倍的训练计划。与EffcientDet[27]和SpineNet[8]相比,我们的方法更具竞争力,学习效率更高,训练时间明显少于1/20。
与最新的利用Transformer模块作为注意力的方法[2,38,5]相比,我们的动态头部的增益超过2.0 AP,而训练时间却比这些方法少。这表明我们的动态大脑可以将不同角度的多种关注方式连贯地组合成一个统一的大脑,从而提高效率和效果。
我们进一步将我们的方法与使用多尺度训练和多尺度测试的测试时间增强(TTA)的最新结果[35,21,4,38,5]进行比较。我们的动态头可以帮助实现54.0 AP的最新结果,显著优于并发最佳方法的1.3 AP。
5. Conclusion
在本文中,我们提出了一种新的目标检测头,它将尺度感知、空间感知和任务感知的注意统一在一个框架中。提出了一种关注目标检测头的新视角。作为一个插件块,动态头可以灵活地集成到任何现有的目标检测器框架中,以提高其性能。此外,它是有效的学习。我们的研究表明,在目标检测头中设计和学习注意力是一个值得关注的研究方向。如何使全注意模型易于学习和高效计算,以及如何在头部设计中系统地考虑更多的注意形态以获得更好的性能,这些工作只是迈出了一步,还可以进一步改进。