occNeRF:使用神经辐射场进行多摄像头自监督占据预测

文章:OccNeRF: Self-Supervised Multi-Camera Occupancy Prediction with Neural Radiance Fields

作者:Chubin Zhang, Juncheng Yan , Yi Wei ,Jiaxin Li, Li Liu, Yansong Tang , Yueqi Duan, Jiwen Lu

编辑:点云PCL

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

摘要

作为基于视觉感知的基本任务,3D占据预测重建周围环境的3D结构,它为自动驾驶规划和导航提供详细信息。然而大多数现有方法严重依赖于LiDAR点云生成占据的地面真实性,而这在基于视觉的系统中是不可用的。本文提出了一种用于自监督多摄像头占据预测的OccNeRF方法,与有界的3D占据标签不同,需要考虑带有原始图像监督的无界场景。为了解决这个问题,我们对重建的占据场进行参数化并重新组织采样策略。采用神经渲染将占据场转换为多摄像头深度图,通过多帧光度一致性进行监督。此外对于语义占据预测,我们设计了几种策略来优化提示并过滤经过预训练的开放词汇2D分割模型的输出。在nuScenes数据集上进行的自监督深度估计和语义占据预测任务的大量实验证明了我们方法的有效性。代码开源

https://github.com/LinShan-Bin/OccNeRF。

图片

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

主要贡献

本文提出了一种OccNeRF方法,旨在进行自监督的多摄像头占据预测。首先利用2D主干提取多摄像头的2D特征,为了节省内存,直接插值2D特征以获取3D体积特征,而不是使用繁重的跨视图注意力。在先前的工作中,体积特征由有界占据标签(例如50米范围)监督,它们只需以有限分辨率预测占据情况。不同的是对于自监督训练,我们应考虑无界场景,因为RGB图像感知的范围是无限的。为此对占据场进行参数化以表示无界环境。具体而言,将整个3D空间分为内部和外部区域。内部区域保持原始坐标,而外部区域采用收缩坐标。此外,设计了一种特定的采样策略,以将参数化的占据场转换为具有神经渲染的多摄像头深度图。

监督预测占据的一种直接方式是计算渲染图像与训练图像之间的损失,这与NeRF中使用的损失函数相同。不幸的是实验结果显示这种方式效果不佳。相反利用时间光度损失作为监督信号。为更好地利用时间线索,我们执行多帧光度约束。对于语义占据,提出了三种策略将类别名称映射到提示,这些提示被馈送到预训练的开放词汇分割模型以获取2D语义标签。然后使用额外的语义信息来渲染语义图像,并由这些标签进行监督。为验证我们方法的有效性,在进行了自监督的多摄像头深度估计和语义占据预测任务的实验证明。实验结果显示,我们的OccNeRF在nuScenes数据集上相对其他深度估计方法表现优异,并且在与一些全监督占据方法相比实现了可比较的性能。

内容概述

概述

图2展示了我们方法的流程。使用多相机图像作为输入,我们首先利用2D主干提取 N 个相机的特征。然后将2D特征插值到3D空间以获取具有已知内参和外参的体素特征。为了表示无界场景,本文提出了一个坐标参数化来将无限范围缩小到有限的占据场。体素渲染用于将占据场转换为多帧深度图,这些深度图通过光度损失进行监督,最后将展示了我们如何使用预训练的开放词汇分割模型获取2D语义标签。

图片

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

参数化占据场

在自监督设置中,考虑到无界场景,需要处理高分辨率的内部区域和收缩空间内表示的外部区域。通过引入可调的兴趣区域和收缩阈值的变换函数,对每个体素网格的坐标进行参数化。这个函数采用了两个部分,分别用于内部和外部区域,以表示无界环境。通过特定的采样策略将参数化的占据场转换为多摄像头深度图,利用神经渲染进行监督。在获取3D体素特征时,我们通过投影和双线性插值,将体素映射回车体坐标系统,再投影到2D图像特征平面,最后通过平均多摄像头2D特征,使用3D卷积网络提取特征并预测占据输出。

图片

原始空间和参数化空间的比较,原始空间利用传统的欧几里得空间,强调线性映射,参数化空间分为两部分:内部空间和外部空间,前者具有线性映射以保留高分辨率细节,后者的点分布与距离成反比,便于表示有限空间域内的无限范围。

多相机深度估计

多相机深度估计的方法旨在将占据场投影到多相机深度图中。这种方法使用了体素渲染,该技术在基于 Neural Radiance Fields (NeRF) 的方法中得到了广泛应用。对于给定像素的深度值,通过从相机中心沿着指向像素的方向投射射线,并在3D空间中对射线进行采样来获取密度信息。通过体素渲染,将这些密度信息转换为深度图。关键问题之一是如何在作者提出的坐标系统中进行采样,以避免不平衡的点分布。作者通过在参数化坐标上进行均匀采样,然后使用坐标系统的逆函数计算采样点在车辆坐标系中的值来解决这个问题。此外,为了更好地利用时间信息,作者采用了光度损失的方法,通过投影相邻帧到当前帧,并计算渲染图像与原始图像之间的差异来进行监督学习。这种方法的优点在于能够适应大规模场景和少数视图的监督,使得NeRF在复杂的视图合成任务中更容易收敛。

开放的词汇语义监督

通过使用多相机图像的2D语义标签,为语义3D占据预测提供了像素级别的监督。这有助于网络更好地捕捉体素之间的几何一致性和空间关系。相较于先前通过将3D LiDAR点投影到图像空间以获取2D标签的方法,该方法的目标是在完全以视觉为中心的系统中预测语义占据,且仅利用2D数据。

为了获取2D语义标签,研究者使用了预训练的开放词汇模型GroundedSAM,而不依赖于2D或3D的地面真实数据。这种方法具有高效性和可推广性,适用于各种数据集。在处理不同类别时,采用了三种提示生成策略,包括同义词替换、将单词拆分为多个实体以增强区分性,以及整合附加信息。这些提示用于Grounding DINO,生成检测边界框、logits和短语,通过SAM生成M个精确的分割二进制掩码。接着,通过将Grounding DINO logits与二进制掩码相乘,为每个像素生成{li}。最终的像素标签Spix通过映射函数ψ(·)将li的索引映射到与给定类别名称语义密切匹配的标签。如果像素未被分配到任何类别且得到M个零logits,则将其标记为“uncertain”。这一系列生成的检测边界框和语义标签在图中呈现。为了充分利用2D语义监督,首先使用了一个具有c输出通道的语义头将提取的体素特征映射到语义输出,表示为S(x)。再次使用体素渲染,将体素特征映射到语义输出,得到每像素的语义渲染输出Sˆpix。为提高效率,未渲染标记为“uncertain”的像素,且仅渲染中央帧并减少采样比率。总损失函数包括光度损失和语义损失,其中语义损失受到权重λ的调控。生成的检测边界框和语义标签如图3所示。

图片

图3,在我们的方法中,由我们的Grounding DINO生成的检测边界框和由SAM预测的语义标签显示出与LiDAR点投影标签相当的精度。

实验

数据集:在nuScenes数据集上进行了实验,包括600个训练场景、150个验证场景和150个测试场景。该数据集共有大约40000帧图像,涵盖17个类别。为了自监督深度估计,通过将激光雷达点云投影到每个视图中,获得深度地面真值进行评估。深度预测和地面真值被剪裁为0.1m到80m。语义占据预测的评估使用了Occ3D-nuScenes基准,每个样本的范围为[-40m, -40m, -1m, 40m, 40m, 5.4m],体素大小为0.4m。在17个类别中,'other'和'other flat'类别未被考虑,因为开放词汇模型难以识别语义模糊的文本。

实现细节:采用ResNet-101作为2D骨干网络,使用ImageNet预训练权重提取多摄像头特征。输入图像和渲染深度图的分辨率分别设置为336x672和180x320。预测的占据场形状为300x300x24,其中中央的200x200x16个体素表示内部区域,范围为-40m到40m(X和Y轴),-1m到5.4m(Z轴),与Occ3D-nuScenes定义的范围相同。进行了3帧深度图的渲染,由5帧原始图像序列(1个关键帧和4个相邻的非关键帧)进行监督。α值设置为0.667。预测语义占据采用Grounded-SAM作为预训练开放词汇模型,文本和框的阈值设置为0.2,损失权重λ为0.05。所有实验在8个A100上进行。

评估指标:对于深度估计,使用Abs Rel、Sq Rel、RMSE、RMSE log和δ < t等深度评估指标。其中,Abs Rel是主要指标,评估过程中不执行中值缩放,因为该方法可以预测实际世界的比例。对于语义占据预测,采用了所有类别的平均交并比(mIoU)进行评估。评估仅在摄像头视图中的'observed'体素上执行,遵循Occ3D-nuScenes中的评估工具。整体而言,实验设计详尽,采用了流行的数据集和标准评估指标,实现细节清晰,并在实验中取得了令人满意的结果。

自监督深度估计

 表1显示了在nuScenes数据集上进行的自监督多摄像头深度估计实验结果。在这个实验中没有使用预训练的分割模型。结果是在6个摄像头上平均的。我们可以看到,该方法在性能上远远优于其他最先进的方法,展示了OccNeRF的有效性。与深度估计方法相比,该方法直接在3D空间中预测占据情况,自然地保证了多摄像头的一致性。此外无需使用后处理将2D深度图提升为3D点云。

图片

表1,nuScenes数据集上自监督多摄像机深度估计的比较

语义占据预测 

在Occ3D-nuScenes数据集上进行语义占据预测实验,由于预训练的开放词汇模型无法识别模糊的提示,比如'other'和'other flat',在评估中移除了这两个类别。对于另一种自监督方法SimpleOcc,使用相同的2D语义标签,这是从预训练模型中获取的,以进行公平比较。

图片

表2,Occ3D nuScenes数据集上的3D占用预测性能。由于“other”和“other flat”类是开放词汇模型的无效提示,因此我们在评估过程中不考虑这两个类mIoU*是原始结果,mIoU是忽略类的结果。

如表2所示,我们的方法在性能上远远优于SimpleOcc,甚至与一些全监督方法具有可比性的性能。对于一些类别,比如'drivable space'和'manmade',我们的方法令人惊讶地超越了所有监督方法。然而注意到对于一些小物体类别(例如自行车和行人),我们的方法与最先进的监督方法之间存在较大差距。可能的原因是当前的开放词汇模型通常会忽略小物体,并且无法提供强有力的监督。

消融研究 

监督方法:一个直接的监督信号是渲染和真实像素颜色之间的差异,这与NeRF中使用的损失函数相同。

图片

表3,监督方法的消融研究“深度”表示是否使用时间光度约束来训练模型。如果没有,我们直接使用NeRF]中的监督方法。”Multi表示我们是否使用多帧渲染和监督。

如表3所示,这种监督方法导致了糟糕的性能。我们将此归因于NeRF在仅有六个视图的情况下学习场景结构所面临的挑战。相反,时间光度损失可以更好地利用相邻帧中的几何线索,这是自监督深度估计方法中的黄金指标。此外,多帧训练提供更强的监督,进一步提升了模型的性能。 

图片

表4,坐标参数化的消融研究CC意味着我们是否采用合同坐标“重新采样”表示我们是否利用了所提出的采样策略。

坐标参数化:表4显示了坐标参数化的消融研究。与占据标签不同,光度损失假设图像感知的范围是无限的。收缩坐标的目的是在有界占据中表示无界场景。从表中我们可以看到,缩小的坐标极大地提升了模型的性能。此外,由于参数化坐标不是欧几里得3D空间,所提出的采样策略比原始自车坐标中的常规均匀采样效果更好。 

语义标签生成:对Occ3d-nuScenes数据集上的语义标签生成进行了消融研究。首先将Grounding DINO 的对数更改为SAM的对数以获取语义标签。如图5所示,发现SAM的对数更嘈杂且不连续。然后还将原始类别名称提供给开放词汇模型,而不使用提出的提示策略。然而这种方法导致了更差的结果,因为原始类别名称无法提供精细的语义指导并引入了歧义。

图片

图5,不同语义标签生成方法的比较,与用SAM logits生成语义标签或输入原始类别名称相比,我们的语义标签更精确,具有更好的连续性。

可视化

为了进一步展示我们方法的优越性,我们在图6和7中提供了一些定性结果。

图片

图6。nuScenes数据集的定性结果,我们的方法可以预测具有纹理细节和细粒度占用的视觉吸引力的深度图。

图片

图7。nuScenes数据集上语义占用的定性结果。我们的方法可以预测具有良好几何对应关系的视觉吸引力的语义占用。

从图6可以看出该方法能够生成具有细致细节的高质量深度图和占据图。对于语义占据预测,如图7所示OccNeRF能够重建周围场景的稠密结果,特别是对于大范围的类别,如“可驾驶空间”和“人造物体”。

局限性和未来工作

在推断过程中,我们研究了单帧占据预测,没有考虑多帧信息作为输入,因此该方法无法预测占据流。在未来的工作中将尝试使用预训练的光流模型监督占据流,并采用多帧多相机图像作为输入。此外另一个限制是我们方法的性能受限于开放词汇分割模型的输出,这些模型通常忽略小物体。

总结

在本文提出了OccNeRF用于自监督的多相机3D占据预测。为了解决无边界场景的问题,我们提出了参数化占据场,将无限空间缩小到有界的体素。为了利用时间光度损失,在参数化坐标上执行体素渲染,以获得多帧多相机深度图。对于语义占据预测,我们利用开放词汇模型使用提出的提示清理策略获取2D语义伪标签,在nuScenes数据集上的实验结果展示了我们方法的有效性。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

自动驾驶中基于光流的运动物体检测

基于语义分割的相机外参标定

综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

高速场景下自动驾驶车辆定位方法综述

Patchwork++:基于点云的快速、稳健的地面分割方法

PaGO-LOAM:基于地面优化的激光雷达里程计

多模态路沿检测与滤波方法

多个激光雷达同时校准、定位和建图的框架

动态的城市环境中杆状物的提取建图与长期定位

非重复型扫描激光雷达的运动畸变矫正

快速紧耦合的稀疏直接雷达-惯性-视觉里程计

基于相机和低分辨率激光雷达的三维车辆检测

用于三维点云语义分割的标注工具和城市数据集

ROS2入门之基本介绍

固态激光雷达和相机系统的自动标定

激光雷达+GPS+IMU+轮速计的传感器融合定位方案

基于稀疏语义视觉特征的道路场景的建图与定位

自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)

用于三维点云语义分割的标注工具和城市数据集

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

TOF相机原理介绍

TOF飞行时间深度相机介绍

结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案

开源又优化的F-LOAM方案:基于优化的SC-F-LOAM

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

易扩展的SLAM框架-OpenVSLAM

基于鱼眼相机的SLAM方法介绍

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

并发前置知识二:多线程不安全的本质

一、前言 这些年&#xff0c;我们的cpu、内存和i/o设备都在不断迭代&#xff0c;不断朝着更快的方向努力。但是&#xff0c;在这个快速发展的过程中&#xff0c;有一个核心矛盾一直存在&#xff0c;就是这三者的速度。 cpu是天上1天&#xff0c;内存是地上1年cpu是天上1天&am…

配电柜监测:别再人工巡检!一文讲透!

随着现代社会对电力的依赖性不断增强&#xff0c;各行各业对电力系统的可靠性和安全性提出了更高的要求。 配电柜作为电力系统的核心组成部分&#xff0c;其监控与管理显得尤为重要。为了满足企业对电力系统监测的需求&#xff0c;配电柜监控系统应运而生。 客户案例 制造企业…

ASP .net core微服务实战(杨中科)

背景&#xff1a; 主要是思考下&#xff0c;我们为什么要用微服务&#xff1f; 微服务我现在理解是&#xff1a;提供了我们一种模块化的手段&#xff0c;一个服务负责一种类型的业务&#xff0c;是一种面对复杂问题进行拆分的方式&#xff0c;但是也会引入一些中间件&#xf…

视频智能分析/边缘计算AI智能分析网关V4区域入侵检测算法如何配置?

边缘计算AI智能分析网关&#xff08;V4版&#xff09;部署了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;并上报识别结果&#xff0c;并能进行语音告警播放。算法配置后&#xff0c;即可对监控视频流进行实时检测&#xf…

2024.1.8 Day04_SparkCore_homeWork

目录 1. 简述Spark持久化中缓存和checkpoint检查点的区别 2 . 如何使用缓存和检查点? 3 . 代码题 浏览器Nginx案例 先进行数据清洗,做后续需求用 1、需求一&#xff1a;点击最多的前10个网站域名 2、需求二&#xff1a;用户最喜欢点击的页面排序TOP10 3、需求三&#x…

制造知识普及--MES系统中的调度排产管理

要想弄清楚MES系统调度排产的管理机制&#xff0c;则要首先搞清楚车间调度排产是一套怎样的工作流程&#xff0c;它的难点在什么地方&#xff1f; 生产调度指的是具体组织实现生产作业计划的工作&#xff0c;是对执行生产作业计划过程中发生的问题和可能出现的问题&#xff0c…

PingCAP 受邀参加 FICC 2023,获 Open100 世纪全球开源贡献奖

2023 年 12 月&#xff0c;2023 国际测试委员会智能计算与芯片联邦大会&#xff08;FICC 2023&#xff09;在海南三亚举办&#xff0c;中外院士和数十位领域专家莅临出席。 大会现场 &#xff0c;开放源代码促进会创始人 Bruce Perens 颁发了 Open100 世纪全球开源贡献奖&…

WXUI 基于uni-app x开发的高性能混合UI库

uni-app x 是什么&#xff1f; uni-app x&#xff0c;是下一代 uni-app&#xff0c;是一个跨平台应用开发引擎。 uni-app x 没有使用js和webview&#xff0c;它基于 uts 语言。在App端&#xff0c;uts在iOS编译为swift、在Android编译为kotlin&#xff0c;完全达到了原生应用…

GPT Store,是否会成为下一个App Store?

经历了一场风波后&#xff0c;原本计划推出的GPT Store终于成功上线。OpenAI在北京时间1月11日推出了GPT Store&#xff0c;被广泛视为类似于苹果的"App Store"&#xff0c;为人工智能应用生态系统迈出了重要一步。然而&#xff0c;OpenAI要想将GPT Store打造成苹果般…

vue知识-05

聊天室案例(django接口) # chat.hetm<<script src"/static/axios.js"></script><script src"/static/vue.js"></script><body> <div id"app"><h1>聊天室</h1><button click"handleS…

YOLOv8涨点改进:多层次特征融合(SDI),小目标涨点明显,| UNet v2,比UNet显存占用更少、参数更少

💡💡💡本文独家改进:多层次特征融合(SDI),能够显著提升不同尺度和小目标的识别率 如何引入到YOLOv8 1)替代原始的Concat; 💡💡💡Yolov8魔术师,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你…

汽车级线性电压稳压器LM317MBSTT3G:新能源汽车的理想之选

LM317MBSTT3G是一款可调三端子正向线性稳压器&#xff0c;能够在 1.2 V 至 37 V 的输出电压范围内提供 500 mA 以上的电流。此线性电压稳压器使用非常简便&#xff0c;仅需两个外部电阻即可设置输出电压。另外&#xff0c;它采用内部电流限制、高温关断和安全区域补偿&#xff…

npm发布js函数库

直接上干货吧 首先进入npm官网注册账号下面会用到 1.新建文件夹例如 chengyu 2.cdm chengyu 3.npm init &#xff08;填写一些基本信息一直y就可以 后面可以直接修改文件&#xff09;结束之后多了一个package.json文件就是下面的样子 {"name": "brogramme…

多测师肖sir___ui自动化测试po框架讲解版

po框架 一、ui自动化po框架介绍 &#xff08;1&#xff09;PO是Page Object的缩写 &#xff08;2&#xff09;业务流程与页面元素操作分离的模式&#xff0c;可以简单理解为每个页面下面都有一个配置class&#xff0c; 配置class就用来维护页面元素或操作方法 &#xff08;3&am…

Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?直接在yml中配置线程池

在 Spring 中&#xff0c;Async 注解用于将方法标记为异步执行的方法。当使用 Async 注解时&#xff0c;该方法将在单独的线程中执行&#xff0c;而不会阻塞当前线程。这使得方法可以在后台执行&#xff0c;而不会影响主线程的执行。 在您提供的代码示例中&#xff0c;a1() 和…

【深蓝学院】手写VIO第11章--Square Root Bundle Adjustment

文章目录 1. 文章贡献2. 在Jacobian中添加 d a m p \sqrt{damp} damp ​等价于在Hessian中添加damp2. Givens旋转3. Jacobian推导4. Refernece 1. 文章贡献 这篇文章最大的贡献在于证明了对 J l Jl Jl进行QR分解&#xff0c;对normal equation左乘 Q T Q^T QT等价于Schur comp…

创建 SSL证书并应用于WebSocket

写在前面 由于上一篇介绍 如何使用Fleck创建WebSocket服务器 &#xff0c;感觉不够完善&#xff0c;因为生产环境中肯定是需要用到ssl的&#xff0c;而创建或申请ssl证书&#xff0c;相对而言是比较繁琐的事情&#xff0c;特别是本地如果要构建一个使用ssl的测试环境时&#x…

记录一次数据中包含转义字符\引发的bug

后端返回给前端的数据是: { "bizObj": { "current": 1, "orders": [ ], "pages": 2, "records": [ { "from": "1d85b8a4bd33aaf99adc2e71ef02960e", …

【办公技巧】Word功能区灰色显示不能编辑,怎么破?

Word文档可以设置加密来保护文件禁止修改&#xff0c;但是在word文档中设置限制编辑功能时对它的作用是否有详细的了解呢&#xff1f;今天为大家介绍word限制编辑功能的作用以及忘记了限制编辑密码该如何解决。 设置限制大家应该都清楚&#xff0c;就是点击工具栏中的审阅 – …

如何让GPT/GPT4成为你的编程助手?

详情点击链接&#xff1a;如何让GPT/GPT4成为你的编程助手&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二…