CenterNet: Keypoint Triplets for Object Detection

——中科院,牛津大学以及华为诺亚方舟实验室联合出品的单阶段检测器

——https://github.com/Duankaiwen/CenterNet

摘要

基于关键点检测的算法如CornerNet,通过检测物体的左上角和右下角来确定目标,但在确定目标的过程中无法有效利用物体内部的特征,无法感知物体内部信息,从而导致很多误检。本文称为CenterNet,将每个目标定义为3元组:左上角,右下角,中心点,由此可以提升召回率和准确度。同时文章设计了center poolingcascade corner pooling模块来提取中心点和角点的特征,在COCO数据集上达到47.0%的AP。网络模型如下图:

CenterNet: Keypoint Triplets for Object Detection_第1张图片
CenterNet

Our Approach

Baseline and Motivation

以CornerNet作为Baseline,为检测角点,CornerNet产生两个特征图:左上角特征图和右下角特征图,特征图代表着不同类别关键点的位置和置信度。同时,网络还为每个关键点预测一个组合关系以及偏移量,组合关系用于确定两个角点是否来自同一个目标,偏移量用于将特征图上的位置映射回原图。为了产生检测框,根据置信度,前个左上角点和右下角点从特征图上提取出来,然后,一对角点之间组合向量的距离用于确定它们是否属于同一个目标,如果距离小于阈值,则产生一个检测框,检测框的置信度等于两角点置信度的均值。

CornerNet 通过检测角点确定目标,而不是通过初始候选框 anchor 的回归确定目标,由于没有了 anchor 的限制,使得任意两个角点都可以组成一个目标框,这就对判断两个角点是否属于同一物体的算法要求很高,一但准确度差一点,就会产生很多错误目标框。其次,这个角点组合算法有缺陷,仅仅依赖于网络预测的组合向量之间的距离,在判断两个角点是否属于同一物体时,缺乏全局信息的辅助,因此很容易把原本不是同一物体的两个角点看成是一对角点,因此产生了很多错误目标框。最后,角点的特征对边缘比较敏感,这导致很多角点同样对背景的边缘很敏感,因此在背景处也检测到了错误的角点。综上原因,使得 CornerNet 产生了很多误检。如下图,蓝色为标注,红色为检测框,出现很多误检。

CenterNet: Keypoint Triplets for Object Detection_第2张图片
CornerNet效果

不光CornerNet,基于anchor的单阶段检测器也存在这个问题,因为此类方法直接对 anchor 进行回归和分类,这个过程并没有像 two-stage 的方法一样利用到了物体内部特征,因此无法感知物体内部信息,就会和 CornerNet 一样产生很多误检。

为了能够量化的分析误检问题,提出了一种新的衡量指标,称为FD (false discovery) rate, 此指标能够很直观的反映出误检情况。FD的计算方式为 FD = 1-AP, 其中 AP 为 IoU 阈值取[0.05 : 0.05 : 0.5]下的平均精度。本文统计了 CornerNet 的误检情况,如表所示:


False discovery rates of CornerNet

Object Detection as Keypoint Triplets

抑制误检的原理基于以下推论:如果目标框是准确的,那么在其中心区域能够检测到目标中心点的概率就会很高,反之亦然。因此,首先利用左上和右下两个角点生成初始目标框,对每个预测框定义一个中心区域,然后判断每个目标框的中心区域是否含有中心点,若有则保留该目标框,若无则删除该目标框,其原理如下图所示:

CenterNet: Keypoint Triplets for Object Detection_第3张图片
抑制误检

在CornerNet的基础上,增加一个关键点特征图,用于预测关键点及其偏移。同样采用CornerNet的方法匹配角点,生产检测框。为了抑制误检,利用检测到的中心点进行以下操作:根据置信度找出前个关键点;利用偏移来将特征图上的中心点映射回原图;为每一个检测框定义中心区域并检查中心区域是否包含中心关键点;如果中心点被检测到在中心区域中,则最终产生检测框。检测框的置信度等于三个点的平均值,如果中心区域内不包含中心点,则架构该检测框移除。

中心区域的尺寸影响着检测结果,较小的区域将导致小检测框较低的召回率,较大的中心区域将导致大检测框较低的准确率。因此,文章提出尺度自适应的中心区域来适应检测框的大小,为小检测框产生相对较大的中心区域,为大检测框产生相对较小的中心区域。判断检测框是否应该被保留,令代表边框左上角的坐标,代表边框的右下角坐标,定义中心区域,分表表示中心区域的左上、右下角坐标。则应满足关系:

CenterNet: Keypoint Triplets for Object Detection_第4张图片
中心区域和检测框应满足的关系

表示中心区域的尺度。对于边框小于150的,,对于边框大于150,,如下图:

CenterNet: Keypoint Triplets for Object Detection_第5张图片
尺寸自适应的中心区域

Enriching Center and Corner Information

Center pooling

物体的几何中心不一定有非常可识别的视觉信息,因此提出center pooling来获取更加丰富和更具识别性的视觉信息。主干网络输出特征图,为了确定特征图上一点是否是中心关键点,需要找到水平和垂直方向上的最大值,然后将它们加在一起,以此给中心点提供所处位置以外的信息。这一操作使中心点有机会获得更易于区分于其他类别的语义信息。Center pooling可以通过不同方向上的 corner pooling 的组合实现。一个水平方向上的取最大值操作可由 left pooling和right pooling通过串联实现,同理,一个垂直方向上的取最大值操作可由top pooling和bottom pooling通过串联实现,如下图。

CenterNet: Keypoint Triplets for Object Detection_第6张图片
Center pooling 和 Cascade corner pooling

Cascade corner pooling

角点通常在物体之外,因此缺少局部外观信息。CornerNet采用Corner Pooling来解决这个问题,如上图,Corner pooling用于找到边界方向上的最大值,它提取物体边界最大值并相加,该方法只能提供关联物体边缘语义信息,对于更加丰富的物体内部语义信息则很难提取到,这样会使得角点对于边界很敏感。为了解决这个问题,应当令角点包含更多物体的视觉信息。cascade corner pooling首先提取物体边界最大值,然后在边界最大值处继续向内部提取提最大值,并与边界最大值相加,以此给角点特征提供更加丰富的关联物体语义信息。Cascade corner pooling 也可通过不同方向上的 corner pooling 的组合实现。

Training and Inference

训练输入大小为511*511,特征图的大小为128*128。损失为:

损失函数

分别代表预测角点和中心点的Focal Loss。用于最小化属于同一物体的角点组合向量之间的距离,用于最大化不同物体的角点组合向量之间的距离。都是Loss,用于训练预测角点和中心点的偏移。前向时,选取top-70的角点和中心点,经过soft-nms,最后选取top100的检测框。

Comparisons with State-of-the-art Detectors

CenterNet: Keypoint Triplets for Object Detection_第7张图片
实验结果对比

你可能感兴趣的:(CenterNet: Keypoint Triplets for Object Detection)