Anchor-free目标检测综述 -- Keypoint-based篇
早期目标检测研究以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
- ExtremeNet
- CenterNet
- CenterNet(Object as Point)
- CSP
- CornerNet-Lite
- RepPoints
- CentripetalNet
- SaccadeNet
- RepPointsV2
- CPNDet
- FSAF
CornerNet
CornerNet将目标检测定义为左上角点和右下角点的检测。网络结构如图1所示,通过卷积网络预测出左上角点和右下角点的热图,然后将两组热图组合输出预测框,彻底去除了anchor box的需要。论文通过实验也表明CornerNet与当前的主流算法有相当的性能,开创了目标检测的新范式。
CornerNet的结构如图4所示,使用hourglass网络作为主干网络,通过独立的两个预测模块输出两组结果,分别对应左上角点和右下角点,每个预测模块通过corner池化输出用于最终预测的热图、embedding向量和偏移。
ExtremeNet
ExtremeNet通过检测目标的四个极点进行目标定位,如图1所示。整体算法基于CornerNet的思想进行改进,使用五张热图分别预测目标的四个极点以及中心区域,将不同热图的极点进行组合,通过组合的几何中心在中心点热图上的值判断组合是否符合要求。另外,ExtremeNet检测的极点能够配合DEXTR网络进行目标分割信息的预测。
CenterNet
CornerNet将目前常用的anchor-based目标检测转换为keypoint-based目标检测,使用角点对表示每个目标,CornerNet主要关注目标的边界信息,缺乏对目标内部信息的获取,很容易造成误检,如图1所示。为了解决这个问题,论文提出CenterNet,在角点对的基础上加入中心关键点组成三元组进行检测,既能捕捉目标的边界信息也能兼顾目标的内部信息。另外,为了更好地提取特征,论文还提出了center pooling和cascade corner pooling,分别用于更好地提取中心关键点和角点。
CenterNet(Object as Point)
CenterNet算法将检测目标视为关键点,先找到目标的中心点,然后回归其尺寸。首先将输入的图片转换成热图,热图中的高峰点对应目标的中心,将高峰点的特征向量用于预测目标的高和宽,如图2所示。在推理时,只需要简单的前向计算即可,不需要NMS等后处理操作。对比上一篇同名的CenterNet算法,这个算法更简洁且性能足够强大,不需要NMS等后处理方法,能够拓展到其它检测任务中。
CSP
CSP的网络结构大致如图1所示,在主干网络上分别预测目标中心点的位置及其对应的尺寸。这篇文章的整体思想与CenterNet(zhou. etc)基本一致,但不是抄袭,因为是同一个会议上的论文,CenterNet主要研究常规的目标检测,而这篇主要研究人脸检测和行人检测。但CSP仍然需要进行NMS的后处理,较CenterNet更逊色一些,但不妨碍我们进行简单地了解,包括学习论文的训练方法以及参数。
CornerNet-Lite
CornerNet作为Keypoint-based目标检测算法中的经典方法,虽然有着不错的准确率,但其推理很慢,大约需要1.1s/张。虽然可以简单地缩小输入图片的尺寸来加速推理,但这会极大地降低其准确率,性能比YOLOv3要差很多。为此,论文提出了两种轻量级的CornerNet变种:CornerNet-Saccade和CornerNet-Squeeze。
CornerNet-Saccade在可能出现目标的位置的小区域内进行目标检测,首先通过缩小的完整图片预测attention特征图,获得初步的预测框位置以及尺寸,然后在高分辨率图片上截取以该位置为中心的图片区域进行目标检测。
在CornerNet中,大多数的计算时间花在主干网络Hourglass-104的推理。为此,CornerNet-Squeeze结合SqueezeNet和MobileNet来减少Hourglass-104的复杂度,设计了一个新的轻量级hourglass网络。
RepPoints
经典的bounding box虽然有利于计算,但没有考虑目标的形状和姿态,而且从矩形区域得到的特征可能会受背景内容或其它的目标的严重影响,低质量的特征会进一步影响目标检测的性能。为了解决bounding box存在的问题,论文提出了RepPoints这种新型目标表示方法,能够进行更细粒度的定位能力以及更好的分类效果。
RepPoints是一个点集,能够自适应地包围目标并且包含局部区域的语义特征。论文基于RepPoints设计了anchor-free目标检测算法RPDet,包含两个识别阶段。因为可变形卷积可采样多个不规则分布的点进行卷积输出,所以可变形卷积十分适合RepPoints场景,能够根据识别结果的反馈进行采样点的引导。
CentripetalNet
CornerNet打开了目标检测的新方式,通过检测角点进行目标的定位,在角点的匹配上,增加了额外embedding向量,向量距离较小的角点即为匹配。而论文认为,这种方法不仅难以训练,而且仅通过物体表面进行预测,缺乏目标的位置信息。
CentripetalNet的核心在于提出了新的角点匹配方式,额外学习一个向心偏移值,偏移后足够近的角点即为匹配。如图2所示,CentripetalNet包含四个模块,分别为:
- 角点预测模块(Corner Prediction Module):用于产生候选角点,这部分跟CornerNet一样。
- 向心偏移模块(Centripetal Shift Module):预测角点的向心偏移,并根据偏移结果将相近的角点成组。
- 十字星变形卷积(Cross-star Deformable Convolution):针对角点场景的变形卷积,能够高效地增强角点位置的特征。
- 实例分割分支(Instance Mask Head):类似MaskRCNN增加实例分割分支,能够提升目标检测的性能以及增加实例分割能力。
SaccadeNet
SaccadeNet的结构如图2所示,首先初步预测目标的中心位置以及角点位置,然后利用四个角点位置以及中心点位置的特征进行回归优化。整体思想类似于two-stage目标检测算法,将第二阶段的预测框精调用的区域特征转化为点特征,在精度和速度上都可圈可点,整体思想十分不错。
RepPointsV2
RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习,具体的实现方法是在原网络上加入辅助分支(auxiliary side-branches)的形式,有监督地进行学习,辅助分支能够优化中间特征以及进行联合检测。
CPNDet
本文为CenterNet作者发表的,作者认为acnhor-free方法通常会出现大量的误检,需要一个独立的分类器来提升检测的准确率。于是结合acnhor-free方法和two-stage范式提出了Corner-Proposal-Network(CPN),完整的结构如图2所示。首先使用anchor-free方法提取关键点,遍历关键点组合成候选框,最后使用两个分类器分别对候选框进行误检过滤以及标签预测。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】