Anchor-free目标检测综述 -- Keypoint-based篇

砾歌范式
• 阅读 1319

  早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作为代表。后来,有研究者觉得初始anchor的设定对准确率的影响很大,而且很难找到完美的预设anchor,于是开始不断得研究anchor-free目标检测算法,意在去掉预设anchor的环节,让网络自行学习anchor的位置与形状,在速度和准确率上面都有很不错的表现。anchor-free目标检测算法分为两种,一种是DenseBox为代表的Dense Prediction类型,密集地预测的框的相对位置,另一种则是以CornerNet为代表的Keypoint-bsaed Detection类型,以检测目标关键点为主。
  本文主要列举几种Keypoint-based Detection类型的网络,主要涉及以下网络:

CornerNet


  CornerNet将目标检测定义为左上角点和右下角点的检测。网络结构如图1所示,通过卷积网络预测出左上角点和右下角点的热图,然后将两组热图组合输出预测框,彻底去除了anchor box的需要。论文通过实验也表明CornerNet与当前的主流算法有相当的性能,开创了目标检测的新范式。

Anchor-free目标检测综述 -- Keypoint-based篇

  CornerNet的结构如图4所示,使用hourglass网络作为主干网络,通过独立的两个预测模块输出两组结果,分别对应左上角点和右下角点,每个预测模块通过corner池化输出用于最终预测的热图、embedding向量和偏移。

ExtremeNet


Anchor-free目标检测综述 -- Keypoint-based篇

  ExtremeNet通过检测目标的四个极点进行目标定位,如图1所示。整体算法基于CornerNet的思想进行改进,使用五张热图分别预测目标的四个极点以及中心区域,将不同热图的极点进行组合,通过组合的几何中心在中心点热图上的值判断组合是否符合要求。另外,ExtremeNet检测的极点能够配合DEXTR网络进行目标分割信息的预测。

CenterNet


Anchor-free目标检测综述 -- Keypoint-based篇

  CornerNet将目前常用的anchor-based目标检测转换为keypoint-based目标检测,使用角点对表示每个目标,CornerNet主要关注目标的边界信息,缺乏对目标内部信息的获取,很容易造成误检,如图1所示。为了解决这个问题,论文提出CenterNet,在角点对的基础上加入中心关键点组成三元组进行检测,既能捕捉目标的边界信息也能兼顾目标的内部信息。另外,为了更好地提取特征,论文还提出了center pooling和cascade corner pooling,分别用于更好地提取中心关键点和角点。

CenterNet(Object as Point)


Anchor-free目标检测综述 -- Keypoint-based篇

  CenterNet算法将检测目标视为关键点,先找到目标的中心点,然后回归其尺寸。首先将输入的图片转换成热图,热图中的高峰点对应目标的中心,将高峰点的特征向量用于预测目标的高和宽,如图2所示。在推理时,只需要简单的前向计算即可,不需要NMS等后处理操作。对比上一篇同名的CenterNet算法,这个算法更简洁且性能足够强大,不需要NMS等后处理方法,能够拓展到其它检测任务中。

CSP


Anchor-free目标检测综述 -- Keypoint-based篇

  CSP的网络结构大致如图1所示,在主干网络上分别预测目标中心点的位置及其对应的尺寸。这篇文章的整体思想与CenterNet(zhou. etc)基本一致,但不是抄袭,因为是同一个会议上的论文,CenterNet主要研究常规的目标检测,而这篇主要研究人脸检测和行人检测。但CSP仍然需要进行NMS的后处理,较CenterNet更逊色一些,但不妨碍我们进行简单地了解,包括学习论文的训练方法以及参数。

CornerNet-Lite


  CornerNet作为Keypoint-based目标检测算法中的经典方法,虽然有着不错的准确率,但其推理很慢,大约需要1.1s/张。虽然可以简单地缩小输入图片的尺寸来加速推理,但这会极大地降低其准确率,性能比YOLOv3要差很多。为此,论文提出了两种轻量级的CornerNet变种:CornerNet-Saccade和CornerNet-Squeeze。

Anchor-free目标检测综述 -- Keypoint-based篇

  CornerNet-Saccade在可能出现目标的位置的小区域内进行目标检测,首先通过缩小的完整图片预测attention特征图,获得初步的预测框位置以及尺寸,然后在高分辨率图片上截取以该位置为中心的图片区域进行目标检测。

Anchor-free目标检测综述 -- Keypoint-based篇

  在CornerNet中,大多数的计算时间花在主干网络Hourglass-104的推理。为此,CornerNet-Squeeze结合SqueezeNet和MobileNet来减少Hourglass-104的复杂度,设计了一个新的轻量级hourglass网络。

RepPoints


  经典的bounding box虽然有利于计算,但没有考虑目标的形状和姿态,而且从矩形区域得到的特征可能会受背景内容或其它的目标的严重影响,低质量的特征会进一步影响目标检测的性能。为了解决bounding box存在的问题,论文提出了RepPoints这种新型目标表示方法,能够进行更细粒度的定位能力以及更好的分类效果。

Anchor-free目标检测综述 -- Keypoint-based篇

  RepPoints是一个点集,能够自适应地包围目标并且包含局部区域的语义特征。论文基于RepPoints设计了anchor-free目标检测算法RPDet,包含两个识别阶段。因为可变形卷积可采样多个不规则分布的点进行卷积输出,所以可变形卷积十分适合RepPoints场景,能够根据识别结果的反馈进行采样点的引导。

CentripetalNet


  CornerNet打开了目标检测的新方式,通过检测角点进行目标的定位,在角点的匹配上,增加了额外embedding向量,向量距离较小的角点即为匹配。而论文认为,这种方法不仅难以训练,而且仅通过物体表面进行预测,缺乏目标的位置信息。

Anchor-free目标检测综述 -- Keypoint-based篇

  CentripetalNet的核心在于提出了新的角点匹配方式,额外学习一个向心偏移值,偏移后足够近的角点即为匹配。如图2所示,CentripetalNet包含四个模块,分别为:

  • 角点预测模块(Corner Prediction Module):用于产生候选角点,这部分跟CornerNet一样。
  • 向心偏移模块(Centripetal Shift Module):预测角点的向心偏移,并根据偏移结果将相近的角点成组。
  • 十字星变形卷积(Cross-star Deformable Convolution):针对角点场景的变形卷积,能够高效地增强角点位置的特征。
  • 实例分割分支(Instance Mask Head):类似MaskRCNN增加实例分割分支,能够提升目标检测的性能以及增加实例分割能力。

SaccadeNet


Anchor-free目标检测综述 -- Keypoint-based篇

  SaccadeNet的结构如图2所示,首先初步预测目标的中心位置以及角点位置,然后利用四个角点位置以及中心点位置的特征进行回归优化。整体思想类似于two-stage目标检测算法,将第二阶段的预测框精调用的区域特征转化为点特征,在精度和速度上都可圈可点,整体思想十分不错。

RepPointsV2


Anchor-free目标检测综述 -- Keypoint-based篇

  RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习,具体的实现方法是在原网络上加入辅助分支(auxiliary side-branches)的形式,有监督地进行学习,辅助分支能够优化中间特征以及进行联合检测。

CPNDet


Anchor-free目标检测综述 -- Keypoint-based篇

  本文为CenterNet作者发表的,作者认为acnhor-free方法通常会出现大量的误检,需要一个独立的分类器来提升检测的准确率。于是结合acnhor-free方法和two-stage范式提出了Corner-Proposal-Network(CPN),完整的结构如图2所示。首先使用anchor-free方法提取关键点,遍历关键点组合成候选框,最后使用两个分类器分别对候选框进行误检过滤以及标签预测。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

Anchor-free目标检测综述 -- Keypoint-based篇

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
FCOS单阶段anchor
本文提出了一种全卷积onestage目标检测算法(FCOS),以逐像素预测的方式解决目标检测问题,类似于语义分割。目前最流行的不论是onestage目标检测算法,如RetinaNet,SSD,YOLOv3,还是twostage目标检测算法,如FasterRCNN。这两类算法大都依赖于预定义的锚框(anchorboxes)。相比之下,本文提出的目
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这