论文阅读之CornerNet

论文题目:《Detecting Objects as Paired Keypoints》
论文地址:https://arxiv.org/pdf/1808.01244.pdf
发表时间:2018
代码:https://github.com/umich-vl/CornerNet

1.Abstract

提出一种新的目标检测方法: 使用一个单一卷积神经网络,将检测对象的bbox检测为一对关键点----左上角和右上角。通过将检测目标变成一对关键点,消除了对设计anchor的需要。另外提出了一种新的池化层——corner pooling,帮助网络更好的对角的定位。
这个方法在MSCOCO中达到42.2%AP。

2. Introduction

传统anchor_based方法的缺点:

  1. 会产生大量的anchor,因为检测器只训练对与GT充分重叠的anchor box进行分类,所以要产生大量的anchor box来保证召回率。结果只有一小部分产生的anchor box为正例,导致了正负样本不平衡。
  2. anchor box会产生许多超参和设计选择,包括anchor的size,aspect ratio,不确定性增加。特别是在多尺度结构的时候。

在本文中,我们介绍了CornerNet,这是一种新的one stage目标检测方法,可以消除anchor boxes。

  1. 将一个目标物体检测为一对关键点——边界框的左上角和右下角。 我们使用单个卷积网络来预测同一物体类别的所有实例的左上角的热图和右下角的热图,以及每个检测到的角点的嵌入向量。 嵌入向量用于对属于同一目标的一对角点进行分组——训练网络来预测它们的类似嵌入。 我们的方法极大地简化了网络的输出,并且无需设计anchor boxes。结构如下图:
    在这里插入图片描述
  2. corner pooling。因为对角经常在目标之外(如下图),这种情况下很难根据局部特征确定角点。因此,确定左上角需要水平向右的去寻找目标的最高边界,垂直向下确定目标的最左边界。这就是corner pooling的作用:如图3,以两个feature map作为输入,在每个location位置,从其中一个feature map上max-pool所有位于这个location右边的位置的feature vectors,从另外一个feature map上max-pool所有位于这个location下边的位置的feature vectors,然后将得到的两个vector相加,最终得到这个location的vector,为什么是一个vector呢?因为每个category独立进行,所以是一个vector,其长度为category数量。所有location的vector就组成heat map。 在这里插入图片描述
    在这里插入图片描述
    作者还解释了corner net比anchor好的原因:1. bbox的中心需要确定目标的四条边,而确定corner只需两条。并且corner pooling层运用了corner的先验知识(即corner的定义,比如左上角corner是由topmost边界和leftmost边界确定),使得检测更加简单。 2. corner在离散化bbox时更有效,只需要 O ( w h ) O(wh) O(wh)个corner就可以表示 O ( w 2 h 2 ) O(w^2h^2) O(w2h2)个anchor box。

3. Related Works

二阶目标检测
一阶目标检测

4. CornerNet

4.1 概述

在cornernet中,我们将对象检测为一对关键点——bbox的左上角和右下角。卷积网络预测两组表示不同对象类别的角的位置的热图,一组表示左上角,另一组表示右下角。该网络还预测每个检测到的角的嵌入向量,这样来自同一对象的两个角的嵌入之间的距离很小。为了产生更紧密的bbox,该网络还预测偏移量,以稍微调整corner的位置。

下图提供了cornernet的网络结构。我们使用hourglass网络作为CornerNet的backbone。hourglass网络之后是两个预测模块。一个模块用于预测左上角,另一个模块用于预测右下角。每个模块在预测热图,嵌入向量和偏移量之前都有自己的corner pooling模块。与许多其他对象检测器不同,不使用来自不同尺度的特征来检测不同大小的对象。
在这里插入图片描述

4.2 Detecting Corner

两组heat maps分别负责预测top-left corners和bottom-right corners。每组heat map有C个channel,其中C是category数量,heat map的size为 H × W H×W H×W 。没有 background 对应的channel,因为预测为corner的则为正location,否则为负location,某个location的所有channel上的值预测可以均为负,表示这个location是background,所以没有必要为background增加单独的channel。每个channel就是一个二进制掩码,表示当前location是否是这个分类下的corner。

对于某个corner,仅有一个gt positive location,其他location相对于这个corner均为negative。训练阶段,损失函数中对negative location的惩罚不是一视同仁的,因为即使一对错误的corner检测(左上和右下),如果足够靠近 gt corner locations,那么生成的box与 gt box 有很大的IOU,如图5,在这里插入图片描述
所以在以gt corner location为中心的某个圆内,应该降低对negative location的惩罚比较合理,随着negative location远离圆中心,逐渐增大惩罚。记 y c i j y_{c_{ij}} ycij 为gt heatmap的值,当 ( i , , j ) (i,,j) (i,,j)位置处是gt corner且对应分类为 c c c 时, y c i j = 1 y_{c_{ij}}=1 ycij

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值