1简介
在当前时代,目标检测主要有两类:top-down
的检测方法和bottom-up
的检测方法。人们认为bottom-up
的方法可能耗时较长,并且会引入更多的误检现象,而top-down
的方法由于其在实践中的有效性逐渐演变为主流方法。
所有top-down
的方法都将每个目标建模为一个先验点或预定义的Anchor boxes
,然后预测到边界框的相应偏移量。top-down
方法更多是将目标视为一个整体,这简化了生成边界框的后处理。然而,top-down
方法通常难以感知特殊形状的物体(例如,物体的高宽比很大)。图1(a)显示了top-down
方法不能覆盖列车的情况。
另一方面,作者发现bottom-up
的方法在定位任意几何形状的目标时可能更好,因此有更高的召回率。但是传统的bottom-up
方法也会产生很多误检,不能准确地表示目标。以最具代表性的bottom-up
方法之一CornerNet
为例,它使用一对角关键点对每个目标进行建模,实现了最先进的目标检测精度。然而,由于对全局信息的表征能力相对较弱,CornerNet
的性能仍然受到限制。
也就是说,由于每个目标都是由一对Corne
构造的,该算法敏感地检测目标的边界,而不知道应该将哪些对关键点分组到目标中。因此,如图1(b)所示,CornerNet
经常会生成不正确的边框,其中大部分都可以通过一些补充信息过滤掉,例如长宽比。
在分析bottom-up
方法的驱动下,作者的核心观点是,只要提高bottom-up
方法感知目标全局信息的能力,bottom-up
方法将可以达到与bottom-up
方法一样具有竞争力。
在本文中提出了一种低成本但有效的解决方案,名为CenterNet
,这是一种强大的bottom-up
目标检测方法,它将每个目标检测为一个三元组关键点(左上角、右下角和中心关键点)。CenterNet
探索一个方案的中心部分,即靠近一个box的几何中心的区域,有一个额外的关键点。
作者直觉地认为,如果预测的边界框与GT框的IoU
很高,那么边界框中心区域的center keypoints
被预测为同一类的概率就很高,反之亦然。因此,在推理过程中,在proposal
作为corner keypoints
对生成后,通过检查是否有同一类的center keypoints
落在其中心区域内来确定该proposal
是否确实是一个目标。思路如图1(c)所示。
本文设计了2个框架来适应不同结构的网络,第一个框架适用于hourglass
网络,它可以在单一分辨率的特征图上检测物体。这种网络在关键点估计任务中非常流行,如 hourglass network
,将其应用于更好地预测corner keypoints
和center keypoints
。
作者还设计了适合pyramid-like
网络的框架,在多分辨率特征图上检测目标。这带来了2个优势:
- 较强的通用性,大多数网络都可以适配金字塔结构,如ResNet及其变体;
- 不同尺度的目标在不同的感受野中被检测出较高的检测精度。
虽然金字塔结构在top-down
的方法中得到了广泛的应用,但据作者描述,它是第一次在bottom-up
的方法中使用。
在MS-COCO数据集上评估了提议的CenterNet
, MS-COCO数据集是最流行的大规模目标检测基准之一。CenterNet
通过Res2Net-101
和Swin-Transformer
分别实现了53.7和57.1的ap,大大超过了所有现有的bottom-up
检测器。作者还设计了一个实时的CenterNet
,实现了精度和速度之间的良好权衡,AP在30.5 FPS下达到43.6。CenterNet非常高效,但与其他top-down
方法的最先进性能具有一定的竞争力。
作者主要从以下几个方面改进了工作:
- 原来的
CenterNet
仅适用于基于Hourglass
的Backbone网络
,所有目标仅在一个单分辨率特征图进行检测。作者扩展了CenterNet
的思想,使其能够工作在具有金字塔结构的网络中,这使得CenterNet
可以在多分辨率特征图中检测目标。为此,作者也提出了新的检测关键点(包括corner keypoints
和center keypoints
)以及分组keypoints
的方法。 - 由于对
CenterNet
的进行了新的设计,作者可以尝试更多具有金字塔结构的Backbone
,如ResNet
,ResNext
和Res2Net
。作者甚至使用Transformer
的Backbone
进行了实验。实验结果表明,引入金字塔结构可以使网络利用更丰富的感受野来检测目标,从而显著提高了检测精度。 - 作者还提出了一个
实时CenterNet
,它在流行的检测器中实现了更好的精度/速度权衡。
本文的主要贡献:
- 提出了一种强
bottom-up
的目标检测方法,命名为CenterNet
。它将每个目标检测为一个三重关键点,具有对任意几何形状的目标进行定位和感知目标内部全局信息的能力。- 设计了2个框架来适应不同结构的网络,具有更强的通用性,可以适用于几乎所有的网络。
- 没有花里胡哨的东西,CenterNet在
bottom-up
方法中实现了最先进的检测精度,并与其他top-down
方法的最先进性能相当。- 通过适当降低结构复杂度,
CenterNet
实现了精度与速度的良好平衡。证明了bottom-up
方法是必要的,并且与top-down
方法一样具有竞争力。
2相关工作
2.1 Top-down方法
Top-down方法首先找到代表整个目标的proposals
,然后通过对proposals
进行分类和回归,进一步确定类和目标的边界框。根据proposals
形式的不同,可以将proposals
进一步分为anchor-based
和anchor-free
。
1、Anchor-based方法
Anchor-based proposals
,也称为Anchors
,从具有不同预定义大小、比例和形状的矩形开始。它们均匀地分布在特征图上,并在GT物体的帮助下训练返回到所需的位置。其中,一些方法更注重检测结果的质量。其中最具代表性的是RCNN
。它把目标确定的过程分为两个阶段。在第一阶段挑选出一些有意义的proposals
,并在第二阶段进一步验证。
之后,提出了大量的工作来扩展它,如SPPNet、Fast R-CNN、Faster R-CNN、Cascade R-CNN、MR-CNN、ION、OHEM、HyperNet、CRAFT、R-FCN、FPN、Libra R-CNN、Mask R-CNN、fit-nms、Grid R-CNN、TridentNet等。
其他一些方法更注重检测速度。它们通常没有proposals
验证阶段。代表性的方法有SSD、DSSD、RON、YOLOv2、RetinaNet、RefineDet、AlignDet、ATSS、M2Det、GFL、FreeAnchor、FSAF等。
2、Anchor-free方法
尽管Anchors
的应用取得了巨大成功,他们依然遇到了许多缺点,例如,大量的Anchors
往往需要确保与GT框具有足够高IoU,同时每个Anchors box
的大小和长宽比都需要手工设计。因此,有研究者提出了非常简洁的Anchor-free proposals
。Anchor-free proposals
将目标表示为目标中的点。Anchor-free proposals
的关键是准确地预测相对稀疏点的标签和点到目标边界的距离。典型的方法有FCOS系列
、Objects as Points系列
、FoveaBox系列
、SAPD系列
、RepPoints系列
等。
2.2 Bottom-up方法
Bottom-up方法
检测目标的各个部分,而不是将目标视为一个整体。随后,属于同一目标的各个部分将通过一些可训练的后处理算法组合在一起。Bottom-up方法
可以追溯到前深度学习时代,Felzenszwalb等人使用多尺度可变形部件模型的混合物来表示对象,称为DPM
。
最近,关键点估计启发了目标检测,通过检测和分组关键点来识别对象,例如,CornerNet
和CornerNet-lite
将目标检测为成对的角,而ExtremeNet则检测一个目标的4个极值点(最上、最左、最下、最右)。
Bottom-up方法
不需要Anchors
,属于Anchor-free检测器
的一种。Bottom-up方法
大多基于最先进的关键点估计框架,这也带来了一些缺点,如过度依赖高分辨率的热力图,推断速度太慢等。
3本文方法
3.1 Baseline与动机
基于以上部分的讨论,作者认为Bottom-up方法
在定位任意几何形状的对象方面有更好的潜力,同时召回率更高。这是因为大多数Top-down方法
是基于Anchors
工作的,这是非常经验的(例如,为了提高效率,只考虑具有常见尺寸和长宽比的Anchors
),它们的形状和位置是相对固定的,尽管随后的边界框回归过程可能会略微改变它们的状态。因此,检测器往往会错过形状奇特的物体。
表1
图1(a)是一个典型的例子。作者还提供了一个定量研究,如表1所示。在MS-COCO验证数据集上对三种具有代表性的方法以及本文的工作进行了评估。表1显示,Top-down方法
的召回率明显低于Bottom-up方法
,特别是对于具有特殊几何形状的对象,例如,规模大于像素或纵横比大于5:1。
这并不奇怪,因为一方面,对于Faster RCNN来说,没有预定义的Anchors
可以匹配这些对象。另一方面,对于FCOS,一种典型的Anchor-free Top-down方法
,很难精确地回归从边界到proposals
的长距离。由于Bottom-up方法
通常检测对象的各个部分,并将它们分组到对象中,因此它们在一定程度上避免了这个问题。
此外,作者还给出所提出的CenterNet
的结果,该结果表明,CenterNet继承了Bottom-up方法
在灵活定位对象方面的优点,特别是在特殊几何形状的情况下。
尽管Bottom-up方法
具有很高的召回率,但它们经常产生许多误检。以CornerNet
为例,它生成两个热力图来检测角:left-top corners heatmap
和bottom-right corners heatmap
。heatmap
表示不同类别的关键点的位置,并为每个关键点分配一个置信度。
此外,CornerNet
还预测每个corner
的嵌入
和偏移量
(如图2所示)。这些嵌入
用于识别2个corner
是否来自同一个对象。偏移量
学会从heatmap
映射到输入图像的corner
。生成对象边框时,根据其得分,分别从heatmap
中选择left-top corners
和bottom-right corners
。然后,计算一对corner
的嵌入向量的距离,以确定成对的corner
是否属于同一对象。如果距离小于阈值,则生成一个对象边界框。边界框被分配一个置信度分数,它等于corner
对的平均分数。
表2
在表2中,作者对CornerNet
进行了更深入的分析。计算了MS-COCO验证数据集上CornerNet
的AF(average false discovery,AF=1−AP)。结果表明,即使在较低的IoU阈值下,错误的边界框也占很大比例,例如,在IoU=0.05时,CornerNet
获得32.7%的AF。这意味着平均每100个物体预测框中有32.7个IoU低于0.05。小的不正确的边界框更多,达到60.3%的AF。其中一个可能的原因是,CornerNet
无法查看边界框内的区域。
为了让CornerNet
感知到边界框中的视觉模式,一个可能的解决方案是将CornerNet
改造成一个两阶段检测器,它使用RoI pool
来查看边界框中的视觉模式。然而,众所周知,这种模式的计算成本很高。
在本文中提出了一个名为CenterNet
的高效替代方案来探索每个边界框内的视觉模式。为了检测一个对象,CenterNet
使用3个关键点,而不是1对关键点。通过这样做,CenterNet
只关注中心信息,成本最小,但部分继承了RoI pool
的功能。
此外,设计了2个框架,分别在Single-resolution
特征图和多分辨率特征图上检测目标。将前者应用于关键点估计网络,希望能更好地检测出corner keypoints
和center keypoints
。而后者由于具有更好的通用性和更丰富的检测感受野而在目标检测中更受欢迎。这两个框架仅仅是在设计细节上略有不同。
3.2 Object Detection as Keypoint Triplets
1、Single-resolution
检测框架
受位姿估计的启发,将常用的位姿估计网络用于更好地检测corner keypoints
和center keypoints
,其中大多数都是在单分辨率特征图上检测关键点,如hourglass network
。
图2
整个网络架构如图2所示。用一个corner keypoints
和一对center keypoints
来表示每个对象。在此基础上,嵌入了corner keypoints heatmap
,并预测了corner keypoints
的偏移量。然后,使用在CornerNet
中提出的方法生成top-k
边界框。但是,为了有效地过滤出不正确的边框,利用检测到的center keypoints
,采用以下步骤:
- 根据得分选取top-k的
center keypoints
;- 利用相应的偏移量将这些
center keypoints
映射到输入图像;- 为每个边框定义一个中心区域,并检查中心区域是否包含
center keypoints
。注意,选中的center keypoints
的类标签应该与边框的类标签相同;- 如果在中心区域检测到一个
center keypoints
,将保留边界框。边界框的得分将替换为左上角、右下角和center keypoints
三个点的平均得分。如果在其中心区域没有检测到center keypoints
,则边界框将被移除。
2、Multi-resolution
检测框架
图3
整个Multi-resolution
检测框架如图3所示。它从一个Backbone
(如ResNet
,ResNeXt
等)开始,从输入图像中提取特征。从Backbone
中选择C3-C5
特征映射作为特征金字塔结构(FPN)的输入。然后FPN输出P3-P7 feature map
作为最终的预测层。
在每个预测层中,分别使用heatmap
和回归
来预测关键点。在基于heatmap
的预测中,预测了3个光二元heatmap
,用于预测corner keypoints
和center keypoints
。heatmap
的分辨率与预测层相同,因此,为每个关键点预测一个额外的偏移量,以学习将关键点从heatmap
映射到输入图像。
在基于回归的预测中,为了对左上角和右下角进行解耦,将GT框沿几何中心划分为4个GT框,并分别选取左上角和右下角的GT框来监督回归。以左上角框的回归为例,在左上角次GT框中选择了一些特征点,每个选择的特征点预测2个向量,分别指向顶部corner keypoints
和center keypoints
。
此外,还给每个选定的特征点分配一个类标签来监督分类。采用常见的Anchor-Free
检测方法训练网络预测子边界框(如FCOS和RepPoints)。
在推理过程中,回归向量作为线索,在相应的heatmap
中找到最近的关键点,以细化关键点的位置。接下来,每个有效的关键点对定义一个边界框。这里的有效是指两个关键点属于同一个类(即对应的同一类的左上角和右下角的子边界框),并且左上角点的x坐标和y坐标分别小于右下角点的x坐标和y坐标。
最后,为每个边界框定义一个中心区域,并检查该中心区域是否包含2个预测的center keypoints
。如果在其中心区域最多检测到一个中心关键点,则边界框将被移除,边界框得分将被替换为各得分的平均值(即上角、右下角和center keypoints
得分)。
3、中心区域的定义
边界框中中心区域的大小会影响检测结果。例如,小的中心区域导致小边界框的查全率较低,而大的中心区域导致大边界框的精度较低。因此,作者提出了一个尺度感知的中心区域来自适应地拟合边界框的大小。尺度感知的中心区域倾向于为一个小的边界框产生一个相对较大的中心区域,对于一个大的边界框产生一个相对较小的中心区域。
设和表示的左上角的坐标,和表示的右下角的坐标。定义一个中心区域。设和精确表示的左上角的坐标,和表示的右下角的坐标。那么、、、、和应该满足以下关系:
其中n为奇数,决定了中心区域的尺度。本文对小于和大于150的边界框的尺度,n分别设置为3和5。
图4
图4分别显示了n=3和n=5时的两个中心区域。根据等式可以确定一个尺度感知的中心区域,然后检查该中心区域是否包含中心关键点。
3.3 丰富的center和corner的信息
center keypoints
和corner
都与目标有严格的几何关系,但包含有限的对象的视觉模式。这里以一种完全监督的方式训练网络来学习几何关系和有限的视觉特征,从而定位关键点。如果为center keypoints
和corner
引入更多的视觉模式,它们将能够被更好地检测出来。
1、Center pooling
物体的几何中心并不总是传达非常容易识别的视觉模式(例如,人的头部包含强烈的视觉模式,但中心重点往往是在人体的中间)。为了解决这个问题,作者提出Center pooling
来捕捉更丰富、更容易识别的视觉模式。
图5 Center pooling
的原理
Center pooling
的详细过程如下:
Backbone
输出一个feature map,为了判断feature map中的一个像素是否为center keypoints
,需要在水平和垂直两个方向上都找到最大值,并将这些值相加。通过这样做,Center pooling
可以提高中心关键点的检测。
2、Cascade corner pooling
corner
通常是物体的外部,缺乏局部外观特征。CornerNet
使用Corner pooling
来解决这个问题。Corner pooling
原理如图5(b)所示。Corner pooling
的目的是在边界方向上找到最大值来确定corner
。然而,这使得corner
对边很敏感。为了解决这个问题,需要让corner
从对象的中心区域提取特征。
图6 Cascade corner pooling原理
图6(a)显示了
Center pooling
模块的结构。要在特定的方向(如水平方向)取最大值,只需要依次连接左、右池化即可。图6(b)显示了
Cascade corner pooling
模块的结构,其中白色矩形表示3×3卷积之后是批归一化。与CornerNet
的Corner pooling
相比,在top-corner池化
之前增加了一个left-corner池化
。
Cascade corner pooling
的详细过程如下:
首先沿边界查找边界最大值,然后沿边界最大值的位置查找框内查找内部最大值;最后,将两个最大值相加。通过
Cascade corner pooling
,corner
既获得了物体的边界信息,又获得了物体的视觉模式。
3.4 损失函数
1、Single-resolution
检测框架损失函数
其中:
2、Multi-resolution
检测框架损失函数
其中: