GPU加速的点云LOD生成

文章:GPU-Accelerated LOD Generation for Point Clouds

作者:Markus Schütz1, Bernhard Kerbl3, Philip Klaus2, Michael Wimmer

编辑:点云PCL

来源:arXiv 2023

代码: https://github.com/m-schuetz/CudaLOD/

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

LOD结构可以用于渲染数亿到万亿个点,但构建它们需要时间。 本文介绍了一种GPU加速的LOD构建过程,它创建了一种混合体素点云结构的变体,用于LOD渲染和流式传输,这种结构是广泛使用的分层点云(LPC)结构的变体, GPU提供的巨大性能改进使我们能够通过颜色过滤来提高低LOD的质量,同时与非过滤的基于CPU的现有技术相比,还能提高构建速度。 适用于渲染和流式传输的LOD结构以每秒约10亿个点(带颜色过滤)至每秒4亿个点(采样选择/随机采样,现有技术)的速度构建在RTX 3090上,这是基于CPU的现有技术(每秒1200万个点)的80至400倍的改进,由于是in-core,模型大小限制为每24GB内存大约500 million点云量。

主要贡献

本文提出了一种GPU加速的LOD生成过程,利用八叉树创建了一种混合体素点云变体,我们的方法比当前最先进的方法快两个数量级以上,生成具有颜色滤波的体素以提高较低LOD的质量,我们建议在较低LOD中使用体素而不是点,因为量化整数体素坐标与全精度点坐标相比具有更高的压缩率,因此在Web浏览器中流传输送较低LOD时可以减少传输时间,但是需要注意的是,如果需要,该过程可以轻松修改以支持较低LOD中的点。

我们对最先进技术的贡献是:

  •  一种混合体素点云变体(基于Layered Point Clouds和Modifiable Nested Octree),它包含颜色过滤并且由于量化体素坐标的更高压缩率,能够更有效地流传输较低LOD,同时也可以看作是Chajdas等人提出的混合体素-三角形结构的点云变体[CRW14]。

  •  一个基于CUDA加速的快速自下而上LOD构造方案的变体[SOW20],它比其基于CPU的前身快两个数量级以上。

主要内容

数据结构

生成的数据结构是一个多分辨率八叉树,其中叶节点包含原始点,而内部节点由粗糙的、依赖分辨率的体素组成,如图1所示。

ce603ed1ae3ce51630b0dc5fe6c98aa5.png

图1:该数据结构是一个混合体素-点八叉树,利用颜色过滤的体素来表示较低LOD,但在最高LOD时显示原始点云数据,由于每个节点的大多数网格单元为空,因此表面体素存储为节点顶点缓冲区中的顶点,在渲染过程中,旨在将像素大小的体素光栅化,让观察者感觉他们正在查看全精度点云数据

LOD构建 

基于CUDA的LOD构建方法可以分为两个主要步骤:首先,我们将输入数据集中的所有点划分到最多具有T=50k点的八叉树叶节点中。其次,我们自下而上地向内部节点填充较低分辨率的体素模型。通过将数据划分为具有T点的叶节点,生成了具有空间限制的工作包,可以并行处理。

e297f0a5fb2a9cdb1d3a3b1abed8b665.png

图2:LOD构建概览,首先,使用分层计数排序将点划分到八叉树的叶节点中。然后,使用自下而上的方法,将子节点的体素化表示填充到内部节点中

将输入数据分割为至多包含T个点的八叉树叶节点,我们采用Schütz等人的分层计数排序方法,分层计数排序可以让我们通过仅迭代两次所有点来将点云分割成深度级别的八叉树,一次用于将点移动到内存中的排序位置。对于这种CUDA方法,我们建议使用初始八叉树深度为8(如果需要,递归扩展)。虽然我们希望每个叶节点包含至多T个点,但我们也不希望它们包含太少的点,因此在此步骤中,我们合并所有包含少于T个点的2x2x2单元格组,如图4所示。

73a818f2b6667d6c3f2f65fdd3583160.png

图4:我们使用分层计数排序方法直接创建了最多8层深的八叉树,计数和合并给出了具有叶节点中点数信息的完整八叉树层次结构。然后,我们分配正确数量的内存并将点插入到相应的叶节点中

体素采样 

在将输入点云分割为八叉树叶节点之后,继续使用来自上一级别的体素化表示来自下一级别的更低分辨率,我们首先创建一个底部最空的内部节点列表,该列表具有仅由非空子节点组成,然后使用每个节点一个工作组来填充此列表中的每个节点,使用一个更粗糙的、体素化的表示方法填充每个节点。此过程重复,直到我们最终处理根节点,从而完成LOD构建。与分割不同,整个体素采样内核都实现在一个单独的CUDA内核中。然而,与分割不同的是,它大量使用每个工作组对工作包进行处理。每个工作组一次获取并处理一个节点,直到所有节点都使用体素填充到根节点。

实验

所提出的方法是使用C++和CUDA实现的,并使用图7中显示的测试数据集进行评估。选择这些数据集是为了展示我们的方法适用于各种类型的数据,包括大多数2.5D航空LIDAR扫描,以及具有更高深度复杂性和某些区域具有更高点密度(体育场内的茶壶场景)的数据集。使用cuEventElapsedTime测量内核运行时间,仅测量在GPU上的LOD构建时间,不包括I/O和主机-设备复制,对于每个测量,我们运行了5次构建过程并报告中位数。

该评估在两个GPU上进行,用于我们基于CUDA的方法,并在一个CPU上进行比较,以与基于CPU的现有技术(Potree [SOW20])进行比较。

• NVIDIA RTX 3090 24GB 

• NVIDIA RTX A6000 48GB 

• AMD Ryzen 7 2700X(8核心),64GB RAM,Windows 10

8e0a01b8534281029d2facab6b628218.png

LOD构建性能 :表1比较了我们基于CUDA的方法与Potree的基于CPU的方法的LOD构建性能,Potree提供了一种蓝噪声采样策略,确保较低LOD处的点之间有最小距离,以及一种随机采样策略,每个网格单元选择一个随机点。Potree和我们的CUDA方法的随机采样策略在很大程度上是等效的,因此可以进行比较。由于Potree的蓝噪声和随机采样策略都不计算经过颜色筛选的值,并且由于蓝噪声样本不能直接与我们的CUDA方法的体素化样本进行比较,因此我们总是将性能与Potree的快速随机采样策略进行比较。此外,Potree被设计为一种外存应用程序,可以同时从磁盘读取点数据、处理已加载的数据并将结果写入磁盘。为了增加将我们的内存中实现的处理时间与Potree的外存方法进行公平比较的公平性,我们从RAM-disk运行Potree,以确保磁盘I/O不是其LOD构建过程的限制因素。我们只有一台中档CPU可用于Potree的基准测试。在线基准测试库表明,与我们的RTX 3090价格相似的高端CPU——AMD Ryzen Threadripper 3960X的速度约为我们的AMD Ryzen 7 2700X的三倍[CPU]。

2b88560773e407dee218bba618269ee7.png

表1:我们的CUDA方法与Potree [SOW20]的LOD构建时间对比。在CUDA中实现了四种采样策略,并与Potree的最快的随机采样策略进行了比较。所有计时单位为毫秒,吞吐量单位为百万点每秒(MP/s)

表1的结果表明,与基于CPU的方法相比,基于GPGPU的LOD构建方法可以快约200至300倍,质量相当(随机)。我们还发现,首先到来的策略进一步改善了性能,约为400倍,对于我们的测试数据集没有明显的质量降低,但在按扫描顺序排列的地面激光扫描中可能会降低质量,如第6.2节所讨论的。最后,我们基于GPU的方法能够比Potree的快速随机采样策略更快地构建LOD结构,质量为×80(加权,邻域内)至×200(单个单元内)。

质量 :图8说明了不同采样策略之间的质量差异。

9b6764712bd5f18db811e14368c34be3.png

图8:四种采样策略的质量比较。在我们的性能测试数据集中,首次采样和随机采样的差异可以忽略不计,但我们添加了Niederweiden数据集来评估其质量,结果首次采样表现极差。平均策略显著减少了噪声并提高了高频特征(如文本)的可读性,但仍存在由于采样问题而产生的一些噪声/离群点,这在图6中有描述。通过在体素边界上进行加权平均可以解决这个问题,并进一步提高质量

总结

我们展示了相较于基于CPU的方法GPU可以将点云的LOD构建加速两个数量级。然而,我们还想指出一些限制或潜在的问题并进行讨论。

 • 没有评估离核处理 - 所提出的方法是纯内核的,即所有数据(输入,临时缓冲区,输出)都驻留在GPU内存中。但是,我们认为这种方法很容易集成到现有的离核和自下而上的LOD构建方案中,这些方案首先将点云分成大块(例如1000万个点)。然后可以通过本文中提出的方法在GPU上处理每个块。 

• 加权平均颜色滤波器在邻域内计算加权平均值,但仅考虑节点内的点和体素 - 距离较近但存储在另一个节点中的样本不予考虑。

• 没有评估最优颜色滤波 - 我们只展示了在单个单元格内进行简单算术平均或在范围内进行线性加权采样已经显著提高了质量。

• 视角依赖颜色过滤可能是未来工作的重要课题。目前,从不同方向可见的表面采样在较低的细节级别上会塌陷为单个体素。例如,墙的两侧可能会成为一个仅保留所有视角的单个颜色值的体素。

 • 体素主要在较低LOD中使用,因为它们比完全精度的点坐标压缩更好,这对于在Web浏览器上流传输非常有益。

更多详细内容后台发送“知识星球”加入知识星球查看更多。

智驾全栈与3D视觉学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作方式:微信“920177957”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

点一下“在看”你会更好看耶

6ea8deae2eebf7376b42c66f71d084d6.gif

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云PCL公众号博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值