首页 > 科技 > 中科院牛津华为开源目标检测最强算法CenterNet,COCO上可达47mAP

中科院牛津华为开源目标检测最强算法CenterNet,COCO上可达47mAP

摘要

在对象检测中,基于关键点的方法经常遭受大量不正确的对象边界框,可以说是由于缺少对裁剪区域的额外观察。本文提出了一种有效的解决方案,以最小的成本探索每个裁剪区域内的视觉模式。我们在一个名为CornerNet的代表性基于关键点的代表检测器上构建我们的框架。我们的方法名为CenterNet,将每个对象检测为三元组而不是一对关键点,从而提高精度和召回率。因此,我们设计了两个名为级联角池和中心池的定制模块,它们分别丰富了左上角和右下角收集的信息,并在中心区域提供了更多可识别的信息。在MS-COCO数据集上,CenterNet实现了47.0%的AP,其性能优于所有现有的单级探测器至少4.9%。同时,通过更快的推理速度,CenterNet展示了与顶级两级探测器相当的性能。 代码可在https://github.com/Duankaiwen/CenterNet获得。

1、简介

借助深度学习,尤其是卷积神经网络[11](CNNs),物体检测得到了显着的改进和提升。

在当前时代,最流行的流程图之一是基于锚节点,它放置了一组具有预定义大小的矩形,并在帮助下找到真实物体的位置。这些方法通常需要大量锚点以确保与地面实况对象具有足够高的IoU(交联结合)速率,并且每个锚箱的尺寸和纵横比需要手动设计。另外,锚点通常不与真实物体框对齐,这不利于边界框分类任务。

为了克服基于锚点的方法的缺点,提出了一种名为CornerNet的基于关键点检测对象的提议。它通过一对角点关键点表示每个对象,这样就不需要锚盒,并且达到了最高的物体检测精度。尽管如此,CornerNet的表现仍然受到其引用对象全局信息的能力相对较弱的限制。 也就是说,由于每个对象都是由一对角构成的,因此算法对于检测对象的边界很敏感,同时不知道应该将哪些关键点对分组到对象中。因此,如图1所示,它经常产生一些不正确的边界框,其中大部分可以用补充信息(例如纵横比)容易地滤除。

图1:在第一行中,我们可视化CornerNet的前100个边界框(根据MS-COCO数据集标准)。 真实情况和预测对象分别用蓝色和红色标记。 在第二行中,我们显示可以通过检查中心部分来确定正确的预测。

为了解决这个问题,我们为CornerNet提供了感知每个建议区域内的视觉模式的能力,以便它可以自己识别每个边界框的正确性。在本文中,我们提出了一个名为CenterNet的低成本但有效的解决方案,它探索了中心区域的一部分,即靠近几何中心的区域,有一个额外的关键点。我们直观感觉是这样的,如果预测的边界框与真实物体框具有高IoU,那么其中心区域中的中心关键点被预测为相同类的概率很高,反之亦然。因此,在推理期间,在生成方案之后,作为一对角点关键点,我们通过检查是否存在属于其中心区域的同一类的中心关键点来确定方案是否确实是对象。 如图1所示,这个想法是使用三元组而不是一对关键点来表示每个对象。于是,为了更好地检测中心关键点和角落信息,我们提出了两种策略来分别充实中心和角落信息。第一个策略称为中心池,在分支中用于预测中心关键点。中心池有助于中心关键点在对象内获得更多可识别的视觉模式,这使得更容易感知到中心方案。我们通过获得最大总和来实现这一目标,在特征图上的中心关键点的水平和垂直方向上的反应,来预测中心关键点。第二种策略被命名为级联角落池,它使原始角落池模块具有感知内部信息的能力。我们通过在特征图上物体的边界和内部方向上取出最大总和的响应预测角点来实现这一点。根据经验,我们验证这种双向汇集方法更稳定,即对特征级噪声更稳健,这有助于提高精度和召回率。

我们在MS-COCO数据集上评估提出的CenterNet,这是大规模物体检测最受欢迎的基准之一。CenterNet,包含中心池和级联角池,在测试集 AP得分为47:0%,大大优于所有现有的单级探测器。使用52层CenterNet的平均预测时间为270毫秒一帧,每个图像使用104层CenterNet的平均预测时间为340毫秒一帧,CenterNet非常高效,但与其他两个检测器的最先进性能非常匹配。本文的其余部分安排如下。 第2节简要回顾了相关工作,第3节详细介绍了拟议的CenterNet。 实验结果在第4节中给出,然后在第5节中得出结论

2、相关工作

物体检测涉及定位和分类对象。在深度学习时代,由深度卷积神经网络驱动,物体检测方法可大致分为两种主要类型的流水线,即两层方法和一层方法。两阶段方法将对象检测任务划分为两个阶段:提取RoI,然后对RoI进行分类和回归。R-CNN使用选择性搜索方法来定位输入图像中的RoI,并使用基于DCN的区域分类器来独立地对RoI进行分类。SPPNet和Fast-RCNN通过从特征图中提取RoI来改进R-CNN。通过引入RPN(区域提议网络),允许更快地对RCNN进行端到端的训练。 RPN可以通过回归锚框来生成RoI。后来,锚箱广泛用于物体检测任务。 Mask-RCNN在Faster-RCNN上添加了一个隐藏的预测分支,可以检测物体并同时预测它们的分类。R-FCN用位置敏感的得分图替换完全连接的层,以便更好地检测物体。级联R-CNN通过训练具有增加的IoU阈值的一系列检测器来解决训练中的过度拟合和推断时的质量不匹配的问题。提出了基于关键点的物体检测方法,以避免使用锚框和边界框回归的缺点。其他有意义的作品针对物体检测中的不同问题提出,例如,[47,21]专注于建筑设计,[1,9,36,44]注重语境关系,[22,3]侧重于多尺度统一。

一阶段方法移除RoI提取过程并直接对候选锚箱进行分类和回归。YOLO [31]使用较少的锚箱(划分输入图像变成S×S网格)做回归和分类。 YOLOv2 [32]通过使用多锚框和新的边界框回归的方法来提高性能。SSD [27]将锚箱密集地放置在输入图像上,并使用来自不同卷积层的特征来对锚箱进行回归和分类。 DSSD [8]在SSD中引入了解卷积模块,以结合低级和高级功能。 而R-SSD [17]在不同的要素层中使用合并和反卷积操作来组合低级和高级功能。 RON[19]在有效提取多尺度特征之前,提出反向连接和对象性。 RefineDet [45]精炼锚箱的位置和大小两次,它继承了一层和两层的优点。 CornerNet [20]是另一种基于关键点的方法,它使用一对角直接检测物体。虽然CornerNet实现了高性能,但它还有更大的提升空间。

3. 我们的途径

3.1. 基线与动机

本文使用CornerNet [20]作为基线。为了检测角落,CornerNet产生两个热图:左上角的热图和右下角的热图。热图表示不同类别的关键点的位置,并为每个关键点分配置信度分数。 此外,它还预测每个角落的嵌入和一组偏移。嵌入用来识别两个角是否来自同一对象。

偏移学习从热图到输入图像重新映射角图。为了生成对象边界框,分别根据它们的分数从热图中选择前k个左上角和右下角。然后,计算一对角的嵌入矢量的距离以确定成对的角是否属于同一对象。如果距离小于阈值,则生成对象边界框。为边界框分配置信度分数,该分数等于角对的平均分数。

在表1中,我们提供了对CornerNet的更深入分析。我们计算CornerNet的FD1(错误发现)率MS-COCO验证数据集,定义为不正确边界框的比例。定量结果表明,即使在低IoU阈值下,不正确的边界框也占很大比例,例如,CornerNet在IoU = 0:05时获得32:7%的FD率。这意味着平均而言,每100个对象边界框中有32:7的IoU低于0:05,具有真实性。

小的不正确的边界框甚至更多,这实现了60:3%的FD率。其中一个可能的原因在于CornerNet无法查看边界框内的区域。为了使CornerNet [20]能够感知边界框中的视觉模式,一种可能的解决方案是将CornerNet调整为两阶段探测器,该探测器使用RoI池[10]来查看边界框中的视觉模式。然而,众所周知,这种范例在计算上是昂贵的。在本文中,我们提出了一种高效的替代方案称为CenterNet,探索每个边界框内部的视觉模式。为了检测物体,我们的方法使用三元组而不是一对关键点。通过这样做,我们的方法仍然是一个阶段的检测器,但部分继承了RoI池的功能。我们的方法只关注中心信息,我们的方法成本很低。同时,我们通过使用中心池和级联角池,进一步将对象内的视觉模式引入关键点检测过程。

表1:CornerNet的错误发现率(%)。错误发现率反映了错误边界的分布框。结果表明不正确的边界框占很大比例

3.2. 物体检测作为关键点三元组

图2

整个网络架构如图2所示。我们通过中心关键点和一对角来表示每个物体。具体来说,我们在CornerNet的基础上为中心关键点嵌入了热图,并预测了中心关键点的偏移。 然后,我们使用CornerNet [20]中提出的方法生成top-k边界框。但是,为了有效地过滤掉不正确的边界框,我们利用检测到的中心关键点并采用以下程序:(1)根据得分选择top-k中心关键点; (2)使用相应的偏移量将这些中心关键点重新映射到输入图像; (3)为每个边界框定义一个中心区域并检查是否存在中心区域包含中心关键点。请注意,已检查中心关键点的类标签应与边界框的类标签相同; (4)如果点在中部地区检测到中心关键,我们将保留边界框。边界框的分数将由三个点的平均分数代替,即左上角,右下角和中心关键点。 如果在其中心区域中未检测到中心关键点,则将删除边界框。

边界框中的中心区域的大小会影响检测结果。例如,较小的中心区域导致小边界框的召回率较低,而较大的中心区域导致较大的边界框的精度较低。因此,我们提出了一种尺度感知的中心区域,以自适应地适应边界框的大小。尺度感知的中心区域倾向于为小的边界框生成相对大的中心区域,而对于大的边界框则生成相对小的中心区域。假设我们想确定是否需要一个边界框保存。设tlx和tly表示i和brx的topleft角的坐标,bry表示i的右下角的坐标。 定义中心区域j。设ctlx和ctly表示j和cbrx的左上角的坐标,cbry表示j的右下角的坐标。那么tlx,tly,brx,bry,ctlx,ctly,cbrx和cbry应该满足以下关系:

公式1

其中n是奇数,它决定了中心区域j的比例。在本文中,对于小于和大于150的边界框的比例,n被设置为3和5。图3示出了当n = 3且n = 5时的两个中心区域。根据等式(1),我们可以确定尺度感知的中心区域,然后检查中心区域是否包含中心关键点。


图3

3.3. 丰富中心和角落信息

中心池。物体的几何中心没有必须传达非常容易识别的视觉模式(例如,人体头部包含强烈的视觉图案,但中心关键点通常位于人体中间)。为了解决这个问题,我们提出使用中心池来捕获更丰富和更易识别的视觉模式。 图4(a)显示了中心池的原理。中心池的详细过程如下:主干输出特征图,并确定特征图中是否有像素是一个中心关键点,我们需要在水平和垂直方向找到最大值并将它们加在一起。通过这样做,中心池有助于更好地检测中心关键点。

图4

级联角落池。角落通常位于物体外部,缺乏局部外观特征。 CornerNet [20]使用角落池来解决这个问题。角池的原理如图4(b)所示。角落池旨在找到边界方向上的最大值,以便确定角落。但是,它会使边角对边缘敏感。为了解决这个问题,我们需要让角落"看到"对象的视觉模式。级联角池的原理如图4(c)所示。它首先沿着边界查找边界最大值,然后沿着边界最大值2的位置向内看以找到内部最大值,最后,将两个最大值一起添加。通过这样做,角落获得边界信息和物体的视觉图案。通过在不同方向组合角落池[20],可以轻松实现中心池和级联角池。 图5(a)显示了中心池模块的结构。为了在一个方向(例如水平方向)上取最大值,我们只需要将左池和右池连接起来。图5(b)显示了级联顶角池模块的结构。与CornerNet [20]中的顶角池相比,我们在顶角池之前添加了一个左角池。

3.4. 训练和推论

训练。我们的方法在Pytorch [30]中实现并且从头开始训练网络。输入图像的分辨率为511×511,和起主导作用是128×128的热图。我们使用[20]中提出的数据增强策略来训练一个健壮的模型。Adam [18]用于优化训练损失:

公式2

其中Lco det和Lce det表示焦点损失,它们分别用于训练网络以检测角点和中心关键点。Lco pull是角的"拉"损失,用于最小化属于相同对象的嵌入向量的距离。Lco推动是角落的"推动"损失,用于最大化属于不同对象的嵌入向量的距离。Lco off和Lce off是'1-loss [10],用于训练网络分别预测角点和中心关键点的偏移。α,β和γ表示相应损失的权重,其中分别设置为0:1,0:1和1。Ldet,Lpull,Lpush和Loff都在CornerNet中定义,我们建议参考[20]了解详情。 我们使用8台Tesla V100(32GB)GPU训练CenterNet,批量为48。最大迭代次数为480K。 对于前450K迭代,我们使用2:5×10-4的学习速率,然后继续训练30K迭代,速率为2:5×10-5。

推论。在[20]之后,对于单尺度测试,我们将具有原始分辨率的原始和水平翻转图像输入到网络中。对于多尺度测试,我们输入原始和水平翻转图像,分辨率为0:6;1;1:2; 1:5和1:8。我们从热图中选择前70个中心关键点,前70个左上角和前70个右下角来检测边界框。我们翻转在水平翻转图像中检测到的边界框并将它们混合到原始边界框中。Soft-nms [2]用于删除冗余边界框。我们最终根据它们的分数选择前100个边界框作为最终检测结果。

4.实验

本实验在最具挑战性之一的 MS COCO 数据集上进行测试,科研人员选了一些比较有代表性的工作做了对比。

实验结果表明CenterNet获得了47%的AP,超过了所有已知的one-stage检测方法,并大幅度领先,其领先幅度至少达4.9%。Table2为CenterNet与CornerNet的单独对比。

最近目标检测方法在COCO数据集上基本在以百分之零点几的精度往前推进,因为coco数据集难度很高,而CenterNet往前推进了将近5个百分点。

同时,CenterNet的结果也接近two-stage方法的最好结果。值得注意的是,CenterNet训练输入图片分辨率只有511X511,在single-scale下,测试图片的分辨率为原图分辨率(~500),在multi-scale下,测试图片的分辨率最大为原图分辨率的1.8倍。而two-stage的输入图片的分辨率一般最短边也要>600,甚至更大,比如D-RFCN+SNIP [3]和PANet [4]。而且研究人员的方法是Train from scratch。

速度方面,Two-stage方法论文中一般是不报的One-stage方法只在较浅的backbone上如VGG-16上报速度,一般处理一张图片需要十几毫秒,在较深的backbone上速度慢一些,处理一张图片需要几百毫秒,但还是要比two-stage的方法快。

在这里,研究人员在一张Nvidia Tesla P100显卡上比较了CornerNet和CenterNet,CornerNet511-104测试速度约为300ms/帧 (并没有实现原论文所说的250ms/帧的速度,可能是与我用的服务器环境有关),而CenterNet511-104 的测试速度约为340ms/帧,比baseline慢约40ms/帧。

但对于更轻backbone,CenterNet511-52的测试速度约为270ms/帧,比CornerNet511-104快约30ms/帧,而且其精度无论是single-scale test 还是 multi-scale test 都比CornerNet511-104高。

CenterNet 以 CornerNet为 baseline,后者为最具代表性的基于关键点的目标检测方法。上图展示了CenterNet与CornerNet的对比结果。(a) 和 (b) 表明CenterNet能有效去除小尺度的错误目标框。(c) 和 (d) 表明CenterNet能有效去除中等尺度和大尺度的错误目标框。

上图为CenterNet的检测结果。由于CenterNet去除了大量错误的目标框,因此即使在目标框的confidence较低的情况下,依然能保证较好的检测结果,上图展示了confidence在0.5以上的目标框分布情况。

Table4为消除实验。第一行为CornerNet结果。中心点的加入 (CRE) 使得网络提升了2.3% (37.6% vs 39.9%)。对于中心点的检测,本实验使用传统的卷积操作进行。

其中小尺度目标提升的最多,提升了4.6% (18.5% vs 23.1%), 而大尺度目标几乎没有发生变化。这说明小尺度的错误目标框被去除的最多,这是因为从概率上讲,小尺度目标框由于面积小更容易确定其中心点,因此那些错误的小目标框不在中心点附近的概率更大,因此去除的最多。

Center pooling (CTP) 的加入使网络进一步提升了0.9%。值得注意的是,大尺度目标提升了1.4% (52.2% vs 53.6%),小目标和中等目标也得到了一定的提升,这表明center pooling能够使中心点获得更易于区分于其他类别的语义信息。Cascade corner pooling (CCP) 使得使网络性能进一步提升。

第二行的试验中,科研人员将CornerNet的corner pooling替换成了cascade corner pooling,性能提升了0.7% (37.6% vs 38.3%)。可以观察到大目标的AP没有发生变化,AR却提升了1.8% (74.0% vs 75.8%),这说明cascade corner pooling通过加入了物体内部信息能够感知更多的物体。

但是由于大目标由于面积过大,使其容易获得较明显的内部特征而干扰了边缘特征,因此使得预测出的目标框位置不精确。当结合了CRE后,由于CRE能够有效去除错误目标框,因此使大目标框的AP得到了提升 (53.6% vs 55.8%).

Table3为错误目标框的去除实验的对比。实验结果表明CenterNet去除了大量的错误目标框,尤其是小尺度的错误目标框,这也是为什么小尺度目标的AP提升最多的原因。

Table5为错误实验分析。科研人员将检测的中心点用真实的中心点代替,实验结果表明中心点的检测准确度还有很大的提升空间。同时该结果还表明要想更进一步的提升检测精度,需要进一步提升角点的检测精度。

总结

前文提到 one-stage 方法都无法感知物体内部信息,这是由于 one-stage 直接对 anchor 进行回归和分类,这个过程并没有像 two-stage 方法一样利用到了物体内部特征,因此无法感知物体内部信息。

本工作主要研究了基于关键点的 one-stage 方法,在接下来的工作中,研究人员将扩展到更广义的 one-stage 方法,如 SSD[5] 等方法,以及更多的 backbone,例如VGG-16,resnet101等。

参考文献:

[1]. H. Law and J. Deng. Cornernet: Detecting objects as paired keypoints. In Proceedings of the European conference on computer vision, pages 734–750, 2018.

[2]. T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Doll´ar, and C. L. Zitnick. Microsoft coco: Common objects in context. In European conference on computer vision, pages 740–755. Springer, 2014.

[3]. B. Singh and L. S. Davis. An analysis of scale invariance in object detection snip. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 3578–3587, 2018.

[4]. S. Liu, L. Qi, H. Qin, J. Shi, and J. Jia. Path aggregation network for instance segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 8759–8768, 2018.

[5]. W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.Y. Fu, and A. C. Berg. Ssd: Single shot multibox detector. In European conference on computer vision, pages 21–37. Springer, 2016.

论文链接:https://arxiv.org/abs/1904.08189

代码链接:https://github.com/Duankaiwen/CenterNet

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/265226.html