目录
本文主要介绍两篇工作:SimTrack 以及 4D Panoptic LiDAR Segmentation(后续简称 4D seg)。主要是由于近期项目与 tracking 有一些交集,在调研的时候发现这两篇工作还是比较有意思,所以专门记录一下。
在大部分 MOT (Multi-Object Tracking) 的工作中,基本是参考 tracking-by-detection 的范式,这类方法不可避免的会需要 heuristic matching 的步骤,通常的做法是对两帧检测到的物体做匈牙利匹配或者贪心匹配,然后根据一些匹配准则去筛选。
本文介绍的两篇工作都是基于连续帧的3D tracking 的工作,有传统工作的影子也有一些新的思考。
SimTrack
Motivation
匹配是一个很麻烦的事情,不可微而且需要调超参,在一个数据上表现好了在另一个数据集上可能表现的就没那么好了。所以 simTrack 想做的事就是,能不能把这个手工匹配的过程整合成端到端的形式,像下图这个样子。
Method
SimTrack 把物体关联、新增物体以及失踪物体去除统一到了一起,形成一个端到端可训练的模型,大部分的内容还是基于现有的 SOTA 检测和tracking 模型CenterPoint。
第一步一般是统一的,称为 ego-motion compensation,所有帧的坐标系统一到当前帧的坐标系下。这一步的结果是每个点被表示为 (x, y, z, r, △t), 这里 △t表示距离当前帧的相对时间。接下来对于每一帧,我们将点云输入到统一个 backbone 中来提取我们所要的信息,也就是我们的输出。
具体地,有三个输出,为了便于解释,我们把原文的一个图搬过来:
1、Hybrid-Time Centerness Map: 这是本文的核心概念之一,假设一个物体在 BEV 视角下可以用这个物体的中心来表示,我们把感知范围限定为一个方形的map,物体落在这个点则有对应的值来表示。
在有连续两帧的输入时,对于追踪到的物体,我们将这个物体在前一帧的位置响应到 heatmap 上(比如红色和蓝色);对于前一帧追踪到而后一帧没追踪到的物体,不做任何操作(比如紫色);对于后一帧新检测出的物体,将这个物体在后一帧的位置响应到 heatmap 上(比如黄色)。
可以结合上图的Centerness Map 显示再过一遍。因此对于物体是否追踪到,我们只要在相同位置做查询即可,按照原文的说法是 read off,我更倾向于 look up。
2、The offset of an object. 当然在上一步我们已经有了对应关系,但是对于tracking任务而言,我们还是要知道物体在当前帧的位置。因此 SimTrack 还有一个 Motion Updating 分支,用来预测上一帧到下一帧的位置偏移。
3、检测相关的输出。有了位置之后还是要对 bounding box 做回归,即物体的高度,大小以及朝向。
我本人是第一次做 tracking,也做了一些简单的 survey ,但是本文确实是最好懂并且实验效果也很好的一篇工作,逻辑也很清晰。当然也有一些比较好奇的点,当前物体的位置是通过前一阵的位置的预测加上对offset 的预测得到的,那这样会不会有累积误差?这是我的一点担心。
4D seg
4D Segmentation 指的是带时序的点云分割。为什么带时序呢?一方面能获取更丰富的场景信息,单帧的点云过于稀疏,另一方面,在有时序信息之后,可以对动态物体做更好的感知。这是我的理解。而既然有时序了就少不了 tracking 任务。
和图像不太一样,图像的实例分割或者全景分割往往还带有检测的结果(e.g. MaskRCNN),所以tracking的时候直接可以使用 tracking-by-detection 的范式,而点云的全景分割往往是没有检测结果输出的,一种思路是加上检测的输出,这意味着要有更丰富的标注,而分割结果本身就带有实例信息,因此另一种思路就是抛弃tracking-by-detection 而选择tracking-by-segmentation 的路线。
首先第一步操作还是根据 SLAM 的位姿,将所有帧对其到当前帧。但是由于点云数量不能过多,出于效率考虑,我们将可能移动的物体点保留下来,其他的静态点做采样。在在线推理时可以根据之前的估计结果,将可移动物体周围的点尽可能保留。
接下来的一部是基于密度的聚类,这一步是使用高斯分布对物体实例进行建模。假设一个物体的中心点的估计值为 p_i,我们把这样的点称为种子点---- seed point. 那么每个物体都可以用一个高斯分布来表示。对于点云数据中的一个点p_j,我们可以通过下面的公式来计算 p_j属于物体 i 的概率:
这里e_i, e_j表示两个点的embedding.
最后的loss function包含四个部分:
L_{var}是一个平滑项,用一个二范数即可。L_{class}是类别预测。
这一项是对点的
接下来就是如何做tracking了,具体分为两种类型,一种是针对已经处理好的4D volume, 一种是对相邻两个4D volume 做关联。第一种我们可以根据上面的公式 p_{ij} 根据一定阈值来做筛选,第二种我们可以根据 overlap 来做筛选。
这里要注意的点是,{t, t+1, t+2}volume 和 {t+1, t+2, t+3}的 overlap 还是很高的,所以这样做是简单且合理的。对于已经处理好的一个4D volume而言,动态物体我们会把它聚成一个统一的实例。
Summary
MOT 的工作发展至今也有很久的历史了,这两篇工作虽然可能并不是目前 Tracking 主流的方法,但是却充满新意,并且其实难度并不高,还是很有启发的,我个人还是比较喜欢这类风格的工作的。