论文链接:https://arxiv.org/abs/1904.08189

github:https://github.com/Duankaiwen/CenterNet

摘要

目标检测中,基于关键点的方法经常出现大量不正确的边界框,主要是由于缺乏对相关剪裁区域的额外监督造成的。本文提出一种有效的方法,以最小的资源探索剪裁区域的视觉模式。本文提出的CenterNet是一个单阶段的关键点检测模型。CenterNet通过检测每个目标物看作是一个三个关键点,而不是一对关键点,这样做同时提高了准确率及召回率。本文还设计了另外两个模型,cascade corner pooling及center pooling,容易获得从左上角及右下角的丰富信息,同时在中间区域获得更多的识别信息。

介绍

目标检测中需要大量的anchor,是为了满足与每个ground truth有足够高的IoU值。同时,anchor与ground truth是不匹配的,不利于边界框的分类任务。为了解决anchor的缺点,基于关键点的单阶段检测CornerNet被提出。通过检测一组关键点来检测目标,进而移除了anchor,但由于其缺乏对目标全局信息的参考,仍然具有局限性。同时,每个目标由一组关键点组成,算法对边界框比较敏感,同时,无法确定哪组关键点属于同一个目标物。因此,如下图,经常会产生一些不正确的边界框。其中大部分框可以通过一些像长宽比的信息将其过滤掉。

本文改进了CornerNet,增加了一个观察每个候选区域的视觉模式的功能,进而可以判断每个边界框的正确性。CenterNet通过增加一个关键点来探索proposal中间区域(近似几何中心)的信息,本文创新点在于,如果预测的边界框与ground truth有较高的IoU,则中心关键点预测出相同类别的概率要高,反之亦然。因此,在进行inference时,当通过一组关键点产生了一个边界框,我们继续观察是否具有同类别的一个关键点落入区域的中心,即使用三个点表示目标。

为了更好的检测中心的关键点即角点,提出了两个方法来丰富中心点及角点的信息。(1)center pooling:用于预测中心关键点的分支,有利于中心获得更多目标物的中心区域,进而更易感知proposal的中心区域。通过取中心位置横向与纵向响应值的和的最大值实现此方法。(2)cascade corner pooling:增加原始的corner pooling感知内部信息的功能。结合了feature map中目标物内部及边界方向的响应值和的最大值来预测角点。经试验证实,此方法在存在feature-level 噪声的情况下更加稳定,有助于准确率及召回率的提升。

本文方法

Object Detection as Keypoint Triplets:CenterNet整体结构如下图所示,用一组角点及中心点表示每个目标物,在CornerNet的基础上增加了一个用于预测center keypoint的heatmap,同时,预测cneter keypoint的偏移,然后基于CornerNet提出的方法选择前k个候选框。

为了剔除掉不正确的边界框,利用检测到的中心点的位置并对其按如下过程进行排序操作:(1)根据其分数选择前k个关键点。(2)根据对应的偏移量将center keypoint remap至输入图中。(3)为每一个边界框定义一个中心区域,并确保中心区域存在中心关键点,同时,保证该点的类别要与边界框的类别一致。如果中心区域检测到了中心关键点,则用左上角,右下角及中心点的分数的平均值更新边界框的分数,并保存该边界框。如果未检测到中心点,则移除该边界框。

中心区域的大小影响这边界框的检测结果。比如,小中心区域,对于小的边界框具有较低的召回率,而大区域相对于大的目标造成较低的精度。因此,本文提出了尺度敏感区域用于适应不同尺寸大小的目标物。其一般会生成相对小目标较大,相对大目标较小的中心区域,假设我们需要判断一个边界框I是否需要被保留,tlx,tly代表框左上角的点,brx,bry代表框右下角的点。定义一个中心区域j,定义左上角的点的坐标为(ctlx,ctly),右下角点(cbrx,cbry)。这些参数满足如下定义。

n为奇数代表中心区域j的大小。对于边界框小于150的设置n为3,大于150的设置n为5.如下所示。

角点及中心点信息的丰富:(1)center pooling:目标物的几何中心对传递可识别的视觉模式的贡献较少,比如(人的头部包含很强的视觉模式,但几何中心大部分在人躯体的中间)。未解决这个问题,提出了center pooling用于获得丰富的可识别视觉模式。下图a介绍了center pooling的操作,首先由backbone得到一个feature map,同时判断该feature map中是否存在一个中心点。需要找到该点水平方向及垂直方向上的最大值,并将其进行相加。center pooling更有利于中心关键点的检测。(2)cascade corner pooling:角点经常超出目标物的边界,缺少局部视觉外形特征。CornerNet使用corner pooling来解决这个问题。如下图b所示。Corner pooling主要是寻找边界上的最大值进而确定角点,但这样存在一个问题就是使角点对边界框很敏感。为了让角点能获得目标物的视觉模式,本文做了改进如下图c所示,首先,沿着边界寻找边界上的最大值,然后沿着最大值的位置向里看,找到内部的最大响应值,最后将两个最大值进行相加处理。这样,角点同时获得了目标物的边界信息及视觉信息。

center pooling及cascade corner pooling可以通过在不同方向上组合不同的corner pooling来实现。二者模型如下图所示。center pooling为了获得水平方向上的最大值,依次顺序连接left pooling 及right pooling。cascade corner pooling相比于CornerNet传统的corner pooling,在top pooling之前增加了一个left pooling。

Training 

输入图片尺寸为511x511,heatmap大小为128x128,训练损失如下,参数定义按照CornerNet中的。

实验

Reference

[1] S. Bell, C. Lawrence Zitnick, K. Bala, and R. Girshick. Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 2874–2883, 2016.

[2] N. Bodla, B. Singh, R. Chellappa, and L. S. Davis. Softnms–improving object detection with one line of code. In Proceedings of the IEEE international conference on computer vision, pages 5561–5569, 2017.

[3] Z. Cai, Q. Fan, R. S. Feris, and N. Vasconcelos. A unified multi-scale deep convolutional neural network for fast object detection. In European conference on computer vision, pages 354–370. Springer, 2016.

[4] Z. Cai and N. Vasconcelos. Cascade r-cnn: Delving into high quality object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 6154–6162, 2018

论文阅读笔记五十一:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)的更多相关文章

  1. 论文阅读笔记五十七:FCOS: Fully Convolutional One-Stage Object Detection(CVPR2019)

    论文原址:https://arxiv.org/abs/1904.01355 github: tinyurl.com/FCOSv1 摘要 本文提出了一个基于全卷积的单阶段检测网络,类似于语义分割,针对每 ...

  2. 论文阅读笔记五十八:FoveaBox: Beyond Anchor-based Object Detector(CVPR2019)

    论文原址:https://arxiv.org/abs/1904.03797 摘要 FoveaBox属于anchor-free的目标检测网络,FoveaBox直接学习可能存在的图片种可能存在的目标,这期 ...

  3. 论文阅读笔记六十三:DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling(CVPR2017)

    论文原址:https://arxiv.org/abs/1703.10295 github:https://github.com/lachlants/denet 摘要 本文重新定义了目标检测,将其定义为 ...

  4. 论文阅读笔记五十二:CornerNet-Lite: Efficient Keypoint Based Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.08900.pdf github:https://github.com/princeton-vl/CornerNet-Lite 摘要 基 ...

  5. 论文阅读笔记五十六:(ExtremeNet)Bottom-up Object Detection by Grouping Extreme and Center Points(CVPR2019)

    论文原址:https://arxiv.org/abs/1901.08043 github: https://github.com/xingyizhou/ExtremeNet 摘要 本文利用一个关键点检 ...

  6. 论文阅读笔记五十五:DenseBox: Unifying Landmark Localization with End to End Object Detection(CVPR2015)

    论文原址:https://arxiv.org/abs/1509.04874 github:https://github.com/CaptainEven/DenseBox 摘要 本文先提出了一个问题:如 ...

  7. 论文阅读笔记五十四:Gradient Harmonized Single-stage Detector(CVPR2019)

    论文原址:https://arxiv.org/pdf/1811.05181.pdf github:https://github.com/libuyu/GHM_Detection 摘要 尽管单阶段的检测 ...

  8. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

  9. 论文阅读笔记五十:CornerNet: Detecting Objects as Paired Keypoints(ECCV2018)

    论文原址:https://arxiv.org/pdf/1808.01244.pdf github:https://github.com/princeton-vl/CornerNet 摘要 本文提出了目 ...

随机推荐

  1. [2019.03.25]Linux中的查找

    TMUX天下第一 全世界所有用CLI Linux的人都应该用TMUX,我爱它! ======================== 以下是正文 ======================== Linu ...

  2. 通用权限管理系统之权限菜单zTree树的展示及移动的处理方法

    在通用权限管理系统中,有很多数据结构是有父子关系的,如组织机构,部门,权限菜单等,在展示的时候,大多数是通过zTree树的形式展现的,如下: 权限菜单展示 这种数据后台输出比较容易处理,参考如下获取某 ...

  3. (十六)qt-udp,组播

    基本流程 简单聊天程序 #include "server.h" #include <QApplication> #include "client.h" ...

  4. JMeter 下载

    测试文件下载接口,jmeter返回的是字节流,所以jmeter本身是不支持将文件保存到本地的 怎么判断服务器有没有完全返回?response header头里面有一个content-lenth,添加断 ...

  5. Day055--MySQL--外键的变种,表与表的关系,单表查询,多表查询, 内连接,左右连接,全外连接

    表和表的关系 ---- 外键的变种 * 一对多或多对一 多对多 一对一 参考 https://www.cnblogs.com/majj/p/9169416.html 如何找出两张表之间的关系 分析步骤 ...

  6. 使用zabbix监控nginx的活动连接数

    使用zabbix监控nginx的活动连接数 1.方法简述 zabbix可以自定义很多监控,只要是能通过命令获取到相关的值,就可以在zabbix的监控中增加该对象进行监控,在zabbix中,该对象称之为 ...

  7. jmeter 多个sql写在一个jdbc请求中注意事项

    在url里面加上?allowMultiQueries=true 类型选callableStatement

  8. Docker安装步骤

    在学习springcloud的消息总线时,需要安装rabbitmq,因为rabbitmq是用erlang开发的,所以安装rabbitmq又需要先安装erlang,总之安装过程中遇到各种坑,然而最终还是 ...

  9. 模仿OpenStack写自己的RPC

    在openstack中使用两种通信方式,一种是Restful API,另一种是远程过程调用RPC.本片文章主要讲解openstack中RPC的使用方式,以及如何在我们自己的架构中使用RPC. 在我前面 ...

  10. BST(二叉搜索树)相关

    1.BST的合法性:validate-binary-search-tree class TreeNode { int val; TreeNode left; TreeNode right; TreeN ...