经典文献阅读之--OccNeRF(基于神经辐射场的自监督多相机占用预测)

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 } i = 1 N \{I^i\}^N_{i=1} {Ii}i=1N作为输入,我们首先利用2D主干提取N个摄像头的特征 { X i } i = 1 N \{X^i\}^N_{i=1} {Xi}i=1N。然后,将2D特征插值到3D空间,利用已知的内参 { K i } i = 1 N \{K^i\}^N_{i=1} {Ki}i=1N和外参 { T i } i = 1 N \{T^i\}^N_{i=1} {Ti}i=1N获得体积特征。正如第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 = (x, y, z) r=(x,y,z)

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

4. 多帧深度估计

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

5. 开放词汇语义监督

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

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/308452.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

园林机械部件自动化三维测量检测形位公差-CASAIM自动化三维检测工作站

随着园林机械的广泛应用,对其机械部件的精确测量需求也日益增加。传统的测量方法不仅效率低下,而且精度难以保证,因此,自动化三维测量技术成为了解决这一问题的有效途径。本文将重点介绍CASAIM自动化三维检测工作站在园林机械部件…

关于log4j的那些坑

背景:工程中同时存在log4j.xml&log4j2.xml maven依赖如下: 此时工程实际使用的日志文件为log4j.xml 1、当同时设置log4j和log4j2的桥接依赖时 maven依赖如下: 此时启动会有警告日志: 点击告警日志链接:https://…

(已解决)(pytorch指定了gpu但还是占用了一点0号gpu)以及错误(cuDNN error: CUDNN_STATUS_INTERNAL_ERROR)

文章目录 错误原因解决问题 错误原因 出现错误cuDNN error: CUDNN_STATUS_INTERNAL_ERROR,从这个名字就可以看出,出错原因其实有可能有很多种,我这里说一种比较常见的,就是:显存不足。 一个困惑点在于,在…

Evidential Deep Learning to Quantify Classification Uncertainty

本片文章发表于NeurIPS 2018。 文章链接:https://arxiv.org/abs/1806.01768 一、概述 近年来,神经网络在不同领域取得了革命性的进步,尤其是在dropout、normalization以及skip connection等方法被提出之后,撼动了整个机器学习领…

numpy数组03-数组的计算

一.数组与数字之间进行计算 numpy中的数组与数字进行计算是广播形式,数组-*/数字,则数组中的每一个数字都会进行相应的四则运算。 1.1数组与数字之间的四则运算 示例代码如下: import numpy as npa np.arange(24) b a.reshape(4, 6) pr…

k8s的资源管理

命令行: kubectl命令行工具优点: 90%以上的场景都可以满足 对资源的增,删,查比较方便,对改不是很友好缺点:命令比较冗长,复杂难记 声明方式:k8s当中的yaml文件实现资源管理----声明式GUI:图形化工具的管理。 查看k8s的…

初识智慧城市

文章目录 智慧家居 智慧社区 智慧交通 智慧医疗 智慧教育 智慧旅游 智慧农业 智慧安防 智慧家居 利用智能语音、智能交互等技术,实现用户对家居系统各设备的远程操控和能控制如开关窗帘(窗户)、操控家用电器和照明系统、打扫卫生等操作。利用计算机视觉等技术,对被照看…

2023-12-29 服务器开发-centos部署ftp

摘要: 2023-12-29 服务器开发-centos-部署ftp 部署ftp vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。 前提条件 已创建ECS实例并为实例分配了公网IP地址。 背景…

Ubuntu22.04 安装教程

系统下载 Ubuntu官网下载 清华源镜像 安装流程 1. 选择安装语言 2. 选择是否在安装时更新 为了系统安装速度一般选择安装时不更新,安装后自行更新 3. 选择系统语言和键盘布局 4. 选择安装模式 5. 配置网络信息 6. 设置静态IP 7. 配置代理信息 8. 配置Ubuntu镜像…

编写html的vscode快捷键

一快速生成 按住!(英文的),回车。 二快捷键 1.代码格式化 用来对齐标签。整理代码,强迫症患者必备。 shiftaltf 2.快速移动一行 altdown altup 向上或向下移动一行 3.快速复制一行代码 ShiftAltUp ShiftAltDown 4.快速保存 Ctrl S 5.快速查…

2011年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天是2023年12月30日,距离2024年元旦新年还有2天时间,先预祝所有的读者和小读者想今年工作、学习进步!幸福平安! 今天距离2024年1月19日的AMC8正式比赛只有20天的时间,我们继续来看AMC8竞赛的历年真题典型考题和解析…

VSCode Python开发环境配置

目录 1 插件安装2 Debug和测试配置常见问题 1 插件安装 1.1 基础编译插件,Python、Pylance 1.2 修改语言服务器类型,进入用户配置页面搜索Python: Language Server,选择Pylance(一定要修改可以提供很多语法提示) 1…