2019/07/15,转载请注明
论文地址:https://arxiv.org/abs/1904.07850
源码:https://github.com/xingyizhou/CenterNet
一、摘要
目前比较成功的检测器,都是列举了极其多的潜在目标位置,然后对每一个分类,之后还要加上后处理,作者认为这种做法还是低效了。
本文中,作者把一个目标建模为一个点--目标检测框的中心点。检测器通过关键点估计,找到中心点,并回归其他属性,比如size,3D位置,方向甚至姿态。
CenterNet在MS COCO数据集上取得了最好的速度精度表现:
- 28.1%AP @142fps
- 37.4%AP @52fps
- 45.1%AP @1.4fps(多尺度测试)。
二、主要内容
1、方法介绍
本文中,作者把一个目标建模为一个点--目标检测框的中心点。检测器通过关键点估计,找到中心点,并回归其他属性,比如size,3D位置,方向甚至姿态。
目标检测就成为了标准的关键点预测问题:
- 把图片输入到全卷积网络生成heatmap,热图峰值对应目标中心;
- 根据峰值处的图片特征预测目标检测框的宽高;
另外,在中心点处输出附加预测,可以进行3d目标检测,以及多人姿态估计:
- 对于3D框估计,我们回归对象的绝对深度、三D框尺寸和对象方向
- 对于人体姿态估计,我们把二维关节点看作是中心位置+偏移量,直接回归偏移量
2、与之前基于anchor方法的对比
本文方法和基于anchor的one stage方法类似。中心点本身也可以视为一个框形状未知的anchor。
不同之处在于:
- 中心点的anchor分配只根据位置,不考虑IoU,也就没有阈值和分类;
- 一个目标只有一个正例中心点,不用NMS,而是简单的从heatmap中取峰值。
- CenterNet输出分辨率更高,输出stride=4,对比传统的stride=16。
3、输出热力图
网络输出结果是下采样stride=4。作者使用了几种全卷积编码-解码网络预测热力图:堆叠的Hourglass网络,上采样ResNet,和深层聚合DLA。
先计算热力图尺度下的GT关键点,在使用高斯核对GT点及邻近像素计算。如果高斯计算后有重叠,则每个像素使用最大值。训练时使用focal loss。
为了弥补降采样(stride=4)导致的量化误差,我们额外预测了中心点偏移量,训练时用L1 loss。
4、中心点即目标
假设目标框坐标是. 中心点
由热力图网络输出。另外,可以回归目标框宽高
。考虑到计算量,这里只用输出的热力图来预测目标框尺寸,使用L1 loss。
作者使用一个网络来同时预测关键点、中心点偏移量、和尺度,共C+4个结果(关键点用C个热力图表示)顺带一提,中心点的值在0~1间,就是置信度。所有输出共享一个主干网,然后每一个输出会使用一个3x3卷积,ReLU和1x1卷积。

- 热力图的C表示该类别的热力图共有C个。
- 文中写了每个热力图都有n个峰值,作者设最大值100,我理解是多目标检测。
- 每个目标都有对应的中心点和框尺寸
5、检测扩展
除了输出目标检测外,该方法可以同样的形式,增加3D检测、人体姿态估计分支。


6、实验结果
(1)目标检测


大部分one-stage检测器,都进行了单尺度/多尺度的测试。
(2)3D目标检测

(3)人体姿态估计
论文引用之后还有附录,有兴趣的也可以看看。