论文地址:https://arxiv.org/pdf/2106.08322.pdf
代码: https://github.com/microsoft/DynamicHead
在目标检测中以前的工作试图提高各种物体检测头的性能,但未能呈现统一的视图。在本文中,作者提出了一种新的动态检测头框架,以统一目标检测头。通过在尺度感知的特征级别之间、空间感知的空间位置之间以及任务感知的输出通道内连贯地组合多个自注意机制,所提出的方法显著提高了对象检测头的表示能力,而没有任何计算开销。进一步的实验证明了所提出的动态检测在COCO基准上的有效性和效率。
在本文中,作者提出了一种新的检测头,称为动态头,以将尺度注意力、空间注意力和任务注意力统一在一起。如果将主干的输出(即检测头的输入)视为具有层次×空间×通道的三维张量,我们发现这样的统一头可以被视为注意力学习问题。一个直观的解决方案是在这个张量上建立一个完整的自注意机制。然而,优化问题将太难解决,并且计算成本将大量增加。
可以在特征的每个特定维度上单独部署注意力机制,即水平方向、空间方向和通道方向。规模感知注意力模块仅部署在水平维度上。它学习各种语义级别的相对重要性,以适用其规模在适当级别上增强单个对象的特征。空间感知注意力模块部署在空间维度(即高度×宽度)上。它学习空间位置中的提升其表征能力。任务感知注意力模块部署在通道上。它基于来自对象的不同卷积核响应,引导不同的特征通道分别支持不同的任务(例如,分类、框回归和中心/关键点学习)。 通过这种方式,作者明确地实现了检测头的统一关注机制。尽管这些注意机制分别应用于特征张量的不同维度,但它们的性能可以相互补充。
许多研究都受尺度感知在物体检测中的重要性,因为在自然图像中,尺度相差悬殊的物体常常共存。早期的工作已经证明了利用图像金字塔方法进行多尺度训练的重要性。特征金字塔被提出用于通过连接下采样卷积特征的金字塔来提高效率,并已成为现代对象检测器的标准组件。然而,来自不同层次的特征通常是从网络的不同深度提取的,这导致了明显的语义差距。为了解决这一差异,PAN提出通过从特征金字塔自下而上的路径增强来增强下层中的特征。后来,"Libra r-cnn: Towards balanced learning for object detection"通过引入平衡采样和平衡特征金字塔对其进行了改进。最近,"Libra r-cnn: Towards balanced learning for object detection"提出了一种金字塔卷积,以基于改进的三维卷积同时提取尺度和空间特征。
在这项工作中,我们在检测头中提出了尺度感知注意,这使得各种特征级别的重要性适应输入。
以前的工作试图提高对象检测中的空间感知,以更好地进行语义学习。已知卷积神经网络在学习图像中存在的空间变换方面有限。一些工作通过增加模型能力(大小)或涉及复杂的的数据扩充来缓解这一问题,从而导致推理和训练的计算成本极高。后来,人们提出了新的卷积算子来改进空间变换的学习。"Multi-scale context aggregation by dilated convolutions"提出使用扩张卷积来聚集来自指数扩展的感受野的上下文信息。"Deformable convolutional networks"提出了一种可变形卷积,用于对具有附加自学习偏移的空间位置进行采样。"Deformable convnets v2: More deformable, better results"通过引入学习的特征振幅重新计算偏移量,并进一步提高其能力。在这项工作中,作者在检测头中提出了一种空间感知注意力,它不仅将注意力应用于每个空间位置,而且自适应地将多个特征级别聚集在一起,以学习更具辨别力的表示。
对象检测起源于两阶段范式,该范式首先生成对象提议的区域,然后将提议分类为不同的类别和背景。RPN通过引入区域建议网络将两个阶段形成为单个卷积网络,使现代两阶段框架正式化。后来,一级物体探测器因其高效率而受到欢迎。"Focal loss for dense object detection"通过引入特定于任务的分支,进一步改进了体系结构,以超过两级检测器的精度,同时保持了以前的一级检测器的速度。
最近,越来越多的工作发现,对象的各种任务表示可以潜在地提高性能。“Mask r-cnn” 首先证明了将边界框和对象分割掩码相结合可以进一步提高性能。"Fcos:Fully convolutional one-stage object detection"提出使用中心表示以每像素预测方式解决对象检测。"Fcos:Fully convolutional one-stage object detection"通过根据对象的统计特征自动选择正样本和负样本,进一步提高了基于中心测度方法的性能。后来,"Rep points: Point set representation for object detection"将对象检测作为代表性关键点,以简化学习。"Centernet: Keypoint triplets for object detection."通过将每个对象检测为三组而不是一对关键点来减少错误预测,进一步提高了性能。最近,"Borderdet: Border feature for dense object detection."提出从每个边界的极端点提取边界特征,以增强点特征。
在这项工作中,作者在检测头中提出了一种任务感知注意力,它允许注意力部署在通道维度上,这可以自适应地支持各种任务,无论是单级/双级探测器,还是基于框/中心/关键点的探测器。
更重要的是,在检测头设计中,上述所有属性都集成到了一个统一的注意力机制中。它朝着理解注意力在物体检测头成功中所起的作用迈出了一步。
给定特征金字塔中L个不同级别的特征
F
i
n
={
F
i
}
i
=
1
L
F_{in}={F_i}^L_{i=1}
Fin={Fi}i=1L的串联,可以使用上采样或下采样将连续级别的特征调整到中值级别特征的尺度。重新缩放的特征金字塔可以表示为4维张量
F
∈
R
L
×
H
×
W
×
C
F∈ R^{L×H×W×C}
F∈RL×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}
F∈RL×S×C。基于这种表示,我们将探讨每个张量维度的作用。
1、物体尺度的差异与不同层次的特征有关。改进跨不同级别F的表示学习可以有利于对象检测的尺度感知。
2、不同物体形状的各种几何变换与不同空间位置的特征有关。改进F的不同空间位置的表示学习可以有利于物体检测的空间感知。
3、不同的对象表示和任务可以与不同通道的特征相关。改进跨F的不同通道的表示学习可以有利于对象检测的任务感知。
在本文中,作者发现在一个有效的注意力学习问题中,上述所有方向都可以统一。形成一个统一的检测头,以最大限度地提高它们的改进。
给定特征张量
F
∈
R
L
×
S
×
C
F∈ R^{L×S×C}
F∈RL×S×C,应用自注意力的一般公式为:
其中
π
(
⋅
)
π(·)
π(⋅)是注意力函数。通过全连接层来实现这种注意力功能的初步解决方案。但是,由于张量的维度太高,直接学习所有维度上的注意力函数在计算上是昂贵的。
相反,将注意力函数转换为三个连续的注意力,每个注意力只关注一个维度:
其中, π L ( ⋅ )、 π S ( ⋅ )和 π C ( ⋅ ) π_L(·)、π_S(·)和π_C(·) πL(⋅)、πS(⋅)和πC(⋅)分别是适用于维度L、S和C的三个不同的注意力函数。
首先引入了一种尺度感知注意力机制,以基于语义重要性动态融合不同尺度的特征。
其中
f
(
⋅
)
f(·)
f(⋅)是由1×1卷积层近似模拟线性函数,
σ
(
x
)
=
m
a
x
(
0
,
m
i
n
(
1
,
x
+
1
2
)
)
σ(x)=max(0,min(1,\frac {x+1}{2}))
σ(x)=max(0,min(1,2x+1))是hard-sigmoid函数。
我们应用另一个基于融合特征的空间注意力模块来关注在空间位置和特征级别之间一致共存的区分区域。考虑到S的高维度,我们将该模块分解为两个步骤:首先通过使用可变形卷积使注意力学习稀疏,然后在相同的空间位置聚合跨级别的特征:
其中K是稀疏采样位置的数量,
p
k
+
∆
p
k
p_k+∆_{pk}
pk+∆pk是通过自学习空间偏移的位置
∆
p
k
∆_{pk}
∆pk以聚焦于有区别的区域
∆
m
k
∆_{mk}
∆mk是位置pk处的自学习重要性标量。两者都是从F的层级的输入特征中学习的。
为了实现联合学习并概括对象的不同表示,在最后部署了任务感知注意力模块。它动态切换功能的开启和关闭通道,以支持不同的任务:
其中
F
c
F_c
Fc是第c个通道的特征切片,
[
α
1
,
α
2
,
β
1
,
β
2
]
T
=
θ
(
⋅
)
[α^1,α^2,β^1,β^2]^T=θ(·)
[α1,α2,β1,β2]T=θ(⋅)是一个超参数,用于学习控制激活阈值。
θ
(
⋅
)
θ(·)
θ(⋅)首先在L×S维度上进行全局平均池化以降低维数,然后使用两个全连接层和一个归一化层,最后应用移位的sigmoid函数将输出归一化为[−1, 1].
最后,由于以上三种注意机制是顺序应用的,可以多次嵌套下式,以有效地将多个
π
L
、
π
S
和
π
C
π_L、π_S和π_C
πL、πS和πC块堆叠在一起。下图显示了动态头(即简化的DyHead)块的详细配置。
总之,本文提出的动态头的整个物体检测范例如下图所示。任何类型的主干网络都可以用于提取特征金字塔,并将其进一步调整到相同的尺度,形成三维张量
F
∈
R
L
×
S
×
C
F∈ R^{L×S×C}
F∈RL×S×C,然后用作动态头的输入。接下来,依次堆叠几个DyHead块,包括尺度感知、空间感知和任务感知注意力模块。动态头的输出可用于不同的任务和对象检测表示,如分类、中心/块回归等。在下图的底部展示了每种注意力模块的输出。正如我们所看到的,来自主干的初始特征图由于是在ImageNet上预训练的。 通过尺度感知模块后,特征图对前景对象的尺度差异变得更加敏感;在通过空间感知模块之后,特征图变得更加稀疏,并集中于前景对象的辨别空间位置。最后,通过任务感知模块之后,特征映射根据不同下游任务的要求重新形成为不同的激活特征。这些可视化很好地证明了每个注意力模块的有效性。
一级检测器通过从特征图中密集采样来预测目标位置,这简化了检测器设计。典型的一级检测器(例如,RetinaNet)由提取密集特征的主干网络和单独处理不同任务的多个任务特定子网络分支组成。有前面的工作可以看出,对象分类子网络的行为与边界框回归的自网络的行为非常不同。与这种传统方法有争议的是,本文只将一个统一的分支而不是多个分支连接到主干。由于多重注意力机制的优势,它可以同时处理多个任务。以这种方式,可以进一步简化体系结构,并提高效率。最近,一级探测器的无锚框变体变得流行,例如,FCOS、A TSS和RepPoint将对象重新定义为中心测度和关键点,以提高性能。与RetinaNet相比,这些方法需要将中心预测或关键点预测附加到分类分支或回归分支,这使得任务特定分支的构建变得非常简单。相比之下,部署动态头部更灵活,因为它只在头部末端附加各种类型的预测,如下图所示。
两级检测器利用区域提议和ROI池化层从主干网络的特征金字塔中提取中间表示。为了配合这一特性,本文首先在ROI池层之前的特征金字塔上应用尺度感知注意力和空间感知注意力,然后使用任务感知注意力来替换原始的全连接层,如下图所示:
可变形卷积通过引入稀疏采样,显著改进了传统卷积层的变换学习。它已被广泛应用于目标检测主干以增强特征表示。尽管它很少用于对象检测头,但可以将其视为在我们的表示中仅对S子维度建模。作者发现主干中使用的可变形模块可以与所提出的动态头部互补。事实上,通过ResNext-101-64x4d主干的可变形变体,我们的动态头实现了最先进的目标检测结果。
非局部网络是利用注意力模块来增强目标检测性能的先驱工作。然而,它使用点积的简单公式,通过融合来自不同空间位置的其他像素的特征来增强像素特征。这种行为可以被视为在本文的表示中仅建模L×S子维度。
最近,有一种趋势是将Transformer模块从自然语言处理引入计算机视觉任务。初步工作证明了在改进目标检测方面的良好结果。Transformer提供了一个简单的解决方案,通过应用多头全连接层来学习交叉注意力对应关系并融合不同模态的特征。这种行为可以被视为在本文的表示中仅建模S×C子维度。
上述三种类型的注意力只对特征张量中的子维度进行部分建模。作为一个统一的设计,本文的动态检测头将不同维度的注意力结合到一个连贯的实现中。以下实验表明,这种专用设计可以帮助现有的物体探测器实现显著的增益。此外,与现有解决方案中的隐式工作原理相比,本文的注意力机制明确地解决了对象检测的挑战。
根据常用设置对MS-COCO数据集进行了评估。MS-COCO包含从网络上收集的80类约160K图像。数据集被分成train2017、val2017和test2017子集,分别有118K、5K和41K张图像。标准平均平均精度(AP)度量用于不同IoU阈值和对象尺度下的结果。在所有实验中,只在train2017图像上训练,而不使用任何额外数据。对于消融研究的实验,本文评估了val2017子集的性能。当与最先进的方法进行比较时,我们在测试开发子集上报告从测试服务器返回的正式结果。
基于Mask R-CNN基准的流行实现,将动态头实现为插件。如果没有特别提到,动态头部是用ATSS框架训练的。所有模型都是用一个计算节点训练的,每个计算节点有8个V100 GPU,每个GPU有32GB内存。
我们在所有消融研究中使用ResNet-50作为模型主干,并使用标准1x配置对其进行训练。其他模型使用中介绍的标准2x训练配置进行训练。使用0.02的初始学习率和1e-4的权重衰减和0.9的动量。在67%和89%的训练epoch,学习率下降了0.1倍。使用随机水平翻转的标准增强。为了与以前用多尺度输入训练的方法相比,我们还对选择性模型进行了多尺度训练。
为了与最新方法进行比较,还评估了多尺度测试的最佳模型。其他技巧,如模型EMA、马赛克、混合、标签平滑、soft-NMS或自适应多尺度测试,均未使用。
本文进行了一系列消融研究,以证明动态头的有效性和效率。
注意力模块的有效性:
首先对动态头中不同组件的有效性进行对照研究,方法是将其逐渐添加到基线。如下表所示,“L.”、“S.”和“C.”分别代表我们的尺度感知注意力模块、空间感知注意力模块和任务感知模块。我们可以观察到,将每个组件单独添加到基线实现中,可以将其性能提高0.9 AP、2.4 AP和1.3 AP。由于空间感知模块在三个模块中占主导地位,因此预计空间软件注意模块的收益最大。当我们将“L”和“S”添加到基线时,它将持续提高2.9 AP的性能。最后,我们的全动态头枕将基线显著提高3.6 AP。该实验表明,不同的组件可以作为一个连贯的模块工作。
注意学习的有效性:在动态头模块中演示了注意力学习的有效性。下图显示了在尺度感知注意力模块中不同级别特征的学习尺度比(通过将较高分辨率的学习权重除以较低分辨率的学习加权来计算)的趋势。使用COCO val2017子集的所有图像计算直方图。很明显,我们的尺度感知注意模块倾向于将高分辨率特征图(图中的“5级”紫色直方图)调整为低分辨率特征图,将低分辨率特征地图(图中“1级”蓝色直方图尺度差异形成不同的特征水平。这证明了尺度感知注意力学习的有效性。
下图显示了应用不同数量(即2,4,6)的注意力模块块前后的特征图输出。在应用我们的注意力模块之前,从主干提取的特征图非常嘈杂,无法聚焦于前景对象。随着特征图通过更多的注意力模块(如图所示,从块2到块6),很明显,特征图覆盖了更多的前景对象,并更准确地聚焦于它们的辨别空间位置。这种可视化很好地证明了空间感知注意力学习的有效性。
头部深度效率:我们通过控制深度(块数)来评估动态头的效率。如下表所示,改变使用的DyHead块的数量(例如,1、2、4、8、10块),并将其性能和计算成本(GFLOP)与基线进行比较。通过将更多块堆叠到8块,我们的动态头可以从深度的增加中受益。值得注意的是,我们使用2块的方法已经以更低的计算成本超过了基线。同时,即使有6个块,与主干的计算成本相比,计算成本的增加也可以忽略不计,同时大大提高了准确性。它证明了我们方法的有效性。
现有对象检测器比较:通过将动态头部插入流行的对象检测器(如FasterRCNN、RetinaNet、ATSS、FCOS和RepPoints)来评估动态头部的泛化能力。这些方法代表了各种各样的对象检测框架(例如,两阶段与一阶段、基于锚的与无锚的、基于框的与基于点的)。如下表所示,本文的动态头显著提高了所有流行的物体探测器1.2∼ 3.2 AP。它证明了本方法的通用性。
与不同骨干结合: 首先演示了动态头部与不同骨干的兼容性。如下表所示,通过将动态头与ResNet-50、ResNet-101和ResNeXt-101主干集成来评估对象检测器的性能,并与具有类似配置的最近方法进行比较,包括Mask R-CNN、Cascade RCNN、FCOS、A TSS和BorderDet。我们的方法始终以很大的优势优于以前的方法。与最佳探测器BorderDet相比,在相同的设置下,本文的方法在ResNet-101主干上的性能优于1.1个AP,在ResNeXt-64x4d-101主干上的表现优于1.2个AP。
与最先进的探测器相比:将本文的方法与最先进的检测器进行了比较。如下表所示,将这些现有工作归纳为两类:一类使用多尺度训练,另一类同时使用多尺度训练和多尺度测试。与仅进行多尺度训练的方法相比,本文的方法在52.3 AP的情况下达到了新的水平,训练时间仅为2倍。与EfficientDet和SpineNet相比,本方法具有竞争力,学习效率更高,训练时间明显缩短1/20。与利用Transformer模块作为注意力的最新工作相比,我们的动态头部优于这些方法,其AP增益超过2.0,同时使用的训练时间比它们少。这表明,本文的动态头部可以将来自不同视角的多种注意力模式连贯地组合成一个统一的头部,从而提高效率和效果。将本方法与使用多尺度训练和多尺度测试的测试时间增强(TTA)的最新结果进行了比较。动态头有助于在54.0 AP下获得最优结果。
本研究表明,设计和学习目标检测头中的注意力是一个有趣的方向,值得更多的关注。这项工作只需要一步,可以在以下方面进一步改进:如何使全注意力模型易于学习和高效计算,以及如何在头部设计中系统地考虑更多的注意力模式以获得更好的性能。
动态头部可以进一步受益于更大的输入大小和使用自训练方法生成的额外数据。将最大图像边从1333增加到2000,并使用最小图像边从480变化到1200的多尺度训练。与之前训练方案类似,避免使用更多技巧来确保再现性。如上表所示,与最新的作品相比,动态头带来了显著的增益。