CenterNet:Keypoint Triplets for Object Detection(中文版)

摘要

        在对象检测中,基于关键点的方法通常用于处理大量不正确的对象边界框,这是由于缺少对裁剪区域的额外查看。本文提出了一种有效的解决方案,以最小的代价在每个裁剪区域内实现视觉模式的求解。我们的框架建立在一个具有代表性的单级关键点检测器的基础上,该检测器被命名为CornerNet。我们的方法名为CenterNet,它将每个对象检测为三个关键点,而不是一对关键点,这可以提高精确度和召回率。为此,我们设计了级联角池化和中心池化两个自定义模块,分别用于丰富左上角和右下角用户所收集的信息,并在中心区域提供更多可识别的信息。在MS-COCO数据集上,CenterNet实现了47.0%的AP,比所有现有的单级检测器至少高出4.9%。同时,由于推理速度更快,CenterNet的性能与顶级的two-stage 检测器相当。

代码获取: https://github.com/Duankaiwen/CenterNet.

介绍

        在深度学习特别是卷积神经网络(CNNs)的帮助下,目标检测得到了显著的改善和发展。在当今时代,最流行的流程图之一是基于Anchors的,其中放置了一组预定义大小的矩形,并在ground-truth对象的帮助下将它们回归到所需位置。这些方法通常需要大量的anchor来确保足够高的IOU(交并比)与ground-truth,每个anchor的尺寸和长宽比需要手工设计。另外,anchors通常不是与ground-truth对齐的,这不利于边界框的回归任务。

图1:在第一行,我们可视化的前100个绑定框(根据MS-COCO dataset标准)CornerNet。地面真相和预测对象分别用蓝色和红色标记。在第二行中,我们证明了通过检查中心部分可以确定正确的预测。

 

        为了克服基于anchor的方法的缺点,一个名为CornerNet的基于关键点的对象检测方式被提出。它用一对角点表示每个对象,绕过了anchor box的需要,达到了 state-of-the-art one-stage object detection 精度。不过,CornerNet的表现对一个对象的全局信息的引用能力相对较弱,仍然受到限制。也就是说,由于每个对象都是由一对角构成的,所以算法对检测对象的边界很敏感,同时不知道哪些关键点对应该被分组到对象中。因此,如图1所示,它经常生成一些不正确的边界框,其中大部分可以通过补充信息轻松过滤掉,例如长宽比。

       为了解决这个问题,我们为CornerNet配备了一种能力,可以感知每个建议的区域内的视觉模式,这样它就可以自己识别每个边界框的正确性。在本文中,我们提出了一个低成本但有效的解决方案,名为CenterNet,它探索了一个建议区域的核心部分。即,靠近地理测量中心的区域,有一个额外的关键点。我们的直觉是,如果一个预测的边界框与ground- truth框有一个高的IoU,那么它的中心区域的中心关键点被预测为相同类的概率是高的,反之亦然。因此,在推理过程中,在将提案生成为一对角关键点之后,我们通过检查是否有相同类的中心关键点落在提案的中心区域中来确定提案是否确实是一个对象。如图1所示,其思想是使用一个三联体而不是一对关键点来表示每个对象。

        因此,为了更好地检测中心关键点和角关键点,我们分别提出了丰富中心信息和角信息的两种策略。第一种策略是中心池化策略,该策略在分支中用于预测中心关键点。中心池化帮助中心关键点在对象中获得更可识别的视觉模式,这使得更容易理解建议区域的中心部分。我们通过在特征图上求出中心关键点的水平方向和垂直方向上的最大响应总和来预测中心关键点。第二种策略为 cascade corner pooling策略,它使原有的角池化模块具备了感知内部信息的能力。为了实现这一目标,我们在一个用于预测角点的特征图上求出了物体在边界和内部方向上的最大和响应。通过实验验证,这种双向池化方法更加稳定,即,对特征级噪声有较强的鲁棒性,提高了查准率和查全率。

        我们在MS-COCO数据集上评估了拟议的CenterNet。CenterNet,包括中心池化和级联角池化,报告了测试集的AP为47.0%,这大大优于所有现有的one-stage检测器。CenterNet使用52层沙漏骨干网的平均推断时间为270ms,使用104层沙漏骨干网的平均推断时间为340ms, CenterNet的效率相当高,但与其他两级检测器的最新性能非常接近。

相关工作

        目标检测包括对目标进行定位和分类。在深度学习时代,基于深度对流神经网络的目标检测方法大致可分为两大类,即two-stage方法和one-stage阶段方法。

two-stage方法将目标检测任务分为两个阶段:提取roi,然后对roi进行分类和回归。

        R-CNN采用选择性搜索方法对输入图像进行roi分类,并采用DCN-based的区域分类器对roi进行独立分类。SPPNet和Fast-RCNN通过从特征图中提取roi来改进R-CNN。通过引入RPN (re- gion proposal network),可以对fast - rcnn进行端到端训练。RPN可以通过返回anchor box来生成roi。后来,anchor box被广泛应用于对象检测任务中。Mask- rcnn在fast - rcnn上增加了一个掩膜预测分支,可以同时检测到目标并预测其掩膜。R-FCN将全连接的图层替换为位置敏感的score maps,以便更好地检测目标。Cascade R-CNN[4]通过训练IoU阈值增大的检测器序列,解决了训练时的过拟合和推理时的质量不匹配问题。提出了基于关键点的对象检测方法,避免了使用anchor box和边界框回归的缺点。

one-stage方法去除RoI的提取过程,并直接分类。

        YOLO]使用较少的anchor box(将输入图像划分为S×S网格)进行回归和分类。YOLOv2通过引入更多的anchor box和一种新的边界框回归方法提高了性能。SSD将anchor box密集地放置在输入图像上,并使用不同卷积层的特性对anchor box进行回归和分类。DSSD引入了一个反卷积模块到SSD中,结合了低层和高层的特点。而R-SSD则在不同的特征层中使用池化和反卷积操作来结合低维和高维特征。RON提出了一种反向连接和在有效地导出多尺度特征之前的客观性。RefineDet对anchor box的位置和大小进行了两次细化,继承了one-stage和two-stage方法的优点。CornerNet是另一个基于关键点的方法,它使用一对corners直接检测对象。虽然connerNet取得了很高的性能,但仍有很大的改进空间。

图2:CenterNet的体系结构。卷积骨干网应用级联角池化和中心池化分别输出两个角关键点热图和一个中心关键点热图。与cornerNet类似,使用一对检测到的角关键点和类似的嵌入来检测潜在的边界框。然后使用检测到的中心关键点来确定最终的边界框。

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

我们的方法

Baseline and Motivation

        本文以CornerNet为基线。为了检测conners,cornerNet生成两个热图:左上角的热图和右下角的热图。热图表示不同类别的关键点的位置,并为每个关键点分配一个置信度评分。此外,它还预测了每个角点的嵌入和一组偏移量。嵌入用于标识两个角是否来自同一个对象。偏移量学会重新映射角从热图到输入图像。为了生成对象边界框,根据它们的得分 分别从热图中选择左上角和右下角的k个角。然后,计算一对角的嵌入向量的距离,确定这对角是否属于同一物体。如果距离小于阈值,则生成一个对象边界框。边界框被分配一个置信度得分,它等于一对角点的平均得分。

       在表1中,我们对cornerNet进行了更深入的分析。在MS-COCO验证数据集中,我们计算了cornerNet的FD 1(错误)率,它被定义为不正确边界框的比例。定量结果表明,即使在IoU阈值较低的情况下,不正确的边界框仍占很大比例,例如,cornerNet在IoU = 0.05时获得32.7%的错误率。这意味着平均每100个对象包围框中有32.7个与Ground-truthIoU低于0.05。不正确的小框更多,达到60.3%错误率。其中一个可能的原因是cornerNet无法查看边界框内的区域。为了使cornerNet感知绑定框中的视觉模式,一个潜在的解决方案是将cornerNet调整为一个two-stage检测器,该检测器使用RoI池化来查看 bounding boxes中的视觉模式。然而,我们知道这样的范例在计算上是昂贵的。

        在本文中,我们提出了一个名为CenterNet的高效替代方法来探索每个边界框中的视觉模式。对于检测对象,我们的方法使用一个三联体,而不是一对关键点。通过这样做,我们的方法仍然是一个单阶段的检测器,但是部分继承了RoI池的功能。我们的方法只关注中心信息,成本最小。同时,利用中心池化和级联角池化将对象内部的视觉模式进一步引入到关键点检测过程中。

Object Detection as Keypoint Triplets

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

 

        边界框中中心区域的大小影响检测结果。例如,较小的中心区域导致较小的边界框的查全率较低,而较大的中心区域导致较大的边界框的查全率较低。因此,我们提出了一个尺度感知的中心区域来自适应地适应边界盒的大小。尺度感知的中心区域倾向于为一个小的边界框生成一个相对较大的中心区域,而为一个大的边界框生成一个相对较小的中心区域。假设我们想确定一个边界框i是否需要保留。设tl x和tl y为i左上角的坐标,br x和br y为i右下角的坐标。定义一个中心区域j,让ctl x和ctl y表示j左上角的坐标,cbr x和cbr y表示j右下角的坐标。那么tl x、tl y、br x、br y、ctl x、ctl y、cbr x、cbr y应满足如下关系 :

                                                   

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

                               

图3:(a) n = 3时的中心区域。(b) n = 5时的cen- tral区域。实心矩形表示预测的边界框,阴影区域表示中心区域。

Enriching Center and Corner Information

        中心池。物体的几何中心不一定传达非常可识别的视觉模式(例如,人的头部包含强烈的视觉模式,但中枢往往在人体的中央)。为了解决这个问题,我们建议使用中心池来捕获更丰富和更易于识别的视觉模式。图4(a)显示了中心池的原理。中心池的具体过程如下:骨干网输出一个feature map,要确定feature map中的一个像素是否为中心关键点,需要在其水平方向和垂直方向找到最大值,并将其相加。通过这样做,中心池可以帮助更好地确定中心关键点。

        级联角点池。角点通常位于物体外部,缺乏局部外观特征。cornerNet使用角点池来解决这个问题。角点池的原理如图4(b)所示。角点池的目的是找出边界方向上的最大值,从而确定角点。然而,它使角点对边敏感。为了解决这个问题,我们需要让角“看到”对象的视觉模式。级联角池的原理如图4(c)所示。它首先沿着边界查找边界最大值,然后沿着边界最大值【2】的位置查找内部最大值,最后将两个最大值相加。通过这样做,角获得了边界信息和物体的视觉模式。

【2】:对于最上面、最左边、最下面和最右边的边界,分别垂直地看底部、水平地看右边、垂直地看顶部和水平地看左边。

         

图4:(a)中心池在水平和垂直方向上都取最大值。(b)角池只在边界方向取最大值。(c)级联角池在对象的边界方向和内部方向都取最大值。

        通过将不同方向的角点池[20]组合起来,可以很容易地实现中心池和级联角池。图5(a)显示了中心池模块的结构。要在一个方向上取最大值,例如水平方向,我们只需要串联l eft池和right池。图5(b)显示了级联顶角池模块的结构。与cornerNet中的top池相比,我们在top池之前添加了一个left池。

         

图5:中心池模块(a)和级联顶角池模块(b)的结构。

Training and Inference

训练。我们的方法是在Pytorch中实现的,网络是从零开始训练的。输入图像分辨率为511×511,得到大小的热图
128×128。我们使用数据增强策略来训练一个鲁棒模型。Adam用于计算训练损失:

               

其中表示 focal losses,分别用于训练网络检测角点和中心关键点。是角点的“pull”损失,它用于最小化属于相同对象的嵌入向量的距离。是一种针对角点的“push”损失,用于最大化属于不同对象的嵌入向量的距离。
-losses,用于训练网络分别预测角点和中心关键点的偏移量。α,β和γ分别表示相应的重量损失它们被设置为0.1,0.1和1。都是在CornerNet中定义的,具体建议参考[20]。我们在8个Tesla V100 (32GB) gpu上训练了CenterNet,batch size为48。最大迭代次数为480000步。我们对前450000次迭代使用2.5×10−4的学习率,然后以2.5×10−5的学习率继续训练30000步。

推理。在[20]之后,为了进行单尺度测试,我们将原始分辨率的图像和水平翻转的图像都输入到网络中。在多尺度测试中,我们同时输入原始图像和水平坐标翻转图像,分辨率分别为0.6、1、1.2、1.5和1.8。我们从热图中选择顶部70个中心点、顶部70个左上角和顶部70个右下角来检测边界框。我们将水平翻转图像中检测到的边界框翻转,并将它们混合到原始的边界框中。soft-nms[2]用于重新移动冗余的边界框。最后选择top以100个包围框的得分作为最终检测结果。

 

论文的最后几部分为结果的对比与总结,在此不再做具体翻译。

 

欢迎加入深度学习与机器视觉交流群(4):769810307

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值