不得不说,技术更新太快了,Nerf在学术界慢慢被替换下去了。Gaussians登场了,浙江大学的工作,超逼真!实时高质量渲染,用于动态城市场景建模
- 在自动驾驶领域,动态街景重建有着重要的应用场景,比如数据生成、自动标注、闭环仿真等。由于对重建质量和效率有较高的要求,这方面的技术仍旧临着巨大的挑战。
- 对于单目视频建模动态城市街景的问题,近期方法主要是基于NeRF并结合跟踪车辆的姿态,从而重建出高真实感的视图。然而训练和渲染速度慢、对跟踪车辆姿态精度需求高,使其在很难真正被应用起来。
- Street Gaussians,这是一种新的显式场景表示方法,可以解决所有这些限制。
论文:Street Gaussians for Modeling Dynamic Urban Scenes
链接:https://arxiv.org/pdf/2401.01339.pdf
本文旨在解决从单目视频中建模动态城市街道场景的问题。最近的方法扩展了NeRF,将跟踪车辆姿态纳入animate vehicles,实现了动态城市街道场景的照片逼真视图合成。然而,它们的显著局限性在于训练和渲染速度慢,再加上跟踪车辆姿态对高精度的迫切需求。这篇论文介绍了Street Gaussians,一种新的明确的场景表示,它解决了所有这些限制。具体地说,动态城市街道被表示为一组点云,这些点云配备有语义logits和3D Gaussians,每一个都与前景车辆或背景相关联。
为了对前景对象车辆的动力学进行建模,使用可优化的跟踪姿态以及动态外观的动态球面谐波模型对每个对象点云进行优化。显式表示允许简单地合成目标车辆和背景,这反过来又允许在半小时的训练内以133 FPS(1066×1600分辨率)进行场景编辑操作和渲染。所提出的方法在多个具有挑战性的基准上进行了评估,包括KITTI和Waymo Open数据集。
实验表明,所提出的方法在所有数据集上始终优于现有技术的方法。此外,尽管仅依赖于现成跟踪器的pose,但所提出的表示提供的性能与使用GT pose所实现的性能不相上下。
代码:https://zju3dv.github.io/streetgaussians/
Street Gaussians方法介绍
- 在Street Gaussians中,动态城市街道被表示为一组3D高斯的点云,每个点云与前景车辆或背景之一相关联。为了模拟动态前景物体车辆,每个物体模型都用可优化的跟踪姿态进行建模,并配有动态球谐函数模型来表现动态外观。
- 这种显式表示可以轻松地组合物体车辆和背景,进而允许进行场景编辑操作。同时拥有极高的效率,可以在半小时完成训练,渲染速度达到133FPS(1066x1600分辨率)。
- 实验表明,Street Gaussians在所有数据集上优于现阶段SOTA方法。此外,提出了前景目标位姿优化策略(初始位姿来自跟踪器),与使用真值姿态所达到性能相当,也验证了Street Gaussians的高鲁棒性。
场景
- 静态场景建模
○基于场景表达的不同,我们可以将场景重建分为volume-based和point-based。volume-based的方法,用MLP网络表示连续的体积场景,已经取得了令人印象深刻的渲染结果。同时比如Mip-NeRF360、DNMP等也将其应用场景扩展到了城市街景 。point-based的方法,在点云上定义学习神经描述符,并使用神经渲染器执行可微分的光栅化,大大可以提高了渲染效率。然而,它们需要密集的点云作为输入,并在点云稀疏区域的结果相对模糊。最近的一项工作3D Gaussian Splatting (3D GS),在3D世界中定义了一组各向异性的高斯核,并执行自适应密度控制,以仅使用稀疏的点云输入实现高质量的渲染结果。我们可以把3DGS理解成介于volume-based和point-based的中间态,所有同时拥有volume-based方法的高质量,也拥有point-based方法的高效率。然而,3DGS假定场景是静态的,不能模拟动态移动的对象。 - 动态场景建模。
○可以从不同的角度来实现动态场景建模,从目标角度,可以在单个对象场景上构建4D神经场景表示(比如HyperReel ),从场景角度,可以通过在光流(如Suds)或视觉变换器特征(Emernerf )监督下的实现场景解耦。然而,这些方法均无法对场景进行进行编辑,限制了其在自动驾驶仿真中的应用。还有一种方式,使用神经场将场景建模为移动对象模型和背景模型的组合(比如NSG、Panoptic Neural Fields),然而,它们需要精确的对象轨迹,并且在内存成本和渲染速度上存在问题。
给定从城市街道场景中的移动车辆捕获的一系列图像,本文的目标是开发一个能够为任何给定的输入时间步长和任何视点生成真实感图像的模型。为了实现这一目标,提出了一种新的场景表示,命名为Street Gaussians,专门用于表示动态街道场景。如图2所示,将动态城市街道场景表示为一组点云,每个点云对应于静态背景或移动车辆。显式基于点的表示允许简单地合成单独的模型,从而实现实时渲染以及编辑应用程序的前景对象分解。仅使用RGB图像以及现成跟踪器的跟踪车辆姿态,就可以有效地训练所提出的场景表示,通过我们的tracked车辆姿态优化策略进行了增强。
Street Gaussians概览如下所示,动态城市街道场景表示为一组具有可优化tracked车辆姿态的基于点的背景和前景目标。每个点都分配有3D高斯,包括位置、不透明度和由旋转和比例组成的协方差,以表示几何体。为了表示apperence,为每个背景点分配一个球面谐波模型,而前景点与一个动态球面谐波模型相关联。显式的基于点的表示允许简单地组合单独的模型,这使得能够实时渲染高质量的图像和语义图(如果在训练期间提供2D语义信息,则是可选的),以及分解前景目标以编辑应用程序
算法建模
- 考虑到自动驾驶场景中都是通过车载相机得到图像序列,我们希望构建一个模型,可以生成任意时间和视角的高质量图像。为实现这一目标,我们提出了一种新颖的场景表示,命名为"Street Gaussians"。如图所示,我们将动态城市街景表示为一组点云,每个点云对应于静态背景或移动车辆。这种基于点的表示可以轻松组合多个独立的模型,实现实时渲染以及解耦前景对象以实现场景编辑。我们提出的场景表示可以仅使用RGB图像进行训练,同时结合车辆位姿优化策略,进一步增强动态前景的表示精度。
静态背景建模
- 针对静态背景,使用基本的3DGS方式建模,即我们世界坐标系中一组点来表示背景模型,每个点分配有一个3D高斯分布,以平滑地表示连续的场景几何和颜色。高斯参数包括协方差矩阵和位置向量(表示均值)。与3DGS一样,为了避免在优化过程中出现无效的协方差矩阵,每个协方差矩阵进一步缩减为缩放矩阵和旋转矩阵,其中缩放矩阵由其对角元素表征,而旋转矩阵被转换为单位四元数。除了位置和协方差矩阵之外,每个高斯分布还分配有一个不透明度值和一组球谐系数来表示场景几何和外观。为了获得视图相关的颜色,球谐系数还会乘以从视图方向投影的球谐基函数。为了表示3D语义信息,每个点还附加有一个语义特征。
动态前景建模
- 针对包含多辆移动前景物体车辆的场景,我们将每个对象用一组可优化的姿势(初始位姿可以来自某个跟踪器,比如CasTracker)和一组点云表示,其中每个点分配有一个3D高斯分布、语义和动态外观模型。前景对象和背景的高斯属性相似,不透明度和尺度矩阵的定义相同,然而它们的位置、旋转和外观模型均不同。
- 每一个前景对象的3DGS模型,定义在该对象的local坐标系下。我们通过前景对象的RT矩阵,可以将前景对象和背景的模型统一到世界坐标系下。
- 仅使用球谐系数简单表示物体外观不足以模拟移动车辆的外观,如图所示,因为移动车辆的外观受到其在全局场景中位置的影响。如果使用单独的球谐来表示每个时间的对象,会显著增加存储成本,我们的解决方案是引入了4D球谐模型,通过用一组傅里叶变换系数来表示球谐系数,当给定任意时间t,可以通过逆傅立叶变换来求出对应的球谐系数。基于这种方式,我们将时间信息编码到外观中,而且不增加额外存储成本。
渲染过程
- 要渲染Street Gaussians,我们就需要聚合每个模型对最终结果的贡献。以前的方法中,由于神经场表示方式,需要复杂的raymarching 方式进行组合渲染。相反,Street Gaussians可以通过将所有点云拼接起来,并将它们投影到2D图像空间来进行渲染。具体来说,在给定渲染时间点的情况下,我们首先计算球谐系数,并根据跟踪的车辆姿态将前景对象点云转换到世界坐标系,然后将背景点云和变换后的前景对象点云拼接起来形成一个新的全场景点云。
效果评估
- 在Waymo和KITTI数据集上都进行了实验来评估我们的方法合成新视角的能力,不论定性和定量结果表明,相比之前的工作,我们的方法可以渲染出渲染高质量图片,并在各项指标上均有有显著提升。
○下图是从定性角度,分别在waymo和kitti数据集上对比目前已有方法,无论背景还是前景目标,我们的方法在细节的渲染上均有大幅提高。
下游任务
- Street Gaussians可以被应用到很多下游任务当中,包括场景的前背景解耦、场景的可控编辑、语义分割等。丰富且高质量的下游任务适配,大大提高了Street Gaussians的应用上限。
○我们的模型可以实现场景前背景解耦,细节上相比之前的方法有明显提升。
实验结果对比
我们在Waymo开放数据集和KITTI基准上进行了实验。在Waymo开放数据集上,选择了6个记录序列,其中包含大量移动物体、显著的ego运动和复杂的照明条件。所有序列的长度约为100帧,选择序列中的每10张图像作为测试帧,并使用剩余的图像进行训练。当发现我们的基线方法在使用高分辨率图像进行训练时存在较高的内存成本时,将输入图像缩小到1066×1600。在KITTI和Vitural KITTI 2上,遵循MARS的设置,并使用不同的训练/测试分割设置来评估。在Waymo数据集上使用检测器和跟踪器生成的边界框,并使用KITTI官方提供的目标轨迹。
将本文的方法与最近的三种方法进行比较。
(1) NSG将背景表示为多平面图像,并使用每个目标学习的潜在代码和共享解码器来对运动目标进行建模。
(2) MARS基于Nerfstudio构建场景图。
(3) 3D高斯使用一组各向异性高斯对场景进行建模。
NSG和MARS都是使用GT框进行训练和评估的,这里尝试了它们实现的不同版本,并报告了每个序列的最佳结果。我们还将3D高斯图中的SfM点云替换为与我们的方法相同的输入,以进行公平比较。详见补充资料。