#Street Gaussians
不得不说,技术更新太快了,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点云替换为与我们的方法相同的输入,以进行公平比较。详见补充资料。
#nuScenes
端到端的自动驾驶会取代Apollo、autoware这类框架吗?
论文 : Rethinking the Open-Loop Evaluation of End-to-End Autonomous Driving in nuScenes
- 作者:百度: 共一 Jiang-Tian Zhai, Ze Feng,百度王井东组
- 发表:arXiv
- 论文链接:https://arxiv.org/abs/2305.10430
- 代码链接:https://github.com/E2E-AD/AD-MLP
1. 摘要
现有的自动驾驶系统通常被分为三个主任务:感知、预测和规划;规划任务涉及到基于内部意图和外部环境来预测自车的运动轨迹,并操纵车辆。大部分现有方案在 nuScenes 数据集上评估他们的方法,评价指标为 L2 error 和碰撞率(collision rate)
本文重新对现有的评价指标做了评估,探索他们是否能够准确地度量不同方法的优越性。本文还设计了一个 MLP-based 方法,将原始 sensor 数据(历史轨迹、速度等)作为输入,直接输出自车的未来轨迹,不使用任何感知和预测信息,例如 camera 图像或者 LiDAR。令人惊讶的是:这样一个简单的方法在 nuScenes 数据集上达到了 SOTA 的 planning 性能,减少了 30% 的 L2 error。我们进一步深入分析,对于 nuScenes 数据集上的规划任务很重要的因子提供了一些新的见解。我们的观察还表明,我们需要重新思考 nuScenes 中端到端自动驾驶的开环评测方案。
2. 论文的目的、贡献及结论
本文希望对 nuScenes 上端到端自动驾驶的开环评测方案做评估;不使用视觉和 Lidar 的情况下,只使用自车状态和高级命令(一共 21 维的向量)作为输入就可以在 nuScenes 上达到 Planning 的 SOTA。作者由此指出了 nuScenes 上开环评测的不可靠性,给出了两个分析:nuScenes 数据集上自车轨迹倾向于直行或者曲率非常小的曲线;碰撞率的检测和网格密度相关,并且数据集的碰撞标注也有噪声,当前评估碰撞率的方法不够鲁棒和准确;
3. 论文的方法
3.1 简介及相关工作简述
现存的自动驾驶模型涉及到多个独立任务,例如感知、预测和规划。这种设计简化了跨团队写作的难度,但也会由于各个任务的优化和训练的独立性,导致整个系统的信息丢失和误差累积。端到端的方法被提出,这类方法从自车和周围环境的时空特征学习中受益。
相关工作:ST-P3[1] 提出一种可解释的基于视觉的端到端系统,将感知、预测和规划的特征学习进行统一。UniAD[2] 对 Planning 任务进行系统化设计,采用基于 query 的设计连接中间多个任务,可以对多个任务的关系进行建模和编码;VAD[3] 以完全向量化的方式对场景进行建模,不需要稠密的特征表示,在计算上更为高效。
本文希望探索现有的评估指标是否能准确地度量不同方法的优劣。本文仅使用了自车在行驶中的的物理状态(现有方法所使用信息的子集)来开展实验,而不是使用相机和激光雷达提供的感知和预测信息。总之,本文的模型没有用视觉或者点云特征的编码器,直接将自车的物理信息编码为一维向量,在 concat 之后送到 MLP 中。训练使用 GT 轨迹进行监督,模型直接预测自车未来一定时间内的轨迹点。follow 之前的工作,在 nuScenes 数据集上使用 L2 Error 和碰撞率(collision rate.)进行评估
虽然模型设计简单,但获得了最好的 Planning 结果,本文将此归因于当前评估指标的不足。事实上,通过使用过去的自车轨迹、速度、加速度和时间连续性,就可以在一定程度上反映出自车在未来的运动
3.2 模型结构
模型结构总览
模型输入包括两部分:自车状态以及代表未来短期运动趋势的高级命令。
高级命令:由于我们的模型不使用高精地图,所以需要高级命令进行导航。按照常见的作法,定义了三种类型的命令:左转、直行和右转。具体来讲,当自车在未来 3s 中将向左或向右位移大于 2m 时,将相应的命令设置为左转或者右转,否则则是直行。使用维度为 1x3 的 one-hot 编码来表示高级命令
损失函数
损失函数:使用 L1 损失函数进行惩罚
4. 论文的实验
4.1 实验设置
数据集:在 nuScenes 数据集上做实验,nuScenes 数据集包括 1K 场景和大约 40K 关键帧,主要收集在波士顿和新加坡,使用配备 LiDAR 和周视摄像头的车辆。为每一帧收集的数据包括多视角 Camear 图像、LiDAR、速度、加速度等。
评测指标:使用 ST-P3 论文的评测代码(https://github.com/OpenPerceptionX/ST-P3/blob/main/stp3/metrics.py)。评估1s、2s和3s时间范围的输出轨迹。为了评估预测的自车轨迹的质量,计算了两个常用的指标:
L2 Error :以米为单位,分别在下一个 1s、2s 和 3s 时间范围内自车的预测轨迹和真实轨迹之间计算平均 L2 误差;
碰撞率(collision rate):以百分比为单位。为了确定自车与其他物体碰撞的频率,通过在预测轨迹上的每个航路点放置一个表示自车的 box ,然后检测与当前场景中车辆和行人的边界框的是否发生了碰撞,以计算碰撞率。
超参数设置及硬件:PaddlePaddle 和 PyTorch 框架,AdamW 优化器(4e-6 lr 及 1e-2 weight decay),cosine scheduler,训了 6 个 epoch,batch size 为 4,用了一张 V100
4.2 实验结果
表1 和现有的基于感知的方法进行比较
在表 1 中进行了一些消融实验。以分析速度、加速度、轨迹和 High-level Command 对本文模型性能的影响。令人惊讶的是,仅使用轨迹作为输入,没有感知信息,本文的 Baseline 模型已经实现了比所有现有方法更低的平均 L2 误差。
当我们逐渐向输入添加加速度、速度和 High-level Command 时,平均 L2 误差和碰撞率从 0.35m 降低到 0.23m,将 0.33% 降低到 0.12%。同时将 Ego State 和 High-level Command 作为输入的模型实现了最低的 L2 误差和碰撞率,超过了所有先前最先进的基于感知的方法,如最后一行所示。
4.3 实验分析
文章从两个角度分析了自我车辆状态在nuScenes训练集上的分布:未来3s的轨迹点;航向角(heading / yaw角)和曲率角(curvature angles)
nuScenes 训练集的分布分析。
在图 2 (a) 中绘制了训练集中的所有未来 3s 轨迹点。从图中可以看出,轨迹主要集中在中间部分(直),轨迹主要是直线,或曲率非常小的曲线。
航向角表示相对于当前时间的未来行驶方向,而曲率角反映了车辆的转弯速度。如图 2 (b) 和 (c) 所示,近 70% 的航向角和曲率角分别位于 -0.2 到 0.2 和 -0.02 到 0.02 弧度的范围内。这一发现与从轨迹点分布中得出的结论是一致的。
基于上述对轨迹点、航向角和曲率角分布的分析,本文认为在 nuScenes 训练集中,自车倾向于沿直线前进,在短时间范围内行驶时以小角度前进。
Occupancy map 的不同网格大小引起 GT 轨迹会发生碰撞
在计算碰撞率时,现有方法的常见做法是将车辆和行人等对象投影到鸟瞰图 (BEV) 空间中,然后将它们转换为图中的占用区域。而这就是精度损失之处,我们发现一小部分 GT 轨迹样本(约2%)也与占用网格中的障碍物重叠,但自车在收集数据时实际上不会与其他任何对象发生碰撞,这导致碰撞被错误检测。当 ego 车辆接近某些对象时会导致错误的碰撞,例如小于单个 Occupancy map 像素的尺寸。
图三展示了这种现象的示例,以及两种不同网格大小的地面实况轨迹的碰撞检测结果。橙色是可能被误检为碰撞的车辆,在右下角所示的较小网格尺寸(0.1m)下,评估系统正确地将 GT 轨迹识别为不碰撞,但在右下角较大的网格尺寸(0.5m)下,会出现错误的碰撞检测。
在观察占用网格大小对轨迹碰撞检测的影响后,我们测试了网格大小为0.6m。nuScenes 训练集有 4.8% 的碰撞样本,而验证集有 3.0%。值得一提的是,当我们之前使用 0.5m 的网格大小时,验证集中只有 2.0% 的样本被错误分类为碰撞。这再次证明了当前评估碰撞率的方法不够鲁棒和准确的。
5. 文章评价
这篇文章是对近期端到端自动驾驶在 nuScenes 数据集上评测的一次正本清源。不论是隐式端到端直接出 Planning 信号,还是显式端到端有中间环节的输出,很多都是在 nuScenes 数据集上评测的 Planning 指标,而 Baidu 这篇文章指出这种评测并不靠谱。这种文章其实还蛮有意思,发出来其实是打了很多同行的脸,但是也是在积极地推动行业往前走,或许端到端不用做到 Planning(感知预测端到端即可),或许大家在评估性能的时候多做一些闭环测试(CARLA 模拟器等),能够更好地推动自动驾驶社区的进步,能够把论文落到实车上。自动驾驶这条路,还是任重而道远