写在前面 & 笔者的个人理解
理解驾驶场景的三维几何结构和语义对于安全自动驾驶汽车的开发至关重要。虽然三维占有率模型通常使用基于体素的监督和标准损失函数(如交叉熵、Lovasz、dice损失)进行训练,但这些方法独立处理体素预测,忽略了它们之间的空间关系。在本文中,我们提出了 GaussRender,这是一种即插即用的三维到二维重投影损失函数,可增强基于体素的监督。我们的方法将三维体素表示投影到任意二维视角,并利用高斯溅射作为一种高效、可微的体素渲染代理,在投影元素之间引入空间依赖关系。这种方法提高了语义和几何一致性,更有效地处理遮挡问题,并且无需对架构进行修改。在多个基准测试(SurroundOcc-nuScenes、Occ3D-nuScenes、SSCBench-KITTI360)上进行的大量实验表明,在各种三维占有率模型(TPVFormer、SurroundOcc、Symphonies)中,我们的方法都能持续提升性能,突出了我们框架的稳健性和通用性。
代码链接:https://github.com/valeoai/GaussRender
论文链接:https://arxiv.org/pdf/2502.05040
文章简介
从环视相机理解驾驶场景的三维几何结构和语义在自动驾驶中极具挑战性且至关重要。这对诸如目标检测、智能体预测 、场景分割 等任务有直接影响,并且是3D OCC研究 中的主要关注点。
现有的三维场景理解方法采用多种表示空间和输入模态,每种都有其独特的优缺点。鸟瞰图(BEV)表示 很受欢迎,因为它们能很好地整合多传感器数据,并且与下游任务(如规划和预测)兼容。然而,BEV 表示压缩了高度维度,在捕捉复杂三维几何结构方面效果较差。基于查询的方法提供了特定任务且紧凑的表示,但其缺乏可解释性带来了挑战。相比之下,基于三维的表示保留了空间细节,但训练计算成本较高。在实际应用中,使用这些表示的方法大多采用标准损失函数(如交叉熵、dice损失 或 Lovasz 损失)进行训练,以监督体素预测与真实值的差异。尽管如此,这些损失函数独立优化预测,忽略了体素之间的空间关系,如图2所示。这一局限性阻碍了模型对物体整体几何结构的理解,导致训练效果不佳和几何理解不足。
在本文中,我们提议在不修改现有架构且仅引入极少计算开销的情况下,将三维到二维重投影损失函数集成到三维占有率模型的训练中,以解决这一局限性。核心思想是将预测的基于三维体素的表示投影到二维透视图中,并除了标准的三维监督之外,在图像空间中对模型进行监督。为此,GaussRender在应用高斯溅射之前,为每个体素创建一个高斯代理,这样可以受益于其轻量级和快速的渲染,而无需传统体绘制技术的开销。通过渲染二维透视投影,我们在投影到同一像素的元素之间引入了空间关系,对不一致的预测进行惩罚,并强制城市场景的空间语义一致性。此外,我们的方法可以无缝利用场景中任意位置的新视角,进一步改善遮挡处理,并通过不同视角丰富监督信号。通过这样做,我们的方法在所有研究的数据集和模型上,都能持续提高对语义和几何的理解。我们工作的主要贡献包括:
一个即插即用的模块,用于计算语义和深度渲染损失,在无需更改现有架构的情况下改进三维占有率模型的训练。
引入高斯溅射作为三维占有率任务中体素渲染的高效代理,降低计算开销。
一个与视角无关的监督框架,利用任意相机姿态进行稳健训练。
在三个标准基准测试中取得了SOTA,在复杂驾驶场景中获得了显著的性能提升。
相关工作回顾
从相机学习3D语义几何
在 3D 占有率任务中存在多种模型表示方式,所有这些方式都力求实现轻量化、无冗余,并能够保留对场景的几何和语义理解。这些标准对于 3D 占有率任务尤为重要,因为该任务需要对场景有高度的几何和语义理解,并且由于体素的立方表示形式,通常会导致较高的内存成本。为了克服这一问题,除了更传统的基于体素的表示形式外,结构化的中间表示空间(如三平面、八叉树、张量分解、鸟瞰图(BEV)、高斯或紧凑表示 )也应运而生,它们以多尺度的方式发展,有时还会结合实例查询 。无论采用何种提升过程或中间表示,现有方法都将占有率预测为体素网格,并与体素真值进行比较。因此,在获得最终体素网格后,即可接入 GaussRender。我们的模块计算额外损失,这使得 GaussRender 与模型架构无关。
除了特征表示,3D 占有率模型还注重采用其他策略来提升性能。聚合过去的信息可以优化场景表示,增进对被遮挡元素的理解,并增强当前帧的细节 。一些方法将其扩展到 4D 预测,实现了对城市场景的时空和语义建模。自监督学习通过从相机数据中估计深度和语义图像,减少了对基于体素的真值的依赖。这些方法将学习到的表示与伪标签进行比较。然而,这些伪标签往往不够精确:深度估计需要重新缩放,并且语义可能与 3D 体素的数据集类别不匹配。监督渲染利用从重投影的语义激光雷达数据中获取的真值。虽然比伪注释更精确,但激光雷达重投影面临信号稀疏和遮挡等挑战。GaussRender 认同在 3D 占有率任务中使用图像投影的重要性,但我们强调,既要像自监督那样拥有密集表示,又要像激光雷达那样拥有精确表示,同时还无需额外的外部传感器。无论为真值选择何种方案,要获得具有可比性的预测结果,都需要探讨不同的渲染方式。
从3D重投影到2D透视图
添加基于体素的深度和语义渲染损失,需要将输入和预测的体素投影到透视图像平面上。虽然传统的可微渲染方法能够处理像点云和网格这样的3D模态,但最近的方法主要聚焦于神经渲染技术和基于高斯的方法,以渲染其他表示形式。
以前的 3D 占有率方法将激光雷达的重投影作为输入,并依赖基于神经辐射场(Neural Radiance Fields,NeRF)的技术来渲染预测的体素。神经辐射场 将空间信息编码为一个连续的 5D 函数,该函数将 3D 坐标和观察方向映射为颜色和密度。神经网络可以预测空间中任意点的颜色和不透明度,通过从相机视角进行光线积分来实现图像合成。NeRF 能够有效地捕捉精细细节和复杂的光交互,如反射和折射。在实际应用中,这类使用 NeRF 的 3D 占有率方法依赖于沿光线的点采样。这样做的缺点是,更高的采样频率或高分辨率渲染会增加内存使用量。此外,这种渲染方式对图像质量和遮挡也很敏感,这促使人们开发辅助光线技术来克服遮挡问题。GaussRender 不使用此类技术,我们的模块基于另一种渲染技术。
最近,一种高斯重投影技术出现了。它可以将任何3D高斯投影到图像上的2D高斯上,同时使高斯参数的形状相近,并考虑每个像素上高斯的累积情况。这使得渲染效果更加逼真,且内存占用更低。最初,该技术用于场景渲染,如今已扩展到广泛的任务中,从场景编辑到物理渲染和生成。高斯表示最近在许多与自动驾驶相关的任务中得到应用:在预训练、世界模型中,作为端到端任务的表示,以及作为3D占有率表示。在自监督中,GaussianOcc使用类似的渲染方法,但以伪标签作为真值。除了其标注是估计得到的,质量不如真值外,它们的重投影只能在现有相机中进行,因为需要 RGB 图像来估计伪标签。GaussRender 允许从任意视角进行精确注释的渲染。据我们所知,我们的方法是首个研究仅基于体素注释的高斯渲染损失影响的方法,且与模型特征表示无关。最近发表的一项同期工作提出了一种高斯渲染损失,但他们的研究仅限于单个模型,并且使用额外的激光雷达模态来导出真值。由于激光雷达信号存在前面提到的缺点,主要是遮挡和稀疏性,他们开发了基于相邻帧的辅助光线技术。在我们的方法中,由于完美对齐,无需使用这些技巧,我们能够从任意视角计算损失。
GaussRender方法详解
下面详解介绍GaussRender,这是一种即插即用的渲染方法,用于增强3D占有率模型。首先,我们解释如何将我们的模块嵌入标准流程中,然后详细介绍我们的高斯渲染方法,最后,我们说明如何利用任意相机进行多视图监督。
GaussRender在3D占有率流程中的集成
传统上,视觉到3D语义占有率模型会接收一组 N 张图像
,并预测场景的 3D 语义网格
,其中 c 是所考虑的语义类别数量,
代表场景的空间分辨率。
标准流程包含三个步骤。(1) 特征提取:图像通过骨干网络生成 2D 特征
,其中
是每张图像的通道数。(2) 3D 提升:利用交叉注意力和自注意力模块将特征投影到 3D 表示(例如体素、三平面等)中。(3) 体素预测:所有表示转换为体素,以便结合几何损失和体素损失,根据GT计算损失。
我们的方法在最后阶段发挥作用,如图4所示,这使其能与任何 3D 占有率架构兼容。
高斯渲染
由于核心思想是将3D语义体素表示投影到2D透视图中,我们旨在以高效且可微的方式渲染 3D 体素。因此,我们采用高斯溅射构建渲染策略,与传统的光线投射方法相比,该方法能够实现更快的渲染速度,同时保持可微性以支持梯度反向传播。
如图 5 所示,我们特意将体素的高斯参数简化为简单球体,以避免因无约束优化导致的退化配置(固定位置、缩放和旋转),并保留模型原始的类别置信度得分(语义转移)。对于位于位置
的每个体素,我们创建一个简单的高斯基元,其参数如下:
:从体素网格坐标继承的位置。
s:来自模型最终预测的语义类别。
:从体素特征中学习得到的不透明度(如果默认模型中存在此类特征),或者从空语义类别的 logit 中获取。
:由体素尺寸确定的固定缩放比例。
:旋转等于单位矩阵(无方向) 。
随后,与高斯相关的方程保持不变,因此高斯协方差矩阵 Σ 以及为每个像素赋予对应于渲染后高斯语义 “颜色” c 的渲染结果,计算方式如下:
其中,
,
,这里的索引 i 表示投影到当前像素的高斯,σ 代表密度,δ 表示沿光线的距离。
在生成GT时,我们遵循相同的步骤,但仅渲染被占据的体素,并为其赋予不透明度1。否则,我们在渲染预测结果时使用相同的缩放比例,并始终将高斯放置在体素位置上。
总体而言,这种可微渲染通过 2D 重投影损失实现监督,保持了体素之间的空间关系,而这正是传统体素级损失所缺失的关键特征。
其中