2019年比较新的目标检测的论文,抛弃了主流的使用anchor回归检测框的机制。
原文链接:
https://arxiv.org/pdf/1904.07850.pdfarxiv.org初步阅读,有很多细节不太清楚,先做个记录,以便后续交流学习。
Objects as Points摘要 图像检测中的检测框默认是轴对称的,大多数比较成功的检测方法都是要列举很大数量的候选框,再进一步进行定位和分类。但是这样的做法往往是多余而又低效率的。本文中我们提出了一种对物体的中心点进行定位的方法,并且在此基础上回归出物体的其他属性,比如尺寸、3D位置、方向甚至是姿态。我们提出的网络称之为CenterNet,它是一个端到端可微分,更简化快捷精度更高的方法。
1. Introduction
对于目标检测,one-stage的方法是给图像中使用了一个叫anchor的机制,去排布很多框在图像中,直接进行框的打分;而two-stage的方法会对这些框中的featuremap进行重新计算,再进一步进行分类和回归。后处理一般使用的是非极大值抑制,以去掉那些重复的框。因为大多数训练都不适用这种端到端的检测,这种后处理一般比较难以微分和训练。尽管如此,在过去的5年,在这方面也有许多方法提出。但是这种基于滑动窗的检测方法需要去枚举各种潜在的图像位置和尺寸,是比较浪费时间的。
在本文我们提出的方法,用boundingbox中心点来代表这个物体,随后在这个点的基础上对物体的其他属性比如尺寸,维度,3D位置和方向和姿态等进行回归。这样一来,物体检测就成为了一个标准关键点估计问题。我们把图像输入到一个全卷积网络,产生对应的热图。热图中的峰值点就对应着图像中物体的中心,在中心附近的特征也可以对物体的bbox宽和高进行预测。整个网络的训练是在稠密监督学习上进行的,使用单向网络向前传递,不需要非极大值抑制等后处理方式。我们的方法还可以对物体的其他属性进行预测,比如在预测物体3D信息的时候,会单独预测物体的3D边界框尺寸和物体方向;对于人体姿势估计,我们把关节点视为人体中心点的位置偏离,并在中心点位置直接对它们进行回归。
2. Related work
(1) 基于区域分类region proposal的物体检测方法
RCNN通过产生大量的区域候选框,再用深度神经网络对这些框进行提取特征和分类;Faster-RCNN是先进行特征提取,再对特整图进行产生候选框和分类,以减少计算量。然而,这两种方法都是基于低效率的特征提取方法。
(2) 基于隐藏的anchor的物体检测
RCNN在网络中就进行的候选区域的产生,它在对分辨率的图像网格之上列举出了很多固定尺寸的bbox(具体称之为anchor),并进一步进行分类判断它是不是“前景”,如果anchor与真值的重叠率大于0.7就视为是前景,否则认为是背景或者忽略。每一个得到的前景anchor随后会进行一种基于多尺度分类的检测。我们所提出的方法与这种one-stage的基于anchor的机制比较类似,我们提出的物体中心点可以被理解成一种不可知形状的anchor,如图3。我们的中心点机制有几个特点:
- l 它不是基于与真实框的重叠率来分配anchor,而是利用位置信息,我们没有一个区分前景和背景的阈值。
- l 对于每个物体,我们只提出一个positive anchor,因此就不需非极大值抑制进行过滤。我们只是对关键点热图中的局部峰值进行关注。
- l CenterNet的输出分辨率很高,这也消除了对多个anchor的需求。
(3) Object detection by keypoint estimation
CoreNet[30]检测bbox的两个角点作为关键点,ExtremeNet【61】预测bbox的左右上下的值。这些点的估计和我们的CenterNet有着类似的鲁棒的网络,但是他们的方法需要在估计到点后进一步进行组合,是比较费时间的。我们的方法在估计到点后不用进行其他后处理。
(4) Monocular 3D object detection
3D框估计在自动驾驶领域很有用,Deep3Dbos方法利用slow-RCNN的框架,在估计到的2D信息后进行3D投影。CenterNet也用了类似的方法但是比他们的快,减少了计算。
3. Preliminary
3.1 hm_loss
使用
其中,N是图像中真值关键点的数量,使用N把Lk的最大值缩放到1,
(1)当这个预测的点的位置对应对应的真值
(2)当预测到的点的位置对应的真值
3.2 reg_loss中心点偏移量loss
此外,由于存在步长,有时候会出现离散化的现象,我们对于每个点还额外加了一项
这里只对真值点对应位置初产生的中心点进行计算偏移量。
3.3 wh_loss
对于每一个物体所在的bbox,其种类是
结合上面提到的其他loss,总的loss可以表示为:
从点到框
在推理中,我们首先分别对每种类型的热图的峰值点进行获取,选取前100个比它周围的特图的值都高或者相同的点。使用
其中的
4.1 3D detechtion
对于3D检测部分,检测到中心点后还需要引入3个分支进行深度、3D尺寸和方向的生成.对于深度,我们的结构中使用了一个单独的与中心点预测并行的分支回归出点的深度信息,深度信息是比价难以直接进行回归的,我们使用了Eigen[13]的转化(没详细看)。对于3维尺寸,我们直接进行绝对尺寸的预测。对于方向,我们借鉴Mousavian et al. [38]的方法,使用了两个bin的机制进行预测。(细节没太讲)
4.2 Human pose estimation
人体姿态估计主要是要估计出人体的17个关节点的2D位置,我们直接把关节点作为中心点的偏移量进行回归,使用mask的损失来忽略看不见的关节点(?)。具体操作中,使用自底向上的人体姿态方式[4,39,41],在对关节点的训练中,也使用了第3节中提到的focal loss焦距损失和局部像素偏移的方法。
5. 实施细节
作者使用了几个不同的backbone网络来进行测试,发现使用DLA-34作为backbone时的效果最好。它能达到52FPS和37.4%的AP
5.1Hourglass沙漏网络
堆叠沙漏网络[30,40]使用两个系列的沙漏网络完成4倍下采样,每个沙漏网络都是一个对称的5层向下和向上卷积网络,并伴随有skip connection。这个网络比较大,但是可以获取到最好的关键点估计。
5.2ResNet
作者用ResNet并进行了相关改进以减少计算量。
5.3DLA深层聚合
实验结果对比