【Paper Reading】CenterNet:Keypoint Triplets for Object Detection

背景

首先是借鉴Corner Net 表述了一下基于Anchor方法的不足:

  1. anchor的大小/比例需要人工来确认
  2. anchor并没有完全和gt的bbox对齐,不利于分类任务。

但是CornerNet也有自己的缺点

  1. CornerNet 只预测了top-left和bottom-right 两个点,并没有关注整体的信息,因此缺少一些全局的信息
  2. 上述的点导致它对边界过于敏感,经常会预测一些错误的bbox。

为了解决该问题,作者提出了Triplet的关键点预测。他follow了top-left和bottom-right的预测,此外增加了中心点的预测。
具体来说,为了使得中心点的预测更加准确,作者提出了Center Pooling的层用来在水平和垂直两个维度进行特征的聚合。使得每个位置的点都可以尽可能的感知到全局的信息。
此外,作者还提出了cascade corner pooling layer来取代原有的corner pooling layer。

作者也从指标的角度量化了上面提到的CornerNet比较容易出现False Positive的情况,如下图所示。作者展示了在不同IoU阈值下 False Discovery Rate。注意这里为什么没有用mAP,mAP是否有缺点?

  1. 框的增加,在recall不变的情况下,precision的下降不会导致mAP的下降。=>因此需要关注PR曲线的分数
  2. mAP是分类别计算的,每个类别都是按照分数排序来计算的,说明每个类别的分数阈值可能会不同,不能用同一个阈值在适应不同的类别。
    【Paper Reading】CenterNet:Keypoint Triplets for Object Detection_第1张图片

方法

CenterNet的网络结构如下图所示
【Paper Reading】CenterNet:Keypoint Triplets for Object Detection_第2张图片
整个网络的推理流程如下所示:

  1. 选择top-k个中心点根据他们的分数
  2. 根据对应的offset将其还原到对应的输入图像中
  3. 根据tl-br构成的bbox,判断每个bbox内部的中心区域是否包括上述的中心点。
    3.1 N个tl的点和N个br 的点,组合形成N*N个bbox
    3.2 如果tl和br的embedding相似度小于阈值,则将对应的bbox剔除,否则保留。
  4. 如果中心点在bbox中,则用三者分数(tl、br和center)的平均来表示bbox的置信度。

那么这里涉及到一个问题,那就是如何计算每个bbox的中心区域。作者这里认为大的bbox应该使用小的中心区域,避免precision过低。小的bbox应该使用大的中心区域,避免recall过低。因此这里作者提出了scale-aware的中心区域计算方法,详情如下所示,其中针对大物体,n选择5,针对小物体,n选择3。
【Paper Reading】CenterNet:Keypoint Triplets for Object Detection_第3张图片
【Paper Reading】CenterNet:Keypoint Triplets for Object Detection_第4张图片
上述介绍了推理的整体流程,那么我们在从内部逐步解析一下关键的结构,我们分别从center pooling、cascade corner pooling和loss来进行介绍。

center pooling

center pooling的示意图如下图所示。具体来说就是针对每个位置,我们计算其水平和垂直方向的max response,然后想加得到该位置的表征,我们认为这样的表征是包括了全局信息。简化版本的计算如下所示,其中 f , f 3 ∈ R H × W × C f,f_3 \in R^{H \times W \times C} f,f3RH×W×C

f1 = np.max(f, axis=0)
f2 = np.max(f, axis=1)
f3 = f1[None, :, :] + f2[:, None, :]

【Paper Reading】CenterNet:Keypoint Triplets for Object Detection_第5张图片

cascaded corner pooling

示意图如下所示
【Paper Reading】CenterNet:Keypoint Triplets for Object Detection_第6张图片

loss

损失函数的定义如下所示。整体上分为三大部分。

  • L d e t c o 、 L d e t c e L_{det}^{co}、L_{det}^{ce} LdetcoLdetce表示的corner 和 center两个heatmap组成的loss,这里采用的是focal loss。

  • L p u l l c o 、 L p u s h c o L_{pull}^{co}、L_{push}^{co} LpullcoLpushco是让属于同一个物体的corner embedding尽可能相似,属于不同物体的embedding尽可能远离。

  • L o f f c o 、 L o f f c e L_{off}^{co}、L_{off}^{ce} LoffcoLoffce 表示预测corner 和 center在原图上的offset,这里采用的是l1-loss。
    loss function

  • QA1:GT是如何计算的?

你可能感兴趣的:(论文阅读,深度学习,目标检测,CenterNet,CornerNet)