ExtremeNet学习笔记

Bottom-up Object Detection by Grouping Extreme and Center Points

CVPR2019

论文链接

代码链接

Abstract

  • 随着深度学习的出现,目标检测从一个自下而上的问题发展成了自上而下的识别问题。

    • 对自上而下和自下而上的理解:自上而下表示输入图像提取特征,对proposal进行分类;自下而上表示直接找到目标
  • 本文表明自下而上的方法依旧具有竞争力,ExtremeNet使用关键点估计网络来检测四个极值点和一个中心点,如果这五个点在几何上是对齐的,那么将他们分组到一个边界框中。

  • 本文的方法是一种一阶段的方法,但是和最先进的两阶段方法精度相当

    • AP of 43.7% on COCO test-dev.

Introduction

  • 自上而下的方法多年来一直主导着目标检测。

    • 两阶段的目标检测器使用SS或者RPN等方式生成proposal,一阶段的检测器则通过设置anchor,将目标检测问题转换为矩形区域分类问题。
    • 自下而上的方法的局限:
      • 矩形的边界框不能很好的表示目标,包含了很多背景信息
      • 通常生成大量的bounding box,增加了大量的计算成本
      • box不能很好的代表目标,包含的细节信息比较少,不能表示形状姿态等
  • ExtremeNet使用关键点估计网络来检测四个极值点和一个中心点,如果这五个点在几何上是对齐的,那么将他们分组到一个边界框中。

    • 对每个类别生成四个多峰值热图来寻找极值点
    • 对每个类别生成一个热图来预测目标的中心点
    • 将四个极值点分组( O ( n 4 ) O(n^4) O(n4)),只有当他们的中心在中心点热图中高于某一阈值,认为是正确预测到了目标
  • 下图展示了本文方法的流程

ExtremeNet学习笔记_第1张图片

  • 与CornerNet的对比:
    • 角点是边界框的另一种形式,角点可能不在物体上,但是极值点一定在
    • The second difference to CornerNet is the geometric grouping. Our detection framework is fully appearance-based, without any implicit feature learning. In our experiments, the appearance-based grouping works significantly better.(这里没太理解)

Related Work

  • 本文的方法属于一阶段的检测器,但是不是在 O ( h 2 w 2 ) O(h^{2}w^{2}) O(h2w2)的空间设置Anchor,而是在 O ( h w ) O(hw) O(hw)的空间设置中心点

Preliminaries

Extreme and center points

  • 边界框是 ( x ( l ) , y ( t ) , x ( r ) , y ( b ) ) (x^{(l)}, y^{(t)}, x^{(r)}, y^{(b)}) (x(l),y(t),x(r),y(b)),极值点是 ( x ( t ) , y ( t ) ) , ( x ( l ) , y ( l ) ) , ( x ( b ) , y ( b ) ) , ( x ( r ) , y ( r ) ) (x^{(t)}, y^{(t)}),(x^{(l)}, y^{(l)}),(x^{(b)}, y^{(b)}),(x^{(r)}, y^{(r)}) (x(t),y(t)),(x(l),y(l)),(x(b),y(b)),(x(r),y(r))
  • 中心点是 ( x ( l ) + x ( r ) 2 ) , ( y ( t ) + y ( b ) 2 ) (\frac {x^{(l)}+x^{(r)}}{2}),(\frac {y^{(t)}+y^{(b)}}{2}) (2x(l)+x(r)),(2y(t)+y(b))

Keypoint detection

  • 关键点估计通常使用全卷积的编码器解码器网络来预测每种类型关键点的多通道热图,这种网络的训练都是全监督的,损失通常为渲染高斯图(rendered Gaussian map)的L2损失或者对每一个像素的逻辑回归损失(logistic regression loss)
  • 最先进的关键点估计网络,104层的沙漏网络,以全卷积的方式训练,对每一个通道生成一个热图 Y ^ ∈ ( 0 , 1 ) H ∗ W \hat Y \in (0,1)^{H * W} Y^(0,1)HW,训练由多峰值高斯热图 Y ∈ ( 0 , 1 ) H ∗ W Y \in (0,1)^{H * W} Y(0,1)HW指导

CornerNet

  • CornerNet为了平衡正负样本使用Focal loss:

在这里插入图片描述

  • 偏移(offset)损失使用smooth L1 Loss:

在这里插入图片描述

Deep Extreme Cut

  • DEXTR是一个关于分割的网络,输入是图像和目标的极值点,进行图像分割

ExtremeNet for Object detection

ExtremeNet学习笔记_第2张图片

  • ExtremeNet使用HourglassNet检测每个类的5个关键点,offset预测与类别无关,与极值点有关,中心点没有offset预测,所以网络的输出是 5 ∗ C 5*C 5C个热图和 4 ∗ 2 4*2 42个偏移图
  • 图3是ExtremeNet结构,生成极值点后采用纯几何的方式进行分组

Center Grouping

ExtremeNet学习笔记_第3张图片

  • 对于每一个热图,检测所有的峰值点(大于 τ p τ^p τp,在其周围 3 ∗ 3 3*3 33窗口最大)作为关键点
  • 列举所有可能的极值点组合,计算他们的中心点,如果中心点在中心热图的响应值 Y ^ c x , c y ( c ) > = τ c \hat Y_{c_x,c_y}^{(c)}>=τ_c Y^cx,cy(c)>=τc,那么这组极值点是有效的。
  • 文中 τ p = 0.1 , τ c = 0.1 τ_p= 0.1 ,τ_c= 0.1 τp=0.1,τc=0.1
  • 这种蛮力分组算法的时间复杂度为 O ( n 4 ) O(n^4) O(n4),其中 n n n是每个热图提取的极值点的数量

Ghost box suppression

ExtremeNet学习笔记_第4张图片

  • Center Grouping这种分组方式可能会造成上图所示绿色框这种 “ghost” boxes,红黄灰框分别代表相同类别相同大小的不同目标
  • 为了解决这个问题提出了一个简单的后处理步骤,如果某个边界框包含的所有box的分数之和超过其自身分数的3倍,将其分数除以2

Edge aggregation

ExtremeNet学习笔记_第5张图片

  • 对于目标边沿和边界框重合的目标,其沿着边沿的任何位置都可以被看做极值点,这样的话就会出现整条边都是弱响应,而不是单一的强峰值响应,很有可能会出现所有的弱响应都小于阈值的情况,就算检测到了关键点,它的得分也会小于一个稍微旋转过的目标(峰值响应强)
  • 为了解决这个问题提出了Edge aggregation,对每一个取局部最大值得到的极值点,若是左边和右边的极值点,那么选择竖直方向进行聚合;同理,若是顶部,底部的极值点,则选择从水平方向进行分数聚合。聚合的方法为:沿着聚合方向,聚合那些单调递减的score,并在达到局部最小值的时候停止聚合。

Experiments

  • 极值点标注来自目标分割任务

  • ExtrectPeak最多提取40个极值点

  • 对比 Center Grouping和 embedding,表1第三行

  • Edge aggregation的作用,表1第四行

  • Ghost box suppression的作用,表1第五行

  • Error Analysis,表1第三部分

    • 本文的方法在单独替换真实的中心点或极值点之后效果提升不是很大,只有同时替换两者才会有较大的提升,但是也没有到极限,所以我觉得它的分组方式是有改进空间的,过于严格

ExtremeNet学习笔记_第6张图片

  • 和最先进的方法的对比
    • 准确率优于所有一阶段方法,但是速度有点拉胯

ExtremeNet学习笔记_第7张图片

Conclusion

  • 本文在CornerNet的基础上做了一些改进,将检测角点更改为检测极值点,增加了对中心点的检测,更换了分组策略,在准确率上略微超过了CornerNet,个人感觉这篇文章的思想很好,因为极值点相比角点最大的优势在于极值点在目标上,所以更容易在热图上获得高的响应值,但是相比于CenterNet提出了两种新的pooling方式,本文在网络上没有进行改进,可能是这个原因造成了效果不如CenterNet

  • 本文的关键点分组策略过于简单,而且在使用真实极值点替换预测到的点之后效果提升并不明显,我甚至觉得本文可以不预测中心点,只靠极值点去预测边界框效果会更好,所以这也是可能可以改进的点

  • Anchor free的方法虽然在准确率上能够超过其他一阶段的方法,但是在速度方面差很多,主要原因在于backbone,觉得这是一个突破方向,但是更换backbone很可能会造成精度的损失,所以难度还是很大的

你可能感兴趣的:(Object,Detection,计算机视觉,人工智能)