经典文献阅读之--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.rhkb.cn/news/227157.html

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

相关文章

苹果Mac电脑甘特图管 EasyGantt最新 for mac

EasyGantt提供直观的界面,让用户能够轻松创建具有时间轴视图的甘特图。你可以添加并排列任务、设置任务的开始和结束日期、调整任务之间的依赖关系等。 任务管理:软件允许你添加、编辑和删除任务,设定任务的优先级和状态,并为每个…

Spring AOP<一>简介与基础使用

spring AOP 基础定义 含义使用切面组织多个Advice,Advice放在切面中定义。也就是说是定义通知的自定义类。自定义的AOP类Aspect连接点方法调用,异常抛出可以增强的点JoinPoint :也就是**被增强的方法的总称,可以获取具体方法的信息&#xff…

初识Sringboot3+vue3环境准备

环境准备 后端环境准备 下载JDK17https://www.oracle.com/java/technologies/downloads/#jdk17-windows 安装就下一步下一步,选择安装路径 配置环境 环境 JDK17、IDEA2021、maven3.5、vscode 后端 基础:javaSE,javaWeb、JDBC、SMM框架(Spr…

Unity JSON编码解码之LitJson 深度剖析

把LitJson的代码库放入到项目中,如图所示:JSON在游戏开发中是一种序列化/反序列化常用的技术,把游戏相关的数据,如地图组成,通过JSON编码,序列化成JSON文本,传输或存储, 要使用的时候再通过JSON技术把文本解析成数据对象&#xff…

竞赛保研 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

SSM驾校预约管理系统----计算机毕业设计

项目介绍 本项目分为管理员、教练、学员三种角色, 管理员角色包含以下功能: 学员管理、教练管理、车辆管理、关系管理、车辆维修管理、个人中心等功能。 教练角色包含以下功能: 我的课程、我的学员、车辆中心、个人中心等功能。 学员角色包…

跟着LearnOpenGL学习12--光照贴图

文章目录 一、前言二、漫反射贴图三、镜面光贴图3.1、采样镜面光贴图 一、前言 在跟着LearnOpenGL学习11–材质中,我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观&#xf…

【开源】基于JAVA语言的创意工坊双创管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、系统展示四、核心代码4.1 查询项目4.2 移动端新增团队4.3 查询讲座4.4 讲座收藏4.5 小程序登录 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的创意工坊双创管理…

TwIST算法MALTLAB主程序详解

TwIST算法MALTLAB主程序详解 关于TwIST算法的具体原理可以参考: 链接: https://ieeexplore.ieee.org/abstract/document/4358846 链接: https://blog.csdn.net/jbb0523/article/details/52193209 该算法的MATLAB源代码: 链接: http://www.lx.it.pt/~bi…

wireshark access/trunk/hybrid报文分析

1,access接口 发送带vlan的报文 wireshark交换机配置 [Huawei-GigabitEthernet0/0/1] [Huawei-GigabitEthernet0/0/1]port link-type access [Huawei-GigabitEthernet0/0/1]port default vlan 100 [Huawei-GigabitEthernet0/0/2]port link-type access [Huawei-Gig…

【HarmonyOS】鸿蒙开发简介与项目基础配置演示

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…

Elasticsearch:升级索引以使用 ELSER 最新的模型

在此 notebook 中,我们将看到有关如何使用 Reindex API 将索引升级到 ELSER 模型 .elser_model_2 的示例。 注意:或者,你也可以通过 update_by_query 来更新索引以使用 ELSER。 在本笔记本中,我们将看到使用 Reindex API 的示例。…

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 (二)实现步骤1、Map阶段实现(1)创建Maven项目(2)添加相关依赖…

命令模式-实例使用

未使用命令模式的UML 使用命令模式后的UML public abstract class Command {public abstract void execute(); }public class Invoker {private Command command;/*** 为功能键注入命令* param command*/public void setCommand(Command command) {this.command command;}/***…

k8s之陈述式资源管理

1.kubectl命令 kubectl version 查看k8s的版本 kubectl api-resources 查看所有api的资源对象的名称 kubectl cluster-info 查看k8s的集群信息 kubectl get cs 查看master节点的状态 kubectl get pod 查看默认命名空间内的pod的信息 kubectl get ns 查看当前集群所有的命…

Android : 使用GestureOverlayView进行手势识别—简单应用

示例图: GestureOverlayView介绍: GestureOverlayView 是 Android 开发中用于识别和显示手势的视图组件。它允许用户在屏幕上绘制手势,并且应用程序可以检测和响应这些手势。以下是关于 GestureOverlayView 的主要特点: 手势识别…

Large-Precision Sign using PBS

参考文献: [CLOT21] Chillotti I, Ligier D, Orfila J B, et al. Improved programmable bootstrapping with larger precision and efficient arithmetic circuits for TFHE[C]//Advances in Cryptology–ASIACRYPT 2021: 27th International Conference on the T…

使用云渲染节省成本与提升渲染速度的秘诀

我们在提交效果图到云渲染平台时,有时会因为各种原因,如不小心设置错了参数,导致渲染时间变长,渲染费用增加。这不仅增加了项目的成本,还可能影响到整个项目的进度。面对这一问题,炫云提供了小光子、保守优…

Linux第一个小程序-进度条(c语言版)

目录 行缓冲区概念: 行缓冲区代码演示: ​编辑进度条代码 1:memset函数: 2:const char* lable"|/-\\"; 3:usleep C语言 usleep 函数的功能和用法: 4:进度条代码的实…

vue3 组件之间传值

vue3 组件之间传值 非常好,为啥突然开这样一篇博文,首先是因为 vue3 是未来发展的趋势。其次,vue 官方已经确认,将于2023年最后一天停止对 vue2 项目的维护,这个是官方发出的通知,并且呢,尤雨溪…