大盘点!基于anchor-free方案的关键点检测模型

作者 | Mr.苍雪  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/562973984

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心技术交流群

后台回复【自动驾驶课程】获取全套图宾根大学自动驾驶入门课程!

CornerNet: Detecting Objects as Paired Keypoints

论文:https://arxiv.org/abs/1808.01244

代码:https://github.com/princeton-vl/CornerNet

提出了一种新的目标检测方法,检测目标边界框的左上角和右下角。通过检测对象作为成对的关键点,消除了在以前的单阶段探测器中常用的锚盒的需要。还引入了corner pooling,一种新的池化层,帮助网络更好地定位角。实验表明,CornerNet在MS COCO上达到42.1%,优于现有的单阶段探测检测器。

使用anchor boxes的缺点

  • 需要大量的anchor boxes。

  • 有大量的超参数和设计选择。

网络结构

fba7075ef7acca36e5eb042c9ad56625.png 00c458a3d82f16254228f2a944f20693.png

corner pooling

解决的问题:大部分目标检测的框都再物体外部。

motivation:为了确定在一个像素位置上是否有一个折叠角,我们需要向右水平方向查看对象的最上面的边界,并向右垂直方向向底部查看最左边的边

方法:它包含两个特征图;在每个像素位置,一个max-pool第一个特征图右边的所有特征向量,另一个max-pool第二个特征图下面的所有特征向量,然后将两个合并的结果加在一起。

d5aed7630b8345e550d556eec884648c.png 7fd7ec838726019f776cc10a71ee168c.png

hourglass network(backbone)

沙漏网络是一个包含多个 hourglass modules的全卷积网络

Objects as Points.

代码:https://github.com/xingyizhou/CenterNet

现有的大多数成功的目标检测器都会枚举一个几乎详尽的潜在对象位置列表,并对每个位置进行分类。这是浪费的、低效的,并且需要额外的后处理。本文提出了建模对象框的中心点,使用关键点估计来寻找中心点,并回归到所有其他对象属性,如大小、三维位置、方向,甚至姿态。本文所提出的基于中心点的方法,CenterNet,是端到端可微的,比相应的基于边界盒的检测器更简单、更快、更准确。CenterNet在MS COCO数据集上实现了最佳的速度-精度权衡,142 FPS的AP为28.1%,52FPS为37.4%AP,1.4FPS的多尺度测试为45.1% AP。

缺点:当物体的中心点重合在一起时无法都预测出来

54800793402c17c1f8b7615bdb3b650d.png 1603714a89dbf881f1d13c3802b5a881.png

CenterNet与传统检测器的不同:

  • 仅根据位置,而不是根据方框重叠来分配“锚点”。没有用于前景和背景分类的手动阈值

  • 对每个对象只有一个正的“锚点”,因此不需要非最大抑制(NMS)

  • 与传统的对象检测器(输出步幅为16)相比,CenterNet使用了一个更大的输出分辨率(输出步幅为4)。这就消除了对多个锚点的需要

CenterNet网络细节:

8b7b3588eec1566b115b53808d54f18d.png

损失计算

fc8601bb667d4e3a5647e6633110a3f0.png

关键点损失

7ea251c66592dec44714d6d4706b0315.png

局部偏移预测

f3852f628afe8237d8a7bdbc72c0bda3.png

目标框尺寸预测

75cdad8932cde6a43ecb27ea97668d7c.png

CerNet: Keypoint Triplets for Object Detection

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

fa2acd3f04f6114b797492a62fd4a9ae.png

在目标检测中,基于关键点的方法经常遭受大量不正确的对象边界框,这可以说是由于缺乏对裁剪区域的额外查看。本文提出了CenterNet使用最少的资源高效探索了裁剪区域的视觉模式。模型基于单阶段关键点目标检测器CornerNet。每个物体检测一个三元组(左上角点,中心点,右下角点)。同时设计了cascade corner pooling 和center pooling两个通用模块,用于丰富左上角和右下角点的信息,并为中心点提供更多的可识别信息。在MS-COCO数据集上,CenterNet的AP值为47.0%。

3bb56173b56258576294a3ccbfc5d2ba.png

关键点预测:

  • 根据heatmap得分选择前k个中心关键点。

  • 使用相应的偏移量将这些中心关键点重新映射到输入图像。

  • 为每个边界框定义一个中心区域,并选中中心区域是否包含中心关键点。(所选中的中心关键点的类标签应与边界框的类标签相同)

  • 如果在中心区域检测到一个中心关键点,将保留边界框。边界框的得分将被三个关键点的平均得分所取代,即左上角、右下角和中心关键点。如果在其中心区域中没有检测到中心关键点,则边界框将被删除。

center pooling

物体的几何中心并不一定传达出非常可识别的视觉模式(例如,人的头部包含强烈的视觉模式,但中心关键点通常在人体的中间)

用于预测中心关键点。

方法:通过在特征图上求出中心关键点的水平方向和垂直方向上的最大求和响应来实现。

dedd1c7973916d3a4ebdb970ebd7cc9c.png aea037f0425d580c80e059041abdfa38.png

cascade corner pooling

角点通常在物体之外,这缺乏局部的外观特征。直接找边界方向上的最大值使得它对边缘特别敏感。

用于预测角点。

方法:首先沿着边界查找边界最大值,然后沿着边界最大值的位置查看内部查找内部最大值,最后,将这两个最大值加在一起。

1c4f5bf7ce43f16a2deefeeb56c0c3a3.png

Bottom-up Object Detection by Grouping Extreme and Center Points

代码:https://github.com/xingyizhou/ExtremeNet

随着深度学习的出现,目标检测从自下而上转移到自上而下的识别问题。现有的目标检测SOTA算法枚举几乎详尽的对象位置列表,并将每个位置分类为:对象或背景。本文采用自下而上的方法,使用关键点估计的检测目标的四个边界点以及中心点。该方法的性能与最先进的基于区域的检测方法相当,在COCO测试开发上的边界盒AP为43.7%。

缺点:暴力枚举边界点,算法时间复杂度达(  ),即使coco数据集中n<40,计算时间也是比较长的。

自上而下的对象检测器枚举了大量可能的方框位置,而没有真正理解对象本身的组合视觉语法

Extreme points,相比于CornerNet中的points,视觉上更加可区分,相同类别的物体具有一致的局部外观特征。

提出了ExtremeNet,一个自下而上的目标检测框架。

  • 使用每个类别的一个heatmap来预测对象中心,作为x和y维度中两个边界框边的平均值。

  • 用纯基于几何图形的方法将极端点分组到对象中。将四个极端点分组在每个地图中,当且仅当它们的几何中心在中心heatmap中被预测,得分高于预先定义的阈值。

8be6a03d5efcdd0eefe9b50092c6b2ce.png 1f0b92a01ac9013fe57424bfb74fb16a.png

Center Grouping

采用不同于CornerNet的方法,利用了extreme points的扩散特性

  • 输入为每个类别的5个heatmap(四个边界点+一个中心点)

  • 给定一个热图,通过检测所有的峰值来提取相应的关键点(在3x3的窗口包围的像素中,像素值大于的像素位置坐标)

  • 通过四个关键点计算得到他们的几何中心

  • 如果该中心在中心heatmap中具有高响应,就将极端点作为有效的检测(中心点的得分大于)

  • 然后用蛮力的方式重复上述步骤列举所有的关键点。

5e512758fec85f01276510c527c163c0.png

Ghost box suppression

中心分组可以对三个相同大小的等距共线物体提供一个高可信度的假阳性检测。中心对象在这里有两个选择,提交到正确的小盒子,或者预测一个更大的盒子,其中包含其邻居的极端点。我们称这些假阳性的检测结果为“幽灵”盒子。正如我们将在实验中展示的,这些幽灵盒是不常见的,但仍然是我们分组的一致错误模式。

解决方法:如果某个边界框中包含的所有框的得分之和超过其自身得分的3倍,将其得分除以2。

Edge aggregation

如果一个物体的垂直或水平边缘形成了极端点(例如,汽车的顶部),那么沿着该边缘的任何点都可以被认为是一个极端点。因此,我们的网络沿着物体的任何对齐边缘产生一个弱响应,而不是一个单一的强峰值响应。存在的问题:首先,较弱的响应可能低于我们的峰值选择阈值,我们将完全错过这个极端点。其次,即使我们检测到这个关键点,它的分数也会低于一个具有很强峰值响应的轻微旋转的物体。

解决方法:提取局部最大值,并在沿聚集方向的局部最小值处停止聚集。

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、多传感器融合、SLAM、光流估计、轨迹预测、高精地图、规划控制、AI模型部署落地等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

c4f4eae267af7d9b1266c33b236ae2c2.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值