论文阅读【CornerNet】

CornerNet: Detecting Objects as Paired Keypoints

在这里插入图片描述
CornerNet: 一种不需要 Anchor boxes 的目标检测方法,使用一组关键点top-left corner ,bottom-right corner(左上角,右下角)预测目标box,简化网络输出,消除Anchor-base方法带来的复杂计算。
论文链接:https://arxiv.org/abs/1808.01244
代码链接:https://github.com/umich-vl/CornerNet
在这里插入图片描述

创新点:

1.CornerNet 继 YOLO V1 采用Anchor-free模式预测Bouding box
2.Anchor-free模式改进 Anchor boxes 两大缺点:(1)无用的先验box太多,40K(DSSD 模型), 100K(RentinaNet模型),但实际上只有小部分box能与ground truth相交。(2)使用Anchor-boxes 产生大量的超参数,box需要设计复杂的scale,ratio等。
3.CornerNet模型采用 Hourglass Network网络,Corner Pooing技术

模型介绍:

在这里插入图片描述
输入图像经Hourglass网络提取特征,后端卷积网络预测两组表示不同对象类别的角的位置的热图,一组表示左上角,另一组表示右下角。每一组角预测分支产生热图,角向量集合,位置坐标偏移量。同时属于同一物体的角向量的距离很小,再通过后处理算法获取最终的bounding box。

热图预测:

上面说到2组后端网络预测热图(heat map),通道数C表示目标物的类别,大小为 H ∗ W H*W HW,没有背景通道,每个通道都是一个二进制掩码,用于指示类的角的位置。

对于每张热图,对应唯一Ground truth位置的为正样本预测角,其他的为负样本预测角,这样就会产生正负样本不均,为了解决这个问题,引入负样本惩罚项,将与正样本角组合的box 产生的IOU>0.3也当做正样本角,本质目的是减少Ground truth附近的负样本角点,不然很难loss收敛吧,如下图红色为Ground truth为红色的框,绿色的角点产生的框和ground truth很接近,两者的角点对应得box IOU在0.3的范围内,绿框视为正样本角点。(个人理解)

在这里插入图片描述
热图由高斯函数产生:

F ( x , y ) = e − x 2 + y 2 2 σ 2 F(x,y)=e^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}} F(x,y)=e2σ2x2+y2

σ \sigma σ是由 r a d i u s / 3 radius/3 radius/3给出,文中将IOU>0.3的检测角点和Ground truth角点对应框位置坐标的差得到radius,如下:
在这里插入图片描述
热图损失函数定义:

在这里插入图片描述
p c i j p_{cij} pcij表示热图 F F F点对应点 ( i , j ) (i,j) (i,j)属于类别C的概率, y c i j y_{cij} ycij是ground-truth, α \alpha α默认值2, β \beta β默认值是4. 1 − y c i j 1-y_{cij} 1ycij 衰减负样本的影响

偏移量预测:

许多网络涉及下采样层以收集全局信息和减少内存使用。 当它们完全卷积应用于图像时,输出的尺寸通常小于图像。 因此,图像中的位置 ( x , y ) (x,y) (x,y)被映射到热图中的位置 ( [ x k n ] , [ y k n ] ) ([\frac{x_{k}}{n}],[\frac{y_{k}}{n}]) ([nxk],[nyk],其中n是下采样因子。当我们将热图中的位置重新映射到输入图像时,可能会丢失一些精度,这会极大地影响小边界框与ground-truth之间的IoU。 为了解决这个问题,我们预测位置偏移,以稍微调整角位置,然后再将它们重新映射到输入分辨率。
o k = ( x k n − [ x k n ] , y k n − [ y k n ] ) o_{k}=\left ( \frac{x_{k}}{n}-[\frac{x_{k}}{n}],\frac{y_{k}}{n}-[\frac{y_{k}}{n}]\right ) ok=(nxk[nxk],nyk[nyk])

其中 o k o_{k} ok​是偏移量, x k x_{k} xk y k y_{k} yk是角点 k k k x x x y y y坐标。 特别是,我们预测所有类别的左上角共享一组偏移,另一组由右下角共享。 对于训练,我们在ground-truth角点位置应用平滑的L1损失:
在这里插入图片描述

分组角点:

图像中可能出现多个目标,因此可能检测到多个左上角和右下角。我们需要确定左上角和右下角的一对角点是否来自同一个目标边界框。 e t k ​ e_{tk}​ etk成为对象k的左上的嵌入, e b k ​ e_{bk}​ ebk为右下角的的嵌入。使用“pull”损失来训练网络对角点进行分组,并且用“push”损失来分离角点:

在这里插入图片描述
其中 e k e_{k} ek​是 e t k e_{tk} etk​和 e b k e_{bk} ebk​的平均值,我们在所有实验中将Δ设为1。 与偏移损失类似,我们仅在ground-truth角点位置应用损失。

Corner Pooling:

在这里插入图片描述
Corner Pooling 操作具体如下: 将图1 箭头方向从右向左开始,将(i,j)处像素改变为该点像素右边出现的最大值,2---->2, 0---->2, 3------>3, 2-------->3,依次类推。。。。
将图2箭头方向从下向上开始,将(i,j)处像素改变为该点像素下边出现的最大值,0---->0, 2---->2, 3------>3, 1-------->3,依次类推。。。。

然后对结果图相加即可。

prediction module:

在这里插入图片描述预测模块从一个修改后的残块开始,其中我们将第一个卷积模块替换为corner pooling模块。修改后的残差块后面跟着一个卷积模块。我们有多个分支用于预测热图、嵌入和偏移量。

预测模块的结构如图7所示。模块的第一部分是残差模块的修改版本。在这个修改后的残差模块中,我们将第一个3×3的卷积模块替换为一个corner pooling模块。这个残差模块,首先通过具有128个通道的2个3×3卷积模块的主干网络处理特征,然后应用一个corner pooling层。残差模块之后,我们将池化特征输入具有256个通道的3×3的Conv-BN层,然后加上反向projection shortcut。修改后的残块,后跟一个具有256个通道的3×3的卷积模块,和256个通道的3个Conv-ReLU-Conv层来产生热图,嵌入和偏移量。

实验结果:

总LOSS定义:

L = L d e t + α L p u l l + β L p u s h + r L o f f L=L_{det}+\alpha L_{pull}+\beta L_{push}+r L_{off} L=Ldet+αLpull+βLpush+rLoff
其中α,β和γ分别是pull,push和offset的权重。将α和β都设置为0.1,将γ设置为1。

表1 MS COCO消除corner Pooling验证
表2 减少对正位置附近的负位置的惩罚有助于显着改善网络的性能
表3显示在不同的图像象限中,corner Pooling始终能够提高网络检测角的性能,这表明corner Pooling无论在小区域还是大区域都是有效和稳定的。

在这里插入图片描述表5.对比RetinaNet,Cascade R-CNN在Coco 上的测试结果。
表6.误差分析。 我们用ground-truth替换预测的热图和偏移。 单独使用ground-truth的热图可以将AP从38.4%提高到73.1%,这表明CornerNet的主要瓶颈是检测角点。

在这里插入图片描述
表7.在MS COCO test-dev上,CornerNet优于其他所有one-stage检测器,可实现与two-stage探测器相媲美的结果。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值