目标检测论文解读CornerNet: Detecting Objects as Paired Keypoints

CoenerNet是一篇被ECCV 2018收录的有关目标检测论文,以前我大概看了一下,今日重新看了一遍论文,又有许多新的收获,故记之!
论文地址:https://arxiv.org/abs/1808.01244

介绍

首先明确CornerNet是one-stage的检测算法,但是普通的one-stage算法都要使用anchor来生成bbox,bbox的比例和大小都是超参数,因此实验成功与否与运气有很大的关系。而这篇论文提出的CornerNet使用一组角点来检测目标,抛去了anchor,分别预测两个角点,通过heatmap embedding offset来确定bbox的大小和位置。

具体实现

大体框架

算法流程
图像先经过backbone,分两路分别预测左上角点和右下角点,经过embedding组成成对的角点,最后通过offset微调

BackBone

这篇论文使用当时比较先进的两个四阶hourglass network,本文不做阐述

Top-Left与Bottom-Right

在这里插入图片描述
图片经过hourglass network以后,分成两组,分别来进行角点的预测
在这里插入图片描述

Prediction Modules

接下来就进入预测模块,我们以预测左上角点为例。特征会先经过一个corner pooling。那么corner pooling是如何工作的呢?
对于预测top-left角点,backone经过一次3x3-bn-rulu卷积(此处生成两个特征图,至于为什么,接下来便知),对于每一个经过conv-bn-rulu的特征图来进行corner pooling。对于top-left来说,即是将该图中的每一点分别进行一个竖直向上方向的取最大值和从右往左取最大值的过程(注意,并不是对于该点的整行或者整列取最大值,只对于某一点的右下方向,这是因为一张图中可能会有多个目标,整行或者整列扫描会造成误检),下面这张图可以帮助理解corner pooling
在这里插入图片描述
我们再以一张图片进行说明如何对左上角点进行corner pooling:
在这里插入图片描述
图片中的鸟作为一个很明显的特征,在进行top-left corner pooling时,水平方向从右往左取最大值,垂直方向从下往上取最大值,然后相加。可以得到他的左上特征角点值应该是最大的。
最后放上数学公式:
在这里插入图片描述

然后在经过一个resduial模块就到了最后一步预测,由三部分组成

heatmap

heatmap中找出特征值最大的作为角点。对于真实的目标来说,只有一个左上角点和一个右下角点。我们认为GT只有真正的角点地方为1,其余小于1,论文引入双变量的高斯分布来进行建模。并且对于预测出的角点GT值不为1,我们也进行了 分情况。一种是普通的,的确距离角点很远,另一种则是在GT为1的附近,我们认为这样也是正确的(我们实际操作中为GT=1,建立一个可允许的误差范围内,即只要距离真正角点一定范围内都算正确,在高斯分布上则是接近于1),只需要经过offset即可回归。而二阶高斯分布则做到了这一点
在这里插入图片描述
论文中的delta为1/3用来控制半径
因此这部分的损失函数为:
在这里插入图片描述

embedding

得到了左上角点和右下角点,如何将同一类的角点group呢,论文引入了embedding。注意这里不注重角点处特征值大小,而是计算角点间的距离,认为角点距离最小则为一组。这里使用了两个损失函数,Lpull是同一组的损失函数,Lpush是不同组的损失函数
在这里插入图片描述

offset

在这里插入图片描述
offset也比较简单,不做过多介绍
最后的损失函数:
在这里插入图片描述
α和β是0.1 γ是1

实验结果


在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值