文章: CenterNet: Keypoint Triplets for Object Detection
作者: Kaiwen Duan1∗ Song Bai2 Lingxi Xie3 Honggang Qi1 Qingming Huang1 Qi Tian3
机构: 1University of Chinese Academy of Sciences 2University of Oxford 3Huawei Noah’s Ark Lab
摘要
在物体检测中,基于关键点的方法经常会产生大量不正确的物体边界框,可以说是由于缺少对 crop 区域的额外关注造成的。本文提出了一种有效的解决方案,以最小的成本探索每个裁剪区域内的 visual pattern (visual patterns)。 作者在一个名为 CornerNet 的代表性 One-Stage 关键点检测器上构建作者的框架。作者的方法名为 CenterNet,将每个物体检测为三元组而不是一对关键点,从而可以同时提高精度和召回率。因此,作者设计了两个定制模块, 分别为 cascade corner pooling 和 center pooling 的,前者丰富了左上角和右下角收集到的信息,后者在中心区域提供了更多可识别的信息。在 MS-COCO 数据集上,CenterNet 实现了47.0%的AP,其性能优于所有现有的 One-Stage 探测器至少 4.9%。同时,CenterNet 具有更快的推理速度,且表现出与顶级 Two-Stage 探测器相当的性能。
Introduction
在深度学习特别是卷积神经网络的帮助下,目标检测得到了显著的改进和提升。在当今时代,最流行的流程图之一是基于anchor 的若干模型,它们放置了一组预定义大小的矩形,并在ground truth物体的帮助下将它们回归到所需位置。这些方法通常需要大量的 anchor 来保证足够高的IoU(交并比)率,并且每个 anchor boxes 的大小和宽高比需要手工设计。此外,anchor 通常不与ground-truth框对齐,这不利于边界框分类任务。
为了克服基于 anchor 的方法的缺点,有人提出了一种名为 CornerNet 的基于关键点的物体检测 pipeline。 它通过一对 corner 关键点表示每个物体,这绕过了对 anchor 的需要,并实现了最先进的 One-Stage 物体检测精度。 尽管如此,CornerNet 的表现仍然受到 其获取物体全局信息的能力相对较弱 的限制。 也就是说,由于每个物体由一对 corner 构成,因此该算法 对于检测物体的边界比较敏感,同时 不知道应该将哪些关键点对分到同一组中构成物体。 因此,如图1所示,它经常产生一些不正确的边界框,其中大部分可以用补充信息(例如 aspect ratio)容易地滤除。
为了解决这个问题,作者为 CornerNet 提供了一种 感知每个 proposed region 内 visual pattern 的能力,以便它可以自己识别每个边界框的正确性。 在本文中,作者提出了一个名为 CenterNet 的低成本但有效的解决方案,该解决方案 利用了一个 proposals 的核心部分,即靠近几何中心的区域,将其作为一个额外的关键点。 作者的直觉是,如果预测的边界框与 ground truth 框具有高 IoU,那么其中心区域中的中心关键点被预测为相同类的概率很高,反之亦然。 因此,在 Inference 期间,在将 proposals 生成为一对 corner 关键点之后,作者通过检查是否存在属于其中心区域的同一类的中心关键点来确定 proposals 是否确实是物体。 如图1所示,该想法是使用 三元组而不是一对关键点来表示每个物体。
因此,为了更好地检测中心关键点和角点,作者提出了分别丰富中心区域和角落信息的两种策略。第一个策略称为 center pooling,在分支中用于预测中心关键点。center pooling 有助于中心关键点在物体上获得更多可识别的 visual pattern ,这使得更容易感知 proposals 的中心部分。作者通过在特征图上中心关键点的水平和垂直方向上取出最大求和响应来预测中心关键点来实现这一点。第二种策略被命名为 cascade corner pooling,它使原始 corner pooling 模块[20]具有 感知内部信息 的能力。作者通过 在特征图上物体的边界和内部方向上取出最大求和响应来预测角点来实现这一点。根据经验,作者验证了这种双向 pooling 的方法更稳定,即对特征级噪声更稳健,这有助于提高精度和召回率。
作者在 MS-COCO 数据集[25]上评估了提出的 CenterNet,该数据集是大规模物体检测最流行的基准之一。包含了 center pooling 和 cascade corner pooling 的 CenterNet 在测试集上的 AP 为 47.0%,这大大优于所有现有的 One-Stage 检测器。CenterNet 使用 52 层 hourglass backbone 的平均推断时间为270ms,使用104层 hourglass backbone 的平均推断时间为340ms, CenterNet的效率相当高,并且与其他 Two-Stage 检测器的最新性能非常接近。
Related Work
Two-Stage approaches: R-CNN, DCN, R-FCN, Cascade R-CNN
One-Stage approaches: YOLO, SSD, RefineDet, CornerNet
Our Approach
本文使用 CornerNet 作为 baseline。为了检测 corner,CornerNet 会产生两个热图:左上角的热图和右下角的热图。热图表示不同类别的关键点的位置,并为每个关键点分配置信度分数。此外,它还会预测每个 corner 的 embedding 和一组 offsets。embedding 用于识别两个 corner 是否来自同一物体。offsets 将热图上的 corners 重新映射到输入图像上。为了生成 object bounding box,分别根据它们的分数从热图中选择前 $k$ 个左上角和右下角。然后,计算一对 corners 的 embedding 距离以确定成对的 corner 是否属于同一物体。如果距离小于阈值,则生成物体边界框。为边界框分配置信度分数,该分数等于 corner pairs 的平均分数。
在表1中,作者提供了对 CornerNet 的更深入分析。 作者计算 MS-COCO 证数据集上 CornerNet 的 FD(False Discovery)率,定义为 不正确边界框的比例。 定量结果表明,即使在低 IoU 阈值下,不正确的边界框也占很大比例,例如,CornerNet在IoU = 0.05时获得32.7%的FD率。 这意味着就平均而言,每100个物体边界框中有32.7个框与 GT 的 IOU 0.05。 小的不正确的边界框甚至更多,达到 60.3% 的FD率。 其中一个 可能的原因在于CornerNet无法查看边界框内的区域。 为了使 CornerNet 能够感知边界框内部的 visual pattern,一种可能的解决方案是将 CornerNet 调整为两阶段探测器,该探测器使用 RoI pooling 来查看边界框中的 visual pattern 。 然而,众所周知,这种方法在计算上是昂贵的。
在本文中,作者提出了一种名为 CenterNet 的高效替代方案,它可以探索每个边界框内的 visual pattern。 为了检测目标物体,作者的方法是 使用三元组而不是一对关键点(二元组)。 通过这样做,作者的方法仍然是 One-Stage 的检测器,但部分继承了 RoI pooling 的功能。 作者的方法 只关注中心信息,因此其成本很低。同时,作者通过使用 center pooling 和 cascade corner pooling,进一步将物体内的 visual pattern 引入关键点检测过程。
Object Detection as Keypoint Triplets
整个网络架构如图2所示。作者 通过中心关键点和一对角点来表示每个物体。具体来说,作者在 CornerNet 的基础上 为中心关键点嵌入了热图,并 预测了中心关键点的偏移。然后,作者使用 CornerNet 中提出的方法生成 $top-k$ 的边界框。但是,为了有效滤除不正确的边界框,作者会利用检测到的中心关键点并采用以下程序:
- 根据中心关键点自身的分数也选择 $top-k$ 个点;
- 使用相应的 offsets 将这些中心关键点重新映射到输入图像上;
- 为每个边界框定义一个中心区域,并检查中心区域是否包含中心关键点。请注意,检查过的中心关键点的类标签应与边界框的类标签相同;
- 如果在中心区域检测到中心关键点,作者将保留这个预测到的边界框。边界框的分数将由三个点的平均分数代替,即左上角,右下角和中心关键点。如果在其中心区域中未检测到中心关键点,则将删除该边界框。
边界框中的中心区域的大小会影响检测结果。例如,较小的中心区域导致小边界框的召回率较低,而较大的中心区域导致较大的边界框的精度较低。 因此,作者提出了一种可以 感知尺度(scale-aware)的中心区域,以便自适应地拟合边界框的大小。尺度感知的中心区域倾向于为小的边界框生成相对大的中心区域,而对于大的边界框则生成相对小的中心区域。 假设作者想确定是否需要保留边界框 $i$。 设 $tl_x$ 和 $tl_y$ 表示角点 $i$ 的 top-left corner 坐标, $br_x$ 和 $br_y$ 表示角点 $i$ 的 bottom-right corner 坐标。定义中心区域为 $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),作者可以确定尺度感知的中心区域,然后检查中心区域是否包含中心关键点。
Enriching Center and Corner Information
Center Pooling: 物体的几何中心不一定传达可识别性非常强的视觉图案(例如,人的头部包含特征很强的视觉图案,但是中心关键点通常位于人体的中间)。为了解决这个问题,作者提出了使用 Center Pooling 来捕获更丰富和更易识别的视觉模式。图4(a)显示了 Center Pooing 的原理。 Center Pooling 的详细过程如下:backbone 输出一个特征图,并确定特征图中的某个像素点是否是中心关键点,作者需要在 水平和垂直方向上找到最大值并将它们加在一起。通过这样做, Center Pooling 有助于更好地检测中心关键点。
Cascade Corner Pooling: Corners 通常位于物体外部,因此缺乏物体的局部外观特征。Corner-Net 使用 Corner Pooling 来解决这个问题。Corner Pooling 的原理如图4(b)所示。Corner Pooling 旨在找到边界方向上的最大值,以便确定角点。 但是,它会使得 corners 对边缘变得敏感(不稳定)。 为了解决这个问题,作者需要让角落 “看到” 物体的 visual pattern。 Cascade Corner Pooling 的原理如图4(c)所示。它首先沿着边界查找边界最大值,然后沿着边界最大值的位置向物体内部 “看” 以找到内部最大值,最后,将两个最大值一起添加。 通过这样做,Corners 可以同时获得边界信息和物体的 visual pattern。
通过在不同方向组合 Corner Pooling [20],可以轻松实现 Center Pooling 和 Cascade Corner Pooling。 图5(a)显示了 Center Pooling 模块的结构。为了在一个方向(例如水平方向)上取最大值,作者只需要将左池和右池连接起来即可找到任意一点在水平方向上的最大值。 图5(b)显示了 Cascade Top Corner Pooling 模块的结构。与 CornerNet 中的 Top Corner Pooling 相比,作者在 Top Corner Pooling 之前添加了一个 Left Corner Pooling.
Training and Inference
Training: 作者的方法在 Pytorch 中实现,网络从头开始训练。 输入图像的分辨率为511×511,产生尺寸为128×128的热图。作者使用 CornerNet 中提出的数据增强策略来训练一个稳健的模型。 Adam 用于优化训练损失:
上式中 $L^{co}_{det}$ 和 $L^{ce}_{det}$ 表示 Focal Losses,它们分别用于检测 Corners 和 Center Keypoints。$L^{co}_{pull}$ 是 corners 的 “pull” 损失,用于 最小化对于相同物体的嵌入向量的距离。 $L^{co}_{push}$ 是 corners 的 “push” 损失,用于 最大化属于不同物体的嵌入向量的距离。$L^{co}_{off}$ 和 $L^{ce}_{off}$ 是 $l_1$ 损失,用于预测角点和中心关键点的 offsets。 $\alpha$ ,$\beta$ 和 $\gamma$ 表示相应损失的权重,分别设置为 0.1, 0.1 和 1。关于损失函数可以参考 CornerNet 了解详细信息。作者使用8个Tesla V100(32GB)GPU训练CenterNet,并使用批量大小为48.最大迭代次数为480K。作者在前450K迭代中使用2.5×10-4的学习速率,然后以2.5×10-5的速率继续训练30K迭代。
Inference: 在 CornerNet 之后,对于 single-scale testing,作者将具有原始分辨率的原始和水平翻转图像输入到网络中。对于 multi-scale testing,作者输入原始和水平翻转图像,并且其分辨率为 0.6, 1, 1.2, 1.5 和1.8。 作者从热图中选择前 70 个中心关键点,前 70 个左上角和前 70 个右下角来检测边界框。 作者翻转在水平翻转图像中检测到的边界框并将它们混合到原始边界框中。 Soft-nms 用于删除冗余边界框。 作者最终根据它们的分数选择前100个边界框作为最终检测结果。
Experiments
Dataset, Metrics and Baseline
作者在 MS-COCO 数据集上评估作者的方法[25]。 它包含 80 个类别和超过 150 万个物体实例。 大量小物体使其成为非常具有挑战性的数据集。 作者使用 “trainval35k” 集[15](即80K训练图像和35K验证图像)进行训练,并在test-dev集上测试结果。 作者在验证集中使用另外5K图像来执行消融研究和可视化实验。
MS-COCO数据集[25]使用AP和AR度量来代表检测器的性能。 AP表示平均精确率,其在十个不同的IoU阈值(即,0.5:0.05:0.95)和所有类别上计算。 它被认为是MS-COCO数据集上最重要的一个指标。 AR表示最大召回率,其在每个图像的固定数量的检测(即,1,10和100)上计算并且在所有类别和10个不同的IoU阈值上平均。 此外,AP和AR可用于评估不同物体比例下的性能,包括小物体(区域< $32^2$),中型物体($32^2$ <区域< $96^2$)和大型物体(区域> $96^2$)
作者的 baseline 是 CornerNet。 接下来,作者使用 stacked hourglass 网络,52层和104层作为 backbone - 后者有两个 hourglass 模块,而前者只有一个。 由 CornerNet 添加的关于 Hourglass 架构的所有修改都得以保留。
Comparisons with State-of-the-art Detectors
表2显示了与MS-COCO测试开发装置上的现有技术检测器的比较。
与基线CornerNet [20]相比,本文的CenterNet取得了显着的进步。 例如,CenterNet511-52(意味着输入图像的分辨率为511×511,主干为沙漏-52)报告单一尺度测试AP为41.6%,比37.8%提高3.8%,并且多 在相同设置下,Corner-Net实现了43.5%的规模测试,比39.4%提高了4.1%。 当使用更深的骨骼(即沙漏-104)时,在单尺度和多尺度下,对CornerNet的AP改进为4.4%(从40.5%到44.9%)和4.9%(从42.1%到47.0%) 分别进行规模测试。 这些结果证明了CenterNet的有效性。
同时,可以看出,最大的贡献来自小物体。 例如,CenterNet511-52将小物体的AP提高了5.5%(单一规模)和6.4%(多规模)。 对于骨干沙漏-104,改进分别为6.2%(单一规模)和8.1%(多规模)。 其好处源于中心关键点建模的中心信息:不正确的边界框的比例越小,可以在其中心区域检测到中心关键点的概率越低。 图6(a)和图6(b)显示了一些定性比较,它们证明了CenterNet在减少小的不正确边界框方面的有效性。
CenterNet还可以为减少中等和大型不正确的边界框带来巨大的改进。 如表2所示,CenterNet511-104分别将单一尺度测试AP提高了4.7%(从42.7%提高到47.4%)和3.5%(从53.9%提高到57.4%)。 图6(c)和图6(d)显示了减少中等和大的不正确边界框的一些定性比较。 值得注意的是,AR也得到了显着改善,通过多尺度测试获得了最佳性能。 这是因为作者的方法删除了许多不正确的边界框,这相当于提高了那些具有准确位置但得分较低的边界框的置信度。
在比较其他一阶段方法时,CenterNet511-52报告了41.6%的单级测试AP。 这一成就已经优于使用更深层次模型的成就(例如,RetinaNet800 [24]和RefineDet [45])。 CenterNet的最佳性能是AP 47.0%,远远超过了作者所知的所有已发布的一阶段方法。
最后,可以观察到CenterNet的性能也与两阶段方法性能相近,例如,CenterNet511-52的单级测试AP与两阶段方法Fitness R-CNN相当[41](41.6) %对41.8%)和CenterNet511-104的对比分别与D-RFCN + SNIP [38](44.9%对45.7%)相当。 然而,应该提到的是,两阶段方法通常使用更大分辨率的输入图像(例如,~1000×600),这显着提高了检测精度,尤其是对于小物体。 CenterNet511-104实现的多尺度测试AP 47.0%与最先进的AP 47.4%非常匹配,由两级探测器PANet [26]实现。 作者在图7中给出了一些定性检测结果。
Incorrect Bounding Box Reduction
AP [25]度量标准反映了网络可以预测多少高质量物体边界框(通常为 $IoU \geq 0.5$),但不能直接反映网络生成多少个不正确的物体边界框(通常为 $IoU << 0.5$)。 FD 率是一个合适的度量,它反映了不正确的边界框的比例。 表3显示了CornerNet和CenterNet的FD率。即使在IoU = 0.05阈值时,CornerNet也会生成许多不正确的边界框,即CornerNet511-52和CornerNet511-104分别获得35.2%和32.7%的FD率。 另一方面,CornerNet生成的中小型不正确边界框的小错误边界框分别为CornerNet511-52的62.5%和CornerNet511-104的60.3%。 作者的CenterNet通过探索中心区域来降低所有标准的FD率。 例如,CenterNet511-52和CenterNet511-104将 $FD_5$ 减少了4.5%。 此外,小型边界框的FD率下降幅度最大,分别为CenterNet511-52的9.5%和CenterNet511-104的9.6%。 这也是小物体的AP改进更加突出的原因。
Inference Speed
本文提出的 CenterNet 以最低成本探索每个 proposals 区域内的视觉模式。 为了确保公平比较,作者在NVIDIA Tesla P100 GPU上测试Corner [20]和CenterNet的推理速度。 作者得出CornerNet511-104的平均推断时间是每个图像300ms,而CenterNet511-104的平均推断时间是340ms。 同时,使用Hourglass-52 backbone 可以加快推理速度。 作者的CenterNet511-52平均每张图像处理270毫秒,比CornerNet511-104更快,更准确。
Ablation Study
作者的工作贡献有三个组成部分,包括 central region exploration, center pooling 和 cascade corner pooling。 为了分析每个组成部分的贡献,这里给出了消融研究。 baseline 是CornerNet511-52 [20]。 作者将这三个组件逐个添加到基线中,并遵循第4.1节中详述的默认参数设置。 结果列于表4中。
Central region exploration: 为了理解 central region exploration 的重要性(参见表4中的CRE),作者将中心热图分支添加到基线中并使用三元组关键点来检测边界框。对于中心关键点检测,作者仅使用传统的卷积。 如表4第三行所示,作者将AP提高了2.3%(从37.6%提高到39.9%)。 但是,作者发现小物体(即4.6%)的改进比其他物体比例更重要。 大型物体的改进几乎可以忽略不计(从52.2%到52.3%)。 这并不奇怪,因为从概率的角度来看,小物体的中心关键点比大物体的中心关键点更容易定位。
Center pooling: 为了证明本文提出的 center pooling 的有效性,作者然后将 Center Pooling 模块添加到网络中(参见表中的CTP)。 表4中的第四行显示, Center Pooling 将AP提高了0.9%(从39.9%提高到40.8%)。 值得注意的是,在 Center Pooling 的帮助下,作者将大型物体的AP提高了1.4%(从52.2%提高到53.6%),这远远高于使用传统卷积的改进(即1.4%对0.1%)。 它表明作者的 Center Pooling 能够有效地检测物体的中心关键点,特别是对于大型物体。作者的解释是, Center Pooling 可以提取更丰富的内部视觉模式,而更大的物体包含更易于访问的内部视觉模式。 图6(e)显示了没有/有 Center Pooling 的中心关键点的检测结果。 作者可以看到传统的卷积无法找到奶牛的中心关键点,但是通过 Center Pooling ,它成功定位了中心关键点。
Cascade Corner Pooling: 作者用 Cascade Corner Pooling 替换 Corner Pooling 以检测 Corners(参见表中的CCP)。表4中的第二行显示了作者在 CornerNet511-52 的基础上测试的结果。作者发现 Cascade Corner Pooling 将AP提高了0.7%(从37.6%提高到38.3%)。最后一行显示了作者在 CenterNet511-52 的基础上测试的结果,它将AP提高了0.5%(从40.8%提高到41.3%)。第二行的结果表明,大型物体的AP几乎没有变化(即52.2%对52.2%),但AR增加了1.8%(从74.0%增加到75.8%)。这表明,由于大型物体中丰富的内部视觉图案,Cascade Corner Pooling 可 “看到” 更多物体,但过于丰富的视觉模式可能会干扰其对边界信息的感知,从而导致许多不准确的边界框。配备作者的CenterNet后,可以有效地抑制不准确的边界框,从而将大型物体的AP提高2.2%(从53.6%提高到55.8%)。图6(f)显示了检测 Corner Pooling 或Cascade Corner Pooling 的角落的结果。作者可以看到,Cascade Corner Pooling 可以成功地找到左侧猫的一对角落,而 Corner Pooling 不能。
Error Analysis
每个边界框内的视觉模式的探索取决于中心关键点。 换句话说,一旦错过了中心关键点,建议的CenterNet将错过边界框内的视觉模式。 为了理解中心关键点的重要性,作者用 GT 值替换预测的中心关键点,并评估 MS-COCO 验证数据集的性能。 表5显示,使用 GT 的中心关键点,CenterNet511-52 的 AP 从 41.3% 提高到 56.5%,CenterNet511-104 的 AP 从 44.8% 提高到 58.1%。 CenterNet511-52 的小型,中型和大型物体的AP分别提高了15.5%,16.5%和14.5%,CenterNet511-104分别提高了14.5%,14.1%和13.3%。 这表明中心关键点的检测远非瓶颈。
Conclusions
在本文中,作者提出了CenterNet,它使用三元组检测物体,包括一个中心关键点和两个角。 作者的方法通过以最小的成本探索每个提议区域内的视觉模式来解决Corner-Net缺乏对裁剪区域的额外观察的问题。 事实上,这是所有一阶段方法的常见缺陷。 由于一阶段方法消除了RoI提取过程,他们无法关注裁剪区域内的内部信息。
对作者贡献的直观解释在于,作者为一级探测器配备了两级探测器的能力,并增加了一个有效的鉴别器。 作者认为,为中心关键点添加额外分支的想法可能会推广到其他现有的单阶段方法(例如,SSD [27])。 同时,一些先进的训练策略[46]可用于提高绩效。