Offboard 3D Object Detection from Point Cloud Sequences
通过连续帧的信息来辅助进行3D检测,专注于离线的3D自动标注任务,与车载算法相比,遥遥领先。
Introduction
3D目标检测更多的关注于实时性,车载(轻量化)。并且只利用单帧或少数连续帧的信息,但对于非车载的离线场景,对于性能有着最高优先级的情况下,这些算法都是次优的选择。
因此我们提出了一个专注于离线场景的3D检测pipeline, 采用时序的连续帧数据作为输入,没有其他额外的代价考虑,可以更专注提升模型性能。
关键观点: 不同视角下/时间的点云可以对目标的几何信息进行互补。
一个直接的想法便是直接将多帧作为输入,但是即便多帧输入是有效的,现有检测器依然受限于输入数据的信息利用率,并无法通过单纯的增加帧数而实现收益的线性增长:
为了更好的利用点云数据的时序性,我们不再采用以帧数为单位对点云进行融合/拼接的输入模式,而是采用object-centric的设计思路:
- 首先利用现有的SOTA检测器对多目标检测效果最好的帧进行定位
- 然后通过多目标追踪将定位到的目标在不同帧中的点云联系起来,基于跟踪结果和原始点云,可以提取出目标的整个轨迹数据,即目标的4D信息(空间+时间)
- 然后将4D数据输入到我们提出的新的深层模型中,并输出时间一致性的3D检测结果。
主要贡献
- 提供了一种离线点云3D检测新的范式
- 在waymo数据集上取得了SOTA的性能
- 研究了人工标注在人工标注与自动标注之间的权衡
- 论证了自动标注对半监督学习的有效性
Offboard 3D Object Detection
Problem statement
对于一个 N 帧序列点云 Pi∈Rni×C,i=1,2,...,N{Pi∈R^{n_i×C}},i=1,2,...,NPi∈Rni×C,i=1,2,...,N,已知每帧点云传感器在世界坐标系下的位姿 Mi=[Ri∣ti]∈R3×4,i=1,2,...,N{M_i=[R_i|t_i]∈R^{3×4}},i=1,2,...,NMi=[Ri∣ti]∈R3×4,i=1,2,...,N,那么我们要得到每帧点云中的目标 3D 属性(包括中心点,尺寸,朝向),类别,ID。
Design space
一个保底的思路便是扩展单帧的3D检测器,直接将多帧点云作为输入,虽然这样的设计是有效的,但是输入的帧数会有上限,并且无法对目标进行运动补偿,因为叠帧是对整个点云进行的。
另一个思路是使用两阶段的检测器,将目标从多帧中提取出来,与直接使用点云叠帧为输入相比,可以仅对目标区域的点云进行堆叠和处理,但是这样的设计并不方便选择使用多少帧作为输入,设置一个固定值并不够灵活。
但是 对比之前的frame-centric的思路,使用固定帧点云作为输入,依据不同目标动态选取帧数,才是object-centric的。
输入序列点云,首先用目标检测器检测每一帧中的 3D 目标,然后用跟踪器将目标进行数据关联作 ID 标记。最后提取每个 ID 目标跟踪轨迹上的所有点云及目标框信息,作进一步的 3D 目标框精修预测。
3D Auto Labeling Pipeline
Multi-frame 3D Object Detection
- MVF++
- 为了提升对于point-level的识别能力,增加了一个3D分割的辅助损失,对3D真值框内外的点云进行二分类;
- 为了提升训练效率和精度,移除了anchor,采用anchor-free的形式;
- 为了充分利用离线资源,重新设计了模型结构,扩展了模型的规模
- Multi-frame MVF++
- 使用多帧点云作为输入,基于当前帧和自车运动,将多帧结果叠加值当前帧,每个点增加一维时间信息作为输入
- Test-time augmentation
使用TTA 增强最终检测效果:z轴旋转
Multi-object Tracking
基于A Baseline for 3D Multi-Object Tracking改进的卡尔曼滤波器:
- 为了减少自车运动的干扰,将所有结果转换到全局坐标系下进行跟踪
- 为了减少误检的干扰,过滤了所有预测结果置信度低于0.1的结果
- 使用BEV-box进行跟踪,并使用匈牙利算法 IoU阈值0.1进行匹配
- 在静态更新阶段前,会对90、180等角度误差进行修正,角度平均会在cycle 空间进行,即arctan(sin/2+cos/2)arctan(sin/2+cos/2)arctan(sin/2+cos/2)
Object Track Data Extraction
基于转化后的世界坐标系下的跟踪结果,可以准确提取连续帧下每个目标框内的点云信息,并组合成目标的4D信息。
Object-centric Auto Labeling
目标动静状态分析模块将每个目标实例提取 4D 特征,然后加入线性分类器来预测。特征包括目标框中心点的时空方差,以及目标从始至终的中心点偏移距离。真值标记时,将静态目标从始至终的距离阈值设定为 1.0m,最大速度不超过 1m/s。这种方式动静预测准确率高达 99%。此外,将行人都归为动态目标。
-
Divide and conquer: motion state estimation
对于静态目标,直接使用单帧固定的结果可以更好的避免出现检测框误差而出现的抖动情况。
对于动态/静态目标采用分而治之的策略,基于连续帧的跟踪结果,利用简单的线性分类器可以准确地将目标划分为动态/静态目标。 -
Static object auto labeling
首先挑选 score 最高的目标框作为 initial box,将点云从世界坐标系转到该目标框坐标系。类似 Cascade-RCNN,作连续的前景分割-目标框回归的网络预测。Loss 项由中心点回归,朝向分类回归,尺寸分类回归三部分构成:
- Dynamic object auto labeling
一个常规的思路是利用裁剪后的点云重新进行3D框的检测,类似于跟踪的平滑,基于时序性对跟踪框进行微调;
另一个思路便是定位一个关键帧对检测框进行对齐,但是在被遮挡会较远处等点云较少的目标而言,对齐可能会比框的估计更加困难。
[图片]
从轨迹中直接提取特征,从而预测目标尺寸, 对于 T 时刻前后的目标点云 ${P_{j,k}}^{T+r}_{k=T−r} $以及目标框 {Bj,k}k=T−sT+s\{B_{j,k}\}^{T+s}_{k=T−s}{Bj,k}k=T−sT+s,特征由两部分构成
- Point 分支。将点云增加时间信息后,转换到当前目标框 Bj,TB_{j,T}Bj,T 的中心位置坐标系下,用 PointNet 网络作前后景的分割,得到前景目标的全局特征量。
- Box 分支。同样转换到当前目标框中心坐标系下。需要注意的是,取的 Box 帧数大多比 Point 长(Point 只取 5 帧)。目标框特征维度为 8(x,y,z,l,h,w,ry,time),同样通过 PointNet 网络提取全局特征。
将这两个特征作融合,然后预测当前 T 时刻的目标尺寸及朝向。为了增强两个分支各自对预测目标的学习,分别对两个分支用真值目标作监督学习。最终的 Loss 为:
L=Lseg+v1Lbox−traj+v2Lbox−obj−pc+v3Lbox−joint L = L_{seg} + v_1L_{box-traj} + v_2L_{box-obj-pc} + v_3L_{box-joint} L=Lseg+v1Lbox−traj+v2Lbox−obj−pc+v3Lbox−joint
Experiments
Comparing with SOTA Detectors
yylx
Comparing with Human Labels
挑选 3 个经验丰富的标注员对数据进行标注,以此与本文方法进行比较,可见本方法只在高度估计上无法与人类标注员媲美,定位及其它尺寸上,几乎能达到类似水平。
进一步思考,人类不同的标注员,他们的标注结果一致性如何?如图 7. 所示,GT 由多个标注员交叉验证得到,以此为基准,发现人类标注员也很难达到与真值相同水平的程度,标注质量几乎与本方法差不多,当距离较远时,点数会较少,人类标注员反而标注质量会下降。
Applications to Semi-supervised Learning
用本文的方法去标注未标注的数据,作为实时目标检测模型的训练数据,能极大提升其性能。也从另一方面论证了本文方法能比拟人工标注水平。
Analysis of the Multi-frame Detector
MVF 检测器性能实验,当输入帧数大于 5 帧时,帧数增多已经无法提升检测性能。