点击下方卡片,关注“自动驾驶Daily”公众号
戳我-> 领取近15个自动驾驶方向路线
今天自动驾驶Daily今天为大家分享一篇基于3DGS实现3D OCC预测的算法。如果您有相关工作需要分享,请在文末联系我们!
自动驾驶课程学习与技术交流群事宜,也欢迎添加小助理微信AIDriver004做进一步咨询
>>点击进入→自动驾驶Daily技术交流群
微信扫描以下二维码,『自动驾驶之心知识星球』,国内最专业的技术和求职交流社区,和3500人一起卷赢

写在前面 & 笔者的个人理解
理解驾驶场景的三维几何结构和语义对于安全自动驾驶汽车的开发至关重要。虽然三维占有率模型通常使用基于体素的监督和标准损失函数(如交叉熵、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 重投影损失实现监督,保持了体素之间的空间关系,而这正是传统体素级损失所缺失的关键特征。
其中代表在任意相机上渲染的深度图像,代表在任意相机上的语义渲染结果,“pred” 表示从预测体素导出的图像,“gt” 表示从地面真实值导出的图像。
来自任意相机的2D GT
相机放置策略:我们的模块能够渲染场景中任意相机位置的视图,这与先前仅限于传感器原始固定视角的方法不同。这种灵活性使得我们可以从多个不同角度对学习过程进行监督,包括原始传感器无法看到的区域。我们通过修改相机参数(即相机的内参和外参,也就是相机的类型和位置)来实现这一点,如图 6 所示。

相机位置的合理选择取决于任务的复杂程度。根据我们是仅关注可见体素的预测,还是也希望完成对不可见体素的预测,我们会采用不同的策略。在后一种情况下,我们将相机定位在能够捕捉传感器无法看到的体素的位置,从而提供更全面的监督信号。我们采用的策略是将相机抬高并稍微向下倾斜,这样它们既能看到传感器视野之外的区域,又能共享大量信息。
鉴于鸟瞰图(BEV)在自动驾驶任务中的重要性,我们系统地添加一个虚拟 BEV 相机,以获得更精确的表示。这也有助于提供关于传感器无法看到的体素的额外信息。
关于 BEV 渲染(标记为标签),由于其位置远离场景,我们仅计算语义损失(不计算深度损失):
因此,我们模块的总体 2D 渲染损失定义为:
训练损失:最后,模型的训练损失简单地是原始 3D 训练损失(由交叉熵、Lovasz 和骰子损失组合而成)与我们的 2D 渲染损失之和:
其中 λ 是 2D 损失的加权因子。在我们所有的实验中,λ 都等于 5,以使得 2D 损失的贡献与 3D 损失大致相当。
实验
数据和模型
数据:训练和评估在三个数据集上进行:SurroundOcc-nuScenes、Occ3d-nuScenes和 SSCBench-Kitti360。
SurroundOcc-nuScenes 数据集源自 nuScenes 数据集 [5],在波士顿和新加坡采集。它整合了 nuScenes 的激光雷达注释,创建了分辨率为(50cm^3)的 3D 语义占有率网格,标签对应 17 个激光雷达语义分割类别。该数据集同时考虑了可见和被遮挡的体素,被遮挡的体素通过在整个序列的帧上累积激光雷达数据获得,这会在动态物体上引入时间伪影。
Occ3D-nuScenes 同样基于 nuScenes 数据集,包含 18 个语义类别,体素网格分辨率为(40cm^3)。与 SurroundOcc-nuScenes 的一个主要区别是,Occ3D 仅评估当前帧中从相机可见的体素,没有激光雷达累积数据。因此,它专注于对可见物体的几何和语义理解,而非推断被遮挡区域,任务相对简单。 SSCBench-Kitti360源自 Kitti360 数据集,在德国采集,包含 19 个语义类别,体素网格分辨率为(20cm^3),能非常精确地表示城市场景语义。评估时同时考虑可见和被遮挡的体素。
我们在此简要概述了每个数据集在 3D 占有率任务方面的特定特征,更多详细信息可在附录 A 中找到。 模型和训练细节:我们将 GaussRender 集成到三个使用不同中间表示的模型中:SurroundOcc(基于多尺度体素的方法)、TPVFormer(基于三平面的方法)和 Symphonies(基于带实例查询的体素方法)。通过这样做,我们验证了所提出的方法与任何类型的架构兼容这一观点。对于每个模型和数据集的组合,我们遵循相同的流程。默认情况下,如果有可用的作者预训练模型,我们就进行评估;如果没有,则报告先前论文中的分数;否则,我们针对目标数据集重新训练模型。
GaussRender 实现了最先进的结果
3D 语义占有率结果
我们在多个模型和数据集上评估 GaussRender 的 3D 语义占有率预测能力。我们的方法在不需要某些方法中使用的激光雷达等其他传感器的情况下,持续提升性能。结果总结在表1中

我们的结果表明,GaussRender 持续提升了各种架构的性能,使其达到最先进的水平,在无需投影激光雷达注释的情况下取得了领先结果,并且在不同数据集规模和注释密度下均保持有效。这证明了 GaussRender 对于 3D 语义占有率学习的重要优势。
仅使用 2D 渲染目标进行训练
为了评估 GaussRender 捕捉城市场景语义和几何信息的有效性,我们通过比较一类仅使用 2D 监督而不使用 3D 监督进行 3D 占有率训练的模型的 3D IoU 和 mIoU,来单独测试我们的模块。为了与其他方法进行比较,我们将 GaussRender 集成到 TPVFormer 中。如表 3 所示,该模型的 mIoU 达到 22.15,超过了 RenderOcc](提升 2.82 mIoU)和 GSRender(提升 0.79 mIoU)。此外,与这些方法不同,GaussRende 不需要来自相邻帧的辅助光线,实现起来更简单,计算成本也更低。
更细粒度的多视图指标分析
传统的 3D 语义占有率指标提供场景级别的综合得分,对所有体素同等对待,这可能会掩盖不同区域和视角之间的性能差异,无法充分反映模型准确地定位物体和表面的能力,而这是 3D 语义占有率任务的关键目标之一。为了解决这个问题,在 3D 占有率训练的背景下,我们引入了额外的评估指标,以捕捉空间理解的不同方面。鸟瞰图(BeV)指标对于运动预测和规划至关重要,它使用和来衡量空间准确性。同时,传感器视图指标通过、和深度误差,从原始自车位置的视角评估几何和语义一致性。
为了确保公平比较,并量化我们模块带来的潜在收益,我们使用统一的协议,将使用和未使用 GaussRender 训练的模型的体素输出转换为高斯表示。体素转换为高斯时,使用与地面真实值对齐的固定尺度,从体素预测中转移语义标签,并将被占据体素的不透明度设置为 1,然后计算渲染结果。

我们的多视图分析结果如表2所示。可以观察到,使用 GaussRender 同时提升了所有指标,不同数据集和模型的组合都有系统性的提升。我们特别注意到,图像空间 IoU 提升了 2.16/6.68,深度 L1 误差降低了 0.18/0.53。而且,GaussRender 通过提升 0.82/1.89 的 BeV IoU,改善了空间理解能力。此外,TPVFormer 和 SurroundOcc 在所有数据集和评估中都显示出显著的改进。该评估突出表明,使用 GaussRender 不仅提高了 3D 占有率预测,还增强了与 BeV 和 2D 传感器观测的一致性。

消融研究
虚拟视点监督的影响
GaussRender 的一个关键优势是,我们不依赖激光雷达数据和特定的光线配置,而是直接渲染体素,从而能够从任意视点进行渲染。为了探究不同虚拟相机放置的影响,我们评估了以下几种定位策略: 传感器策略:相机放置在数据集中的原始位置和方向。
随机策略:通过相对于原始自车位置进行±10°的俯仰和偏航变化,以及±10m的前后移动,在场景中随机定位相机。

升高策略:将相机抬高 8m 并向下倾斜 20°,这提供了更广阔的视野并减少了体素遮挡。
表 4 量化了这些策略对最终 3D 预测的影响。相机放置的选择应根据具体任务进行调整。如果目标是仅预测可见体素,如在Occ3D-nuScenes中,使用与传感器对齐的视点可获得最佳结果。然而,如果目标还包括推断被遮挡区域,如在SurroundOcc-nuScenes中,放置虚拟相机以最大化这些区域的可见性可提供更好的监督。随机策略进一步凸显了谨慎选择相机位置的重要性:随意放置相机通常会导致3D指标较差,因为它们主要观察到的是空的空间。
体素的高斯化
我们渲染过程中的一个重要参数是用于表示体素的高斯的固定大小。为了研究高斯尺度的影响,我们在 Occ3d-nuScenes数据集上训练了一个 TPVFormer模型,并在地面真实值和预测渲染中改变尺度。在这项研究中,我们仅使用2D渲染损失训练模型,省略了通常的3D体素损失,以专注于尺度对渲染指标的影响。
我们的结果(图 7)表明,高斯尺度对模型性能至关重要。我们需要找到合适的平衡:如果高斯太大,只有少数高斯会覆盖整个图像,损失将主要从最近的元素反向传播;反之,如果高斯太小,体素之间会出现间隙,导致稀疏激活,使模型仅渲染空类,从而产生非常低的指标值。
从理论上讲,由于体素具有固定大小,最优大小应该与体素大小相关。直观地说,用一个标准差为(其中 c 是体素边长)的球形高斯来表示一个体素。分析可得,对于 Occ3d-nuScenes 和 SurroundOcc-nuScnees,;对于 SSCBench-KITTI360,。
结论
在本文中,我们提出了 GaussRender,这是一种专为 3D 占有率任务设计的高斯渲染模块。我们基于高斯的渲染方法无需外部传感器,仅在体素上运行,与任何现有架构兼容,并且在所有研究的数据集和模型上均实现了性能提升,达到了最先进的水平。
GaussRender 易于集成,仅引入了一个自由度(高斯的尺度),同时保持较低的计算和内存开销,并允许从任何视点渲染体素。此外,我们表明,系统地使用增强 3D 预测空间相干性的损失函数,对于改善 3D 占有率结果以及增强体素与其在图像和鸟瞰图(BEV)中的重投影之间的 3D-2D 一致性至关重要。
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)

② 国内首个自动驾驶学习社区
近3500人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

③【自动驾驶Daily】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、在线地图、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加自动驾驶之心小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)