经典文献阅读之--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.mzph.cn/news/585408.shtml

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

相关文章

【 ATU NXP-SBC 系列 】FS26XX GUI_OTP烧录与模拟操作

1. 概述 FS26XX 为了其安全性需求,针对重要暂存器的配置,使用 one time program 的功能,避免不小心修改重要暂存器,导致发生重大意外,使系统丧失功能安全性。FS26XX 也可以让使用者先测试 OTP 后的结果功能&#xff0…

微信小程序开发系列-03全局配置中的“window”和“tabBar”

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…

C# 如何使用?、? 和 ??的区别和使用案例

目录 ? 运算符 使用案例 ?? 运算符 使用案例 总结 在 C# 中,? 和 ?? 运算符在处理 null 值时起着不同的作用,并且具有特定的使用场景。 ? 运算符 ? 运算符,也称为空条件运算符,在 C# 6.0 及更高版本中引入。它允许…

08-React路由(Router 6版本)

Router5和Router6的变化 部分标签产生了变化,之前的标签都有了替(主要集中在Route匹配上),所以这里先回顾一下Router5,同时引出Router6的一些新特性 其次,React官方在推出Router6之后,就明确推…

OpenCV-Python(9):图像基础操作

目录 学习目标 获取图像像素并修改像素值 获取图像属性 图像ROI 拆分及合并图像通道 图像边缘扩充 学习目标 获取像素值并修改获取图像的属性(信息)图像的ROI获取图像通道拆分及合并图像扩边 获取图像像素并修改像素值 几乎所有这些操作与Numpy 的关系要比与OpenCV 的…

【电商项目实战】MD5登录加密及JSR303自定义注解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《电商项目实战》。🎯🎯 &am…

飞书文档如何转markdown

飞书文档如何转markdown 实现效果实现步骤其他方法 实现效果 导出的结果挂在这了 https://thinkasany.github.io/docs/#/ 实现步骤 以https://upyun.feishu.cn/docx/KERsd1DpioPb1xxye9VcuXbhnBC这篇文章为例 使用工具 https://github.com/Wsine/feishu2md,提供了…

案例-旋转的太极图案(HTML+CSS)

使用css的动画变换效果完成“ 旋转太极“。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;background-color: antiquewhite;}.tj{width: 0;height: 300px;/* border…

AWTK 开源串口屏开发(4) - 采用数据

AWTK 开源串口屏开发 - 数据采集 1. 功能 数据采集是一个常用的功能&#xff0c;MCU 定时采集数据&#xff08;如环保设备定时采样空气中的污染物&#xff09;&#xff0c;并发送采样数据到串口屏&#xff0c;串口屏可以显示采样数据&#xff0c;也可以对采样数据进行管理&am…

68.乐理基础-打拍子-大附点与变体

上一节内容&#xff1a;66.乐理基础-打拍子-小切分-CSDN博客&#xff0c;只所以没有67因为67可以不用知道&#xff0c;67节内容在&#xff1a;※-打拍子&#xff08;8&#xff09;-一拍内的变体1-乐理教程-腾讯课堂 (qq.com) 大附点&#xff1a;大附点这个名字不是通用的&…

基于element-ui table组件的二次封装

文章目录 配置数据基础分析封装 el-table-column使用插槽强化结语 相信 element-ui 大家都有所耳闻&#xff0c;table 也是老朋友了&#xff0c;不过在使用它的时候大家是怎么使用的呢&#xff1f;是直接在官网上cv使用吗&#xff1f;这种方式&#xff0c;我相信写起来会有点小…

【教学类-43-02】20231226 九宫格数独2.0(n=9)(ChatGPT AI对话大师生成 回溯算法)

作品展示&#xff1a; 背景需求&#xff1a; 大4班20号说&#xff1a;我不会做这种&#xff08;九宫格&#xff09;&#xff0c;我做的是小格子的&#xff0c; 他把手工纸翻过来&#xff0c;在反面自己画了矩阵格子。向我展示&#xff1a; “我会做这种&#xff01;” 原来他…

OCR在审核应用落地

本文字数&#xff1a;6686字 预计阅读时间&#xff1a;35分钟 01 背景 1、业务背景 在传统视频审核场景中&#xff0c;审核人员需要对进审视频中的文字内容进行逐一审核&#xff0c;避免在文字上出现敏感词、违禁词或者广告等相关词汇。这种人工审核费时费力&#xff0c;并且由…

python+django网上购物商城系统o9m4k

语言&#xff1a;Python 框架&#xff1a;django/flask可以定制 软件版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发工具pycharm/vscode都可以 前端框架:vue.js 系统使用过程主要涉及到管理员和用户两种角色&#xff0c;主要包含个…

TSR勾画学习

1&#xff1a;勾画建议 文献&#xff1a;Scoring the tumor-stroma ratio in colon cancer: procedure and recommendations 主要讲述的是结肠癌(CRC)的勾画建议和流程。 1&#xff0c;切片选择建议&#xff1a; 原发肿瘤的载玻片最具侵袭性的部分&#xff08;即常规病理学…

PiflowX组件-ReadFromKafka

ReadFromKafka组件 组件说明 从kafka中读取数据。 计算引擎 flink 有界性 Unbounded 组件分组 kafka 端口 Inport&#xff1a;默认端口 outport&#xff1a;默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号分隔的Ka…

【目标检测】yolov8结构及代码分析

yolov8代码:https://github.com/ultralytics/ultralytics yolov8的整体结构如下图&#xff08;来自mmyolo&#xff09;&#xff1a; yolov8的配置文件&#xff1a; # Ultralytics YOLO &#x1f680;, AGPL-3.0 license # YOLOv8 object detection model with P3-P5 outputs.…

偏好对齐RLHF-OpenAI·DeepMind·Anthropic对比分析

OpenAI paper: InstructGPT, Training language models to follow instructions with human feedback paper: Learning to summarize from human feedback Introducing ChatGPT 解密Prompt系列4介绍了InstructGPT指令微调的部分&#xff0c;这里只看偏好对齐的部分 样本构建…

Zookeeper-Zookeeper特性与节点数据类型详解

1.Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂目容易出错的分布式一致性服务封装起来&#xff0c;构成一高效可靠的原语集&…

Python列表的介绍与操作 增改查,连接,赋值,复制,清空

列表 在日常中我们通过给变量赋值来存储数据,比如 a "hello" b "world" c "你好啊" d "....."由于变量一次只能存储一个数据,但我们如果想一次存储多个数据,的话这样存储会很复杂,所以,我们可以通过列表 列表(List)是Python中的…