SIGGRAPH'24 | 太逆天了!利用分层3D GS,实时渲染超大规模场景!

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心3DGS技术交流群

论文作者 | 3D视觉之心

编辑 | 自动驾驶之心

近年来,新视角合成取得了重大进展,3D Gaussian splatting提供了出色的视觉质量、快速训练和实时渲染。然而,训练和渲染所需的资源不可避免地限制了可以以良好视觉质量表示的场景大小。本文引入了一种3D高斯层次结构,该结构在保留大场景视觉质量的同时,为有效渲染远处内容提供了高效的细节级别(LOD)解决方案,实现了有效的级别选择和级别之间的平滑过渡。方法采用了一种分而治之的方法,使我们能够在大场景中独立地训练多个block。将这些块整合成一个层次结构,该层次结构可以优化以进一步改善合并到中间节点的高斯函数的视觉质量。非常大的捕获通常具有稀疏的场景覆盖,给原始的3D高斯平铺训练方法带来了许多挑战;我们调整和规范了训练以解决这些问题。我们提出了一个完整的解决方案,该方案能够实时渲染非常大的场景,并可以通过LOD方法适应可用资源。我们展示了使用简单且负担得起的设备捕获的场景的结果,这些场景包含多达数万张图像,涵盖了长达数公里、持续时间长达一小时的轨迹。

针对3D高斯Splatting的分层细节级别

在处理大型场景时,细节级别(LOD)解决方案至关重要,它们允许有效地渲染大量内容;因此,我们的目标是创建一个层次结构,以表示通过原始3DGS优化生成的图元。遵循图形中的传统LOD方法,我们需要:

1)找到候选的3DGS图元并定义如何将它们合并到中间节点中;

2)提供一种有效的方式来确定层次结构中的切割点,以在质量和速度之间取得良好的平衡;

3)在层次级别之间提供平滑的过渡策略。

1)层次生成

为每个block创建一个基于树的层次结构,包括内部节点和叶子节点。每个节点都与一个3D高斯分布相关联,这个3D高斯分布要么是来自原始优化的叶子节点,要么是合并的内部节点。对中间节点的要求是:1) 保持与叶子节点相同的快速光栅化程序;2) 尽可能准确地表示其子节点的外观。因此需要定义中间节点,这些节点是3D高斯分布,具有3DGS图元的所有属性,即均值𝜇(位置)、协方差Σ、SH系数和不透明度。

df401208b29a6830e61cd50101ac5e36.png

(大拇指往上滑,点击最上方的卡片关注我,整个操作只会花你 1.328 秒,然后带走未来、所有、免费的干货,万一有内容对您有帮助呢~) 也可以加小助手,拉你进讨论群

ef087132c9b74e29ea20dfc534ca0bbe.jpeg



2)层次切割选择和级别切换

给定一个3DGS模型的层次树结构和视图𝑉,选择一种通过树的切割方式,以在保持视觉质量的同时最大化渲染性能。首先定义给定层次节点𝑛的粒度𝜖 (𝑛),这是给定视图下在屏幕上的投影大小(如图3(a)所示)。具体来说,使用包含在节点中的叶高斯的边界框,然后取边界框的最大维度,并据此计算投影大小。通过识别投影边界框小于给定目标粒度𝜏𝜖(例如,1像素)的节点来找到切割点。基于层次节点的生成及其边界,父节点的AABB(轴对齐边界框)永远不会小于其任何子节点。这使得我们能够在线性时间内找到适当的切割点,或者在大规模并行设置中,每个节点在常数时间内找到:如果节点𝑛的边界满足粒度条件,但其父节点的边界不满足,则对于给定设置,选择节点𝑛并将其包含在切割中(如图3(b)中的绿色曲线所示)。

18bc175307e2fbfc4e0f69c219d70f63.png

优化和压缩层次结构

层次结构是通过聚合几何图元来构建的;最终需要更明确地考虑外观。由于层次结构的每个中间节点本身都是一个3D高斯图元,因此可以进一步优化以提高视觉质量。为此,需要通过中间节点传播梯度,引入一个具有可优化中间节点的层次结构。接下来将解释如何实现这一点,以及一个额外的步骤来压缩层次结构。

传统上,图形中的LOD(细节级别)方法用于在从远处查看场景时表示其简化版本;这在图6中有所说明。我们的目标粒度通过考虑投影到屏幕上的面积来实现这一效果,该面积用先前定义的节点𝑛的粒度𝜖 (𝑛) 来表示。

251df55975e2bc345a1f896baa732f05.png

1)优化分层

这里自上而下的层次结构构建产生了一个效果良好的数据结构(见表2)。然而,一旦构建完成,中间节点可以像叶子3DGS图元一样进行渲染,因此也可以以同样的方式进行优化。可以优化层次结构的中间节点,以提高它们可以表示的视觉质量。这就引出了如何在不同尺度之间执行这种优化的问题。一种解决方案是通过随机选择一个输入视图和一个下采样因子来优化层次结构;较低的分辨率直接意味着不同的目标粒度,以及相应的层次结构切割。然而,这种方法存在缺点,在图5和图7中进行了说明:当降低分辨率时,无法表示高频细节。

907683e7fc46211c0f2247b606a15760.png

在优化过程中,我们始终在全分辨率下进行渲染,并简单地选择随机的目标粒度。这种方法具有优化许多不同切割节点的期望效果,同时保留了视觉细节。当资源有限时,这可以特别有用,因为可以采用更激进的LOD策略,同时保持更好的视觉质量。

c40b2bcf882232ea3eb29fa703399ab9.png

2)压缩层次结构

层次结构在内存方面增加了一些开销。更重要的是,对于层次结构本身的优化,我们希望避免父节点大小仅比子节点稍大的父子设置。否则,这样的节点在训练过程中可能很少被选择,也得不到适当的优化。为了避免这种情况,我们稀疏化了生成的树结构。

首先将所有叶子节点(即3DGS优化的输出)标记为相关节点,即它们不应该从树中被移除。接下来,在所有训练视图上找到树中最小目标粒度𝜏𝑚𝑖𝑛 = 3像素(由于低通滤波,原始3DGS图元的最小范围)的切割的并集。在这个并集中找到最底部的节点,这再次产生了一个切割。这些节点被认为是所选粒度下的最高细节的相关节点。它们与已标记节点之间的所有节点都将从树中移除。然后将目标粒度提高2倍,并重复此过程,直到达到𝜏𝑚𝑎𝑥,即图像分辨率的一半。

大场景训练

现在可以构建高效的3D高斯层次结构;这对于处理非常大的场景是不可或缺的,因为从远处可见的场景部分可以在层次结构的较粗级别上进行渲染。为了训练大场景,本文方法建立在实时渲染大数据的常见计算机图形学方法之上。特别是,引入了一种分而治之的方法,通过将大场景分割成块(图8)来进行处理。

04dc5e9ba85e4aca83b09d87eefc4706.png

将块大小定义为50×50米,适用于步行捕获的场景,以及100×100米,适用于使用车辆捕获的场景。虽然这些块的大小有限,但它们仍然比原始3DGS方法处理的块大。此外,这种场景的捕获方式必然比大多数辐射场解决方案所期望的要稀疏得多。因此,我们调整3D高斯的优化以适应这些差异。

目标是允许对各个块进行并行处理,以便在给定足够计算资源的情况下,在合理的挂钟时间内处理大场景。一旦各个块被处理完毕,我们需要一个整合步骤来处理各个块之间可能存在的不一致性。

具体实现和预处理

在C++和Python/PyTorch的原始3DGS实现基础上实现了本文的方法,并修改了SIBR渲染器以实现快速渲染。在论文发表时,将提供所有源代码和数据,包括数据集预处理的所有脚本(请参见项目页面)。使用PyTorch中的自动微分进行层次结构优化。此外,在层次结构优化过程中,通过在层次结构中对应于叶子节点的所有高斯分布上使用停止梯度操作符来避免优化叶子节点,从而有效地冻结它们的属性。

论文捕获了三个户外场景:SmallCity、BigCity和Campus。在表1中列出了每个场景的统计数据,以及Wayve提供的另一个场景的统计数据。

0a378e2710ec9299856f7ac621202c02.png

捕获:在捕获过程中,使用了一个自行车头盔,上面安装了6个相机(Campus数据集使用5个)。使用了GoPro HERO6 Black相机(见图9),设置为线性视野(Linear FoV)和1444×1080分辨率的延时模式,每0.5秒拍摄一次。骑着自行车以大约6-7公里/小时的速度拍摄了SmallCity和BigCity场景,而Campus场景则是戴着头盔步行时拍摄的。

姿态估计:姿态估计是处理的相机数量所带来的一个主要挑战。数据集包含5800到40000张照片。使用COLMAP,结合自定义参数设置、层次映射器和每个块的附加捆绑调整,以实现合理的处理时间。在附录B中提供了详细信息。

数据集处理:以类似的方式对曝光进行校正,就像其他人所做的那样,通过优化每幅图像的曝光校正。最后,通过基于CNN的分割算法来检测汽车、自行车等移动物体,并确定它们是否有对应的SfM点,从而移除这些移动物体。还移除了所有人和车牌。所有步骤的详细信息都在附录中进行了介绍。

实验结果对比

4bd6b4a75480a1207f2114ad5dbdc0ac.png 63edf8bc920b54ebda9f6153a549eb00.png 4abd7013ff2a9cc4ed4d378281593831.png b5f483cbdd2d2e17e6a76fe599a5c1e9.png

参考

[1] A Hierarchical 3D Gaussian Representation for Real-Time Rendering of Very Large Datasets.

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!

① 全网独家视频课程

BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

7c26fff73b75fc95333ca43fa13950f5.png 网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

ed86c9b9cebeda37d0ce09a05ad779c8.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!

自动驾驶感知:目标检测、语义分割、BEV感知、毫米波雷达视觉融合、激光视觉融合、车道线检测、目标跟踪、Occupancy、深度估计、transformer、大模型、在线地图、点云处理、模型部署、CUDA加速等技术交流群;

多传感器标定:相机在线/离线标定、Lidar-Camera标定、Camera-Radar标定、Camera-IMU标定、多传感器时空同步等技术交流群;

多传感器融合:多传感器后融合技术交流群;

规划控制与预测:规划控制、轨迹预测、避障等技术交流群;

定位建图:视觉SLAM、激光SLAM、多传感器融合SLAM等技术交流群;

三维视觉:三维重建、NeRF、3D Gaussian Splatting技术交流群;

自动驾驶仿真:Carla仿真、Autoware仿真等技术交流群;

自动驾驶开发:自动驾驶开发、ROS等技术交流群;

其它方向:自动标注与数据闭环、产品经理、硬件选型、求职面试、自动驾驶测试等技术交流群;

扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

19c7c878469197f4266beb436c2d7e41.jpeg

④【自动驾驶之心】全平台矩阵

814a7e87fa3b765a6b652739b98b17ae.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值