【论文笔记】NeuRAD: Neural Rendering for Autonomous Driving

2023-12-24 13:15

本文主要是介绍【论文笔记】NeuRAD: Neural Rendering for Autonomous Driving,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:https://arxiv.org/abs/2311.15260

1. 引言

神经辐射场(NeRF)应用在自动驾驶中,可以创建可编辑的场景数字克隆(可自由编辑视角和场景物体),以进行仿真。但目前的方法或者需要大量的训练时间,或者对传感器的建模过于简单(导致仿真和真实数据的间隙),或者性能较低。
在这里插入图片描述
本文提出NeuRAD,一种可编辑的新视图合成模型。该方法可以处理大型自动驾驶场景,建模了重要的传感器特性(如相机的卷帘式快门、激光雷达的光束发散)。此外,本文的模型简单,其中静态和动态元素通过位置嵌入分辨。NeuRAD有泛化性和SotA性能。

3. 方法

本文的NeuRAD在各数据集上均有低重建误差和推断时间,其总览如下图所示。
在这里插入图片描述

3.1 场景表达和传感器建模

神经场景表达:本文使用神经特征场(NFF,是NeRF和类似方法的推广)。给定位置 x x x和视线方向 d d d,NFF输出隐式几何 s s s和特征向量 f f f,并进行体积渲染。

为提取射线 r ( τ ) = o + τ d r(\tau)=o+\tau d r(τ)=o+τd的特征,沿射线采样 N r N_r Nr个点,并使用传统的alpha合成方法聚合这些采样点的特征:
f ( r ) = ∑ i = 1 N r w i f i , w i = α i ∏ j = 1 i − 1 ( 1 − α j ) (1) f(r)=\sum_{i=1}^{N_r}w_i f_i,w_i=\alpha_i\prod_{j=1}^{i-1}(1-\alpha_j)\tag{1} f(r)=i=1Nrwifi,wi=αij=1i1(1αj)(1)
这里 α i \alpha_i αi表示点 x i = o + τ i d x_i=o+\tau_i d xi=o+τid的不透明度, w i w_i wi为沿射线从原点到 x i x_i xi的累积透射率。本文使用能恢复高质量几何的有符号距离函数(SDF)表达隐式几何并近似得到不透明度:
α i = 1 1 + e β s i \alpha_i=\frac{1}{1+e^{\beta s_i}} αi=1+eβsi1
其中 s i s_i si x i x_i xi处的SDF值, β \beta β为可学习参数。使用更精确的SDF公式能提高性能,但需要对每个3D点进行梯度计算,从而影响运行时间。

相机建模:对相机射线集合进行体积渲染,生成特征图 F ∈ R H f × W f × N f \mathcal{F}\in\mathbb{R}^{H_f\times W_f\times N_f} FRHf×Wf×Nf。然后使用CNN上采样渲染得到更高分辨率的最终图像 I ∈ R H I × W I × 3 \mathcal{I}\in\mathbb{R}^{H_I\times W_I\times 3} IRHI×WI×3。这样可以减少渲染的射线数量。

激光雷达建模:将激光雷达的发射脉冲视为射线,进行体积渲染。设激光雷达点对应的射线为 r ( τ ) = o + τ d r(\tau)=o+\tau d r(τ)=o+τd,其中 o o o为激光雷达原点, d d d为归一化光束方向。射线的期望深度 E [ D l ( r ) ] = ∑ i = 1 N r w i τ i \mathbb{E}[D_l(r)]=\sum_{i=1}^{N_r}w_i\tau_i E[Dl(r)]=i=1Nrwiτi。预测强度时,根据式(1)得到特征,并通过MLP。

射线丢弃的建模在激光雷达的建模中很重要,但基于物理的建模不可行,因其依赖低级传感器的(未公开的)检测逻辑。使用MLP将(1)式的输出特征映射为射线丢弃概率 p d ( r ) p_d(r) pd(r)。由于使用的数据集未作考虑,本文未建模激光雷达光束的第二返回。

3.2 扩展神经特征场

将神经特征场扩展为学习函数 ( s , f ) = N F F ( x , t , d ) (s,f)=NFF(x,t,d) (s,f)=NFF(x,t,d),其中时间 t t t作为输入,以建模动态物体。

结构:给定位置 x x x和时间 t t t,本文查询参与者感知的哈希编码。然后将编码送入小型MLP计算有符号距离 s s s和中间特征 g ∈ R N g g\in\mathbb{R}^{N_g} gRNg。使用球面谐波编码视线方向 d d d,使模型捕捉视线相关的特征。最后,使用MLP联合处理方向编码和 g g g,使用 g g g的跳跃连接增强后,得到 f f f

场景组成:本文将场景分解为两个部分,静态背景和刚性动态参与者集合,其中每个动态参与者由一个3D边界框和SO(3)姿态定义。其目的有二:简化学习过程与实现可编辑性(参与者可以在训练完成后被移动)。本文使用统一的NFF处理各场景元素,其中动态和静态成分的区分来自于参与者感知的哈希编码。编码策略很直接:若给定的样本 ( x , t ) (x,t) (x,t)位于边界框内,就使用一种函数编码;否则使用另一种函数。

无界静态场景:本文对静态场景使用多分辨率哈希网格。但由于静态场景的无界性,本文使用了MipNeRF-360的收缩方法,从而能使用单一哈希网格精确表达附近的道路元素和远处的云。

刚性动态参与者:若样本 ( x , t ) (x,t) (x,t)位于边界框内,则 x x x和视线方向 d d d会转化到 t t t时刻的参与者坐标系中。这使得可以像静态场景一样,从时间无关的多分辨率哈希网格中采样特征。与使用多个哈希网格表达不同参与者的方法相比,本文使用单一4D哈希网格(其中第4维度表示参与者索引),以并行采样所有参与者的特征。

3.3 汽车数据建模

多尺度场景:对汽车数据使用神经渲染的一大挑战是处理数据中的多层次细节。过去的方法如Zip-NeRF使用多采样和降权法建模视锥,能极大提高性能,但运行时间也极大增加了。

本文的方法基于哈希网格特征相对视锥的大小来进行降权。将射线 r ( τ ) = o + τ d r(\tau)=o+\tau d r(τ)=o+τd建模为金字塔,其横截面积为 A ( τ ) = r ˙ h r ˙ v τ 2 A(\tau)=\dot{r}_h\dot{r}_v\tau^2 A(τ)=r˙hr˙vτ2,其中 r ˙ h , r ˙ v \dot{r}_h,\dot{r}_v r˙h,r˙v分别为水平和垂直的光束发散性,基于图像的patch大小或激光雷达的光束发散性得到。对区间 [ τ i , τ i + 1 ) [\tau_i,\tau_{i+1}) [τi,τi+1)之间的视锥截体,记其两端的截面面积分别为 A i A_i Ai A i + 1 A_{i+1} Ai+1,其体积为
V i = τ i + 1 − τ i 3 ( A i + A i A i + 1 + A i + 1 ) V_i=\frac{\tau_{i+1}-\tau_i}{3}(A_i+\sqrt{A_iA_{i+1}}+A_{i+1}) Vi=3τi+1τi(Ai+AiAi+1 +Ai+1)
其位置编码 e i e_i ei x i = o + τ i + τ i + 1 2 d x_i=o+\frac{\tau_i+\tau_{i+1}}{2}d xi=o+2τi+τi+1d处的结果。对第 l l l层的、分辨率为 n l n_l nl的哈希网格,其位置编码的权重为 w i , l = m i n ( 1 , 1 n l V i 1 / 3 ) w_{i,l}=\mathtt{min}(1,\frac{1}{n_lV_i^{1/3}}) wi,l=min(1,nlVi1/31),即单元格大小( 1 / n l 3 1/n_l^3 1/nl3)与截锥体积之比。

高效采样:渲染大尺度场景的另一困难是高效采样。由于需要同时渲染附近物体细节丰富的纹理和远处物体的视差,沿射线均匀采样需要大量采样点,导致计算可行性低。

本文根据幂函数沿射线采样,即沿射线距离越远的地方,采样点越稀疏。但这样也需要大量的采样。因此本文使用两轮提案采样,其中轻量级NFF采样沿射线的权重分布,并根据权重采样新样本集合。这样可以得到细化的样本集合,沿射线关注相关区域,以查询完整的NFF。为监督提案网络,本文使用抗混叠在线蒸馏;额外使用激光雷达监督,对应的损失项为3.4节中的 L d \mathcal{L}^d Ld L w \mathcal{L}^w Lw

建模卷帘式快门:标准的NeRF假设图像的所有像素来自相同原点 o o o,但许多相机有卷帘式快门,即像素是按顺序捕获的。此时相机的原点会在不同行之间变化。这对于侧视相机来说影响很大。激光雷达也有相同的情况,即激光雷达扫描是在一段时间内采集得到的。本文通过为每个射线分配时间,并根据估计的运动调整原点,来建模卷帘式快门。详见附录E。

不同的相机设置:不同的相机可能会有不同的捕捉参数,如曝光时间。本文为每个传感器使用简单的编码,并与 g g g一起输入第二个MLP。在体积渲染之后,也会使用这些传感器编码,从而极大地减小计算开销。

带噪声的参与者姿态:本文的模型依赖动态参与者的估计姿态。为考虑估计误差,本文将参与者姿态作为模型的可学习参数,并联合优化之。姿态被表达为平移 t ∈ R 3 t\in\mathbb{R}^3 tR3和旋转的6D表示。

3.4 损失

本文使用相机和激光雷达观测作为监督 L = L image + L lidar \mathcal{L}=\mathcal{L}^\text{image}+\mathcal{L}^\text{lidar} L=Limage+Llidar

图像损失:图像损失是逐patch计算的,然后将 N p N_p Np个patch的损失取均值。损失包含重建项和感知项:
L image = 1 N p ∑ i = 1 N p λ rgb L i rgb + λ vgg L i vgg \mathcal{L}^\text{image}=\frac{1}{N_p}\sum_{i=1}^{N_p}\lambda^\text{rgb}\mathcal{L}^\text{rgb}_i+\lambda^\text{vgg}\mathcal{L}^\text{vgg}_i Limage=Np1i=1NpλrgbLirgb+λvggLivgg
其中重建项 L i rgb \mathcal{L}^\text{rgb}_i Lirgb为像素之间的平方误差,感知损失 L i vgg \mathcal{L}^\text{vgg}_i Livgg与pix2pixHD中的相同。

激光雷达损失:使用激光雷达提供的几何先验,通过为激光雷达射线添加深度损失,并为空区域进行权重衰减以惩罚密度。此外,还引入强度损失和预测的射线丢弃概率损失:
L lidar = 1 N ∑ i = 1 N λ d L i d + λ int L i int + λ p d L i p d + λ w L i w \mathcal{L}^\text{lidar}=\frac{1}{N}\sum_{i=1}^{N}\lambda^\text{d}\mathcal{L}^\text{d}_i+\lambda^\text{int}\mathcal{L}^\text{int}_i+\lambda^{p_d}\mathcal{L}^{p_d}_i+\lambda^\text{w}\mathcal{L}^\text{w}_i Llidar=N1i=1NλdLid+λintLiint+λpdLipd+λwLiw
其中深度损失 L i d \mathcal{L}^\text{d}_i Lid和强度损失 L i int \mathcal{L}^\text{int}_i Liint为平方误差,对于丢弃的射线,不进行强度监督,仅惩罚传感器距离较低的估计。射线丢弃概率损失 L i p d \mathcal{L}^{p_d}_i Lipd使用二元交叉熵损失。权重衰减被用于激光雷达距离在 ϵ \epsilon ϵ以上的观测:
L i w = ∑ τ i , j > ϵ ∥ w i j ∥ 2 \mathcal{L}^\text{w}_i=\sum_{\tau_{i,j}>\epsilon}\|w_{ij}\|_2 Liw=τi,j>ϵwij2
其中 τ i , j \tau_{i,j} τi,j为激光雷达射线 i i i上样本 x i j x_{ij} xij的距离。丢弃射线仅在特定范围内进行权重衰减。最后,省略光程损失,因其有高计算代价,而性能提升很小。

4. 实验

NeuRAD在所有5个数据集上的实验有相同的超参数。

4.2 新视图合成

相机:本文的方法有更快的训练时间和SotA的性能。

激光雷达:由于射线丢弃的建模,NeuRAD能生成真实的激光雷达点云。

4.3 新场景生成

本文通过横向移动自车传感器(模拟自车改道)、纵向移动自车传感器(模拟传感器的放置位置变动)、参与者移动和旋转。由于无真值图像,本文以无移动的情况做为参考,报告FID值。将优化相机姿态能进一步提高锐度。

4.4 消融研究

使用CNN解码器可以极大增加质量与速度,且能减少渲染射线数并实现射线交互。精确的传感器建模(考虑卷帘式快门、将射线建模为视锥截体、传感器嵌入、考虑激光雷达射线丢弃)也能提高性能。使用统一的4D哈希网格替代独立的3D哈希网格不影响性能,但能极大提高速度。使用NeRF的密度估计替代SDF函数,性能几乎相同,这表明本文方法的灵活性:若需要建模物体表面,则可以使用SDF;但若场景存在雾、透明表面或其余SDF失效的情况,可以使用密度。

5.结论

局限性:NeuRAD假设所有参与者均为刚性,不支持变形。且许多建模对于大雨或大雪等恶劣天气无效。

补充材料

A. 实施细节

哈希网格:为静态场景和动态参与者使用两个不同的哈希网格。其中静态场景的哈希表远大于动态参与者,因为动态参与者在场景中的占比很小。

提案采样:首先根据幂函数 P ( 0.1 x , − 1.0 ) \mathcal{P}(0.1x,-1.0) P(0.1x,1.0)均匀采样,并进行两轮提案采样,由两个不同的密度场表达。密度场也使用参与者感知的哈希编码,但哈希表和特征维度更小。使用线性层解码密度。

D. 射线丢弃推断

推断激光雷达射线丢弃的过程因数据集不同而不同,但总的步骤包含三步:自车运动补偿的移除、二极管索引分配和点填充。原始点云、移除自车运动补偿后的点云以及填充点的点云的如下所示。

移除自车运动补偿:由于数据集的点云是经过自车运动补偿的,即其笛卡尔坐标在公共的坐标系下。直接将其转换到球坐标下获得水平角和俯仰角是不行的。

对时间 t t t的激光雷达点 ( x , y , z ) (x,y,z) (x,y,z),首先投影到世界坐标系下,然后根据已知的激光雷达姿态线性插值,得到 t t t时刻的激光雷达姿态。对于旋转角,使用四元数表达,进行球面线性插值。然后将点云投影回传感器坐标系下,并转化为球面坐标。
二极管索引分配:数据集使用旋转激光雷达,即一组二极管绕传感器360度旋转,每一个传感器对应一个俯仰角。可根据俯仰角得到二极管的索引值。由于移除自车运动补偿的不准确性,可设计聚类算法推断二极管索引。

接下来,为每一帧定义每个二极管的俯仰角范围(在激光雷达的俯仰角范围内均匀分布),然后使用直方图划分方法根据俯仰角将点云聚类,其中划分的区间数远大于二极管数。对于落在空区间的决策边界,记为真实边界。若真实边界数小于期望边界数,则在已有边界之间进行插值,直到数量满足要求:对距离最大的两个边界,根据垂直分辨率进行尽可能多的插值,得到更多决策边界。

点填充:经历上面两步后,可推断哪些激光射线不返回点。根据激光雷达的水平分辨率,定义水平角区间,若有点落入区间,则标记为又返回;其余区间通过线性插值得到水平角和俯仰角。

E. 建模卷帘式快门

在这里插入图片描述
上图为一帧激光雷达进行自车运动补偿后的BEV视图,可以从中间的断裂处看到卷帘式快门的影响。本文首先为每个射线分配时间戳。对于激光雷达,若数据集不提供射线时间戳,则基于水平角和传感器转速估计。对于图像,手动近似快门时间并为图像的不同行添加时间偏移量。然后线性插值传感器姿态以移动原点。此外,也在将射线样本点转化到参与者坐标系之前,插值了参与者的姿态。

F. 额外结果

提案采样:UniSim使用的基于激光雷达占用进行剪枝的均匀采样会导致无占用的远处物体被建模为天空,且近处物体则需要密集采样恢复细节。

传感器嵌入:可视化表明,忽视相机的不同设置会导致色彩和光照的偏移,通常发生在图像边缘处。引入传感器嵌入可以得到更精确的重建结果。

相机优化:NeRF依赖精确的传感器姿态,但数据集给出的姿态存在噪声。类似动态参与者姿态的优化(3.3节),本文也优化了相机的姿态。这样做能导致渲染锐度和FID指标增加,但新视图合成指标会有下降。这是因为姿态优化导致训练数据中的世界坐标和验证时的姿态不一致,使得验证时在略微偏移的位置进行渲染。可视化表明,使用相机优化能生成更清晰的图像,但评估性能更低。

F.1 局限性

可变形动态参与者:由于行人不符合刚性假设,会导致模糊的重建。

夜晚场景:夜晚场景包含大量与几何无关的测量噪声,且长的曝光时间与运动耦合,使得产生模糊或透明的参与者渲染结果;强光会导致光晕和透镜耀斑;来自自车或其余车辆的动态光照也未被建模。

时间变化的目标外表:如刹车灯和交通灯的建模,与可变形物体类似,但:不需要几何随时间变化,且可以视为离散状态;需要对其完全可编辑。

这篇关于【论文笔记】NeuRAD: Neural Rendering for Autonomous Driving的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/531899

相关文章

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言:第一部分详细讲解DDS核心框图,还请读者深入阅读第一部分,以便理解DDS核心思想 三刷小梅哥视频总结! 小梅哥https://www.corecourse.com/lander 一、DDS简介         DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

【软考】信息系统项目管理师(高项)备考笔记——信息系统项目管理基础

信息系统项目管理基础 日常笔记 项目的特点:临时性(一次性)、独特的产品、服务或成果、逐步完善、资源约束、目的性。 临时性是指每一个项目都有确定的开始和结束日期独特性,创造独特的可交付成果,如产品、服务或成果逐步完善意味着分步、连续的积累。例如,在项目早期,项目范围的说明是粗略的,随着项目团队对目标和可交付成果的理解更完整和深入时,项目的范围也就更具体和详细。 战略管理包括以下三个过程

【软考】信息系统项目管理师(高项)备考笔记——信息化与信息系统

信息化与信息系统 最近在备考信息系统项目管理师软考证书,特记录笔记留念,也希望可以帮到有需求的人。 因为这是从notion里导出来的,格式上可能有点问题,懒的逐条修改了,还望见谅! 日常笔记 核心知识 信息的质量属性:1.精确性 2.完整性 3.可靠性 4.及时性 5.经济性 6.可验证下 7.安全性 信息的传输技术(通常指通信、网络)是信息技术的核心。另外,噪声影响的是信道

flex布局学习笔记(flex布局教程)

前端笔试⾯试经常会问到:不定宽⾼如何⽔平垂直居中。最简单的实现⽅法就是flex布局,⽗元素加上如下代码即 可: display: flex; justify-content: center; align-items :center; 。下⾯详细介绍下flex布局吧。   2009年,W3C提出了 Flex布局,可以简便⼂完整⼂响应式地实现各种页⾯布局。⽬前已得到了所有浏览器的⽀持,这意味着,现