文章目录

  • 摘要
  • 1 引言
  • 2 相关工作
  • 3 本文方法
  • 3.1 基线(CornerNet)和动机
  • 3.2 目标检测当做关键点三元组
  • 3.3 丰富中心点和角点信息
  • 3.4 训练和推断
  • 4 实验
  • 4.1 数据集、指标和基线
  • 4.2 与最先进的探测器的比较
  • 4.3 缩减不正确的边界框
  • 4.4 推理速度
  • 4.5 消融研究
  • 4.6 错误分析
  • 5 结论


摘要

  基于关键点的目标检测算法:
  目标检测中,基于关键点的方法经常会遇到大量不正确的目标边界框,这可能是由于缺少对裁剪区域的额外查看。
  CenterNet:
  本文提出了一种有效的解决方案,以最小的代价探索每个裁切区域内的视觉模式。CenterNet框架建立在一个有代表性的基于关键点的单阶段检测器上,这个检测器名为CenterNet,以一个三元组而不是一对关键点的形式检测每个目标,既提高了精度也提高了召回率;设计了cascade corner pooling和center pooling两个自定义模块,丰富左上角和右下角收集到的信息,并且在中心区域提供更多可识别的信息。
  实验结果:
  在MS-COCO数据集上,CenterNet的AP达到了47.0%,比所有现有的单阶段检测器至少高出4.9%,同时推理速度更快,CenterNet展示了与顶级两级检测器相当的性能。代码: https://github.com/Duankaiwen/CenterNet

1 引言

  基于anchor的目标检测算法:

  在深度学习特别是卷积神经网络的帮助下,目标检测得到了显著的改进和进步。当前最流行的是基于anchor的方法,它放置一组预定义大小的矩形,并在GT目标的帮助下将其回归到所需位置。

  (1)这些方法通常需要大量的anchor boxes,以确保与GT目标有足够高的IoU率。

  (2)每个anchor的大小和宽高比需要人工设计。

  (3)anchor通常不是与GT框对齐,不利于边界框的分类任务。

  基于关键点的目标检测算法:

  为了克服基于anchor的方法的缺点,提出了一种基于关键点的目标检测管道——CornerNet,通过一对角点代表每个目标,不需要anchor并实现了最先进的单阶段目标检测精度。

rt detr 目标检测_角点


  CornerNet缺点:对目标全局信息的引用能力相对较弱,制约着CornerNet的性能。 由于每个目标都是由一对角构成,所以算法对目标边界的检测很敏感,而不知道哪些关键点应该被分组为目标,因此经常会产生一些不正确的边界框(如图1),其中大部分可以很容易地通过补充信息过滤掉,例如长宽比。

  CenterNet:

  (1)解决CornerNet的问题的思路:给CornerNet配备感知每个建议(提案)区域内的视觉模式的能力,这样它就可以自己识别每个边界框的正确性。

  (2)CenterNet提出了一个低成本但有效的解决方案:探讨了建议(提案)的中心部分——即在靠近几何中心的区域增加了一个关键点。

rt detr 目标检测_角点


  (3)CenterNet设计直觉:如果预测的边界框与GT框有较高的IoU,那么其中心区域的中心关键点被预测为同一类的概率就很高,反之亦然。因此在推理过程中,在一个建议(提案)作为一对角关键点生成之后,通过检查同一类在其中心区域内是否有一个中心关键点来确定该提议是否确实是一个目标。如图1所示,其思想是使用三元组而不是一对关键点来表示每个对象。

  center pooling和cascade corner pooling:

  为了更好地检测中心关键点和角点,本文提出了两种策略来分别丰富中心和角点信息。

  (1)center pooling:被用在分支中预测中心关键点,帮助中心关键点获取目标中更容易识别的视觉模式,从而更容易理解提案的中心部分。实现方式: 通过在预测中心关键点的特征图上得到中心关键点在水平和垂直方向上的最大响应的和来实现。

  (2)cascade corner pooling:使原有的corner pooling模块具备感知内部信息的能力。实现方式: 在预测角点的特征图上得到目标边界和目标内部方向的最大响应求和来预测角点来实现。从经验上,我们验证了这种双向池化方法更稳定,即对特征级噪声有更强的鲁棒性,有助于提高精度和召回率。

  CenterNet实验对比:

  在MS-COCO数据集上评估提出的CenterNet,COCO是大规模目标检测最流行的基准之一。同时采用center pooling和cascade corner pooling的CenterNet在测试开发集的AP为47.0%,大大超过了所有现有单阶段检测器。使用52层沙漏网络作为骨干平均推断时间为270ms,使用104层沙漏网络作为骨干平均推断时间为340ms。

  CenterNet非常高效,与其他两阶段检测器的最先进性能密切匹配。

2 相关工作

  目标检测算法分类:
  目标检测包括对目标进行定位和分类。在深度学习时代,以深度卷积神经网络为动力的目标检测方法大致可以分为两种主要类型,即两阶段方法和单阶段方法。
  两阶段目标检测算法:
  将目标检测任务分为两个阶段:RoI提取、RoI分类和回归。
  (1)R-CNN: 使用选择性搜索方法对输入图像中的roi进行定位,并使用基于dcn的区域分类器对RoI进行独立分类。
  (2)SPPNet和Fast R-CNN: 通过从特征映射中提取RoI来改进R-CNN。
  (3)Faster R-CNN: 通过引入RPN (region proposal network),允许进行端到端训练。RPN可以通过回归anchor boxes来生成RoI。此后,anchor boxes被广泛应用于目标检测任务。
  (4)Mask R-CNN: 在Faster-RCNN上增加了一个mask预测分支,可以检测目标,同时预测目标的mask。
  (5)R-FCN: 将全连接层替换为位置敏感分数图,以便更好地检测目标。
  (6)Cascade R-CNN: 通过增加IoU阈值来训练一系列检测器,解决了训练时过拟合和推理时质量不匹配的问题。
  (7)基于关键点的目标检测方法: 避免使用anchor boxes和边界框回归的缺点。
  (8)其他有意义的工作: 如关注架构设计、关注上下文关系、关注多尺度。
  单阶段目标检测算法:
  去掉了RoI提取过程,直接对候选anchor boxes进行分类和回归。
  (1)YOLO: 使用较少的anchor boxes(将输入图像划分为S × S网格)来进行回归和分类。
  (2)YOLOv2: 使用更多的anchor boxes和新的边界框回归方法提高性能。
  (3)SSD: 将anchor boxes 密集地放置在输入图像上,并使用来自不同卷积层的特征来回归和分类锚盒。
  (4)DSSD: 在SSD中引入了反卷积模块,实现了低层和高层特性的结合。
  (5)R-SSD: 在不同的特征层中使用池化和反卷积操作来组合低级和高级特性。
  (6)RON: 在有效提取多尺度特征之前提出了反向连接和对象性。
  (7)RefineDet: 对anchor boxes的位置和大小进行两次优化,继承了单阶段和两阶段方法的优点。
  (8)CornerNet: 另一种基于关键点的方法,它使用一对角点直接检测目标。CornerNet有很高的性能,但仍然有很大的提升空间。

3 本文方法

3.1 基线(CornerNet)和动机

  CornerNet预测:

  采用CornerNet作为基线。为了检测角落,CornerNet生成:

  (1)两个热图: 一个左上角的热图,一个右下角的热图。热图表示不同类别的关键点的位置,并为每个关键点分配一个置信度分数。

  (2)每个角点的一维嵌入:用于识别两个角是否来自同一物体。

  (3)一组偏移量: 学习将角点从热图重新映射到输入图像。

  CornerNet根据预测生成边界框:

  (1)首先根据热图得分分别选择左上角和右下角;

  (2)然后计算一对角点的嵌入向量的距离,以确定一对角点是否属于同一目标,如果距离小于阈值,则生成目标边界框。

  (3)目标边界框被分配一个置信度分数,它等于一对角点的分数的平均值。

  CornerNet错误发现(FD)率分析:

rt detr 目标检测_角点_03


  表1对CornerNet进行了深入分析——计算在MS-COCO验证数据集上的FD1(错误发现)率,既错误边界框的比例。结果表明: 在较低的IoU阈值下,错误的边界框仍占很大比例:如IoU= 0.05时,CornerNet的FD率为32.7%。这意味着平均每100个对象边界框中有32.7个与GT的IoU低于0.05。不正确的小边框更多,达到60.3%的FD率。其中一个可能的原因是CornerNet不能看到边界框内的区域。为了使其感知边界框中的视觉模式,一种可能的解决方案是将CornerNet修改为一个两阶段检测器,该检测器使用RoI pooling来观察包围盒中的视觉模式,然而这种方式在计算上是昂贵的。

  CenterNet:

  本文提出了一个高效的替代方案,来探索每个边界框内的视觉模式。

  为了检测一个目标,使用一个关键点三元组,而不是一对关键点。这样做本文方法仍然是一个单阶段检测器,但部分继承了RoI pooling的功能,该方法只关注中心信息,成本小。同时利用center pooling 和cascade corner pooling,进一步将目标内部的视觉模式引入到关键点检测过程中。

3.2 目标检测当做关键点三元组

  centerNet网络架构:

rt detr 目标检测_目标检测_04

  CenterNet检测流程:

  CenterNet用一个中心关键点和一对角来表示每个目标。具体来说在CornerNet的基础上嵌入中心关键点热图,并预测中心关键点的偏移量。然后使用CornerNet中提出的方法生成top-k边框,利用检测到的中心关键点有效过滤掉不正确的边界框,步骤如下:

  (1)根据得分选择top-k中心关键点;

  (2)使用相应的偏移量将这些中心关键点重新映射到输入图像;

  (3定义了每个边界框的中心区域,并检查中心区域是否包含中心关键点。注意被选中的中心关键点的类标签应与边框相同;

  (4)如果在中心区域检测到一个中心关键点,则保留边界框,边界框的得分将以左上角、右下角、中心关键点三个点的平均得分代替。如果在其中心区域没有检测到中心关键点,则将移除边界框。

  如何选择边界框中心区域大小:

  边界框中中心区域的大小会影响检测结果,较小的中心区域导致小边框的召回率较低,而较大的中心区域导致大边框的精度较低。 本文提出尺度感知的中心区域来自适应地适应边界框的大小。尺度感知的中心区域倾向于为一个小的包围框生成一个相对较大的中心区域,而为一个大的包围框生成一个相对较小的中心区域。

  假设想确定是否需要保留一个边界框i。tlx和tly代表边界框i的左上角,brx和bry代表边界框的右下角。定义一个中心区域j,ctlx和ctly代表中心区域j的左上角,cbrx和cbry代表中心区域的右下角。tlx和tly、brx和bry、ctlx和ctly、cbrx和cbry满足以下关系:

rt detr 目标检测_计算机视觉_05


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

rt detr 目标检测_基线_06

3.3 丰富中心点和角点信息

rt detr 目标检测_rt detr 目标检测_07


  Center pooling: 物体的几何中心不一定传达非常可识别的视觉模式(例人类头部包含强烈的视觉模式,但中心关键点往往在人体的中间)。为了解决这个问题,提出center poolingl捕捉更丰富和可识别的视觉模式。图4(a)显示了Center pooling的原理,具体过程如下:骨干网络输出特征图,为了确定特征图中的某个像素是否是中心关键点,在其水平方向和垂直方向上找到最大值,并将其相加。通过这样做Center pooling有助于更好地检测中心关键点。

  Cascade corner pooling: 角往往在目标外部,缺乏局部的外观特征。CornerNet使用corner pooling来解决这个问题。图4(b)corner pooling的原理,目的是找到边界方向上的最大值来确定角点,然而它使角对边缘很敏感。 为了解决这个问题,需要让角“看到”目标的视觉模式。图4©Cascade corner pooling的原理,它首先沿着边界查找一个边界最大值,然后沿着边界最大值的位置查找内部最大值,最后将两个最大值相加,这样做角既获得了目标的边界信息,又获得了目标的视觉模式。

  Center pooling和Cascade corner pooling的实现:

rt detr 目标检测_目标检测_08


  Center pooling和Cascade corner pooling都可以通过在不同方向合并corner pooling来实现。

  图5(a)显示了center pooling模块的结构。为了取一个方向上的最大值,如水平方向,只需要串联左pooling和右pooling。

  图5(b)显示了Cascade corner pooling模块的结构。相对于CornerNet中的top corner pooling ,在top corner pooling之前增加了一个left corner pooling。

3.4 训练和推断

  训练:

  (1)框架:在Pytorch中实现的

  (2)网络从头开始训练。

  (3)输入图像的分辨率为511 × 511,得到的热图大小为128×128。

  (4)使用cornerNet中提出的数据增强策略来训练一个鲁棒的模型。  (5)Adam用于优化训练

  (6)损失:

rt detr 目标检测_目标检测_09


  

rt detr 目标检测_计算机视觉_10

表示focal损失,分别用于训练网络检测角点和中心关键点。

  

rt detr 目标检测_基线_11

角的“pull”损失,用于最小化属于同一目标的嵌入向量的距离。

  

rt detr 目标检测_rt detr 目标检测_12

角的“push”损失,用来最大化属于不同目标的嵌入向量的距离。

  

rt detr 目标检测_基线_13

l1-losses,分别用来训练网络预测角和中心关键点的偏移量。

  α、β和γ为相应损失的权值,分别设为0.1、0.1和1。Ldet、Lpull、Lpush、Loff建议参考CornerNet。

  (7)训练CenterNet使用8个Tesla V100 (32GB) ,批量使用48个。最大迭代次数为480K。第一个450K迭代使用2.5×10−4的学习率,然后以2.5×10−5的速率继续训练30K迭代。

  推理:

  单尺度测试时:将原始分辨率的图像和水平翻转的图像输入网络。

  多尺度测试时:输入的分辨率分别为0.6、1、1.2、1.5和1.8的原始图像和水平翻转图像。

  选择top-70中心关键点、top-70左上角、top-70右上角来检测边界框。水平翻转图像中检测到的边界框,并将它们混合到原始的边界框中。

  Soft-nms:用于去除冗余边框,根据得分选择前100个边界框作为最终检测结果。

4 实验

4.1 数据集、指标和基线

  数据集:
  在MS-COCO数据集上评估本文方法。它包含80个类别和超过150万个目标实例。大量的小目标存在使其成为一个非常具有挑战性的数据集。使用“trainval35k”集(即80K训练图像和35K验证图像)训练图像,test-dev 测试结果。使用验证集上另一个5K图像进行消融研究和可视化实验。
  指标:
  使用AP和AR指标来表征检测器的性能。
  AP:代表平均准确率,表示在10个不同的IoU阈值(即0.5:0.05:0.95)和所有类别上计算的平均准确率。
  AR:表示最大召回率,它是通过固定数量的检测(即:, 1, 10和100),并在所有类别和10个不同的IoU阈值上取平均值。
  此外AP和AR可用于评估不同目标尺度下的性能,包括小目标(面积< 322),中等目标(322<面积< 962)和大目标(面积> 962)。
  基线:
  基线是CornerNet。随后使用52层和104层的堆叠沙漏网络作为骨干——后者有两个沙漏模块,而前者只有一个。对沙漏网络的所有修改都遵循了CornerNet。

4.2 与最先进的探测器的比较

rt detr 目标检测_计算机视觉_14


  表2显示了与MS-COCO 最先进的检测器的比较。

  (1)CenterNet与基线CornerNet相比有显著的改进: 与CornerNet相同设置情况下,CenterNet511-52(输入图像分辨率511×511,骨干Hourglass-52) ,单尺度测试和多尺度测试AP都得到提升;CenterNet511-104,在单尺度和多尺度测试下,CornerNet的AP提高率分别为4.4%(40.5% ~ 44.9%)和4.9%(42.1% ~ 47.0%)。证明了CenterNet的有效性。

  (2)CenterNet性能提升的主要来自于小目标: 例CenterNet511-52将小目标的AP提高了5.5%(单尺度)和6.4%(多尺度)。CenterNet511-104的单尺度和多尺度分别提高了6.2%和8.1%。小目标性能提升源于中心关键点建模的中心信息:不正确边界框的尺度越小,其中心区域检测到中心关键点的概率就越低,CenterNet在减少小的不正确边界框方面有效。

  (3)CenterNet在减少中型和大型不正确的边框方面也有很大的改进: CenterNet511-104将单尺度和多尺度测试下的AP分别提高了4.7%(由42.7%提高到47.4%)和3.5%(由53.9%提高到57.4%)。值得注意的是,AR也得到了显著的提升,多尺度测试的性能最好,这是因为本文方法删除了许多不正确的边界框,这相当于提高了那些位置准确但得分较低的边界框的置信度。

  (4)CenterNet超过了所有发布的单阶段方法

  (5)CenterNet可与先进两阶段方法竞争: 但两阶段方法通常使用更大分辨率的输入图像(如约1000 × 600),特别是对于小目标显著提高检测精度。

4.3 缩减不正确的边界框

AP: 反映了一个网络可以预测多少高质量的目标边界框(通常是IoU > 0.5),但不能直接反映多少不正确的目标边界框(通常是IoU <0.5)生成。

  FD率: 是一个合适的度量,反映不正确边界框的比例。

rt detr 目标检测_基线_15


  表3显示了CornerNet和CenterNet的FD率。

  (1)即使在IoU = 0.05阈值下,CornerNet也会产生许多不正确的包围框: 即CornerNet511-52和CornerNet511-104的FD率分别为35.2%和32.7%。

  (2)CornerNet与中型和大型不正确边框相比产生更多小的不正确的边界框

  (3)CenterNet通过探索中心区域降低所有标准下的FD率: 小型边界框的FD率下降幅度最大,这也是为什么小目标的AP改进更加突出的原因。

4.4 推理速度

  CenterNet以最小的成本探索每个提议区域内的视觉模式。公平比较CornerNet和CenterNet的推理速度。CornerNet511-104的平均推断时间是300毫秒,CenterNet511-104是340毫秒。使用沙漏网络-52骨干可以加快推理速度。CenterNet511-52处理每张图像平均需要270毫秒,比CornerNet511-104更快更准确。

4.5 消融研究

  本文工作贡献: 包括中心区域探索、center poolng和cascade corner pooling。为了分析本文提出的三个组件的贡献,进行消融研究,基线为CornerNet511-52,将三个组件一个一个添加到基线中进行独立训练,结果见表4。

rt detr 目标检测_角点_16

  (1)中心区域探索: 为了理解中心区域探索的重要性(表CRE),向基线添加了一个中心热图分支,并使用三个关键点来检测边界框,对于中心关键点的检测,只使用传统的卷积。 如表4第三行中心区域探索提高AP,但对于小尺度目标的改善比其他尺度目标的改善更为显著,对于大型目标的改进几乎可以忽略不计,因为从概率的角度来看,一个小目标的中心关键点比一个大目标的中心关键点更容易准确定位。
  (2)center pooling: 为了展示所提议的center pooling的有效性,将center pooling模块添加到网络中(表CTP)。表4第四行显示,center pooling提高AP,值得注意的是大型目标的AP提高大大高于传统卷积的提高。实验结果表明center pooling方法能有效地检测出目标的中心关键点,特别是对于大型目标。 因为center pooling可以提取更丰富的内部视觉模式,而更大的目标包含更容易访问的内部视觉模式。
  (3)cascade corner pooling: 用cascade corner pooling来代替corner pooling来检测角(表CCP)。表第二行中cascade corner pooling提高AP,大型目标的AP几乎没有变化,但AR提高,表明由于大型目标内部丰富的视觉模式cascade corner pooling可以“看到”更多的目标,但过于丰富的视觉模式可能会干扰其对边界信息的感知,导致许多不准确的边界框。

4.6 错误分析

  每个边界框内视觉模式的探索取决于中心关键点。换句话说,一旦错过了一个中心关键点, CenterNet就会错过边界框内的视觉模式。

  探索中心关键点的重要性:

rt detr 目标检测_角点_17


  将预测的中心关键点替换为ground-truth值,并在MS-COCO验证数据集上评估性能。CenterNet511-52、CenterNet511-104, 对于小型、中型和大型目标AP都得到很大提升。

  中心关键点的检测远远没有达到瓶颈。

5 结论

  本文:
  提出CenterNet,利用包含一个中心关键点和两个角的三元组来检测目标。解决CornerNet缺乏额外的查看裁剪区域的问题,通过最小的成本探索视觉模式在每个提议的区域。事实上这是所有单阶段方法的一个常见缺陷,由于单阶段方法去除了RoI的提取过程,无法关注裁剪区域内的内部信息。
  贡献的直观的解释:
  给单阶段检测器配备了两阶段方法能力,并添加了一个有效的鉴别器。 我们相信,中心关键点添加额外分支的想法可以潜在地推广到其他现有的单阶段方法(如SSD)。同时一些先进的训练策略也可以用来获得更好的表现,作为未来的工作。