【OccNeRF: Advancing 3D Occupancy Prediction in LiDAR-Free Environments】阅读笔记

【OccNeRF: Advancing 3D Occupancy Prediction in LiDAR-Free Environments】阅读笔记

  • [1. 论文概述](#1. 论文概述)
    • Abstract
    • [1. Introduction](#1. Introduction)
    • [2. Related work](#2. Related work)
      • [2.1 3D Occupancy Prediction](#2.1 3D Occupancy Prediction)
      • [2.2 Neural Radiance Fields](#2.2 Neural Radiance Fields)
      • [2.3 Self-supervised Depth Estimation](#2.3 Self-supervised Depth Estimation)
    • [3. Method](#3. Method)
      • [3.1 Parameterized Occupancy Fields](#3.1 Parameterized Occupancy Fields)
      • [3.2 Multi-frame Depth Estimation](#3.2 Multi-frame Depth Estimation)
      • [3.3 Semantic Supervision](#3.3 Semantic Supervision)

1. 论文概述

Abstract

  1. 现有的基于Occupancy的重建环境方法严重依赖于LiDAR点云,在纯视觉的系统中不可用。
  2. 本文提出的OccNeRF用于在没有3d监督情况下训练占用网络
  3. 与之前考虑有界场景的工作不同,OccNeRF参数化重建的占用场并重新组织采样策略以与相机的无限感知范围保持一致。
  4. 采用神经渲染将占用场转换为多相机深度图,并通过多帧光度一致性进行监督。
  5. 对于语义占用预测,OccNeRF设计了几种策略来完善提示并过滤预训练的开放词汇 2D 分割模型的输出。
  6. 在nuScenes 和 SemanticKITTI 数据集上进行实验

1. Introduction

****

近年来自动驾驶发展迅猛。尽管激光雷达提供了一种捕获几何数据的直接方法,但其采用受到传感器费用扫描点稀疏性的阻碍。因此以视觉为中心的方法得到了广泛关注。在3D场景理解任务中,多相机的3d目标检测在自动化系统中发挥着重要作用,但是遇到了目标来自于无限类别长尾问题

OCC预测是3d目标检测的补充,它直接重建周围场景的几何结构,自然就缓解了上述的问题。一些方法认为它具有重建被遮挡部分的潜力。现有的方法大多需要监督或者激光雷达,因此本文研究不使用激光雷达以及无监督的方法。

OccNeRF目标是在没有 3D 监督的情况下训练多摄像机占用网络。其pipeline如下图所示。首先利用 2D backbone来提取多摄像机 2D 特征。为了节省内存,我们直接插值 2D 特征来获得 3D 体积特征,而不是使用heavy的cross-view attention。在以前的工作中,体积特征由有界占用标签来监督(例如50m 范围),他们只需要以有限的分辨率(例如 200 × 200 × 16)来预测占用情况。不同的是,对于无 LiDAR 的训练,**我们应该考虑无界场景,因为 RGB 图像感知无限范围。(为什么RGB图像感知无限的范围??)**为此,我们参数化占用字段来表示无界环境。具体来说,我们将整个 3D 空间分为内部区域和外部区域。里面的坐标保持原来的坐标,外面的坐标采用收缩后的坐标。设计了一种特定的采样策略,通过神经渲染算法将参数化的占用场传输到 2D 深度图。

监督预测占用率的一种直接方法是计算渲染图像和训练图像之间的损失,这与 NeRF [17] 中使用的损失函数相同。然而,我们的实验表明,由于周围视图的稀疏性,这种方法是无效的,最小的图像重叠无法提供足够的几何信息。作为替代方案,**我们通过渲染序列中的多个帧并采用相邻帧之间的光度一致性作为主要监督信号来充分利用时间信息。**对于语义占用,我们提出了三种策略将类名映射到prompt,这些prompt被馈送到预训练的开放词汇分割模型 [18]、[19] 以获取 2D 语义标签。然后采用额外的语义头来渲染语义图像并由这些标签进行监督。为了验证我们方法的有效性,我们对自监督多摄像头深度估计和 3D 占用预测任务进行了实验。实验结果表明,我们的 OccNeRF 大幅优于其他深度估计方法,并且在 nuScenes [20] 和 SemanticKITTI [21] 数据集上使用更强监督的一些方法实现了可比的性能。

总之,我们的主要贡献包括:

  • 我们开发了一个无需激光雷达数据即可训练占用网络的系统,通过集成时间信息以获取更多几何信息,解决稀疏周围视图的挑战。
  • 我们引入了参数化的占用场,使以视觉为中心的系统能够有效地表示无界场景,与相机的广泛感知能力相结合。
  • 我们设计了一个pipeline,通过预训练的开放词汇分割模型生成高质量的伪标签,并采用三种提示策略来提高准确性。

本节研究计算机视觉中的三个相互关联的领域:3D 占用预测、神经辐射场和自监督深度估计。我们强调了关键的进展和持续的挑战,提供了重要的概述,以确定当前研究中的差距并提出进一步研究的途径。

2.1 3D Occupancy Prediction

由于以视觉为中心的自动驾驶系统的重要性,越来越多的研究人员开始关注3D占用预测任务[16]、[22]、[3]、[13]、[23]、[14]、[15]、[24]、[25]、[26]、[27]、[28 ],[29]。在行业界,3D占用被视为LiDAR感知的替代方案。作为开创性工作之一,MonoScene [16]提取视线投影生成的体素特征来从单个图像重建场景。 TPVFormer [22] 进一步将其扩展到具有三视角视图表示的多摄像头时尚。除了 TPVFormer 之外,SurroundOcc [3] 还设计了一个管道来生成密集的占用标签,而不是使用稀疏的 LiDAR 点作为地面实况。此外,还提出了具有跨视图注意层的 2D-3D UNet 来预测密集占用。 RenderOcc [30] 使用 2D 深度图和语义标签来训练模型,减少对昂贵的 3D 占用注释的依赖。与这些方法相比,我们的方法不需要任何带注释的 3D 或 2D 标签。 Occ3D [13] 建立了 CVPR 2023 占用预测挑战赛中使用的占用基准,并提出了从粗到细的占用网络。 SimpleOccupancy [31] 提出了一个简单而有效的占用率估计框架。尽管 SimpleOccupancy [31] 和 SelfOcc [?] 研究了以视觉为中心的设置,但他们没有考虑相机的无限感知范围。

2.2 Neural Radiance Fields

作为3D领域最热门的主题之一,神经辐射场(NeRF)[17]近年来取得了巨大的成就。 NeRF [17] 通过使用多视图图像优化连续体积场景函数来学习场景的几何形状。为了获得新颖的视图,执行体积渲染以将辐射场转换为 RGB 图像。作为后续,mip-NeRF [32] 以连续值表示场景,并将光线替换为抗锯齿截头圆锥体。除了 mip-NeRF 之外,Zip-NeRF [33] 将 mipNeRF 与基于网格的模型集成,以实现更快的训练和更好的质量。原始NeRF有多种扩展,包括动态场景[34]、[35]、[36]、[37]、[38]、[39]、[40]、3D重建[41]、[42]、[ 43]、[44]、[45],模型加速[46]、[47]、[48]、[49]、[50]、[51]、[52]、[53]等。作为其中之一这些扩展中,一些作品旨在描述无界场景[54],[55]。 NeRF++ [54] 将 3D 空间分割为内部单位球体和外部体积,并提出倒置球体参数化来表示外部区域。此外,mip-NeRF 360 [55]将此想法嵌入到 mip-NeRF 中,并将平滑参数化应用于体积。受这些方法的启发,我们还设计了一种参数化方案来为占用预测任务建模无界场景。

2.3 Self-supervised Depth Estimation

虽然早期的作品[56]、[57]、[58]、[59]、[60]需要密集的深度注释,但最近的深度估计方法[61]、[62]、[63]、[64]、[65] ,[66],[67],[68],[69],[70],[71],[72],[73]以自我监督的方式设计。这些方法大多数同时预测深度图和自我运动,采用连续帧之间的光度约束[74]、[75]作为监督信号。作为该领域的经典工作,Monodepth2 [76]提出了一些技术来改进深度预测的质量,包括最小重投影损失、全分辨率多尺度采样和自动掩蔽损失。由于现代自动驾驶车辆通常配备多个摄像头来捕捉周围的景色,研究人员开始专注于多摄像头自监督深度估计任务[77],[78],[79],[80],[ 81],[82]。 FSM [77] 是第一个通过利用时空上下文并提出一致性约束将单目深度估计扩展到完整周围视图的工作。为了预测真实世界的尺度,SurroundDepth [78] 使用 Structurefrom-motion 生成尺度感知伪深度来预训练模型。此外,它提出了交叉视图变换器和联合姿态估计来合并多摄像机信息。最近,R3D3 [79] 将特征相关性与捆绑调整算子相结合,以实现稳健的深度和姿态估计。与这些方法不同,我们的方法直接提取 3D 空间中的特征,实现多摄像机一致性和更好的重建质量。

3. Method

下图是OccNeRF的流程。以多摄像头图像 {Ii}N i=1 作为输入,我们首先利用 2D 主干来提取 N 个摄像头的特征 {Xi}Ni=1。然后将2D特征插值到3D空间以获得已知内在{Ki}N i=1和外在{T i}N i=1的体积特征。正如第 III-A 节中所讨论的,为了表示无界场景,我们提出了一种坐标参数化,将无限范围收缩到有限的占用区域。执行体积渲染以将占用场转换为多帧深度图,并通过光度损失进行监督。第 III-B 节详细介绍了这一部分。最后,第 III-C 节展示了我们如何使用预训练的开放词汇分割模型来获取 2D 语义标签。

3.1 Parameterized Occupancy Fields

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

其中 α ∈ [0, 1] 表示感兴趣区域在参数化空间中的比例。 α 越高表示我们使用更多的空间来描述内部区域。 r′ = r/rb 表示基于输入 r 和预定义内部区域边界 rb 的归一化坐标。引入参数a和b是为了保持一阶导数的连续性**(这样做为什么保持了一阶倒数的连续性?)**。

这些参数的确定是通过求解以下方程来实现的:

导出的解决方案表示为:

为了从 2D 视图获取 3D 体素特征,我们首先为参数化坐标系中的每个体素生成对应点 Ppc = [xpc, ypc, zpc]T 并将它们映射回 ego 坐标系:

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

其中 proj 是将 3D 点 P 投影到由相机外在 Ti 和内在 Ki 定义的 2D 图像平面的函数,⟨⟩ 是双线性插值算子,Fi 是插值结果。为了简化聚合过程并降低计算成本,我们直接对多相机2D特征进行平均以获得体积特征,这与[31]、[83]中使用的方法相同。最后,采用 3D 卷积网络 [84] 来提取特征并预测最终的占用输出。

3.2 Multi-frame Depth Estimation

为了将占用场投影到多摄像机深度图,我们采用体积渲染[85],它广泛用于基于 NeRF 的方法[17]、[54]、[32]。为了渲染给定像素的深度值,我们从相机中心 o 沿着指向该像素的方向 d 投射一条光线。射线用 v(t) = o + td 表示,t ∈ [tn, tf ]。然后,我们沿 3D 空间中的射线采样 L 个点 {tk}L k=1 以获得密度 σ(tk)。对于选定的 L 个正交点,相应像素的深度计算如下:

其中 T (tk) = exp − Pk−1 k′=1 σ(tk)δk 和 δk = tk+1 − tk 是采样点之间的间隔。

这里的一个重要问题是如何在我们提出的坐标系中采样 {tk}L k=1。深度空间或视差空间中的均匀采样将导致参数化网格的外部或内部区域中的点系列不平衡,这不利于优化过程。假设o围绕坐标系原点,我们直接从参数化坐标中的U [0, 1]中采样L®个点,并使用方程1的反函数来计算{tk}L(v) k=自我坐标中的1。射线的特定 L(v) 和 rb(v) 计算如下:

其中 i、j、k 是 x、y、z 方向的单位向量,lx、ly、lz 是内部区域的长度,dv 是体素大小。为了更好地适应占用表示,我们直接预测渲染权重而不是密度。

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

其中 ˆ Ii 是投影图像,β = 0.85。此外,我们采用[76]中介绍的技术,即每像素最小重投影损失和自动掩蔽固定像素。对于每个相机视图,我们渲染一个短序列而不是单个帧,并执行多帧光度损失。

3.3 Semantic Supervision

为了增强占用体素信息的丰富性并便于与现有方法进行比较,我们引入了 2D 标签来提供语义监督。之前的工作 [13]、[86] 将带有分割标签的 3D LiDAR 点投影到图像空间,以避免注释密集 3D 占用的昂贵成本。然而,我们的目标是在完全以视觉为中心的系统中预测语义占用率,并且仅使用 2D 数据。为此,我们利用预先训练的开放词汇模型 Grounded-SAM [18]、[19]、[87] 来生成 2D 语义分割标签。在没有任何 2D 或 3D 地面实况数据的情况下,预训练的开放词汇模型使我们能够获得与给定类别名称的语义紧密匹配的 2D 标签。该方法可以轻松扩展到任何数据集,使我们的方法高效且可推广。

具体来说,在处理 c 类别时,我们采用三种策略来确定向接地恐龙提供的提示。这些策略包括同义替换,即我们用同义词替换单词(例如,将"汽车"更改为"轿车",以使模型能够将其与"卡车"和"公共汽车"区分开来);将单个词拆分为多个实体(例如,"人造"分为"建筑"、"广告牌"和"桥梁"等,以增强差异化);并纳入附加信息(例如,引入"骑自行车者"以方便检测骑自行车的人)。更多详情请参见表 I。随后,我们获得检测边界框及其相应的逻辑和短语,将其馈送到 SAM [18] 以生成 M 个精确分割二进制掩码。将 Grounding DINO logits 与二进制掩码相乘后,每个像素都有 {li}M i=1 logits。我们使用以下方法获取每像素标签 Spix:

其中ψ(·)是根据短语将li的索引映射到类别标签的函数。如果一个像素不属于任何类别并获得 M 个零 logits,我们将给它一个"不确定"标签。生成的检测边界框和语义标签如图4所示。

为了利用 2D 语义监督,我们最初利用具有 c 个输出通道的语义头将提取的体积特征映射到语义输出,表示为 S(x)。与第 III-B 节中概述的方法类似,我们使用以下方程再次进行体渲染:

其中 ˆ Spix 表示每像素语义渲染输出。为了节省内存并提高效率,我们不会渲染分配有"不确定"标签的像素。此外,我们只渲染中心帧而不是多个帧,并将采样率降低到 Ls = L/4。我们的整体损失函数表示为:

其中 Lsem 是交叉熵损失函数,λ 是语义损失权重。

相关推荐
光明中黑暗17 分钟前
Python 学习笔记
笔记·python·学习
山里灵活的狗_1 小时前
蓝桥杯练习笔记(十九-质数筛)
笔记·职场和发展·蓝桥杯
前端Hardy2 小时前
HTML&CSS:3D旋转动画机器人摄像头
前端·css·3d·html
YuCaiH2 小时前
【STM32】LED闪烁 & LED流水灯 & 蜂鸣器
笔记·stm32·单片机·嵌入式硬件
codists2 小时前
《使用Gin框架构建分布式应用》阅读笔记:p212-p233
笔记·golang·gin·编程人·codists·gin框架
天人合一peng2 小时前
20201010 MTAP-3DGAM审稿意见
后端·3d·restful
小c君tt3 小时前
MFC文件管理-学习笔记
笔记·学习·mfc
Death2003 小时前
PCL库中的算法封装详解
c++·qt·算法·3d
白狐欧莱雅3 小时前
使用Python中的DrissonPage库爬取小说网站并保存章节内容(bqg)
经验分享·笔记·python·自动化·drissonpage