0. 简介

多波束激光雷达传感器,常用于自动驾驶汽车和移动机器人,获取三维范围扫描序列(“帧”)。由于角度扫描分辨率有限和遮挡,每帧只稀疏地覆盖场景。稀疏性限制了下游过程的性能,如语义分割或表面重建。幸运的是,当传感器移动时,从不同的视点捕获帧。这提供了补充信息,并在公共场景坐标系中累积时,产生了更密集的采样和对基础三维场景的更全面覆盖。然而,扫描的场景通常包含移动的物体。仅通过补偿扫描仪的运动无法正确对齐这些移动物体上的点。为此文章《Dynamic 3D Scene Analysis by Point Cloud Accumulation》提供了多帧点云积累作为 3D 扫描序列的中间表示,并开发了一种利用户外街景几何布局和刚性物体的归纳偏差的方法。该文代码也在Github中完成了开源。

[video(video-p0nh76C1-1673072676250)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=477435145)(image-https://img-blog.csdnimg.cn/img_convert/ee00005ee4fd884114f250842a50310e.jpeg)(title-Dynamic 3D Scene Analysis by Point Cloud Accumulation)]

1. 文章贡献

  1. 提出了一种新颖的,可学习的模型,用于在多帧中时间累积三维点云序列,将背景与动态前景物体分开。通过将场景分解为随时间移动的固体物体,我们的模型能够学习多帧运动,并在更长时间序列中以上下文的方式推理车辆运动。
  2. 该方法允许低延迟处理,因为它对原始点云进行操作,仅需要它们的序列顺序作为进一步的输入。因此,适用于在线场景。
  3. 相比于之前的工作,本文着重对移动物体和静止场景相对于移动中的 LiDAR 传感器运动建模,而不是对每一个点独立地估计运动流。这样的方式可以充分利用刚体运动的假设,从而提升运动流估计的准确性。

2. 详细内容

多任务模型的网络架构在图2中示意描述。为了随着时间累积点,我们利用了场景可以分解为移动为刚体的代理[19]的归纳偏见。我们首先提取每个单独帧的潜在基础特征(§3.1),然后将其作为输入到任务特定的头部。为了估计自我运动,我们使用可微分的配准模块(§3.2)。我们不仅使用自我运动来对齐静态场景部分,还使用它来对齐基础特征,这些基础特征在后续阶段中被重复使用。为了解释动态前景的运动,我们利用对齐的基础特征并进行运动分割(§3.3)以及动态前景对象的时空关联(§3.4)。最后,我们从每个前景对象的时空特征解码出它的刚体运动(§3.5)。我们端对端地训练整个模型,使用由五个项组成的损失L:

在下面,我们对每个模块进行高层次的描述。详细的网络架构。

2.1 问题设定

考虑有序点云序列 X={X^t}^T_{t=1},其由变量大小的 T 帧组成,每帧 X^t=[x^t_1 ,…,x^t_i ,…,x^t{n_t} ]∈R^{3×n_t} 是由移动的车辆在恒定时间间隔∆t内捕获。每一帧点云进行前景与背景分割。背景点被用来估计传感器的自我运动,而前景点则继续被分类为移动或静止的前景。我们将第一帧 X^1 称为目标帧,而其余帧 {X^t | t>1} 称为原始帧。文中的目标是估计将每个原始帧对齐到目标帧的流向量{V^t∈\mathbb{R}^{3×n_t} | t>1},从而累积点云。每个帧可以分解为静态部分 X^t_{static}K_t 刚性移动动态部分 X^t_{dynamic}={X^t_k }^{K_t}_{k=1} 。具体如下所示:

其中 T◦X(T ◦ x)表示将变换应用于点集X(或点 x)。

2.2 骨干网络

骨干网络将单帧的 3D 点云转换为俯视图(BEV)潜在特征图像。具体来说,我们使用点级 MLP 将点坐标提升到更高维潜在空间,然后将它们散射到与重力轴对齐的 H×W 特征网格中。使用最大池化聚合每个网格单元(“柱”)的特征,然后通过 2D UNet [37] 扩大其感受野并加强局部上下文。骨干网络的输出是每个 T帧的 2D 潜在基础特征图 F^t_{base}

2.3 传感器运动估计

我们使用基于对应关系的配准模块单独为每个源帧估计本体运动T^t_{ego}。属于动态对象的点可以偏离本体运动的估计,特别是在使用基于对应关系的方法时,应该被舍弃。然而,在流水线的早期阶段,需要考虑场景动态性是很困难的,因此我们采用保守的方法并将点分类为背景和前景,其中前景包含所有可移动的对象(例如,汽车和行人),而不考虑实际的动态性[19]。预测的前景蒙版后来用于在§3.3中指导运动分割。

我们首先使用两个专用的头部从每个F^t_{base}中提取本体运动特征F^t_ego和前景得分s^t_{FG},每个都包含两个卷积层,由ReLU激活和批量标准化隔开。然后,我们随机抽样s^t_{FG} < τ的Nego背景柱,并计算柱心坐标P_t = {p^t_l}。本体运动T^t_{ego}被估计为:

在这里,ϕ(p^t_l , P^1) 找到了 p^t_lP^1中的软对应,而w^t_l是对应对(p^t_l, ϕ(p^t_l , P^1)) 之间的权重。ϕ(p^t_l , P^1)w^t_l 都是使用带有熵正则化的 Sinkhorn 算法从F^t_{ego}估计出来的,其中F^t_{ego}有一些松弛行/列填充[11,66],并且T^t_{ego}的最优值是通过可微分的Kabsch算法[27]计算出来的。简要来说,其中p为 Pillar 中心的坐标,ɸ 为 帧 t 中Pillar p在帧1中的软映射, w为相应的映射权重。

2.4 移动物体分割

执行动作分割,重新使用每帧基础功能{F^t_{base}}。具体来说,我们应用可微分的特征扭曲方案[49],使用预测的自我运动T^t_{ego}扭曲每个F^t_{base},并通过沿通道维度堆叠扭曲的特征图来获得大小为C×T×H×W的时空3D特征张量。然后将这个特征张量通过一系列3D卷积层,再经过沿时间维度T的最大池化。最后,我们应用一个小的2D UNet来获得2D运动特征图F motion。为了减少离散误差,我们将网格运动特征双线性插值到每帧中所有前景点上。计算x^t_i的点级运动特征如下:

对于每个点x^t_i,我们使用另一个多层感知器 (MLP) 从运动特征f^t_{motion,i} 解码出动态分数s^t_i$$,并且与前景分割类似地监督学习。

2.5 时空实例组合

我们进行时空实例关联来将动态点(通过阈值化 s^t_i 提取)分割成单独的对象并在时间上关联它们。与通常的跟踪检测(tracking-by-detection)[12,61]范式不同,我们建议直接聚类时空点云,同时提供实例掩码和相应的关联。然而,由于激光雷达稀疏性和快速物体运动,原始的根据自我运动对齐的点云聚类通常会失败,因此我们预测每个点的偏移矢量δ^t_i,指向(运动补偿)实例中心。经过运动补偿后应用 DBSCAN 聚类算法,将跨越多帧的移动点聚类为不同的实例。

2.6 移动物体运动估计

一旦我们在空间和时间上将物体分割出来,就必须在每一帧恢复它们的运动。由于激光雷达点属于单个物体的稀疏性以及难以找到明确的帧间对应关系,我们采用的方法与用于自我运动头的方法不同,并构建一个新的 TubeNet 直接回归转换。具体来说,TubeNet 输入T帧相同实例 X_k,并回归其刚性运动参数 T^t_k,类似于 RPMNet,TubeNet 以单位矩阵作为运动估计的初始化,以实例的点级别特征为输入迭代回归运动估计的残值。

3. 参考链接

https://mp.weixin.qq.com/s/i32UpuDud2nr-QafZO8NOA