ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

论文:《Bottom-up Object Detection by Grouping Extreme and Center Points》 CVPR2019

论文地址:https://arxiv.org/pdf/1901.08043.pdf

代码https://github.com/xingyizhou/ExtremeNet

原文链接https://blog.csdn.net/chunfengyanyulove/article/details/99181340

                  https://blog.csdn.net/sinat_37532065/article/details/86693930

1、摘要

本篇论文是CVPR2019的一篇anchor free的目标检测论文,借鉴了CornerNet的思想,又对其进行了进一步的改进,取得了还不错的效果。本文提出一种目标检测的新思路:首先通过标准的关键点估计网络来检测4个极值点(即最上点,最下点,最左点,最右点))和1个中心点,然后通过几何关系对提取到的关键点进行分组,一组极值点(5个)就对应一个检测结果。

使得目标检查问题转化成了一个纯粹的基于外观信息的关键点估计问题,从而巧妙地避开了区域分类和隐含特征学习。

与现有的目标检测模型相比,首先极值点比包围框更能反映物体信息,其次作者还提出了使用一个简单的trick就能得到一个更加细致的八边形的分割估计结果,最后如果还不满意还能结合DeepExtremeCut使用,将极值点转化为分割mask,最终的效果甚至可以和Mask R-CNN媲美。


2、介绍

传统目标检测算法的局限性:

  • 因为形状问题(指矩形框),通常预测结果中包含了太多的无用干扰;
  • 枚举了大量不理解目标具体视觉信息的框;
  • 因为包围框本身就不能很好地代表物体本身,所以只能提很有限的信息(形状、姿势等)。

ExtremeNet的大致思路是:使用关键点检测算法,对每个类别预测4张极值点heatmap和1张中心点heatmap,然后通过暴力枚举(复杂度)找到有效的点组。

CornerNet是第一个将关键点检测用在目标检测任务上的模型。

ExtremeNet与CornerNet有两处不同:

  • 如何定义关键点:corner point通常落在物体外部,往往没有强烈的局部特征。而extreme point一半就在物体边界上,视觉上比较好辨认;
  • 关键点分组:ExtremeNet纯粹依赖几何关系进行极值点的分组,没有隐含的特征学习,效果更好。
     

Two-stage方面

作者首先肯定了RCNN类方法取得的成绩,但也提出了自己的观点,即认为对于目标检测任务而言,Region不见得是必须存在的。 
One-stage方面

ExtremeNet也属于One-stage类目标检测模型
YOLO、SSD等在空间中设置anchor。
ExtremeNet在空间中检测5个独立的部件,具体而言,在每个heatmap中只预测某位置是一个极值点的概率。对于用来预测center的heatmap而言,可以将其理解为一个用来预测尺度宽高未知的RPN。


3、网络结构

下图所示为本文的网络结构,ExtremeNet采用HourglassNetwork检测每个类别的5个关键点(四个极点、一个中心点),沿用了CornerNet训练配置、loss和偏移量预测部分。偏移量预测部分是类别未知的,但极点是类别明确的。偏移量预测是针对极点的,中心点是没有偏移量预测的。ExtremeNet网络输出5xC个heatmaps和4x2个偏移量maps(如图3),其中C是类别数量。一旦极点明确了,网络就用几何的方式将他们分组到检测中。

ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

ExtremeNet的输出通道数为:ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

3.1、中心点分组(Center Grouping)

大体分为两个步骤:

第一步,ExtrectPeak。 即提取heatmap中所有的极值点,极值点定义为在3x3滑动窗口中的极大值。

第二步,暴力枚举。对于每一种极值点组合(进行适当的剪枝以减小遍历规模),计算它们的中心点,如果center map对应位置上的响应超过预设阈值,则将这一组5个点作为一个备选,该备选组合的score为5个对应点的score平均值。

ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

具体的算法说明:

ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

3.2、Ghost box抑制

何为ghost box?如下图所示,若存在多个并排排列且大小相近的物体,则对obj_2这个目标来说,在指定center时,会有两个选择,一个是真实的目标,另一个是大一圈的ghost box。

ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

使用soft NMS来抑制Ghost box:如果某个包围框,其内部所有的包围框的score综合超过了其本身score的3倍,则将其本身的score修正为原来的1/2。

3.3、边缘融合

极值点的定义并不唯一,这就导致如果物体沿着水平或垂直方向边缘形成极值点的话(比如汽车顶部),沿着该边缘的点可能都会被当做极值点。网络会对沿对象任何对齐的边缘产生弱响应,而不是单个的强响应。这会引起两个问题:一方面,较弱的响应可能低于预设的极值点阈值,导致漏掉所有的点;另一方面,即使侥幸超过了阈值,但其score可能还是PK不过轻微旋转过的目标相比(在两个方向上都有较大的响应)。
ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

解决办法是,对每一个极值点,向它的两个方向进行聚集。具体做法是,沿着X/Y轴方向,将第一个单调下降区间内的点的score按一定权重累加到原极值点上。效果如下图所示,可以看出,红圈部分的响应明显增强了。

ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

4、实验结果

整体来看,平均AP达到了43.7%,效果还是不错的。

ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points

5、总结

本文方法虽然速度不是很快,在实时中无法使用,但是思想还是比较好的,通过极值点来检测目标,感觉相比较与Corner要靠谱一点。