我是靠谱客的博主 儒雅西牛,最近开发中收集的这篇文章主要介绍一种可移除点云中动态目标的鲁棒方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

摘要

 大家好,今天为大家带来的文章是Robust Method for Removing Dynamic Objects from Point Clouds

3D点云图是在不同位置和时间获得的激光扫描的叠加。由于激光扫描会捕获周围环境的快照,因此它们经常包含运动对象,同时这些运动对象可能被间接的观测。点云地图中的动态对象会降低地图的质量并影响定位精度,因此从3D点云地图中删除动态对象非常重要。在本文中,我们提出了一种从3D点云地图中删除动态对象的可靠方法。给定一组已注册的3D点云,我们构建一个占据栅格地图,其中立体像素表示扩展时间段内空间量的占据状态。生成占据栅格地图后,我们将其作为滤波器用以在将激光雷达扫描中的动态目标点添加到地图之前将其删除。此外,我们使用对象检测和新的立体像素遍历方法来加速构建占据栅格地图的过程。构建占据栅格地图后,即可实时运行动态对象移除。我们的方法在交通停滞或移动的宽阔城市道路上效果很好,并且由于包含了来自同一场景的多次激光雷达扫描结果,因此占据栅格地图变得更好。

贡献

总体而言,我们的贡献有三个方面:

1.论文提出了一种新的占据概率更新策略,该策略通过考虑立体像素的占据历史来构建持久的占据栅格地图。

2.提供了一种可选方法,可通过使用对象检测方法对对象点进行分类来加快占据栅格地图的构建过程,并提供使用这些点更新占据栅格地图的策略。

3.此外,论文提供了一种生成人工端点的独特方法,该端点用于更新立体像素的占据分数。

算法流程

1.问题

各种自主机器人系统都依靠地图进行精确的定位和导航。地图是自动机器人系统定位的重要信息源。3D点云地图是用于此目的的常见地图格式之一,它们表示机器人系统周围静态环境的快照。但是,大多数3D点云地图都是根据在充满动态对象(如车辆,行人等)的道路上驾驶移动地图系统收集的数据构建的。因此,重要的是从地图中删除动态对象,这样自主的机器人系统可以使用无噪声的点云图进行定位。

此外,由于3D点云地图占用大量内存,因此它们不是可压缩的地图表示形式。有许多流行的方法可以对3D环境建模[1],[2]或子采样表示[3],[4]。但是,全分辨率3D点云构成了从地图中提取有用信息的基础。例如,我们可以从3D点云图提取静态特征,例如道路和车道标记。但是,点云图中的动态对象点被渲染为点云图中的“重影”轨迹,通常会重叠并遮盖道路标记,交通标志和其他重要静态特征的视图,很难从中提取静态特征。因此,在构建3D点云图时,需要从点云中滤除动态对象点。

2.方法

占据八叉树

八叉树是用于存储有关3D空间的信息的分层数据结构。八叉树中的每个节点代表一定的空间量,称为体素。我们使用对数准确率来表示空间的占用信息。我们还将节点自由测量的次数存储为自由节点中的计数器。在本节中,我们将详细说明如何使用自由计数器更新体素的占用率。

3D空间可以使用几种数据结构表示,其中突出的是体素网格,k-d树和八叉树。我们选择八叉树作为占用图,因为八叉树的层次结构允许紧凑而有效地表示空间。与体素网格相反,我们只需要创建用于测量占用率信息的节点即可。在本文中,我们使用固定的最大深度为16,叶节点体素大小为0.3米的八叉树。

对象检测和体素遍历

对象检测可用于加速生成占用图的过程,并提高用于动态对象去除的精度和召回得分。我们的方法不依赖于任何特定的对象检测方法,但是在我们的实验中,我们使用了AVOD(聚合视图对象检测)[13]网络来获取边界框。当前,该网络已经过训练以检测小型和大型车辆。

但是,许多基于神经网络的对象检测方法有时无法检测到对象。这些模型只能检测对其进行训练的对象类别。此外,边界框通常不完全包含检测到的对象,如图3所示。因此,使用上述方法构建的点云图仍将具有一些动态点。

为了删除对象检测方法遗漏的动态对象,我们使用上述方法将点云中的点分为两类:对象点,位于检测对象边界框内的点和非对象点,点在边界框之外。对于点云中的每个非对象点,我们执行体素遍历,以找到从传感器原点到端点沿激光射线的所有体素。我们降低了除端点体素以外的所有这些体素的占用率,并增加了端点体素的占用率。接下来,我们按照相同的步骤插入对象点,但是我们没有增加端点体素的占用概率,而是降低了其占用概率。这是因为从对象检测中我们已经知道对象点对应于动态对象。

如前所述,有时,围绕对象生成的边界框不会完全包围对象。我们通过在将非对象点插入到占用图中之后插入对象点来部分解决此问题。此操作或定额操作确保在对对象点执行体素遍历时,将删除动态对象未被边界框包围的部分。

接地点检测

如[3]中所述,对以浅角度扫过平坦表面的激光进行体素遍历会导致不良的离散效果。当遍历另一个附近的体素时,在体素遍历期间被测量为占用的体素可能会标记为空闲。这种效应通常发生在平坦的表面(如地面和平坦的墙壁)上,并且该效应表现为平坦表面上的孔,如图4所示。八叉树地图 [3 ]通过对给定的点云只进行一次节点更新,更新节点时优先考虑占用的节点而不是自由节点用以克服这上述影响。但是,这种方法在我们的情况下不起作用,因为我们在插入非对象点之后插入了对象点,并且将与对象点云中的端点相对应的节点标记为自由。此外,由对象检测生成的边界框可能包括检测到的对象下方的地面点,并且将地面点错误地分类为动态对象点。结果,某些地面体素可能仍被标记为自由。

为了解决此问题,我们为每个地面体素维护一个计数器,该计数器指示将体素分类为地面的次数。我们还将维护所有检测到的地面体素的集合,并为每次激光雷达扫描更新此集合。只有地面体素集合中那些计数器值大于某个阈值的体素才被认为是真正的地面体素,并且在射线穿越过程中不会被标记为自由体素。因此,与在大多数激光雷达扫描中始终检测到的真实颗粒体素相比,在某些情况下被错误分类为地面体素的体素将具有较小的计数值。我们使用[14],[18]中所述的基于RANSAC的接地平面检测。

加权概率

八叉树地图[3]使用钳位策略允许占用八叉树图的易于更新性和可压缩性。钳位策略确保节点的对数奇数值不低于低阈值l_{min}且不超过高阈值l_{max} 。当一个节点的对数奇数值达到阈值中的任意一个时,就认为该节点是稳定的,并且已测量这些节点的自由度或占用率。

修剪和扩展节点

八叉树的层次结构可以修剪节点以有效表示空间。如果内部节点的所有子节点都具有相同的占用概率和空闲计数器值,则可以修剪子节点,并将其占用概率和空闲计数器值存储在父节点中(请参见图5)。我们还以与[3]中相同的方式添加占用概率的钳位,并将自由计数器值钳位为fc_{max}的最大值和最小值1。在向占用图添加足够数量的点云之后,对应于静态区域的节点将收敛到相同的最大占用概率得分和fc_{max}的最大自由计数器值。

球面投影

远离激光传感器的端点通常很嘈杂,因此在绘制室外空间时,必须将点云修剪到距传感器一定距离,以避免产生嘈杂的数据。但是,通过删除落在激光传感器特定范围之外的端点,我们将丢失有关自由空间的宝贵信息。即使这些端点嘈杂,我们也知道激光器和这些端点之间的区域是空闲的。我们使用此信息来完善我们的对象检测算法。位于传感器半径r之外的端点被投影回以传感器原点为中心的半径r的虚拟球体中,如图6所示。然后,我们对投影到虚拟球体上的每个端点执行体素遍历,并降低所有体素沿着从传感器起点到端点的光线(包括与该端点对应的体素)的占用率。这使我们能够人为地生成端点,以更好地更新占用率。

占用八叉树地图作为二进制过滤器

占用八叉树地图的稳定性和准确性随着来自同一区域的多个数据收集驱动器中数据的集成而增加。假设点云注册工作得相当好,应将来自不同数据收集驱动器的地图的静态部分映射到占用八叉树图中的同一组体素,从而提高占用率分数并稳定这些体素。相反,与动态对象遍历的占用八叉树地图的区域相对应的体素会看到占用值的波动。使用我们的方法,只有重复测量为占用的体素才会标记为已占用,一旦测量为空闲,则很难将其标记为占用。

在占用八叉树稳定之后,可以将其叠加在点云图上,并用作二元过滤器,以除去掉落在八叉树图的自由空间中的所有点。

图1.动态对象,以红色显示,在点云图中导致重影追踪效果

图2.我们系统的整体结构。(顶部)输入点云经过地面点检测和物体检测。处理后的点云包含分类为地面,对象和自由的点。完成体素遍历并构建占用图。(底部)将八进制占用率过滤器应用于输入点云图以获取洁净点云图。

图3.边界框之外的动态对象点成为点云的一部分,从而导致假阴性。目标点为红色,非目标点是黄色的。
图4.在浅角度的表面上所造成的激光入射的平壁孔

图5.我们使用对数优势占用概率和自由计数器值来修剪和扩展节点。

图6.用于生成人工端点的虚拟球体。

图7.上面的管道从上到下显示了 a)具有重影效果的输入激光雷达扫描 b)从输入扫描生成的八叉树地图  c)在KITTI数据集上生成的输出洁净激光雷达扫描。

表1.KITTI数据类别:宽阔道路/高速公路
表2.KITTI数据类别:狭窄的城市道路
表3. 在我们的数据集上的精确度和召回率 (概率占用率阈值= 0.8)

主要结果

1.评估

我们通过使用精度和召回率从统计学上评估我们方法的性能。精度表示实际对应于动态对象的已删除动态对象点的百分比。召回代表实际删除的动态对象点总数的百分比。

精度得分会受到错误预测的影响,即分类静态对象点作为动态对象点。以浅角度入射到平面上的激光射线是精度得分降低的主要原因之一。[3]中非常清楚地说明了这种效果。此外,物体检测中的误报也会降低精度得分。为了解决第一个问题,我们使用地平面检测方法。此策略有助于最大程度地减少误报,但不能消除误报。

2.结果

为了评估算法的准确性,我们将我们提出的方法与KITTI数据集进行比较[9]。表1概述了我们的算法如何在各种KITTI序列上进行的。我们使用了道路宽阔且行驶中的汽车的KITTI序列,以更好地证明我们的算法功能。我们拥有为KITTI移动对象以计算P&R值的基本原则。表1显示了比精度值更好的召回率。这是因为我们没有在KITTI数据集上运行对象检测管道,并且我们只有一个KITTI序列。如果我们有更多相同序列的循环,则这些值将显着提高。

我们还在表2中提到的序列上运行了它[9],但是我们注意到不良的P&R值,因为这些序列的道路狭窄,被平坦的建筑围墙包围。这会导致误报,从而导致精度值变差。

表III显示了所提出方法在我们的数据集上的性能。我们显示了有和没有对象检测时P&R值的差异。我们还表明,球形投影可以减少假阳性和假阴性。我们可以看到,由于多种原因,P&R值比表I更好。首先,我们使用对象检测来删除动态对象。其次,我们按照上述说明的特定顺序处理点云。第三,如表3所示,我们有多个数据循环,这提高了精度值。我们没有采用人工标定的数据集,因此我们没有真值。我们假设物体检测方法的输出为我们的绝对真值,并计算P&R分数。我们可以看到,即使使用一圈驱动数据,我们的方法的效果也明显更好。整体流程如图7所示。由于[5]使用的方法使用了由地面扫描仪生成的非常密集的点云,因此我们无法直接比较我们的结果。它还需要昂贵的表面法线计算,而我们的方法依赖于第III-D节中所述的加权概率。

从我们的数据集中可以看到,随着我们收集更多的数据,我们的方法给出了几乎相同的P&R编号(有和没有对象检测),见表3中的loop4。这就是为什么我们将对象检测作为使用该方法的一种可选算法的原因。

与[6]相比,我们的管道对于停停走走的流式场景是鲁棒的。并对运动物体表现出一致的出色。由于平坦墙的离散化,管道与被高大平坦的建筑物包围的狭窄道路产生冲突。如果目标检测和地面检测的性能出色的话,实验结果会更好。

点击阅读原文, 即可获取本文下载链接。ue5x

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

最后

以上就是儒雅西牛为你收集整理的一种可移除点云中动态目标的鲁棒方法的全部内容,希望文章能够帮你解决一种可移除点云中动态目标的鲁棒方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部