清华大学最新成果 3D 语义占用预测框架 GaussianFormer !

2024-08-29 18:35:27 浏览数 (2)

3D语义占用预测旨在获取周围场景的3D细粒度几何和语义信息,这对于视觉中心的自动驾驶的鲁棒性是一个重要的任务。大多数现有方法使用密集网格(如 Voxel )作为场景表示,这忽略了占用的稀疏性以及目标规模多样性,从而导致资源分配不平衡。 为了解决这个问题,作者提出了一种以目标为中心的表示方法,用稀疏的3D语义高斯描述3D场景,其中每个高斯代表一个灵活的兴趣区域及其语义特征。 作者通过注意力机制从图像中聚合信息,并迭代地改进3D高斯属性,包括位置、协方差和语义。 然后,作者提出了一种高效的从高斯到 Voxel 的喷射方法来生成3D占用预测,该方法仅对特定位置的邻近高斯进行聚合。作者在广泛采用的nuScenes和KITTI-360数据集上进行了大量实验。 实验结果表明,GaussianFormer在仅消耗最先进方法的17.8% - 24.8%内存的情况下,实现了与之相当的性能。 代码可在以下网址获取:https://github.com/huang-yh/GaussianFormer。

1 Introduction

激光雷达是否用于3D感知,长期以来一直是自动驾驶公司核心争论的焦点。尽管以视觉为中心的系统具有经济优势,但它们无法捕捉任意形状的障碍物,这限制了驾驶的安全性和鲁棒性。3D语义占用预测方法的出现缓解了这个问题,通过预测周围3D空间中每个 Voxel (voxel)的占用状态,这促进了包括端到端自动驾驶[46],4D占用预测[58]和自监督3D场景理解[15]等新兴任务的发展。

尽管应用前景广阔,但3D占用预测的密集输出空间在如何高效有效地表示3D场景方面提出了巨大挑战。基于 Voxel 的方法[23, 50]为每个 Voxel 分配一个特征向量,以获得密集表示,描述3D场景的细粒度结构。它们采用从粗到精的上采样[46, 50]或 Voxel 滤波,以提高效率,考虑到3D空间的稀疏性。由于大部分 Voxel 空间未被占用[3],基于鸟瞰图(BEV)的方法压缩高度维度,并使用鸟瞰图作为场景表示,但它们通常需要如多尺度融合[56]等后处理来捕捉更细微的细节。

TPVFormer[16]将BEV推广到两个附加平面,并通过三重视角图(TPV)实现了更好的性能-复杂度权衡。然而,它们都是基于网格的方法,不可避免地遭受空网格冗余的问题,这给下游任务[46]带来了更多复杂性。由于在3D空间中移动的是目标而不是网格,因此基于网格的表示在捕捉场景动态方面也更为困难[58]。

在本文中,作者提出了第一个针对3D语义占用预测的目标中心表示法。作者使用一组3D语义高斯分布来稀疏描述3D场景。每个高斯分布表示一个灵活的兴趣区域,并包括均值、协方差及其语义类别。作者提出了一个GaussianFormer模型,用以有效地从图像输入获取3D语义高斯分布。作者随机初始化一组 Query 来实例化3D高斯分布,并采用交叉注意力机制来从多尺度图像特征中聚合信息。作者迭代地细化3D高斯分布的属性,以实现更平滑的优化。为了高效地融合3D高斯分布之间的交互,作者将它们视为位于高斯均值处的点云,并利用3D稀疏卷积处理它们。然后,作者从更新的 Query 解码3D语义高斯分布的属性作为场景表示。

受到图像渲染中3D高斯扩散方法的启发[20],作者设计了一个高效的从高斯到 Voxel 的扩散模块,该模块将邻近的高斯分布聚合在一起,为特定3D位置生成语义占用。所提出的3D高斯表示使用一组稀疏和自适应的特征来描述3D场景,但由于高斯混合的普遍逼近能力[8, 11],它仍然能够建模细粒度结构。

基于3D高斯表示,GaussianFormer进一步采用稀疏卷积和基于局部聚合的高斯到 Voxel 扩散,以实现高效的3D语义占用预测,如图1所示。作者在nuScenes和KITTI-360数据集上进行了大量实验,分别从周围摄像头和单目摄像头进行3D语义占用预测。GaussianFormer在仅消耗现有最先进方法的17.8% - 24.8%内存的情况下,取得了可比较的性能。作者的定性可视化显示,GaussianFormer能够生成既全面又真实的场景感知。

2 Related Work

3D Semantic Occupancy Prediction

近年来,由于3D语义占用预测能够全面描述驾驶场景,包括预测一定范围内所有 Voxel 的空间占用和语义状态,因此受到了越来越多的关注。学习有效的表示是这个具有挑战性任务的基本步骤。一种直接的方法是将3D空间离散化为规则 Voxel ,每个 Voxel 分配一个特征向量[59]。Voxel 表示在表达复杂3D结构方面的能力使其在3D语义占用预测中具有优势。然而,由于驾驶场景的稀疏性以及原始 Voxel 表示的高分辨率,这些方法存在相当大的计算和存储开销。为了提高效率,一些方法提出通过从粗到精的上采样策略[49],或深度引导的 Voxel 滤波[23]来减少 Voxel Query 的数量。

然而,上采样过程可能无法充分补偿粗略阶段的信息损失。而滤波策略忽略了遮挡区域,并且依赖于深度估计的质量。尽管OctreeOcc[33]引入了多粒度 Voxel Query 来提高效率,但它仍然遵循预定义的规则分割模式。作者的3D高斯表示与 Voxel 类似,但可以灵活地适应不同物体尺度和区域复杂性的可变形方式,从而实现更好的资源分配和效率。

另一项工作利用鸟瞰图(BEV)表示进行自动驾驶中的3D感知,根据视图转换范式,它可以分为两种类型。基于提升-涂抹-射击(LSS)的方法积极地将图像特征以深度引导的方式投影到3D空间中,而基于 Query 的方法通常使用BEV Query 和可变形注意力从图像特征中聚合信息。

尽管基于BEV的感知在3D目标检测中取得了巨大成功,但由于高度压缩导致的信息丢失,它在3D占用预测中的应用较少。

FB-OCC[27]使用来自后向投影的密集BEV特征来优化来自前向投影的稀疏 Voxel 特征。FlashOcc[56]在BEV特征上应用了一个复杂的多尺度特征融合模块以获得更精细的细节。

然而,现有的3D占用预测方法基于网格表示,不可避免地遭受空网格的计算冗余。

与之不同,作者的GaussianFormer基于以目标为中心的表示,并且能够有效地关注灵活的兴趣区域。

3D Gaussian Splatting

最近的三维高斯 splatting(3D-GS)[20]使用多个三维高斯函数进行辐射场渲染,在渲染质量和速度方面表现出卓越的性能。与之前的显式场景表示方法,如网格[41, 42, 52]和 Voxel [10, 37]相比,3D-GS能够使用更少的参数来建模复杂的形状。与隐式神经辐射场[1, 36]相比,3D-GS通过基于splat的栅格化实现了快速渲染,它将三维高斯函数投影到目标二维视图中,并使用局部二维高斯函数渲染图像块。3D-GS的最新进展包括适应动态场景[34, 54],可泛化到新场景的在线3D-GS[5, 61],以及生成式3D-GS。

尽管作者的三维高斯表示采用了三维高斯函数的物理形式(即均值和协方差)以及多变量高斯分布,但它与3D-GS在重要方面存在差异,这在对三维语义占有率的预测上提出了独特的挑战:

1)作者的三维高斯表示是以在线方式学习,而不是3D-GS中的离线优化。

2)作者从三维高斯表示生成三维语义占有率预测,与3D-GS中渲染二维RGB图像不同。

3 Proposed Approach

在本节中,作者介绍了用于三维语义占用预测的3D高斯绘制方法。

首先,作者引入了一种以目标为中心的3D场景表示,它自适应地使用3D语义高斯分布描述感兴趣的区域(第3.1节)。

然后,作者解释了如何有效地将图像输入中的信息转换到3D高斯分布,并详细说明了包括自编码、图像交叉关注和属性细化在内的模型设计(第3.2节)。

最后,作者详细介绍了高斯到 Voxel 绘制模块,该模块基于局部聚合生成密集的3D占用预测,并且可以用CUDA高效实现(第3.2节)。

Object-centric 3D Scene Representation

基于视觉的3D语义占用预测旨在使用多视角相机图像作为输入,预测每个 Voxel 网格的密集占用状态和语义。

正式地,给定一组多视角图像 ,以及相应的内参 和外参 ,目标是预测3D语义占用 ,其中 ,, 和 分别表示视图数量、图像分辨率、语义类别集合和目标体积分辨率。

自动驾驶场景包含各种尺度的前景物体(如公交车和行人),以及不同复杂度的背景区域(如道路和植被)。密集 Voxel 表示[4, 23, 48]忽视了这种多样性,并且对每个3D位置使用相等的存储和计算资源进行处理,这通常由于资源分配不合理而导致难以处理的过载。平面表示,如BEV和TPV,通过首先将3D信息编码到2D特征图以实现效率,然后从2D特征恢复3D结构来实现3D感知。尽管平面表示对资源友好,但它们可能导致细节的丢失。基于网格的方法很难适应不同场景的兴趣区域,从而导致表示和计算冗余。

为了解决这个问题,作者提出了一个以目标为中心的3D表示方法,用于3D语义占用预测,其中每个单元描述了一个感兴趣区域,而不是固定的网格,如图2所示。作者使用一系列3D语义高斯分布来表示自动驾驶场景,每一个分布实例化一个由均值、协方差和语义逻辑值表征的语义高斯分布。通过计算在特定位置上语义高斯分布的总和,可以得到该3D位置的占用预测。具体来说,对于每个场景,作者使用一组个3D高斯分布,每个3D高斯由维向量表示,形式为,其中、、、分别表示均值、缩放、旋转向量和语义逻辑值。因此,在点处评估的语义高斯分布可以表示为:

其中、和分别表示协方差矩阵、由向量构建的对角矩阵和将四元数转换为旋转矩阵的函数。那么在点处的占用预测结果可以表述为在位置上各个高斯分布贡献的总和。

与 Voxel 表示法相比,均值和协方差属性使得3D高斯表示能够根据目标尺度和区域复杂度自适应地分配计算和存储资源。因此,作者需要更少的3D高斯来建模场景,以获得更好的效率,同时仍然保持表现力。同时,3D高斯表示以3D高斯为其基本单元,从而避免了平面表示中降维可能导致的细节损失。此外,每个3D高斯都有明确的语义含义,使得从场景表示到占用预测的转换比其他表示方法容易得多,后者通常涉及从高维特征中解码每个 Voxel 的语义。

GaussianFormer: Image to Gaussians

基于场景的3D语义高斯表示,作者进一步提出了一个GaussianFormer模型,从多视角图像中学习有意义的3D高斯分布。整个流程如图3所示。作者首先将3D高斯属性及其对应的高维 Query 初始化为可学习的向量。然后在GaussianFormer的个块中迭代地细化高斯属性。每个块由一个自编码模块以实现3D高斯之间的交互,一个图像跨注意力模块以聚合视觉信息,以及一个细化模块以修正3D高斯的属性。

高斯属性与 Query 。作者在GaussianFormer中引入了两组特征。高斯属性是如第3.1节所讨论的物理属性,它们实际上是模型的学习目标。另一方面,高斯 Query 是隐式编码自编码和图像跨注意力模块中的3D信息的高维特征向量,并在细化模块中提供修正的指导。作者将高斯属性初始化为可学习的向量,如图3中标记的“Initial Properties”。

自编码模块。 采用 Voxel 或平面表示的方法通常出于效率考虑,使用可变形注意力实现自编码模块,这对于无结构的3D高斯表示并不支持得很好。相反,作者利用3D稀疏卷积允许3D高斯之间的交互,其具有与可变形注意力相同的线性计算复杂性。具体来说,作者将每个高斯视为位于其均值的一个点,对生成的点云进行 Voxel 化(如图3中标记的“Voxelization”),并在 Voxel 网格上应用稀疏卷积。由于3D高斯数远少于,稀疏卷积可以有效地利用高斯分布的稀疏性。

图像跨注意力模块。 图像跨注意力模块(ICA)旨在为基于视觉的方法从图像中提取视觉信息。具体来说,对于一个3D高斯,作者首先通过使用偏移量与均值进行排列生成一组3D参考点。作者根据高斯的协方差计算偏移量,以反映其分布的形状。然后作者将3D参考点通过外参和内参投影到图像特征图上。

Gaussian-to-Voxel Splatting

由于高斯混合物的通用逼近能力[8, 11],3D语义高斯可以有效地表示3D场景,因此可以直接处理以执行如下游任务的运动规划和控制。具体来说,为了实现3D语义占用预测,作者设计了一个高效的高斯到 Voxel 映射模块,通过仅使用局部聚合操作,将3D高斯表示有效地转换为3D语义占用预测。

尽管公式(3)展示了转换的主要思想,即通过对3D高斯贡献的求和来实现,但由于计算和存储复杂度不可行(为),不可能对每个 Voxel 位置 Query 所有高斯。由于公式(1)中的权重随马氏距离平方的增大而指数衰减,在距离足够大时应该是可以忽略不计的。基于语义高斯分布的局部性,作者只考虑每个 Voxel 位置附近的3D高斯以提高效率。

如图4所示,作者首先根据其均值将3D高斯嵌入到目标 Voxel 网格中。对于每个3D高斯,作者根据其尺度属性计算其邻域的半径。作者将高斯的索引和邻域内每个 Voxel 的索引作为元组附加到一个列表中。然后作者根据 Voxel 的索引对列表进行排序,以得出每个 Voxel 应关注的3D高斯的索引:

其中,分别表示某个高斯的相邻 Voxel 数量,以及贡献给某个 Voxel 的高斯数量。最后,作者可以仅用相邻高斯有效地近似公式(3):

其中表示点处的相邻高斯集合。考虑到3D高斯动态的邻域大小,高斯到 Voxel 的映射实现并不简单。为了充分利用GPU的并行计算能力,作者使用CUDA编程语言实现它以获得更好的加速。

整个GaussianFormer模型可以端到端高效地训练。对于训练,作者使用交叉熵损失和lovasz-softmax[2]损失,遵循TPVFormer[16]的做法。为了以迭代方式细化高斯属性,作者对每个细化模块的输出了应用监督。整体损失函数为,其中表示第个块。

4 Experiments

在本论文中,作者提出了一种3D语义高斯表示方法,以有效且高效地描述3D场景,并设计了一个GaussianFormer模型来进行3D占用预测。

作者在nuScenes[3]数据集和KITTI-360[29]数据集上分别针对周围摄像头和单目摄像头进行了3D语义占用预测的实验。

Datasets

NuScenes[3] 包括在波士顿和新加坡收集的1000个不同驾驶场景序列,官方将其分为700/150/150个序列分别用于训练、验证和测试。每个序列持续20秒,由6个周围相机收集的RGB图像组成,关键帧以2Hz的频率进行标注。作者利用来自SurroundOcc [50]的密集语义占用标注进行监督和评估。标注的 Voxel 网格沿X和Y轴跨越[-50m, 50m],沿Z轴跨越[-5m, 3m],分辨率为。每个 Voxel 都被标记为18个类别之一(16个语义类别,1个空类别和1个未知类别)。

KITTI-360[29] 是一个大尺度数据集,涵盖了73.7公里的驾驶距离,对应于超过320k图像和100k激光扫描。作者使用来自SSCBench-KITTI-360 [22]的密集语义占用标注进行监督和评估。它为9个长序列提供了总共12865个关键帧的 GT 标签,这些序列官方分为7/1/1,分别具有8487/1812/2566个关键帧用于训练、验证和测试。Voxel 网格在 ego 车前方覆盖了,分辨率为,每个 Voxel 被标记为19个类别之一(18个语义类别和1个空类别)。作者使用左侧相机的RGB图像作为作者模型的输入。

Evaluation Metrics

遵循常见的做法[4],作者使用平均交并比(mIoU)和交并比(IoU)来评估作者模型的性能:

其中 ,,,, 分别表示非空类别、空类别以及真实阳性、假阳性和假阴性预测的数量。

Implementation Details

作者将nuScenes[3]的输入图像分辨率设置为,KITTI-360[29]的设置为。

作者采用从FCOS3D[47]预训练权重初始化的ResNet101-DCN[12]作为nuScenes的图像 Backbone 网络,以及用ImageNet[9]预训练的ResNet50[12]作为KITTI-360的图像 Backbone 网络。

作者使用特征金字塔网络[30](FPN)生成具有4、8、16和32下采样率的多种尺度图像特征。作者将高斯分布的数量分别设置为144000和38400,用于nuScenes和KITTI-360,并在GaussianFormer中使用4个转换块来细化高斯分布的性质。对于优化,作者使用带有0.01权重衰减的AdamW[32]优化器。

学习率在前500次迭代中预热,达到最大值2e-4,然后根据余弦调度降低。作者以批量大小为8训练模型20个周期,并使用随机翻转和光度失真增强。

Results and Analysis

周围摄像头3D语义占用预测。在表1中,作者对多种多视图3D语义占用预测方法在nuScenes验证集上的表现进行了全面的定量比较,使用了来自SurroundOcc [50]的密集标注。作者的GaussianFormer比基于平面表示的方法(如BEVFormer [26]和TPVFormer [16])取得了显著的改进。即使与密集网格表示相比,GaussianFormer的表现也与OccFormer [57]和SurroundOcc [50]相当。这些观察结果表明,3D高斯分布对于语义占用预测具有宝贵的应用价值。这是因为3D高斯表示更好地利用了驾驶场景的稀疏性以及不同尺度目标的多样性,具有位置和协方差的灵活属性。

单目3D语义占用预测。表2比较了GaussianFormer与其他方法在SSCBench-KITTI-360上进行单目3D语义占用预测的性能。值得注意的是,GaussianFormer与最先进的模型的性能相当,特别是在一些较小类别(如摩托车)和一些一般类别(如其他车辆)方面表现优异。这是因为3D高斯分布可以自适应地改变其位置和协方差以匹配图像中小目标的边界,与图像上的刚性网格投影可能产生的误导相比。此外,3D高斯分布的灵活性也有利于对一般目标(即以other-为前缀的类别)的预测,这些目标通常具有与正常类别不同的形状和外观。

与现有方法的效率比较。作者在表3中提供了不同场景表示的效率比较。值得注意的是,GaussianFormer在显著减少内存消耗方面超过了所有现有竞争者。GaussianFormer的内存效率源于其以目标为中心的特性,为每个3D高斯赋予了明确的语义意义,从而极大地简化了从场景表示到占用预测的转换,摆脱了从高维特征中解码的昂贵过程。尽管比基于平面表示的方法[16, 26]稍慢(约70毫秒),但GaussianFormer在密集网格表示中实现了最低的延迟。值得注意的是,即使 Query 更多,作者的方法也比OctreeOcc[33]快。

GaussianFormer组件分析。在表4中,作者对GaussianFormer的组件进行了全面分析,以验证其有效性。作者在nuScenes上进行这些实验,并将3D高斯数量设置为51200。高斯属性精炼的策略对性能有显著影响。对于全部替换策略(由none表示)的实验崩溃了,因为作者直接用新的属性替换旧的属性,因此作者不报告结果。这是因为高斯的位置对噪声很敏感,在精炼过程中没有连贯性正则化,会迅速收敛到平凡解。以残差方式修正除语义之外的所有属性(由all except semantics表示)也是有害的,因为用于协方差的sigmoid激活容易导致梯度消失。此外,自编码模块中的3D稀疏卷积对性能至关重要,因为它负责3D高斯之间的交互。另一方面,深度监督策略也通过确保每个中间精炼步骤有利于3D感知,为整体性能做出了贡献。

高斯数量的影响。表5呈现了关于高斯数量的消融研究,作者分析了它对效率和性能的影响。当3D高斯数量大于38400时,mIoU线性增加,这是因为更多的高斯能够更好地表示更精细的细节。延迟和内存消耗也与高斯数量线性相关,为部署提供了灵活性。

可视化结果。作者在图5中提供了定性的可视化结果。作者的GaussianFormer能够生成场景的整体和真实的感知。特别是,3D高斯调整它们的协方差矩阵以捕捉目标形状的细节,如路面和墙壁表面的扁平高斯(如第三行)。此外,与路面(如第一行)相比,车辆和行人的区域密度更高,这证明了3D高斯通过迭代精炼围绕前景目标聚集,合理分配资源。而且,作者的GaussianFormer甚至成功预测了不在 GT 中且在图像中几乎不可见的目标,如第四行左前方输入图像中的卡车以及3D可视化的右上角。

5 Conclusion and Discussions

在本文中,作者提出了一种高效的目标中心式三维高斯表示方法,用于三维语义占用预测,以更好地利用占用空间的稀疏性和目标尺度多样性。作者用稀疏的三维高斯分布描述驾驶场景,每个高斯分布由其位置、协方差和语义特征表示,代表一个灵活的兴趣区域。

基于三维高斯表示,作者设计了GaussianFormer,通过注意力机制和迭代细化有效地从输入图像中学习三维高斯分布。为了从三维高斯分布高效生成 Voxel 化占用预测,作者提出了一种有效的从高斯到 Voxel 的映射方法,该方法只对每个 Voxel 附近的相邻高斯分布进行聚合。GaussianFormer在nuScenes和KITTI-360数据集上的性能与最先进的方法相当,并且显著降低了超过75%的内存消耗。

作者的消融研究显示,GaussianFormer的性能随着高斯分布数量的增加而提高。此外,可视化证明了三维高斯捕获目标形状细节的能力,并合理分配计算和存储资源。

局限性。尽管GaussianFormer的内存消耗大大降低,但其性能仍低于最先进的方法。这可能是因为三维语义高斯表示的不准确,或者仅仅是超参数选择不当,因为作者没有进行大量的超参数调整。GaussianFormer还需要大量高斯分布以达到满意的性能。这可能是因为当前的三维语义高斯将空作为一个类别,因此可能存在冗余。仅对实体目标建模以进一步提高性能和速度将很有趣。

参考

[1].GaussianFormer: Scene as Gaussians for Vision-Based 3D Semantic Occupancy Prediction.

0 人点赞