【论文笔记】CenterNet:Objects as Points
&论文概述
论文题目:Objects as Points
作者&出处:Xingyi Zhou, UT Austin; Dequan Wang, UC Berkley; Philipp Krahenbuhl, UT Austin
获取地址:https://arxiv.org/abs/1904.07850v1
&总结与个人观点
提出新的表示目标的方法:使用points。CenterNet是一个成功的关键点评估网络,找到目标的中心,回归其size。这个算法简单、快速、精确且没有任何的NMS后处理因此端到端可微。这个想法很普通,且在简单的二维检测之外仍可大范围的应用。CenterNet乐意评估一系列额外的目标属性,如pose、3D方向、depth等。我们的实验对实时目标识别及相关工作开辟了一个新的方向。
这篇论文是我看到相关方向的一个比较新颖的想法,将目标可做一个points,然后通过这个points的特征,来对相应的属性进行回归。
&贡献
1) 提出CenterNet,将目标视为点,然后回归出其他的目标的属性;
2) 结合3D属性、pose属性,取得不错的成果。
&拟解决的问题
问题:使用轴对齐(axis-aligned)boxes来检测目标:大多成功的目标检测通过枚举一个近乎详尽的潜在目标位置的列表,且对每个box分别进行分类操作。
分析:而这无疑是浪费的、低效的以及要求额外的后处理(如NMS等)的方法。此外,像NMS这种后处理操作,使得这个过程很难微分与训练,以致于当前大多数的检测器无法实现end-to-end的训练。
而CenterNet将目标视为单独的点——bbox的中心点。使用keypoint estimate来找到中心点,同时通过中心点回归出其他的目标属性,如:size、3D location、方向乃至pose。
1) 这种方法相比于基于相应的bbox的检测器而言,可微、更简单、更快甚至更精确。
2) 与anchor-based one-stage方法相比:CenterNet与其相似,一个中心点可视为一个形状不可知的anchor。但其中仍有不同之处:
- CenterNet使用的“anchor”仅基于location,而不是box的覆盖率,没有对foreground与background设置阈值限制;
- 每个目标只有一个正“anchor”,不需要使用NMS。这个中心点是从heatmap中提取出的峰值;
- CenterNet相比于传统的目标检测器(输出stride of 16)使用更大的输出分辨率(输出stride of 4),消除了多anchor的需要。
3) 与使用keypoint estimate的方法相比,如CornerNet、ExtremeNet,在关键点检测之后需要结合分组的阶段对关键点进行处理,降低了算法的速度。而CenterNet则直接提取每个目标中的中心点而不需要进行分组或其他后处理。
&框架及主要方法
1、CenterNet的网络结构图
2、如何找到Center Point
直接将图片输入到全卷积网络中,生成一个heatmap。在heatmap中的峰值就是目标的中心。在每个峰值出的图像特征用来预测目标的bbox的高和宽。
假定输入图像I(【W、H、3】),目的是生成一个keypoint heatmap Y(【W/R、H/R、C】),Y的值在[0, 1],如果为1则为检测到的关键点,为0为背景。其中R是输出的stride,实验中使用4,C是总类别数。如1中图像,实验时使用不同的全卷积编码解码网络来进行预测。
对每个类别c的真实值的关键点p,计算其低分辨率等式,对Y进行高斯处理:
使用focal loss来减少像素级逻辑回归的惩罚:
Local Offset:
对每一个中心点额外预测局部偏移O(【W/R,H/R,2】),所有的类别共享相同的预测偏移。使用L1损失对偏移进行训练:
只有在关键点p位置处进行监督,其他位置均忽略。
3、如何回归出Object的其他属性(size、3D location etc.)
Size Regression:
令(x1(k), y1(k), x2(k), y2(k))是类别ck第k个目标的bbox,其中心pk=((x1(k)+x2(k))/2, (y1(k)+y2(k))/2)。使用keypoint estimator Y来预测所有的中心点,此外对k回归其size,sk=(x2(k)-x1(k), y2(k)-y1(k))。为限制计算负担,对所有类别使用单个size预测S(【W/R,H/R,2】)。使用L1 loss来计算其size的loss:
此时总检测损失可表示为:
到此为止,使用单个网络预测Y、O、S,因此在每个位置网络预测C+4个值,如下图中的3个数据所示。
下表为CenterNet对于size、keypoint heatmap以及offset间的消融实验,通过与baseline的对比可以看出,每种loss都对结果产生了好的影响。
Bbox Regression:
使用预测得到的中心点、偏移以及size可以计算出bbox,如下所示:
3D检测:
在对3D检测方面,主要考虑其深度、3D 维度、方向,其中深度d是一个标量,d=1/σ(d)-1,σ表示sigmoid。
使用separate head Γ(【W/R、H/R、3】),范围在[0, 1],直接回归距离的绝对值。方向默认为单独的标量,但很难回归,最终使用8个标量来表示,其中4个标量表示每个bin。对于每个bin,2个标量使用softmax分类,其他的在每个bin中回归角度。
Pose estimator:
通过k个关节点预测姿势,预测的数据如下图所示:
&遇到的问题
1、CenterNet如何提取中心点,或者说是heatmap中的峰值;此外,为什么峰值可以作为中心点?这个keypoint的特征会有很多吗,还是仅是一个点?
2、找到中心点后,如何回归出边界?
根据网络的输出可以看出最后的输出是一并进行的,其中对每个location都会输出C+4个值,如此的话,目标属性的回归应当是根据最后的loss计算进行的。提到每个loss只会在峰值出进行计算,如此就可以排除其他的信息影响,通过loss进行反向传播一步步向ground truth逼近。
3、在论文中以及centernet的网络结构中,体现的都是所有的数据是通过CNN一起输出的,而论文中的中心是从对应的center回归出其他的属性是怎么得来的?
根据对整体框架以及结构的分析,应当只有共同的loss才能影响到对应的回归部分。
&思考与启发
这个想法看起来更像是使用了反向思维的成果,从另一个方向出发来对整体进行评估。但是对于heatmap我暂时还是不太理解,不太明白其机制,需要扩展一下这个方面的知识。