Dynamic Head学习笔记

Dynamic Head学习笔记

Dynamic Head: Unifying Object Detection Heads with Attentions

Abstract

目标检测中定位与分类相结合的复杂性导致了方法的蓬勃发展。以往的工作试图提高各种目标检测头的性能,但未能提出统一的观点。本文提出了一种新的动态头部框架,将目标检测头部与注意力统一起来。该方法通过在特征层次之间、空间位置之间和输出通道内连贯地组合多个自注意机制实现尺度感知、空间位置之间和任务感知,在不增加计算开销的情况下显著提高了目标检测头部的表示能力。进一步的实验证明了所提出的动态头在COCO基准上的有效性和效率。使用标准的ResNeXt-101DCN骨干,我们大大提高了流行的对象检测器的性能,并在54 AP达到了最新的最先进水平。此外,使用最新的变压器骨干和额外的数据,我们可以将当前最好的COCO结果推到60.6 AP的新记录。代码将在 https://github.com/microsoft/DynamicHead.

1. Introduction

物体检测是在计算机视觉应用中回答“什么物体位于哪里”的问题。在深度学习时代,几乎所有的现代目标检测器[11,23,12,35,28,31,33]都具有相同的范式——一个是特征提取的骨干,一个是定位和分类任务的头部。如何提高目标检测头的性能已成为现有目标检测工作中的一个关键问题。

研制一个好的目标探测头的挑战可以概括为三类。首先,头部应该具有尺度感知能力,因为一个图像中经常会同时存在多个具有截然不同尺度的物体。其次,头部应该具有空间意识,因为在不同的视角下,物体通常以截然不同的形状、旋转和位置出现。第三,头部需要具有任务意识,因为对象可能具有不同的表示(例如,边界框[12],中心[28]和角点[33]),它们拥有完全不同的目标和约束。我们发现最近的研究[12,35,28,31,33]只关注于通过各种方式解决上述问题之一。如何开发一个统一的头脑,同时解决所有这些问题,仍然是一个悬而未决的问题。

在本文中,我们提出了一种新的检测头,称为动态头,将尺度感知、空间感知和任务感知统一起来。如果我们考虑一个主干的输出(即检测头的输入)作为一个三维张量,其维度为水平×空间×通道,我们发现这样一个统一的头可以被视为一个注意学习问题。一个直观的解决方案是在这个张量上建立一个完整的自我注意机制。但是,优化问题的求解难度太大,计算成本也难以承受。

相反,我们可以在特征的每个特定维度上分别部署注意机制,即水平、空间和渠道。可感知尺度的注意模块只部署在水平尺寸上。它学习各种语义级别的相对重要性,以根据单个对象的规模在适当的级别上增强特征。感知空间的注意模块部署在空间维度上(即高度×宽度)。它学习空间位置上的相干判别表示。任务感知的注意模块部署在通道上。它根据来自对象的不同卷积核响应,引导不同的特征通道分别偏爱不同的任务(例如,分类、箱型回归和中心/关键点学习)。

这样,我们明确地实现了检测头的统一注意机制。虽然这些注意机制分别应用于特征张量的不同维度上,但它们的性能可以相互补充。MS-COCO基准的广泛实验证明我们方法的有效性。它为学习更好的表示提供了很大的潜力,可用于改进各种对象检测模型,AP增益为1.2% ~ 3.2%。在标准ResNeXt101-DCN主干下,该方法实现了COCO上54.0% AP的新水平。此外,与EffcientDet[27]和SpineNet[8]相比,dynamic head的训练时间为1/20,但性能更好。此外,利用最新的变压器骨干和来自自我训练的额外数据,我们可以将当前的最佳COCO结果推到一个新的记录,即60.6 AP(详见附录)。

2. Related Work

近年来的研究主要从尺度感知、空间感知和任务感知等方面对目标检测技术进行了研究。

Scale-awareness.

由于自然图像中经常存在尺度差异很大的物体,因此许多研究都认为尺度感知在物体检测中的重要性。早期的研究已经证明了利用图像金字塔方法对多尺度训练的重要性[6,24,25]。提出了用特征金字塔[15]代替图像金字塔,通过将下采样的卷积特征金字塔连接起来,提高效率,已成为现代目标探测器的标准组件。然而,来自不同层次的特征通常是从网络的不同深度提取的,这造成了明显的语义差距。为了解决这一问题,[18]提出了一种基于特征金字塔的自底向上路径增强底层特征的方法。后来,[20]通过引入平衡采样和平衡特征金字塔对其进行了改进。最近,[31]提出了一种基于改进的三维卷积的金字塔卷积来同时提取尺度和空间特征。

在此工作中,我们在检测头中提出了一种尺度感知的注意,它使各种特征级别的重要性自适应于输入。

Spatial-awareness.

以前的工作试图提高对象检测中的空间意识,以更好地进行语义学习。卷积神经网络在学习图像[41]中存在的空间变换方面受到限制。一些工作通过增加模型能力(大小)[13,32]或涉及昂贵的数据扩充[14]来缓解这一问题,导致推理和训练的计算成本极高。之后,提出了新的卷积算子来提高空间变换的学习能力。[34]提出使用扩展卷积从指数扩展的接受野中聚合上下文信息。[7]提出了一种具有AD条件自学习偏移量的可变形卷积对空间位置进行采样。[37]通过引入一个学习到的特征振幅来重新定义偏移量,并进一步提高了它的能力。

在这项工作中,我们在检测头中提出了一种空间感知的注意,它不仅将注意应用到每个空间位置,而且还自适应地将多个特征级别聚合在一起,以学习更具辨别性的表示。

Task-awareness.

对象检测源于两阶段范式[39,6],首先生成对象提案,然后将提案分类到不同的类和背景中。[23]通过引入区域提议网络(RPN)将两个阶段定义为单个卷积网络,从而形式化了现代两阶段框架。后来,一级目标检测器[22]因其效率高而受到欢迎。[16]通过引入特定于任务的分支进一步改进了体系结构,从而在保持以前单级检测器的速度的同时,超越了两级检测器的准确性。

最近,越来越多的研究发现,对象的各种表示形式可以潜在地提高性能。[12]首先演示了结合边界框和对象分割掩码可以进一步提高性能。[28]提出使用中心表示以逐像素预测的方式解决目标检测问题。[35]进一步改进了基于中心的方法的性能,根据对象的统计特征自动选择正、负样本。后来,[33]将目标检测作为代表性的关键点来简化学习。[9]进一步提高了性能,将每个对象作为一个三元组(而不是一对关键点)进行检测,以减少错误的预测。最近,[21]提出了从每个边界的极值点提取边界特征来增强点特征,并存档了最先进的性能。

在这项工作中,我们在检测头中提出了一种任务感知注意力,它允许将注意力部署在通道上,可以自适应地支持各种任务,无论是单级/两级检测器,还是基于盒/中心/关键点的检测器。

更重要的是,在我们的头部设计中,所有上述属性都被整合到一个统一的注意机制中。据我们所知,这是第一个通用的探测头部框架,它向理解注意力在目标探测头部成功中所起的作用迈出了一步。

3. Our Approach

3.1. Motivation

为了在一个统一的目标检测头中同时实现尺度感知、空间感知和任务感知,我们需要大致了解以前对物体探测头的改进。

给定特征金字塔中L个不同级别的特征 F i n = { F i } i = 1 L F_{in} = \{F_i\}^L_{i=1} Fin={ Fi}i=1L的串联,我们可以使用上采样或下采样将连续的级别特征调整为中值级别特征的规模。重新缩放的特征金字塔可以表示为一个四维张量 F ∈ R L × H × W × C F∈R^{L×H×W ×C} FRL×H×W×C,其中L表示金字塔中的层数,H、W和C分别表示中位水平特征的高度、宽度和通道数。我们进一步定义 S = H × W S = H × W S=H×W,将张量重塑为三维张量 F ∈ R L × S × C F∈R^{L×S×C} FRL×S×C。基于这种表示,我们将探讨每个张量维的作用。

1)物体尺度的差异与不同层次的特征有关。提高不同层次F的表示学习,有利于目标检测的尺度感知。

2)不同物体形状的各种几何变换与不同空间位置的特征有关。提高F在不同空间位置上的表示学习,有利于目标检测的空间意识。

3)不同的对象表示和任务可以与不同通道的特征相关联。提高F在不同通道间的表示学习,有利于目标检测的任务感知。

在本文中,我们发现上述所有方向都可以统一到一个有效的注意学习问题中。我们的工作是第一次尝试把对所有三个方面的多重关注结合起来,以制定一个统一的方针,以便最大限度地改进它们。

3.2. Dynamic Head: Unifying with Attentions

给定特征张量 F ∈ R L × S × C F∈R^{L×S×C} FRL×S×C,应用自注意的一般公式为:

image-20221108091311720

其中π(·)是一个注意函数。一个很好的解决方案是通过完全连接的层来实现这个注意功能。但是由于张量的高维数,直接学习所有维度的注意函数在计算上是昂贵的,而且实际上是负担不起的。

相反,我们将注意函数转换为三个连续的注意,每个注意只关注一个角度:

image-20221108091836082

其中, π L ( ⋅ ) 、 π S ( ⋅ ) 、 π C ( ⋅ ) π_L(·)、π_S(·)、π_C(·) πL()πS()πC()分别是应用在维数L、S、C上的三个不同的注意函数。

Scale-aware Attention π L π_L πL.

我们首先引入了一种基于语义重要性的尺度感知注意来动态融合不同尺度的特征。

image-20221108092052576

其中f(·)是近似于1 × 1卷积层的线性函数, σ ( x ) = m a x ( 0 , m i n ( 1 , ( x + 1 ) / 2 ) ) σ(x) = max(0, min(1, (x+1)/2)) σ(x)=max(0,min(1,(x+1)/2))是硬sigmoid函数。

Spatial-aware Attention π S π_S πS.

我们应用基于融合特征的空间感知注意模块来关注在空间位置和特征层次之间一致共存的判别区域。考虑到S中的高维数,我们将该模块分解为两个步骤:首先使用可变形卷积[7]使注意学习稀疏,然后在相同空间位置跨层次聚合特征:

image-20221108093333921

其中K为稀疏采样位置的数量, p k + ∆ p k p_k +∆p_k pk+pk是由自学习空间偏移量 ∆ p k ∆p_k pk转移的位置,聚焦于一个辨别区域, ∆ m k ∆m_k mk是位置 p k p_k pk上的自学习重要标量。两者都是从F的中值水平的输入特征中学习到的。

Task-aware Attention π C π_C πC.

为了实现联合学习和概括对象的不同表示,我们在最后部署了任务感知注意力。它动态地打开和关闭功能通道,以支持不同的任务:

image-20221108093750042

其中 F c F_c Fc是第c通道的特征片, [ α 1 , α 2 , β 1 , β 2 ] T [α^1, α^2, β^1, β^2]^T [α1α2β1β2]T = θ(·)是一个学习控制激活阈值的超函数。θ(·)的实现与[3]类似,首先对L × S维进行全局平均池化降维,然后使用两个全连通层和一个归一化层,最后使用一个位移的sigmoid函数将输出归一化到[−1,1]。

最后,由于上述三种注意机制是顺序应用的,我们可以将公式2套套多次,有效地将多个 π L 、 π S 和 π C π_L、π_S和π_C πLπSπC块堆叠在一起。我们的动态头(即简化为DyHead)块的详细配置如图2 (a)所示。

总的来说,我们提出的动态头部目标检测的整个范例如图1所示。任何一种骨干网都可以提取特征金字塔,再将其调整到相同的尺度,形成一个三维张量 F ∈ R L × S × C F∈R^{L×S×C} FRL×S×C,然后作为动态头的输入。接下来,依次堆叠几个DyHead块,包括感知尺度、感知空间和感知任务的注意。动态头的输出可用于对象检测的不同任务和表示,如分类、中心/盒回归等。

在图1的底部,我们展示了每种注意类型的输出。我们可以看到,由于域的差异,从主干的初始特征映射是有噪声的ImageNet训练。经过我们的scale感知注意模块后,特征图对前景物体的比例差异更加敏感;在进一步通过我们的空间感知注意力模块后,特征地图变得更加稀疏,并专注于前景对象的鉴别空间位置。最后,在经过我们的任务感知注意模块后,这些特征映射根据不同下游任务的需求重新形成不同的激活。这些可视化很好地展示了每个注意模块的有效性。

image-20221108094644150

image-20221108104434315

3.3. Generalizing to Existing Detectors

在本节中,我们将演示如何将提出的动态磁头集成到现有的探测器中,以有效地提高其性能。

**One-stage Detector **

一级检测器通过从特征图中密集采样位置来预测目标位置,简化了检测器的设计。典型的一级检测器(如retina anet[16])由骨干网和多个任务特定子网络分支组成,分别提取密集的特征和处理不同的任务。如前面的工作[3]所示,对象分类子网络的行为与边界框回归子网络非常不同。与这种传统方法不同的是,我们只将一个统一的分支而不是多个分支附加到主干上。它可以同时处理多个任务,这得益于我们的多重注意机制的优势。这样可以进一步简化体系结构,提高效率。最近,一级检测器的无锚变体变得流行起来,例如,FCOS [28], A TSS[35]和RepPoint[33]重新制定对象作为中心和关键点,以提高性能。与RetinaNet相比,这些方法需要在分类分支或回归分支上附加中心度预测或关键点预测,这使得任务特定分支的构造不简单。相比之下,部署我们的动态头更加灵活,因为它只在头的末端追加各种类型的预测,如图2 (b)所示。

**Two-stage Detector **

两阶段检测器利用区域提议和roi池化[23]层从骨干网的特征金字塔中提取中间表示。为了配合这一特性,我们首先在ROI-pooling层之前将我们的scale-aware注意和spatial-aware注意应用到特征金字塔上,然后使用我们的task -aware注意替换原来的完全连接层,如图2 ©所示。

3.4. Relation to Other Attention Mechanisms

Deformable.

变形卷积[7,37]通过引入稀疏采样,显著改进了传统卷积层的变换学习。它已被广泛应用于目标检测主干中,以增强特征表示能力。虽然它很少用于目标检测头,但我们可以把它看作是我们表示中的S子维的单独建模。我们发现在骨架中使用的可变形模块可以补充所提出的动态头部。事实上,通过ResNext-101-64x4d骨干的可变形变体,我们的动态头部实现了一个新的最先进的物体检测结果。

Non-local.

Non-Local Networks[30]是利用注意模块提高目标检测性能的先驱者。然而,它使用一种简单的点积公式,通过融合来自不同空间位置的其他像素的特征来增强像素的特征。这种行为可以被视为仅对我们表示中的L×S子维度建模

Transformer .

近年来,将Transformer模块[29]从自然语言处理引入到计算机视觉任务中成为一种趋势。初步工作[2,38,5]证明了在改进目标检测方面有前景的结果。Transformer提供了一个简单的解决方案,通过应用多头全连接层来学习交叉注意对应关系和融合来自不同模式的特征。这种行为可以看作是在我们的表示中只对S × C子维度建模

上述三种注意只在特征张量中部分建模子维度。作为一个统一的设计,我们的动态头将不同维度的关注结合成一个连贯和高效的实现。下面的实验表明,这种专用的设计可以帮助现有的目标检测器取得显著的增益。此外,与现有解决方案中的隐式工作原理相比,我们的注意机制明确地解决了目标检测的挑战。

4. Experiment

image-20221108105100888

image-20221108105116916

image-20221108105130784

image-20221108105653658

image-20221108105726753

image-20221108105755307

image-20221108105831741

image-20221108105857269

image-20221108105906452

5. Conclusion

在本文中,我们提出了一种新的目标检测头,它将尺度感知、空间感知和任务感知的注意统一在一个框架中。提出了一种关注目标探测头的新观点。动态头作为一个插件块,可以灵活地集成到任何现有的对象检测框架中,以提高其性能。此外,它是有效的学习。研究表明,目标探测头的注意点设计与学习是一个值得深入研究的有趣方向。这项工作只是迈出了一步,在以下几个方面还有待进一步改进:如何使完整的注意模型易于学习和计算,如何系统地将更多的注意模式考虑到头部设计中以获得更好的性能。

猜你喜欢

转载自blog.csdn.net/charles_zhang_/article/details/127746776