论文地址:https://arxiv.org/abs/1904.08189
论文代码:https://github.com/Duankaiwen/CenterNet
发布时间:2019.4.17
发布机构:University of Chinese Academy of Sciences ;University of Oxford ;Huawei Noah’s Ark Lab
之前精读了篇也叫centerNet的网络:论文精读——CenterNet :Objects as Points 可以看得出最近目标检测的趋势大致都是去掉了锚点机制,引入关键点得到目标框,在one-stage方法中充分权衡了速度和精度,取得了不错效果。
在目标检测中,基于关键点的方法常常出现很多边界框不正确,原因在于缺少对裁剪框中内容做进一步校验。本文找到一种基于最小代价情况下探究各个裁剪框内视觉模式的方法。基于此前one-stage的CornerNet做的改进,我们方法叫做CenterNet,将每个检测目标看做是三点(triplet),而不是一对关键点构成,此举改善了精度和召回率。相应地,还设计了两个自定义模块,分别叫做cascade corner pooling(级联角点池化) 和 center pooling(中心点池化),各自的作用是丰富了利用左上和右下角收集的信息,提供更多中心区域的识别信息;
在MS-COCO数据集上,本方法获得AP 47.0%,比现有one-stage方法高4.9%至少,且速度更快,此外与two-stage方法性能也有可比性。
当前较为流行的目标检测方法是基于锚点的,具体流程是将预先定义好尺寸大小的一系列矩形框放在图像上,然后在真实框(监督的GT)的帮助下,回归到期望位置。该类基于锚点的检测方法缺点是:1.往往需要大量锚点从而确保与GT目标有较高的IOU;2.框的尺寸和比例需要手动设计;3.锚点框往往不与实际框对齐,这不利于Bbox做分类任务。
为了克服如上问题,提出了基于关键点的目标检测方法——CornerNet;
CornerNet 优点:以一对角点方式构建目标,绕过锚点问题,实现one-srage目标检测最好的精度度;
CornerNet 缺点:由于目标的全局信息获取能力较弱,使得其性能受限,也就是说,每个目标由一对角点来表述,导致算法对目标框比较敏感,同时不知道哪些关键点该组成一对来构建成目标。 结果如图1所示,常常产生错误的边界框,如果有补充信息(如宽比例大小)则能简单滤除此类错误。
为了解决CornerNet的问题,我们提出CenterNet,该网络能感知每个proposed region处的视觉模式(内容),从而能自行确定每个边界框的正确性。利用一个额外的关键点来获取proposal区域的中心部分,该中心区域与几何中心很近。我们设计的初衷思想是:如果一个预测框与GT框有很高的IOU,然后中心关键点在预测框的中心区域中预测同种类别的概率也很高,反之亦然。简单地说,就是在推理时,通过一对角点关键点得到一个proposal区域,我们通过检测是否有同种类别的中心关键点出现在proposal的中心区域 来判断这个proposal是否真的是目标。思路见图1,即用三个点来表述目标,而非一对角点。
本文还提出了两个策略来更好达到目的,
第一个策略 center pooling: 在预测中心关键点的分支网络中使用。Center pooling帮助中心关键点获取更多目标中可识别的视觉信息,对proposal中心部分的感知会更容易。通过在预测中心关键点的特征图上,对关键点响应值纵向和横向值的求和的最大值来获取最大响应位置。
第二个策略 cascade corner pooling: 使得原始corner pooling 模块具有感知内部信心的能力。我们通过在特征图上获得目标边界和内部方向最大响应值的和来预测角点。
我们的CenterNet ,带center pooling和cascade corner pooling的,在MS-COCO的测试集上取得AP 47.0%;52层 hourglass作为backbone时推理时间为270ms, 104层时为340ms。
深度学习方法的目标检测主要可分为两类:two-stage 和 one-stage
Two-stage 方法,将目标检测任务分为两个阶段:提取RoIs, 然后对RoIs进行分两类和回归。R-CNN使用SS方式获得RoIs,使用基于DCN分类;SPP-Net, Fast-RCNN,从特征图提取RoIs;Faster-RCNN使用RPN;此处原文还提到Mask-RCNN,R-FCN, Cascade R-CNN;基于关键点检测的方式可避免使用锚点框和框回归的问题。
One-stage 方法,取消了RoI提取的过程,直接分类和回归候选锚点框。 文中提到了Yolo,Yolo v2,SSD, DSSD,R-SSD,RON,RefineDet, CornerNet;
本文使用CornerNet作为baseline. 为了检测角点,CornerNet会产生两个热力图:一个是左上角点热力图,一个右下角点热力图。热力图表示不同类别关键点的位置且为每个关键点赋予了置信度值。此外,它还预测了一个嵌入信息,为每个角点提供一组偏移值。这个嵌入信息用于识别两个角点是否来自同个目标。这个偏移值用于将角点从热力图重新映射回输入图像上。根据得分值大小,从热力图上分别获得左上角点和右下角点的前top-k个来生成目标框。计算一对角点的向量距离来确定这对角点是否来自同个目标。当一对角点的距离小于一个特定阈值,即生成一个目标框,目标框的置信度是这对角点热力值的平均值。
CornerNet在MS-COCO验证集上的FD(false discovery) rate如表1所示。IOU为0.05时,FD=32.7%,即每100个检测目标框中有32.7个框与GT的IOU小于0.05.造成这种情况的可能原因是CornerNet无法获取bbox内的信息。
我们提出的CenterNet,在检测目标时,我们使用三个关键点而不是一对关键点。我们的方法仍属于one-stage的检测器。且部分继承了RoI Pooling功能。我们的方法只关注中心信息,造成的附加代价较小。
整体的网络结构见图2,
通过一个中心关键点和一对角点来描述每个目标。利用检测到的中心关键点来重新排列top-k个bbox,从而滤除不正确的bbox,流程如下:(1)根据得分情况,选择top-k个中心关键点;(2)根据相应偏移值,将这些选出的中心关键点在输入图像上重绘;(3)为每个BBox设计一个中心区域,并检查这个中心区域中是否包含中心关键点,需要注意的是检测的中心关键点所属类别需要与Bbox的类别一致;(4)如果在中心区域中检测到中心关键点,将保留该Bbox. 这个Bbox的得分值等于 三个点(top-left, bottom-right, center keypoint)得分的平均值。倘若没有在中心区域检测到中心关键点,则该Bbox将被移除。
可以看到图2中将Bbox分为3x3的网格,中心网格位置就是一个中心区域,用于搜索中心关键点的。
Bbox中心区域的大小会影响检测结果,如小的中心区域导致小的bbox的地recall,对大的bbox取大的中心区域会导致低precision。文章提出scale-aware(尺寸可调)中心区域 来自适应各种尺寸的bbox. 即对于小的bbox框用相对较大的中心区域,对于大的bbox框用相对较小的中心区域。所用公式如下,参考图3,涉及预测框左上角点,右下角点。中心区域左上角点和右下角点 的坐标:
其中n为奇数; 作者论文中对于bbox小于150时取n=3,当bbox大于150时取n=5;根据公式1计算中心区域,用于检测是否包含中心关键点。
Center pooling.
物体的几何中心可能不会传达可识别性较强的模式(如人的头可识别性较强,却不是人体中心)。本文提出用center pooling来获取更丰富更具识别性的视觉模式。图4 显示了center pooling的原理,详细过程如下:首先backbone会输出一个特征图,为了确定特征图上的某个像素是否为中心关键点,需要在水平和垂直方向寻找最大值,并且将最大值相加。 center pooling有利于更好检测中心关键点。
Cascade corner pooling.
corners(我翻译成了角点,表示四角上的点) 通常在物体之外,缺乏局部外观特性。CornerNet用corner Pooling来解决此问题,通过沿边界方向找到最大值从而确定角点(见图4(b)),但其确实点角点对边界特别敏感(因为是针对边界的特征信息做的池化操作,受边界信息变化影响较大)。为此,本文作者提出让角点可看到更多的目标视觉模式信息(即获取物体内部的信息,而非单单边界的),见图4(c),原理是沿边界寻找最大值,根据边界沿物体内部方向寻找最大值,将两个最大值相加。该方法获取的角点 带有边界信息以及物体内部的数据模式信息。
以上两个池化操作的模块见图5;
Training.
输入图像尺寸:511x511; 经过backbone的热力图尺寸:128x128. 作者还用到数据增强。训练loss函数定义如下,采用了Adam优化器:
其中各个loss的含义具体可参考cornerNet的论文,其有详细介绍。
Inference.
对于单尺度测试,将原始图和水平翻转图像以原始分辨率送入网络。对于多尺度测试,将原始图和水平翻转图以0.6,1,1.2,1.5,1.8的尺寸倍数送入网络。从热力图中选择top70个中心关键点和top70个左上角点和70个右下角点来检测bbox,将水平翻转图上检测到的bbox水平翻转回来与原始未翻转的bbox混合,用soft-nms来移除冗余的bbox。根据得分情况,最后选择top-100个bbox用于检测。
使用MS-COCO数据集,用AP和AR来描述检测器性能。
对比结果见表2,CenterNet511-52表示输入图像分辨率 511x511,52表示Hourglass-52的basebone;
AP度量:反应一个网络能预测多少高质量目标框(通常IOU>=0.5),而不能直接反应多少不正确的目标框(通常IOU<<0.5)。
FD度量:反应不正确框的比例;
对比见表3
测试平台:NVIDIA Tesla P100 GPU
CornerNet511-104 一张图需要300ms;
CenterNet511-52 一张图需要270ms;
CenterNet511-104 一张图需要340ms;
作者还研究了Central region的影响, Center pooling.Cascade corner pooling.的一些实验获取的结论(即使用其中一个或两个的数据结果),数据如下表: