天天看点

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

论文下载地址:https://arxiv.org/abs/1901.08043

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

论文创新点:

    采用了自低向上的检测方法(Anchor-free),抛弃了传统的规则矩形框,使用五个极值点(左上,左下,右上,右下,中心点)来确定一个不规则的矩形框来检测目标物体。

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

引言

       当前主流的检测算法大多数都是基于Anchor。这些算法存在的问题有:1. 这些算法在检测过程中会生成大量的候选anchor,这些anchor并没有使用到检测物体的内部语义信息。2. 规则的矩形框很大一部分包含了背景信息引入了噪声。

       本文作者基于当前目标检测存在的问题提出了通过极值点来检测目标。主要的工作原理如下图所示:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

1. 首先通过Left heartmap,Top heartmap,Bottom heartmap和Right heartmap这四张热度图分别来预测四种极值点(左上,左下,右上,右下),和Centern heatmap来预测中心点。

2. 然后将这四类极值点进行任意的组合,将组合得到的矩形框求一个中心点。

3. 如果求得的中心点的坐标在预测的中心点的位置,说明这四个点组成的矩形框是一个检测物体。检测完毕。

相关工作

主要就是介绍了一阶段,二阶段的检测算法。还有关键点检测的算法。只是介绍没有什么具体技术在里面。

准备工作

1. 极值和中心点

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

四个极值点如上面图片表示。我们真正需要的,其实是下列这四个值:最左,最右坐标的x方向上的值;最顶最低坐标的y方向上的值。

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

那么他们对应的中心点的位置:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

这种标注方式平均花费时间是7.2秒,而标注效果却毫不逊色。于是本文就利用了这种标注方式。

2. 沙漏网络

       沙漏模块首先通过一系列卷积层和最大池化层对输入特性进行下采样。然后通过一系列的上采样和卷积层将特征上采样回原来的分辨率。由于细节在最大池化层中丢失,因此添加了跳过层用来将细节带回到上采样的特征。

     ExtremeNet利用沙漏网络为每个类别的五个关键点(四个极值点和一个中心点)进行检测,在损失函数设计和偏移预测上,遵循和CornerNet相同的策略。偏移预测是类别无关但是极值点相关的。由于中心点是通过四个极值点的几何计算得到的,所以对于中心点并不进行偏移预测。

     因此,整个网络的输出是这样的:heatmaps(热点图) 5xC维,其中C为要分类的数目,在COCO数据集上C的值是80;4x2 偏移图(4个极值点,2个方向)。下图是ExtremeNet的图示:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

3. 极值点如何分组

   极值点组合的计算流程。

  1. 输入整个模块的输入是每一个类别的5个热图即一个中心点热图和4个极值点热图,可分别用下列公式表示:

   中心点:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

   四个极值点:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

  2. 提取关键点阶段,从上文定义的四张热点图中提取出四个极值点,t, b, r, l ,通过下列公式计算出中心点:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

3. 判断 如果这个点c在中心热点图中有高响应,就认为这四个极值点是一个有效的检测,高响应的评判标准是:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

这只是一组极值点的检测方法,下面要做的就是推广开来,枚举四类极值点所有可能的组合,重复上述检测方法,算法流程如下所示:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

4. Ghost box suppression(Ghost box抑制)

先解释一下什么是Ghost box。仔细想想Center grouping算法,可能会出现这样一种情况,中心分组可以对三个相同大小的等距共线目标进行高置信false-positive检测。这时位于中间位置的对象有两个选择,一种是选择正确的小框,另一种预测一个更大的框,里面有它相邻物体的极值点。

把这种false-positive的形式称为ghost boxes。为了消除这种错误,利用nms进行抑制,nms原先是用在消除重叠框上的,在这里同样有效。ghost box包含许多其他小的检测对象,我们采用soft nms解决这个问题。若某个box所包含的所有框的分数和大于其自身的3倍,则最终分数除以2,这可以看做是一种惩罚,惩罚的对象是ghost box。

5. 边缘聚合

有时候,极值点并不是唯一的,举例来说,一辆汽车,可能顶部这一条类似于水平的线上,每一个位置都有可能成为最顶部的极值点。

也就是说,若极点来自物体的垂直或水平边,则沿边缘任何一点都可被认为是极点。因此,我们的网络沿着对象的任何对齐边缘产生弱响应,而不是单一的强峰值响应。这种弱响应有两个不足:

  1. 弱响应点的得分可能会小于阈值,那么极值点就会被错过
  2. 即使检测到了这些极值点,它的得分将低于具有强峰值响应的稍微旋转的对象。

为了解决这个问题,提出了edge aggregation。对每一个取局部最大值得到的极值点,若是左边和右边的极值点,那么选择竖直方向进行聚合;同理,若是顶部,底部的极值点,则选择从水平方向进行分数聚合。聚合的方法为:沿着聚合方向,聚合那些单调递减的score,并在达到局部最小值的时候停止聚合。

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

实验结果:

ExtremeNet检测算法Anchor-free Bottom-up Object Detection by Grouping Extreme and Center Points

继续阅读