论文:CornerNet: Detecting Objects as Paired Keypoints

Hei Law, Jia Deng
European Conference on Computer Vision (ECCV), 2018

下载链接:论文地址,点击下载

1)  概述:CornerNet是一种anchor-free的目标检测方法,这篇文章通过借鉴这篇姿态估计的方法来进行目标检测,用左上角和右下角的两个关键点来确定物体的边界框,这样就不会出现其他基于anchor的One-stage检测方法除了需要大量的anchor外,还有正负样本不均衡,以及需要引入太多的参数和设计选择等缺点。另外,还设计了corner pooling来获得更好的定位。使用该方法后达到了超过其他one-stage的方法。

2)  具体内容: 

       上图为cornernet的框架结构,一个物体可以由一对左上角和右下角的角点确定,使用一个卷积网络进行预测,使用修改了的Hourglass Network作为主干网络,然后分别输出两个模块,分别用来预测物体左上方和右下方的角点的位置。然后每种角点的预测模块,如图所示,在经过corner pooling后,输出包括heatmap、embeddings、offsets三个部分,heatmaps代表的是两个(左上角和右下角)C层(类别数)的角点位置,即2*C*H*W大小,每个H*W大小的heatmap预测特定类别的所有实例的左上或右下的角点的位置;embeddings能够用来区分不同角点之间的距离,如果两个角点属于同一个实例物体,那么它们之间的距离会很小。Offsets被用来预测位置偏置项,调整位置。在预测了这三者后,使用一个简单的后处理算法获得最终预测的边界框。

虽然一个物体只有一个ground-truth 正样本位置,但是一个距离真实角点很近的点也能够很好地表示物体位置,所以在训练中,对于预测的角点位于真实位置的一个范围之类的负样本位置,减少对它们的惩罚。通过iou来设置半径范围,在有了半径范围t后,惩罚减少量服从标准的二维高斯分布,σ为半径的1/3。如下表示的是heatmaps预测角点位置的损失。当在ground truth的特定范围内,位置距离真实值越远,惩罚越大。

通常,在网络中会使用下采样操作,所以输出图像小于输入原始图像,所以将原始图像中(x,y)位置会对应heatmaps中的位置,但是这样因为近似会丢失掉一些信息,影响预测结果,所以引入了一个offset来调整位置,真实的偏置项如下:

然后偏执项的损失如下:

一张图像中可能有多个物体,当检测出多对角点之后,需要将属于同一个物体的左上角角点和右下角角点匹配起来,共同确定物体的边界框。作者使用关联嵌入的方法,网络预测一个embedding,根据两个角点的距离来判断它们是否属于同一物体,具体使用pull损失来使得网络能够降低属于同一物体的两个角点,用push损失将不属于同一物体的角点的距离增大。分别如下:

Corner pooling是专门针对这种通过预测角点来确定边界框的方法设计的,思想其实很简单,为了预测左上侧的角点,对每一个位置的特征图,水平方向上查看他右侧位置的极大值,而竖直方向上查看下方所有位置的极大值,作者分别使用了ft和fl来表示用于查看水平和竖直方向特征的特征图,计算得到各方向的最大值之后,把两个特征图结果相加,计算过程如下图所示,

公式表示如下:

整个预测模块的细节展示如下图,backbone输出的feature-map先经过两个卷积,得到两个特征图,用它们进行corner pooling,得到的结果与输入的特征进行了一个残差连接,再通过一个卷积之后预测输出三个分支,分别代表heatmaps、embeddings和offsets,具体看下图:

整个网络的训练包含了上边介绍的四部分损失函数:

测试过程中,在预测得到三部分结果后,进行简单的后处理操作,首先在heatmaps上使用一个3*3的最大池化进行NMS,然后对top-left和bottom-right的角点各选取得分最高的100个点,确定角点的位置,然后使用该位置对应的offsets对位置进行调整,然后计算top-left角点和bottom-right角点之间的L1距离,选取出属于同一类别,且距离小于0.5的焦点对,将top-left点和bottom-right点的平均预测得分作为该物体的预测得分。

作者还进行了消融实验,证明corner Pooling的作用,它能够将coco数据集上的预测AP提高2.0个点;还有减少对距离真实角点位置一定范围内的预测结果减少惩罚能够提高网络的预测结果,如果不使用减少惩罚,只有32.9个点的AP,使用了固定范围的减少惩罚后有2.7个点的提高,而使用根据物体调整减少惩罚范围的方法,能够有5.6个百分点的提高,可以说效用显著。然后CornerNet同时预测三项输出,它们都对结果有很大影响,如果任意一个角点没预测出来,那么整个物体就不能够被预测;offsets能够提高预测结果;而错误的embeddings会导致错误的边界框。

该方法最终预测的示例展示如下,可以看出效果还是不错的。

3)  贡献与不足:

创新点在于1、借鉴姿态估计方法,将目标检测问题看做同时进行角点的检测和group问题,设计了anchor-free的CornerNet来预测边界框上的两个角点,实现目标检测,且达到超过其他one-stage的效果。2、针对这种方法 提出了corner pooling来更好地定位角点,且验证其有效性。

缺陷在于:两个角点的位置很大程度上位于远离物体的不相关位置,所以很难计算,这也是corner pooling被设计的原因。另外,如之前提到,heatmaps、offsets和embeddings任意一个的预测结果都会影响到最终边界框的确定,如果有一个预测错误,最终的预测结果将会下降。

[论文笔记] CornerNet论文详细解读相关推荐

  1. [论文笔记] DETR 论文笔记

    DETR 论文笔记 End-to-End Object Detection with Transformers(ECCV 2020) 摘要 引言 相关工作 集合预测 DETR 模型 集合预测损失(Ob ...

  2. caffe 实例笔记 2 LeNet详细解读及实现

    1 温习 1.1 关于caffe的名称: caffe = convolutional architecture for fast feature embedding 1.2 caffe.proto P ...

  3. 【论文笔记】论文清单备忘录

    系列文章目录 分类模板: 时间 题目 笔记链接 已读or推荐 源码 时间 题目 笔记链接 ❓ ⭐️

  4. Xiaojie雷达之路---TI实战笔记---MSS代码详细解读

    文章目录 前言 基础知识 文章中会用到的专业术语 毫米波雷达的初始化流程(在MSS中) 本案例中要用的其他知识 UART MailBox Semaphore 代码解读 main函数 MRR_MSS_i ...

  5. [论文笔记]MAS论文综述

    多智能体系统(MAS)纵览 =================================================== Part 1 1.介绍 分布式人工智能(DAI) DAI算法根据下述 ...

  6. 元学习之《On First-Order Meta-Learning Algorithms》论文详细解读

    元学习系列文章 optimization based meta-learning <Model-Agnostic Meta-Learning for Fast Adaptation of Dee ...

  7. 虚拟换衣 VITON 论文笔记

    VITON 论文笔记 介绍 论文笔记 任务 VITON 框架 Person Representation(人体表示) Pose heatmap (姿势热图) Human body representa ...

  8. 【论文笔记】李盟, et al. 一种恶意代码特征选取和建模方法. 计算机应用与软件 08(2015):272-277.

    前言 论文笔记. 论文笔记 出处及年份 <计算机应用与软件 Computer Applications and SoftwareVol.>第32卷第8期2015年8月 论文标题 一种恶意代 ...

  9. NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing论文笔记

    NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing论文笔记 看论文的笔记,欢迎 ...

最新文章

  1. 重磅:国拨概算5.34亿!“新一代人工智能”重大项目项目申报指南发布
  2. JAVA GUI关闭按钮不起作用(用SwingWorker解决)
  3. mysql显示bmp图片_BMP格式图像的显示
  4. 微服务架构下,解决数据一致性问题的实践
  5. [转载]Linux下getopt()函数的简单使用
  6. 岛屿类问题的广度优先深度优先双解法(Leetcode题解-Python语言)
  7. Java Web学习总结(10)学习总结-EL表达式
  8. linux汇编stdin,汇编:从标准输入中读取整数,将其递增并打印到标准输出
  9. 利用R与NumPy实现矩阵乘法
  10. 【神经网络与深度学习】公开的海量数据集
  11. PSCC2018 安装教程
  12. P106魔改1060
  13. 大学毕业后拉开差距的真正原因--写给将要毕业的自己
  14. 解决iPhone模拟器无法启动的方法
  15. 打印机服务器虚拟端口,Win7打印机服务器端口添加方法
  16. python收取126或163邮件
  17. Vivado IP核之浮点数加减法 Floating-point
  18. 2018年浙江省网络安全技能竞赛ctf部分解题思路writeup
  19. rethinkdb_如何在Node.js应用程序中使用RethinkDB
  20. 制动电阻 DF8B型机车电阻制动装置-奥创电子

热门文章

  1. MMD以及核公式推导
  2. JMeter Sampler之BeanShellSampler的使用
  3. [OpenGL] 小游戏 - 太空对战
  4. 5个超好用的自媒体网站,免费用
  5. 英雄联盟原版下载器+解除wegame自动下载
  6. jq bind命名空间
  7. 国内有哪些比较靠谱的云服务器?
  8. mysql语法错误:Every derived table must have its own alias
  9. oracle给用户授权存储过程
  10. ggplot2简明教程