CenterNet: Keypoint Triplets for Object Detectiontection

CVPR2019

论文链接

代码链接

Abstract

  • 基于关键点的目标检测经常出现不正确的边界框
  • 本文的方法在CornerNet检测两个角点的基础上,增加了对中心点的检测
  • 本文提出了cascade corner pooling和center pooling
  • 在精度和召回率上都得到了提高
    • On the MS-COCO dataset,CenterNet achieves an AP of 47.0%, which outperforms all existing one-stage detectors by at least 4.9%
    • with a faster inference speed, CenterNet demonstrates quite comparable performance to the top-ranked two-stage detectors.

Introduction

  • 在推理过程中,两个角点生成一个边界框之后,通过检查是否有同类中心点落入其中心区域来确定该边界框是不是一个目标,如图1第二行所示(第一行为CornerNet)

  • 为了更好地检测关键点,提出了center pooling和cascade corner pooling

    • center pooling用于用来检测中心点的特征图,取水平方向和垂直方向最大响应的和
    • cascade corner pooling在corner pooling的基础上进行改进,取水平方向、垂直方向和内部方向最大响应的和

Related Work

  • 目标检测包括定位和分类目标

CenterNet

  • Baseline and Motivation

    • 在CornerNet的基础上进行改进
    • 表1对CornerNet进行了深入的分析(FD=1−APFD = 1 − APFD=1−AP, 表示不正确边界框的比例,where AP 表示平均精度at IoU = [0.05 : 0.05 : 0.5] on the MS-COCO dataset. ):1. 即使在IoU很低的情况下0.05(FD5)不正确的边界框也有很多,对小目标表现很差,造成这种问题的原因可能是CornerNet不能利用边界框内的特征,有一个潜在的解决方法是,将CornerNet改为两阶段的方法,在proposal中搜索角点(这里我觉得可能会出现proposal没有把目标整个包含进去的情况,所以效果肯定有局限),这种做法是比较耗费计算资源的

    • 基于上面的分析,提出了CenterNet
  • Object Detection as Keypoint Triplets

    • 图2是本文的网络结构,相较CornerNet增加了center pooling分支,搜索中心点位置和偏移量

  1. 首先利用CornerNet的方式生成top-k个边界框
  2. 然后利用检测到的关键点:
    • 根据它们的分数选择top-k个中心点
    • 使用相应的偏移量将中心点映射回原始图像
    • 为每个边界框生成一个中心区域,检查其中有没有相同类别的中心点
    • 如果在中心区域找到了中心点,则保留这个边界框,其分数为三个点的平均分数,其他边界框被舍弃
  • 中心区域的大小是尺度敏感的,对于小边界框有大的中心区域,对大边界框中心区域相对较小,具体公式如下(ctlx,ctlyctl_x,ctl_yctlx​,ctly​为中心区域左上角,cbrx,cbrycbr_x,cbr_ycbrx​,cbry​为中心区域右下角,tlx,tly,brx,brytl_x, tl_y, br_x, br_ytlx​,tly​,brx​,bry​是边界框的左上角和右下角,nnn是决定尺度的奇数,边界框大于150的设为5,边界框大于150的设为3):


  • Enriching Center and Corner Information

  • Center pooling

    • 水平方向和竖直方向的最大值相加,如图4(a)
    • 图5(a)展示了center pooling的实现方式,将right pooling和left pooling串联
  • Cascade corner pooling

    • corner pooling是找到水平和竖直边界方向的最大值进行相加,如图4(b),这样的话corner对边缘信息敏感,感知不到目标的内部信息。
    • Cascade corner pooling先沿着边界找一个最大值,然后再沿着这个点在边界框内部找一个最大值,最后将两个值相加,如图4(c),这样角点就同时包含了边缘和内部信息
    • 图5(b)展示了Cascade corner pooling的实现方式,以Cascade top corner pooling在top corner pooling前加了left pooling

  • Training and Inference

    • 损失函数(Ldet,Lpull,LpushLoffL_{det}, L_{pull}, L_{push} L_{off}Ldet​,Lpull​,Lpush​Loff​都沿用cornernet,增加了关于中心点的损失和中心点的偏移损失$α,
      β ,γ $分别为筽,0.1,0.1,1):

  • 推理时选择70个center point,70个左角点和70个右角点,用soft-nms去除冗余的边界框,最后根据分数取前一百个边界框

Experiments

  • 与最先进的检测器的比较,小目标的提升最为明显

  • 与CornerNet在错误检测的对比,CenterNet的作物检测明显少于CornerNet

  • 使用沙漏网络104,CenterNet要比CornerNet慢,但是使用沙漏网络52,CenterNet要比CornerNet快

  • 消融实验

    • 探讨三个模块的作用(表4),CRE(Central region exploration添加了中心点检测)、CTP(center pooling )、CCP( cascade corner pooling)

  • Error Analysis

    • 直接用真实的中心点替代检测到的中心点,性能提高很大,说明中心点检测精度还没有达到瓶颈

Conclusions

  • 本文在CornerNet的基础上增加了对中心点的检测,提升了检测精度,可以将本文中的方法推广到其他一阶段的方法当中,但是与另一篇CenterNet相比检测速度没有提升,center pooling 和cascade corner pooling也是不错的想法。
  • 这里有一个想法是把中心点的检测和传统的机器学习结合起来,通过纹理、颜色等特征进行一个约束,是不是可以提升中心点的检测精度。

CenterNet: Keypoint Triplets for Object Detectiontection学习笔记相关推荐

  1. 论文阅读:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)

    论文地址:https://arxiv.org/abs/1904.08189 github实现:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键 ...

  2. 论文精读——CenterNet :Keypoint Triplets for Object Detection

    论文地址:https://arxiv.org/abs/1904.08189 论文代码:https://github.com/Duankaiwen/CenterNet 发布时间:2019.4.17 发布 ...

  3. CenterNet: Keypoint Triplets for Object Detection ----- 论文翻译理解

    Abstract 在对象检测中,基于关键点的方法经常遇到大量不正确的对象边界框,这可能是由于缺少对裁剪区域的额外检查.本文提出了一种有效的解决方案,以最小的代价探索每个裁剪区域内的视觉模式.在一个具有 ...

  4. CenterNet: Keypoint Triplets for Object Detection

    在目标检测方法中,基于关键点的方法会检测出大量不正确的边界框,这是由于没有对裁剪区域进行进一步的检查.本文提出了一种有效的解决方案,以最小的成本检测裁剪区域.本框架基于CornerNet,名为Cent ...

  5. CenterNet: Keypoint Triplts for Object Detection 论文阅读笔记

    论文名称:CenterNet: Keypoint Triplts for Object Detection 作者:Kaiwen Duan & Song Bai等 论文链接:https://ar ...

  6. Object C学习笔记22-#define 用法

    上一篇讲到了typedef 关键字的使用,可以参考文章 Object C 学习笔记--typedef用法 .而在c中还有另外一个很重要的关键字#define. 一. #define 简介 在C中利用预 ...

  7. Object C学习笔记12-集合

    Object C学习笔记12-集合 2014-03-08 17:25 by 贺臣, 262 阅读, 0 评论, 收藏, 编辑 这里讲到的集合是指Set集合,其实Array也是一种类型的集合.在Obje ...

  8. CenterNet:Keypoint Triplets for Object Detection(中文版)

    摘要 在对象检测中,基于关键点的方法通常用于处理大量不正确的对象边界框,这是由于缺少对裁剪区域的额外查看.本文提出了一种有效的解决方案,以最小的代价在每个裁剪区域内实现视觉模式的求解.我们的框架建立在 ...

  9. 深入研读“ReDet: A Rotation-equivariant Detector for Aerial Object Detection”学习笔记

    ReDet: A Rotation-equivariant Detector for Aerial Object Detection Jiaming Han∗, Jian Ding∗, Nan Xue ...

  10. Object C学习笔记20-结构体

    在学习Object C中的过程中,关于struct的资料貌似非常少,查阅了C方面的资料总结了一些学习心得! 一. 定义结构 结构体是一种数据类型的组合和数据抽象.结构体的定义语法如下: struct ...

最新文章

  1. 2022-2028年中国重油行业市场研究及前瞻分析报告
  2. 机器学习的中流砥柱:用于模型构建的基础架构工具有哪些?
  3. 方舟自建服务器物品叠加mod,10000倍物品叠加 -90%负重 V280
  4. VR开发从何入手的实战分享
  5. acquisition calculation
  6. DDD“上吊绳驱动开发”,开发要想不被“吊死”,该如何自救?
  7. 11.10金山面试内容
  8. 返回相同宽度数字型字符串
  9. 【以太坊开发】发币指南--进阶篇
  10. 反病毒软件技术简析与探索(2009年5月18日)
  11. http服务器 显示中文乱码,Tomcat Http请求中文乱码
  12. HTML5全局属性汇总
  13. 烤仔TVのCCW丨密码学通识(五)消息认证码
  14. OSChina 周二乱弹 ——同桌男孩子动手动脚,我该怎么办
  15. 如何干净的卸载Oracle
  16. Python经典实验4-字典和集合的应用
  17. 学习@Transaction异常自动回滚以及手动回滚和回滚部分SQL服务
  18. java怎么让多个方法循环运行下去_35 个小细节,提升 Java 代码的运行效率!你知道几个?...
  19. firefox浏览器修改样式为绿色护眼
  20. libIEC61850学习记录

热门文章

  1. 【示波器专题】示波器带宽对测量的影响
  2. 【示波器专题】数字示波器的主要指标——带宽
  3. 有关javaSE下载时,环境配置path不成功,在cmd命令中java,javac,java -version出现不是内部或外部命令的现象处理
  4. CTWAP、CTNET、彩信
  5. Mac的聚焦搜索Spotlight搜索不准确问题
  6. 详解谷歌浏览器 performance 选项卡
  7. linux实现进度条
  8. vue+elementUI 怎么上传图片至阿里云
  9. Win11系统Windows.old怎么删?Windows.old删不了怎么办?
  10. python漂亮界面 数独游戏源代码_Python编写的超帅数独可视化解题器