写在前面&笔者的个人理解
在实际部署之前,大规模测试对于确保自动驾驶汽车 (SDV) 等自主机器人的安全至关重要。从收集的日志中生成数字孪生的数据驱动方法提供了一种可扩展的方式来构建多样化、逼真的测试仿真环境。与成本高昂、耗时且受物理约束限制的实际测试不同,模拟可以快速、低成本地探索多种场景,有助于优化自动驾驶车辆的安全性、舒适性和效率。受此启发,出现了多种基于NeRF和3DGS的方法。
最近基于 NeRF 的方法为摄像头和激光雷达联合提供了高保真传感器仿真,与流行的自动驾驶数据集中最常见的传感器装置相匹配。然而,基于 NeRF 的方法渲染速度慢,使得它们成本高昂,难以用于大规模测试。3DGS 为 NeRF 提供了一种有吸引力的替代方案,因为它的加速渲染实现了相当的图像真实感,同时将推理速度提高了一个数量级。然而,基于 3DGS 的自动驾驶设置方法继承了只能渲染相机传感器数据的限制,而忽略了激光雷达的模式。激光雷达能够直接感知 3D 环境,这使其成为现代自动驾驶模块中的不可或缺的工具,因此也是一种重要的仿真模式。
基于上述提到的NeRF和3DGS的相关缺点和不足,在本文中,我们旨在使用 3DGS 来解决相机和激光雷达数据的高效、可区分和逼真的渲染问题。由于激光雷达传感器的独特特性,将3DGS应用于激光雷达面临着独特的挑战。
- 与捕捉密集、规则间距的像素信息的相机传感器不同,激光雷达传感器记录的是稀疏、非线性的点云数据信息,其中存在来自非返回射线的较大空隙
- 大多数激光雷达可以捕捉 360° 的场景全景,而现有方法通常将数据投射到多个深度图像中,这是一种忽略激光雷达稀疏结构的低效方法
- 激光雷达受到滚动快门效应的影响,每次扫描需要长达 100 毫秒的时间,在此期间,自我车辆可能会移动几米,这违反了 3DGS 的单一来源假设
考虑到上述提到的诸多挑战,我们提出了一种新颖的视图合成方法,它统一了摄像头和激光雷达渲染,专为实时渲染大规模动态交通场景而设计,称之为SplatAD。此外,我们在多个流行的自动驾驶数据集上进行了大量的实验验证,相关的实验结果均表明我们提出的SplatAD算法模型的有效性和通用性,并且在所有数据集上取得了SOTA的性能表现。
论文链接:https://arxiv.org/pdf/2411.16816
算法模型网络结构&技术细节梳理
在详细介绍本文提出的算法模型SplatAD之前,下图展示了我们算法模型的整体网络结构。
Scene representation(场景表达)
我们的场景表示建立在 3DGS 的基础上,但进行了关键更改以处理自动驾驶场景的具体情况,并允许从同一表示中进行摄像头和激光雷达渲染。与 3DGS 一样,每个场景都由一组具有可学习占用率的半透明 3D 高斯表示。我们为每个高斯分配一个可学习的基色和特征向量。最后,我们的表示包含每个传感器的可学习嵌入,以模拟它们特定的外观特征。
为了处理动态,我们遵循常用的场景图分解,将场景分为静态背景和一组动态参与者。每个动态参与者都由一个 3D 边界框和一系列位姿描述,这些位姿可以从现成的目标检测器和跟踪器或标注中获得。
每个高斯函数都有一个不可学习的 ID,表示它是否被分配给静态世界,或者它属于哪个参与者。对于分配给参与者的高斯函数,它们的均值和协方差在相应轴对齐边界框的局部坐标系中表示。为了在给定时间构建整个场景,分配给边界框的高斯函数会根据参与者的位姿转换为世界坐标。由于参与者的位姿估计可能不准确,我们使用可学习的偏移量对其进行调整。此外,每个位姿都有一个根据位姿差异初始化的速度和一个可学习的速度偏移量。
Camera rendering(相机渲染)
给定一个摆好位置的相机,我们在相应的捕获时间处组成一组高斯函数,并使用3DGS中高效的基于图块的渲染来渲染图像。虽然我们保留了 3DGS 的高阶步骤,但我们引入了关键的调整,以更好地模拟自动驾驶数据的独特特征。
Projection, tiling, and sorting
每个均值和协方差都从世界坐标转换为相机坐标。然后使用透视投影将均值转换为图像空间,而协方差则使用投影的雅可比矩阵的上两行进行转换。视锥体外的高斯函数会被剔除,为了提高效率,3DGS 使用覆盖 99% 置信度的方形轴对齐边界框来近似高斯函数的范围。此外,3DGS将图像划分为图块,每个图块的尺寸为16×16像素,并将高斯函数分配给它们相交的所有图块,在某些必要情况下,可以复制这些图块。这样,每个像素在光栅化过程中只需处理所有高斯函数的一个子集。最后,根据高斯函数平均值的深度对高斯函数进行排序。
Rolling shutter
许多相机使用滚动快门,其中图像的捕获不是即时的,而是逐行进行的,从而允许相机在曝光期间移动。先前的研究工作强调了由于自动驾驶数据中存在高传感器速度而对滚动快门效应进行建模的重要性,他们基于光线追踪的方法可以通过移动每条光线的原点轻松解释这一点。对于 3DGS,等效方法需要将所有 3D 高斯投影到曝光期间遇到的所有相机姿势,因为高斯相对于相机的位置会随时间而变化。
具体来说,每个高斯相对于相机的速度被投射到图像空间,并且它们的像素均值在光栅化过程中根据像素的捕获时间进行调整。然而,由于只考虑静态场景,因此我们调整公式以考虑动态。对于每个高斯,其像素速度近似为如下的公式。
我们通过增加近似高斯范围来考虑剔除高斯函数和检查高斯函数与图块之间的交点时的像素速度。我们使用覆盖三个标准差的矩形,而不是 3DGS 使用的正方形。范围的增加对应于滚动快门时间内高斯均值覆盖的区域,假设传感器时间戳处于曝光的中间。由于情况并非总是如此,我们还包括一个可学习的时间偏移,描述传感器时间戳和曝光中间之间的差异。
Rasterization(光栅化)
3DGS 通过为每个图块启动一个线程块并将每个线程分配给图块内的像素来并行光栅化像素。对于每个像素,其坐标都是从块和线程索引推断出来的。由此,我们发现像素的捕获时间与图像中间行之间的时间差为如下的形式。
为了栅格化一个像素,我们将 RGB 值和与当前图块相交的深度排序高斯特征混合在一起。
我们使用小型CNN算法模型建模视图相关效果。给定特征图、相应的射线方向和特定于相机的学习embedding,它可以预测逐像素的仿射映射。此外,我们发现,使用小型 CNN 代替多层感知机对于高效纹理建模至关重要。
Lidar rendering(激光雷达渲染)
激光雷达传感器使自动驾驶汽车能够测量一组离散点的距离和反射率(强度)。它们通过发射激光束脉冲并测量飞行时间来确定距离和反射率的返回功率。
大多数 AD 数据集部署的激光雷达使用多个激光二极管安装在垂直阵列中,其中二极管阵列旋转以捕获 360° 数据,并且单次扫描通常需要 100 毫秒才能捕获。因此,我们专注于这种类型的激光雷达。但是,我们注意到,通过相应地修改投影,我们的方法可以轻松地对其他类型的激光雷达(例如固态激光雷达)进行建模。我们提出的激光雷达渲染遵循图像渲染,但我们修改了每个组件以准确模拟激光雷达特性。.
Projection
对于一个在捕获时刻构成的姿态激光雷达和高斯分布,我们将每个均值和协方差从世界坐标转换为激光雷达坐标。原始激光雷达数据通常以球面坐标方位角、仰角和距离捕获。因此,我们将高斯均值从激光雷达坐标转换为球面坐标
与相机相同,我们通过近似其在传感器空间中的影响来解释滚动快门效应。
Tiling and sorting
3DGS 效率的核心在于其基于图块的栅格化。虽然激光雷达通常具有固定的方位角分辨率,但许多激光雷达使用二极管之间的非等距间距来获得感兴趣的区域的更高分辨率,从而产生非线性高程分辨率,如下图所示。
Rasterization
使用我们提出的可微分的基于图块的栅格化器渲染激光雷达数据。同样,每个图块启动一个线程块,其中每个线程负责栅格化一个激光雷达点。每个线程都提供方位角、仰角和捕获时间以供栅格化。这些要么根据激光雷达规格确定要么在训练时根据现有点云计算。原因在于,对于训练,不能期望数据完全遵循直线扫描线。因此,我们不能遵循图像策略并依靠块和线程索引来直接推断像素坐标。此外,激光雷达射线的方位角和仰角不一定决定其与激光雷达扫描中心的时间偏移。为了渲染某个点的预期范围,我们将滚动快门校正范围与每个高斯混合。
实验结果&评价指标
为了验证我们提出的SplatAD算法模型的鲁棒性和泛化性,我们使用同一组超参数在多个流行的自动驾驶数据集PandaSet、Argoverse2以及nuScenes上对其进行了评估。对于每个数据集,我们将 SplatAD 与针对自动驾驶数据集上最佳的基于NeRF 和基于 3DGS 的方法进行比较,以对相机和激光雷达数据进行新颖的视图合成。我们使用标准 NVS 指标 PSNR、SSIM 和 LPIPSon 来评估图像的渲染质量,相关的实验结果如下表所示。
在图像质量方面,SplatAD 始终优于现有的 3DGS 方法,并且对于三个考虑的数据集有很大的差距。此外,我们的方法在所有 NVS 指标中都比 NeuRAD 的 SOTA 结果有所改进,同时将图像渲染速度提高了一个数量级。我们提供定性比较的可视化结果,如下表所示。
此外,为了衡量方法建模能力的上限,我们在PandaSet数据集上总结了重建指标,如下表所示。
在这里,方法按顺序对所有数据进行训练,并在相同的视图上进行评估。此外,我们为所有方法启用传感器位姿优化,以解决任何位姿不准确的问题。与 NVS 设置相比,除 UniSim 之外的所有方法都显示出使用额外训练数据的改进。SplatAD 实现了 SOTA 结果,同时渲染速度比以前的最佳方法快 10 倍。此外,我们注意到 SplatAD 在验证图像上的表现与之前的 3DGS方法的重建结果相当。
我们研究了 SplatAD 推广到与训练期间遇到的视图有很大不同的视图的能力。我们使用在每隔一帧上训练的模型,并使用了三种设置:水平移动自车、垂直移动自车,并对所有动态参与者应用移位和旋转。我们使用 DINOv2 特征输出Frechet 距离,因为这些特征已被证明比使用 Inception-v3 更符合人类感知。但是,我们注意到,使用 Inception-v3 特征不会改变模型性能或我们的结论。下表展示了 SplatAD 学习有意义的表示以进行泛化的能力,明显优于其他 3DGS 方法。
结论
在这项工作中,我们提出了SplatAD算法框架,这是首个从3D高斯模型渲染相机和激光雷达数据的方法。我们将精确的传感器建模与高效的算法相结合,实现了SOTA的新型视图合成结果,并进一步提升了算法模型的渲染速度。