0. 简介

作为基于视觉感知的基本任务,3D占据预测重建了周围环境的3D结构。它为自动驾驶规划和导航提供了详细信息。然而,大多数现有方法严重依赖于激光雷达点云来生成占据地面真实性,而这在基于视觉的系统中是不可用的。之前我们介绍了《经典文献阅读之—RenderOcc(使用2D标签训练多视图3D Occupancy模型)》。这里本文《OccNeRF: Self-Supervised Multi-Camera Occupancy Prediction with Neural Radiance Fields》提出了一种名为OccNeRF的方法,用于自监督多相机3D占用预测。该方法通过参数化重建的占用场来表示无限空间,并通过神经渲染将占用场转换为多相机深度图。为了提供几何和语义监督,该方法利用多帧图像之间的光度一致性进行监督。代码可在Github找到。

图1. OccNeRF概述。为了表示无界场景,我们提出了一个参数化坐标,将无限空间压缩到有界的占据场。在不使用任何标注标签的情况下,我们利用时间光度约束和预训练的开放词汇分割模型,提供几何和语义监督。

1. 主要贡献

  1. 我们使用2D骨干来提取多摄像头的2D特征。为了节省内存,我们直接插值2D特征,以获取3D体积特征,而不是使用繁重的跨视图注意力。
  2. 我们设计了特定的采样策略,将参数化占用场转换为具有神经渲染的多摄像头深度图。我们利用时间光度损失作为监督信号,这在自监督深度估计方法中常用 [21, 22, 46, 82, 89]。为了更好地利用时间线索,我们执行多帧光度约束
  3. 对于语义占用,我们提出了三种策略,将类名映射到提示词,这些提示词被馈送到预训练的开放词汇分割模型 [33, 43],以获取2D语义标签。

2. 概述

图2显示了我们方法的流程。利用多摄像头图像{I^i}^N_{i=1}作为输入,我们首先利用2D主干提取N个摄像头的特征{X^i}^N_{i=1}。然后,将2D特征插值到3D空间,利用已知的内参{K^i}^N_{i=1}和外参{T^i}^N_{i=1}获得体积特征。正如第3节所讨论的,为了表示无界场景,我们提出了坐标参数化方法,将无限范围缩小到有限的占用区域。进行体积渲染,将占用区域转换为多帧深度图,由光度损失进行监督。第4节详细介绍了这一部分。最后,第5节展示了我们如何使用预训练的开放词汇分割模型获取2D语义标签。

图2. OccNeRF的流程。我们首先使用2D主干网络提取多摄像头特征,然后将这些特征提升到3D空间,通过插值得到体积特征。参数化的占据场被重建以描述无界场景。为了获得渲染的深度和语义地图,我们采用了重新组织的采样策略进行体积渲染。多帧深度受光度损失监督。对于语义预测,我们采用了预训练的Grounded-SAM模型,并进行提示清理。绿色箭头表示监督信号。

3. 参数化占据场

与之前的研究[78, 86]不同,我们需要在自监督设置中考虑无界场景。一方面,我们应该保留内部区域的高分辨率(例如[-40m, -40m, -1m, 40m, 40m, 5.4m]),因为这部分涵盖了大部分感兴趣的区域。另一方面,外部区域是必要的,但信息较少,应该在收缩空间内表示,以减少内存消耗。受[3]的启发,我们提出了一个具有可调兴趣区域和收缩阈值的变换函数,以参数化每个体素网格的坐标r = (x, y, z)

在这段文字中,r’ = r/r_b 是输入r的归一化坐标,而f(r) ∈ (−1, 1)表示归一化参数化坐标。r_b是内部区域的边界,对于x、y、z方向是不同的。α ∈ [0, 1]代表参数化空间中感兴趣区域的比例。较高的α表示我们使用更多的空间来描述内部区域。请注意,在方程1中,当r = r_b时,两个函数具有相同的值和梯度。有关推导细节,请参考补充材料。
为了从2D视图中获得3D体素特征,我们首先在参数化坐标系中为每个体素生成相应的点P_{pc} = [x_{pc}, y_{pc}, z_{pc}]^T,然后将它们映射回到自车坐标系中:

然后我们将这些点投影到2D图像特征平面上,并使用双线性插值来获取2D特征:

在这段文字中,proj是将3D点P投影到由相机外参T和内参K_i定义的2D图像平面的函数,⟨⟩是双线性插值运算符,F_i是插值结果。为了简化聚合过程并减少计算成本,我们直接对多相机的2D特征进行平均以获得体积特征,这与[17, 24]中使用的方法相同。最后,我们使用3D卷积网络来提取特征并预测最终的占用输出。

4. 多帧深度估计

为了将占据场投影到多摄像头深度图中,我们采用了体积渲染[48],这在基于NeRF的方法中被广泛使用[2, 49, 84]。为了渲染给定像素的深度值,我们从摄像机中心o沿着指向像素的方向d发射一条射线。该射线由v(t) = o + td表示,其中t ∈ [t_n, t_f]。然后,在3D空间中沿着射线采样L个点{t_k}^L_{k=1},以获取密度σ(t_k)。对于所选的L个积分点,相应像素的深度通过以下公式计算:

在这里,T(t_k) = exp(-\sum_{k′=1}^{k-1} σ(t_k)δ_k),其中δ_k = t_{k+1} − t_k采样点之间的间隔
一个关键问题是如何在我们提出的坐标系中对{t_k}^L_{k=1}进行采样。在深度空间或视差空间中进行均匀采样将导致参数化网格的内部或外部区域中出现不平衡的点序列,这将对优化过程产生不利影响。假设o在坐标系的原点附近,我们直接从U[0, 1]中对参数化坐标进行采样L(r)个点,并使用方程1的逆函数来计算{t_k}^{L(v)}_{k=1}。对于一条射线,特定的L(v)r_b(v)计算如下:

在这里,i、j、k分别是x、y、z方向的单位向量,l_x、l_y、l_z分别是内部区域的长度,d_v是体素大小。为了更好地适应占据表示,我们直接预测渲染权重而不是密度。

传统的监督方法是计算渲染的RGB图像与原始RGB图像之间的差异,这在NeRF [49]中被采用。然而,我们的实验结果表明这种方法效果不佳。可能的原因是,对于NeRF来说,大规模场景和少量视图监督很难收敛。为了更好地利用时间信息,我们采用了[21, 89]中提出的光度损失。具体来说,我们根据渲染的深度和给定的相对姿态,将相邻帧投影到当前帧上。然后我们计算投影图像与原始图像之间的重建误差:

在这里,“i”是指投影图像,β=0.85。此外,我们采用了[21]中介绍的技术,即每像素最小重投影损失和自动遮罩静止像素。对于每个摄像头视角,我们渲染一个短序列而不是单帧,并执行多帧光度损失。

5. 开放词汇语义监督

在这段文本中,作者讨论了使用多相机图像的2D语义标签来提供语义3D占用预测的像素级语义监督。这有助于网络捕捉几何一致性和体素之间的空间关系。为了获得2D标签,之前的研究将3D激光雷达点投影到图像空间,以避免注释密集的3D占用的昂贵成本。然而,作者的目标是在完全以视觉为中心的系统中预测语义占用,并且仅使用2D数据。为此,他们利用了预训练的开放词汇模型GroundedSAM来生成2D语义分割标签。没有任何2D或3D地面真实数据,预训练的开放词汇模型使他们能够获得与给定类别名称语义密切匹配的2D标签。这种方法可以轻松扩展到任何数据集,使他们的方法高效且具有普适性。

具体来说,在处理c个类别时,他们采用三种策略来确定提供给Grounding DINO的提示。这些策略包括同义词替换,即用同义词替换单词(例如,将“car”更改为“sedan”,以使模型能够将其与“truck”和“bus”区分开);将单词拆分为多个实体(例如,“manmade”被分为“building”、“billboard”和“bridge”等,以增强区分性);以及整合额外信息(例如,引入“bicyclist”以促进在自行车上检测人)。随后,他们获得了检测边界框以及相应的logits和短语,这些将被输入SAM以生成M个精确的分割二进制掩模。在将Grounding DINO logits与二进制掩模相乘后,每个像素都有{l_i}^M_{i=1} logits。他们使用以下公式获得每个像素的标签S^{pix}

ψ(·)是一个将li的索引映射到根据短语的类别标签的函数。如果一个像素不属于任何类别,并且得到M个零对数,我们将给它一个“不确定”标签。生成的检测边界框和语义标签如图3所示。为了利用2D语义监督,我们最初利用具有c个输出通道的语义头将提取的体积特征映射到语义输出,表示为S(x)。类似于第4节中概述的方法,我们再次使用以下方程进行体积渲染:

\hat{S}^{pix}代表每个像素的语义渲染输出。为了节省内存并提高效率,我们不渲染被赋予“不确定”标签的像素。此外,我们只渲染中心帧而不是多个帧,并将采样比例减少到L_s = L/4。我们的整体损失函数表达如下:

L_{sem}是交叉熵损失函数,λ是语义损失权重

6. 总结

6.1 参数化占用场景表示:

使用神经辐射场(Neural Radiance Fields,NeRF)来表示占用场景。
引入参数化坐标系,将无界的场景表示为有界的占用场景。
使用参数化坐标系中的体素来表示占用场景的内部和外部区域。
使用占用场景的体素表示来训练网络。

6.2 多摄像头特征聚合

对于每个摄像头,将其对应的图像特征投影到参数化坐标系中的体素上。
使用双线性插值将投影后的特征聚合为体素特征。
使用三维卷积网络提取特征并预测最终的占用输出。

6.3 多帧深度估计

使用体素渲染技术将占用场景投影到多摄像头的深度图上。
通过沿着摄像头中心到像素的射线采样一系列点,计算对应像素的深度值。
使用渲染权重代替密度来适应占用场景的表示。
使用多帧光度损失来训练深度估计模型。

6.4 开放词汇语义监督

使用多摄像头图像的二维语义标签提供像素级的语义监督。
通过将预训练的开放词汇模型的输出与图像特征进行对齐,生成二维语义标签。
使用二维语义标签来训练网络,提高几何一致性和体素之间的空间关系的捕捉能力。

7. 参考链接

https://mp.weixin.qq.com/s/lPp_LralnO6fzItrYRGt0g