【2D 目标检测】CornerNet: Detecting Objects as Paired Keypoints

一 核心思想

本篇文章提出非常新颖的检测方法,不同于以往的anchor-based的方法,CornerNet是基于一对关键点进行物体的检测的(文中讲的为2D检测方法,因此检测的为左上角和右下角两个点。)。除此之外,本文还提出corner pooling层,以便更好提取特征。具体算法步骤如下图所示:

 二 核心步骤

 

如上图所示,本文的创新点是提出使用一对关键点(也就是相对应的top-left heatmap和bottom-right heatmap)来检测出bounding box,而不是采用anchor-based的方法,为了将两个heatmap图进行相同bounding box的配对,给每个heatmap输出相应的embedding vector,只有分别位于embedding vector上的点的距离相同,才是对应的一对key point,这对点也就是对应一个object。

当然,本文的创新点还有corner pooling,不同的heatmap对应不同的corner pooling。

2.1 Detecting Corners 

 

1、Heatmaps

本部分对应的结构如上图所示,每一个heatmap的维度为,其中C表示预测的类别的个数,heatmap预测的是label scores。

不过需要注意的是,在训练过程中,作者不同于之前惩罚negative position,而是在positive position的半径内减少对negative position的惩罚。这是因为对于一对false corners detection,如果它们接近各自的ground truth位置,仍然可以产生一个足以重叠ground truth的框(如下图所示)。

 给定半径(这个半径的求法比较通用,也就不在此展开。)之后,使用Gaussian kernel来给出半径内的得分情况(Gaussian kernel为,其中心为positive location为给定的半径。)。

 对于heatmap的loss function,定义为:

 上述公式也就表示在location为(i,j)的第c个类别上,表示预测出的分数,表示该位置上的类别标签,N为一幅图像上的所有object的数量。也就是本文的改进之处,减少在半径内的negative的损失。

 

2、Embeddings

图像中可能出现多个目标,因此可能检测到多个左上角和右下角。我们需要确定左上角和右下角是否有一对来自同一个边界框。于是又增加一个网络分支预测每个corner point的嵌入向量,如果左上角和右下角属于同一个边界框,则对应的embeddings上的位置的值趋于相等(原文中说这个值为距离,也就变成了距离相等。维度为)

然后,我们可以根据左上角和右下角嵌入之间的距离对这些corner point进行分组。Embeddings上的值并不重要。不同Embeddings上的值只是被用来分类corner point。

对于Embeddings的loss function,作者分为pull呵push两个部分,pull对应的是相同组的点的距离要更近,push对应的是不同组的点的距离要更远。

 

 其中,表示top-left corner of object k,表示bottom-right corner of object k;。在反向传播时,只计算ground truth corner location上的损失(也就是)。

 

3、Offsets

由于下采样的缘故,图像中的位置(x,y)被映射到heatmap中的位置,其中n是下采样因子。这种映射肯定会有损失,因此作者给出的一个分支专门预测offset。对于positive position处,标签为,反向传播时,loss function依然只计算positive position处。Loss function 为:

 

 2.2 Corner Pooling

 

 整个部分也就是上述图中的部分,具体结构见下图,也就是虚线框框起来的部分。

每一个heatmap有着不同的corner pooling层。

对于top-left corner pooling Module,首先有两个输入feature map,其宽高分别为W和H。如下图所示,如果对红色点(坐标为(i,j))做corner pooling的话,第一个feature map计算(i,j)到(i,H)的最大值;第二个feature map计算(i,j)到(i,W)的最大值,然后将二者相加得到这个红色点的初步特征。最后根据上述图进行特征的计算得到top-left corner pooling Module的特征。

对于bottom-right corner pooling Module,与上述相似,计算(0,j)到(i,j)的最大值和(i,0)到(i,j)的最大值,然后将二者相加得到这个红色点的初步特征。最后根据上述图进行特征的计算得到bottom-right corner pooling Module的特征。

下图是上述top-left corner pooling Module的一个例子。 

 

 

2.3 Hourglass Networks

这个地方暂时没有进行研究。

三 总结

在测试过程中,首先会利用3×3的max pooling层进行NMS操作,选择前100个top-left corner和100个bottom-right corner;计算top-left corner和bottom-right corner的embedding vector时使用L1 distances;对于一对corner点,如果距离大于0.5或者属于不同类别的目标,则不能构成一对;使用0填充图像而不是resize;最后使用soft-nms保存前100个预测结果。

本文创新性使用corner来代替anchor-based的检测方法,提高效率并且效果更佳。

参考文献

[1] Law H ,  Deng J . CornerNet: Detecting Objects as Paired Keypoints[J]. International Journal of Computer Vision, 2020, 128(3):642-656.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值