检测将物体识别为图像中与轴对齐的框。大多数成功的对象探测器列举了一个几乎详尽的潜在对象位置列表,并对每个对象进行分类。这是浪费,效率低下,并且需要额外的后处理。在本文中,我们采取了一种不同的方法。我们将一个对象定为一个单点-它的边界框的中心点。我们的检测器使用关键点估计来寻找中心点,并回归到所有其他对象属性,如大小,3D位置,方向,甚至姿态。我们基于中心点的方法,CenterNet,是端到端可微的,比相应的基于边界框的检测器更简单、更快、更准确。在MS COCO数据集上,CenterNet实现了最好的速度和精度权衡,在142帧每秒下获得了28.1%的AP,在52帧每秒下获得了37.4%的AP,在1.4帧每秒下获得了45.1%的多尺度测试AP。我们使用相同的方法来估计KITTI基准中的3D边界框和COCO关键点数据集上的人类姿态。我们的方法能够与复杂的多阶段方法竞争,并且可以实时运行。
目标检测支持许多视觉任务,如实例分割[7,21,32],姿态估计[3,15,39],跟踪[24,27]和动作识别[5]。它在监控[57]、自动驾驶[53]和视觉问答[1]中都有下游应用。当前的对象检测器通过紧密围绕对象的轴对齐边界框表示每个对象[18,19,33,43,46]。然后,他们将目标检测简化为大量潜在目标边界框的图像分类。对于每个边界框,分类器确定图像内容是特定对象还是背景。One-stage检测器[33,43]在图像上滑动一个可能的边界框的复杂排列,称为锚,并直接对它们进行分类,而不指定框的内容。Two-stage检测器[18,19,46]对每个潜在框重新计算图像特征,然后对这些特征进行分类。后处理,即非极大值抑制,然后通过计算包围框的IoU来消除对同一实例的重复检测。这种后处理很难区分和训练[23],因此目前大多数检测器不是端到端可训练的。尽管如此,在过去的5年中[19],这个想法已经取得了很好的实证成功[12,21,25,26,31,35,47,48,56,62,63]。然而,基于滑动窗口的对象检测器有点浪费,因为它们需要枚举所有可能的对象位置和尺寸。
图2 我们将对象建模为其边界框的中心点。边框大小和其他对象属性是从中心的关键点特征推断出来的。最好是彩色的。
在本文中,我们提供了一个更简单和更有效的替代方案。我们通过包围框中心的一个点来表示对象(参见图2)。然后,其他特性(例如对象大小、尺寸、3D范围、方向和姿势)将直接从中心位置的图像要素回归。目标检测是一个标准的关键点估计问题[3,39,60]。我们只需将输入图像输入一个完全卷积网络[37,40],该网络会生成一个热图。热图中的峰值对应于物体中心。每个峰值处的图像特征预测物体的边界框高度和宽度。该模型使用标准的密集监督学习进行训练[39,60]。推理是单次网络前向传递,没有后处理的非极大抑制。
图4 不同任务的网络输出:最上面的图是用于目标检测,中图是用于3D目标检测,下图是用于姿态估计。所有的模式都是由一个公共主干网络产生,不同的3x3和1x1卷积输出由Relu进行分割
我们的方法是通用的,只需很小的工作量就可以扩展到其他任务。通过预测每个中心点的额外输出,我们提供了3D对象检测[17]和多人人体姿势估计[4]的实验(参见图4)。对于3D边界框估计,我们回归到对象绝对深度、3D边界框尺寸和对象方向[38]。对于人体姿态估计,我们将二维关节位置视为偏离中心的位置,并在中心点位置直接回归到它们。
图1 实时检测器的COCO验证的速度和精度权衡。Centernet的性能优于一系列最先进的算法
我们的方法Centernet的简单性使其能够以非常高的速度运行(图1)。使用简单的Reset-18和Up-Convolutional layers [55],我们的网络运行在142个FPS时具有28.1%COCO边界框AP。通过精心设计的关键点检测网络DLA-34 [58],我们的网络以52帧/秒的速度实现了37.4%的COCO AP。使用最先进的关键点估计网络,Hourglass-104 [30,40],和多尺度测试,我们的网络以1.4 FPS实现了45.1%的COCO AP。在3D包围框估计和人体姿态估计方面,我们以更高的推理速度与最先进的技术竞争。代码见 https://github.com/xingyizhou/CenterNet.
基于区域分类的目标检测。RCNN[19]是第一个成功的深度对象探测器,它从大量的候选区域[52]中枚举对象位置,对它们进行分类,并使用深度网络对其进行分类。Fast-RCNN[18]改为裁剪图像特征,以节省计算。然而这两种方法都依赖于低层区域所建议的方法。
使用隐式锚点的对象检测。Fast-RCNN[46]在检测网络内生成区域提议。它在低分辨率图像网格周围采样固定形状的边界框(锚点),并将其分类为“前景或非前景”。锚点被标记为与任何Ground Truth对象重叠大于0.7的前景,重叠小于0.3的为背景,或者被忽略。每个生成的区域建议再次被分类[18]。将建议的分类器改变为多类分类器形成了One-Stage检测器的基础。对One-Stage检测器的几个改进包括锚定形状先验[44,45],不同的特征分辨率[36],以及不同样本间的loss re-weighting[33]。
(a)基于标准锚的检测。对于任何对象,重叠IoU > 0.7的锚计数为正,重叠IoU < 0.3的锚计数为负,否则被忽略。
(b)基于中心点的检测。中心像素被分配给对象。附近的点数会减少负损失。回归对象大小。
我们的方法与基于锚的One-Stage阶段方法密切相关[33,36,43]。中心点可以看作是一个单一的形状无关的锚点(参见图3)。然而,有一些重要的区别。首先,我们的CenterNet只根据位置分配“锚”,而不是框的重叠[18]。我们没有用于前景和背景分类的手动阈值[18]。其次,每个对象只有一个正的“锚”,因此不需要NonMaximum Suppression (NMS)[2]。我们只是提取关键点热图中的局部峰值[4,39]。第三,与传统的物体探测器[21,22](输出步幅为16)相比,Centernet使用更高的输出分辨率(输出步长为4)。这消除了对多个锚[47]的需要。
基于关键点估计的目标检测。我们并不是第一个使用关键点估计进行目标检测的人。CornerNet[30]检测两个边界框角作为关键点,而ExtremeNet[61]检测所有对象的顶部、左侧、底部、最右侧和中心点。这两种方法都建立在与我们的Centernet相同鲁棒性的关键点评估网络之上。但是,它们在关键点检测之后需要一个组合分组阶段,这大大降低了每个算法的速度。另一方面,我们的CenterNet简单地为每个对象提取一个中心点,而不需要分组或后处理。
单目3D对象检测。3D包围框估计为自动驾驶提供动力[17]。Deep3Dbox [38]使用Slow-RCNN [19]方式的框架,首先检测2D对象[46],然后将每个对象反馈送到3D估计网络。3D RCNN [29]在fast-RCNN[46]上增加了一个额外的头部,然后是3D投影。Deep Manta[6]使用由粗到细的快速反应神经网络[46],在许多任务中进行训练。我们的方法类似于Deep3Dbox[38]或3DRCNN[29]的One-Stage阶段版本。因此,Centernet比竞争对手的方法简单得多,速度也快得多。
5.实现细节
我们用了4种网络结构进行实验,ResNet-18, ResNet-101 [55], DLA-34 [58], and Hourglass-104 [30]。我们使用可变形的卷积层[12]修改了ResNets和DLA-34,并使用Hourglass(沙漏)网络。
Hourglass。堆叠沙漏网络[30,40]对输入进行4倍下采样,然后是通过两个连续的沙漏模块。每个沙漏模块都是一个对称的5层上下卷积网络,具有跳跃连接。这个网络相当大,但通常产生最好的关键点估计性能。
ResNet。Xiao等人[55]在标准残差网络[22]上增加了三个向上卷积网络,以获得更高分辨率的输出(输出步幅4)。为了节省计算量,我们首先将三个上采样层的通道分别改为256,128,64。然后在每个上行卷积前分别添加一个3x3的可变形卷积层,通道分别为256,128,64。向上卷积的核被初始化为双线性插值。参见补充部分以获得详细的架构图。
DLA。深层聚合(Deep Layer Aggregation, DLA)[58]是一种具有层次跳跃连接的图像分类网络。我们利用DLA的全卷积上采样版本进行dense预测,该版本使用迭代深度聚集来对称地提高特征图的分辨率。我们用从下层到输出的可变形卷积[63]来增加跳跃连接。具体地说,我们在每一上采样层用3×3可变形卷积代替原来的卷积。有关详细的体系结构图,请参阅附录。
我们在每个输出头之前增加了一个256个通道的3×3卷积层。最后的1 × 1卷积产生所需的输出。我们在补充材料中提供了更多细节。
训练。我们以512 × 512的输入分辨率进行训练。这为所有模型产生了128×128的输出分辨率。我们使用随机翻转、随机缩放(0.6到1.3之间)、裁剪和颜色抖动作为数据增强,并使用Adam[28]优化整体目标。我们不使用增强来训练3D估计分支,因为裁剪或缩放会改变3D测量。对于ResNet和DLA-34,我们以128的batch_size(在8个gpu上),学习率以5e-4进行140个epoch的训练,学习速率分别在90和120个epoch时下降10倍(遵循[55])。对于Hourglass-104,我们遵循ExtremeNet[61],使用batch_size为29(在5个GPU上,主GPU的batch_size为4)和学习率2.5e-4进行50个epoch训练,,学习率在40个epoch时下降10倍。对于检测,我们对来自ExtremeNet[61]的Hourglass-104进行微调,以节省计算量。Resnet101和DLA-34的下采样层使用ImageNet预训练进行初始化,上采样层是随机初始化的。Resnet-101和DLA-34的训练在8个 TITAN-V gpu上运行2.5天,而Hourglass-104需要5天。
推理。我们使用三个水平的测试增强:不增强,翻转增强,翻转和多尺度(0.5,0.75,1,1.25,1.5)。对于翻转,我们在解码边界框之前对网络输出进行平均。对于多尺度,我们使用NMS来合并结果。这些增强会产生不同的速度-精度权衡,如下一节所示。
6.实验
我们在MS COCO数据集[34]上评估了我们的目标检测性能,该数据集包含118k张训练图像(train2017), 5k张验证图像(val2017)和20k张保留测试图像(test-dev)。我们报告了所有IOU阈值(AP)、IOU阈值0.5(AP50)和0.75 (AP75)的平均精度。本补充材料包含了对PascalVOC[14]的附加实验。
6.1 目标检测
表1:不同网络在COCO验证集上的速度/精度权衡。我们展示了没有测试增强(N.A.)、翻转测试(F)和多尺度增强(MS)的结果。
表1显示了我们使用不同的骨干和测试选项进行COCO验证的结果,而图1将CenterNet与其他实时检测器进行了比较。运行时间在我们的本地机器上测试,使用Intel Core i7-8086K CPU, Titan Xp GPU, Pytorch 0.4.1, CUDA 9.0和cudn 7.1。我们下载代码和预训练模型12来测试同一机器上每个模型的运行时。
Hourglass-104以相对较好的速度实现了最好的精确度,在7.8 FPS下AP达到42.2%。在这个骨干网络上,CenterNet在速度和准确性上都优于CornerNet [30] (4.1 FPS下40.6% AP)和ExtremeNet [61](3.1 FPS下40.3% AP)。运行时间的改善来自更少的输出头和更简单的框解码方案。更高的精确度表明中心点比角点或极值点更容易检测。
使用ResNet-101,我们的性能优于使用相同主干网络的RetinaNet[33]。我们只在上采样层使用可变形卷积,这不会影响RetinaNet。在相同准确率下(45FPS下Centernet 34.8%AP(输入512×512)与18FPS下RetinaNet 34.4%AP(输入500×800)相比,我们的速度提高了一倍多)。我们最快的ResNet-18型号还在142FPS下实现了28.1%的COCO AP的可观性能。DLA-34提供了最好的速度/精度权衡。它以52FPS和37.4%AP运行。这是YOLOv3[45]的两倍多的速度并提高了4.4%的AP。通过翻转测试,我们的模型仍然比YOLOv3[45]快,并达到了Faster-RCNN-FPN[46]的精度水平(CenterNet在28帧每秒下39.2% AP vs Faster-RCNN在11帧每秒下39.8% AP)。
表2. COCO test-dev上最先进的检测器对比。上方:Two-Stage检测器,下方:One-Stage检测器。我们展示了单尺度/多尺度测试的大多数One-Stage检测器。帧每秒(FPS)是尽可能在同一台机器上测量的。斜体的FPS突出了这些情况,其中的性能指标是复制自原始出版物。破折号表示代码和模型以及公共计时都不可用的方法。
与最先进的对比。我们与表2中COCO TEST-DEV中的其他最先进的检测器进行了比较。在多尺度评估中,使用Hourglass-104的CenterNet实现了45.1%的AP,优于所有现有的Ons-Stage检测器。精密的Two-Stage探测器[31,35,48,63]更准确,但也更慢。对于不同的对象大小或IoU阈值,CenterNet和滑动窗口检测器之间没有显著差异。CenterNet的行为就像一个普通的探测器,只是更快。
6.1.1 额外实验
在不幸的情况下,如果两个不同的物体完全对齐,它们可能会共享同一个中心。在这种情况下,Centernet只会检测到其中一个。我们首先研究这种情况在实践中发生的频率,并将其与竞争方法的missing检测联系起来。
中心点碰撞。在COCO训练集中,有614对物体在步幅4时碰撞在同一中心点上。共有860001个对象,由于中心点发生碰撞,因此CenterNet无法预测< 0.1%的对象。这远低于slow- or fast-RCNN由于不完善的区域提议[52]而丢失的数据(约占2%),也远低于基于锚点的方法由于锚点放置不足而丢失的数据(在0.5 IOU阈值下,Faster-RCNN有15个锚点时丢失的数据为20.0%)。此外,715对物体具有边界框IOU> 0.7并且将被分配给两个锚点,因此基于中心的分配导致较少的冲突。
NMS。为了验证CenterNet不需要基于IoU的NMS,我们将其作为预测的后处理步骤运行。对于DLA-34(翻转测试),AP从39.2%提高到39.7%。对于Hourglass-104,AP保持在42.2%。考虑到影响较小,我们不使用它。
接下来,我们删除模型的新超参数。所有实验都是在DLA-34上进行的。
(a)测试分辨率:较大的分辨率性能更好,但运行速度较慢。
(b)尺寸回归权重。λsize≤0.1,效果良好
(c)回归损失。L1 loss比Smooth L1更好。
(d)训练计划。更长表现更好。
表3:在COCO验证集上设计选择的对比。结果以COCO AP显示,时间以毫秒为单位
训练和测试的分辨率。在训练期间,我们将输入分辨率固定为512×512。在测试过程中,我们遵循CornerNet [30]来保持原始图像分辨率,并将输入进行Zero-Padding到网络的最大步幅。对于ResNet和DLA,我们用32像素填充图像,对于HourglassNet,我们使用128像素填充图像。如表3a所示,保持原来的分辨率比固定测试分辨率稍好。以较低的分辨率(384 × 384)进行训练和测试,速度虽然提高了1.7倍,但降低了3AP。
回归损失。我们将普通L1损失与平滑L1[18]进行尺寸回归比较。我们在Table 3c中的实验表明,L1比Smooth L1要好得多。它在精细尺度下产生更好的精度,这是COCO评估指标所敏感的。这在关键点回归中独立观察到[49,50]。
边界框尺寸权重。我们分析了我们的方法对损失权重λsize的敏感性。表3b显示λsize为0.1时给出了较好的结果。对于较大的值,由于损失的范围是从0到输出尺寸w/R或h/R,而不是0到1,因此AP显著降低。但是,较低的权重不会显著降低该值。
训练计划。默认情况下,我们训练关键点估计网络140个epochs,学习率在90个epochs时下降。如果我们在降低学习率之前将训练周期增加一倍,性能将进一步提高1.1AP(表3d),但代价是训练时间要长得多。为了节省计算资源(和polar bears),我们在消融实验中使用140个epochs,但与其他方法相比,DLA坚持使用230个epoch。
最后,通过回归到多个对象大小,我们尝试了Centernet的多个“锚定”版本。这些实验没有取得任何成功。请参阅补充内容。
6.2. 3D检测 (略)
6.3. 姿态评估
最后,我们在MS Coco数据集中评估了Centernet对人体姿势估计的影响[34]。我们评估keypoint AP,它类似于边界框AP,但是用对象keypoint相似性代替了边界框IOU。在COCO测试开发平台上进行了测试,并与其他方法进行了比较。
我们用DLA-34和Hourglass-104进行了实验,它们都是从中心点检测进行微调的。DLA-34收敛于320个epochs(8个GPus约3天),Hourglass-104在150epochs收敛(5个GPU 8天)。所有额外的损耗权重都设置为1.所有其他超参数与对象检测相同。
表5:COCO test-dev上的关键点检测。-reg/ -jd分别用于直接中心偏移回归和最近关节检测的匹配回归。结果显示在COCO关键点AP中。越高越好。
结果如表5所示。直接回归到关键点表现合理,但不是最先进的。它在高IoU的情况下尤其艰难。将我们的输出投影到最接近的关节检测可以改善整个结果,并且与最先进的多人姿态估计器相比具有竞争力[4,21,39,41]。这验证了Centernet是通用的,易于适应新的任务。
图5展示了所有任务的定性示例。
图5:定性结果。所有图像都是按主题挑选的,没有考虑我们的算法性能。第一行:COCO验证上的目标检测。第二行和第三行:基于COCO验证的人体姿态估计。对于每一对,我们显示了中心偏移回归(左)和热图匹配(右)的结果。第四行和第五行:基于Kitti验证的3D边界框估计。我们显示了投影边界框(左)和鸟瞰地图(右)。Ground Truth检测显示在实心红色实心框中。中心热图和3D框显示在原始图像上。
7.总结
综上所述,我们提出了一种新的对象表示法:目标作为点。我们的Centernet对象检测器建立在成功的关键点估计网络的基础上,可以找到对象中心,并回归到它们的大小。该算法简单、快速、准确、端到端可微,无需任何NMS后处理。这个想法是普遍的,除了简单的二维检测之外,还有广泛的应用。Centernet可以在一次正向传递中估计一系列附加对象属性,例如姿势、3D方向、深度和范围。我们的初步实验是鼓舞人心的,并为实时目标识别和相关任务开辟了新的方向。
附录A:模型结构
图6:模型图。方框中的数字代表了到图像的步幅。(a):Hourglass网络[30]。我们按照CornerNet[30]中的方式使用它。(b):具有反卷积的ResNet[55]。我们在每个上采样层之前增加一个3×3可变形卷积层[63]。具体地说,我们首先使用可变形卷积来改变通道,然后使用反卷积来对特征图进行上采样(这两个步骤在32→16中分别示出)。我们将这两个步骤一起显示为16→8和8→4的虚线箭头)。(c):原始DLA-34[58]用于语义切分。(d):改进型DLA-34。我们从底层增加了更多的跳跃连接,并将上采样阶段的每一卷积层升级为可变形卷积层。