代码已开源:https://github.com/PRBonn/LiDAR-MOS
检测和分割场景中移动对象的能力对于自动驾驶至关重要。一个能够不仅仅区分语义,并且能够区分移动(移动的车)和静态对象(静态的车/建筑物等)的方法是非常值得研究的,如下图,红色是实际移动物体,黑色区域是静态物体或者区域。
首先将点云投影成距离图像,然后为了分离运动物体和非运动物体,基于时序信息计算当前帧和前序帧的残差,最终将这个残差与距离信息链接在一起作为segementation CNN的输入。
A、距离图像表示
使用点云的距离投影来生成图像表示,具体来说就是将每一个激光雷达点投影到球坐标系上(相机坐标系下的球坐标系):
其中,w和h分别是距离图像的长和宽。
是lidar的垂直方向的FOV。是每个lidar点的距离。需要注意的是,每一个距离图像对应的range可以存储多个lidar点,因此可以很容易的增加一个额外的通道,并且可以很容易的在不更改网络架构的基础上,将这个表示应用到新的网络。
B、时序信息(即里程计信息)
为了实现在线分离动态物体,可供使用的信息只包含当前帧lidar点云和之前一段时间的lidar帧。假设基于SLAM系统,给定了之前的N个lidar帧
和M个用齐次坐标系表示的点
;另外,SLAM系统还可以给出当前帧和之前的N个lidar帧
之间的变换
,因此可以将任意点从任意帧视角转到另一个任意帧视角,即:
C、残差图像
在残差图像和lidar点云均输入的情况下,可以利用现有的分割网络通过利用残差图像中的时序信息来区分运动物体和背景上的像素。
为了生成残差图像并将它们融合到当前范围图像中,需要进行变换和重新投影,主要分为3步:
1)首先将前序帧通过slam位姿信息补偿到当前坐标系
2)将补偿后的前序帧投影成距离图像,然后对于每一个像素i,可以计算出一个残差
(就是计算当前帧和变换帧的距离之间的归一化绝对误差):
其中,是像素i在当前帧的距离,是前序帧同样的距离图像像素变换后的距离。只计算包含测量值的有效像素的残差,将无效像素的残差设置为零。可视化结果如下图所示(j表示帧数):
在上图中,可以看出由于场景中物体的运动(例如移动的汽车),在共同视点中这些点之间的位移相对于静态背景比较大。
但是,从上图中也可以发现,残差图像存在模糊性,对于一个运动的物体,大的残差图像出现了两次,对于缓慢移动的物体,残差图像并不明显。因此,直接使用残差图像进行运动对象分割不会具备很好的性能。但是可以用残差图像来引导网络分离移动和非移动对象来提高准确度。
3)最后,残差图像作为额外通道与当前距离图像连接,距离图像提供空间信息,残差图像编码时间信息。每一个在混合距离图像的像素都包含一组信息向量
,对应着帧之间构成的残差图像。
D、基于投影的距离图像分割CNN
没有创建新的网络框架,测试了三个应用在Lidar点云上比较好的网络,分别是SalsaNext,RangeNet++和MINet。SalsaNext和RangeNet++是编码器-解码器架构,性能很好。MINet使用的是一个轻量高效的多通道架构。
在使用上述网络进行分割之后,采用一个基于GPU的快速KNN搜索来删除点云的距离图像中对应的伪影。上述网络都可以在一般lidar上实现10hz的实时性能。
E、动态物体去除(MOS)评测基准
目前MOS没有一个通用的评测基准,这一部分主要尝试解决这个问题。
所提出的评测指标主要是基于SemanticKITTI数据集,然后手动将所有类别重新组织为仅两种类型:移动和非移动/静态对象。实际移动的车辆和人属于移动对象,所有其他类属于非移动/静态对象。
为了量化 MOS 性能,在移动物体上使用常用的 Jaccard 指数或交并比 (IoU) 指数:
2、实验结果
主要通过实验结果证明如下两个结论:
1)在仅使用Lidar进行MOS任务的时候可以实现10HZ的实时性能。
2)残差图像的加入提升了MOS任务的表现,实现了SOTA性能。
使用的数据集是SemanticKITTI数据集,在序列 00-07 和 09-10 上使用超过 150 个 epoch 的特定训练超参数训练每个网络,并将序列 08 作为验证集。
A、关于输入和网络架构的消融实验
首先,针对三个不同的网络,分别都使用了三个不同的设置,如下表
第一种设置是直接使用移动和非移动类的标签直接训练三个基于距离投影的网络。
第二种设置是将前序帧附加到当前帧作为网络的输入,从而产生 2 × 5 个输入通道,因为每个图像都包含坐标 (x, y, z)、距离r 和反射 e。
第三种设置是将提出的残差图像连接到当前帧作为网络的输入,因此输入大小为 5+N。
从上表中可以看出,RangeNet++ 和 SalsaNext 显示了基本的性能,但是 MINet 在与二进制标签一起训练网络且没有额外输入时会失败。总的来说,这三个网络都有提升的空间。这可能是因为从第一帧开始,语义分割网络不能很好地区分同一类中的运动和静态对象,但可以通过一些启发式方法(例如道路上的汽车通常是移动的,而停车场上的汽车是静止的)来进行学习,MINet 失败的一个原因可能是由于轻量级架构无法学习这种启发式。
第二种设置的三类网络分别都获得了提升,因为他们都获得了时序信息。
第三种设置的MOS性能是最好的,可以推测出残差图像所带来的提升性能。
另外,使用SalsaNext作为分割网络进行进一步的消融实验,如下图:
上图左显示了用于 MOS 的残差图像数量的消融研究。可以看到,N = 1 个残差图像在 MOS 性能方面获得了最大的提升,添加更多残差图像进一步提高了 MOS 性能,但是N > 8 个残差图像的收益递减
上图右显示了 MOS 性能与添加到用于生成残差图像的相对里程计位姿的噪声量的消融研究。手动往SLAM估计的里程计位姿
中添加
的噪声,来验证位姿是如何影响推理过程的。如上图所示,噪声的添加会明显降低性能,并且也存在一个边界递减效应。
B、MOS任务的表现和对比
由于基于 LiDAR 的 MOS 的现有实现并不多,因此选择了几种已在类似任务中使用过的方法,例如语义分割和场景流,并对其进行修改以实现基于 LiDAR 的 MOS实现,如下表:
下面两张图展示了定性的可视化比较结果,在非常具有挑战性的情况下,所提出的方法可以区分移动点和静态点,即使某些移动对象移动缓慢而其他方法无法检测到这一点:
C、应用
所提出的方法具备两个明显的应用价值,分别是LIDAR里程计/SLAM和3D建图。接下来使用 MOS 预测作为输入,来展示方法的有效性,它有效地移除了属于移动物体的所有点。
1)里程计/SLAM
对于基于 LiDAR 的里程计实验,使用SUMA方法并在将点云输入 SLAM 管道之前应用所提出的 MOS 方法。将改进的里程计结果与SuMa和语义增强方法 SuMa++进行比较。在 KITTI 里程计基准上评估这些里程计方法,结果如下表,充分证明了有效性:
2)3D建图
将聚合点云图分别直接与原始 LiDAR 点云和加入所提出的LIDAR点云进行比较。使用 Open3D 库来可视化建图结果。可以看出,存在污染地图的移动物体,当用于定位或路径规划时,这可能会产生对负面影响。使用MOS 预测作为掩码,可以有效地去除这些伪影并获得干净的地图。
3)运行时间
设备是 3.2 GHz 的 Intel i7-8700 和单个 Nvidia Quadro P6000 显卡。里程计和残差图像生成平均需要大约 10 毫秒。RangeNet++ 为 75 ms,SalsaNext 为 42 ms,MINet 为 21 ms。
由于 SLAM 的里程计历史可用,需要为每个传入帧估计位姿并仅生成一次残差图像。总而言之,使用所提出的基于MOS的LiDAR 的里程计方法大约需要51ms(20Hz),这比大多数 LiDAR 传感器的帧速率(10Hz)更快。
SUMA-MOS以端到端的在线方式实时的实现基于 LiDAR 的移动对象分割。方法利用了神经网络和序列信息,所以能够成功地区分移动和静态对象。因为是基于距离投影的,所以速度快,可以直接嵌入现有的 SLAM 和地图系统,可扩展性很强。
本文仅做学术分享,如有侵权,请联系删文。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有