这是一个针对自动驾驶场景的神经渲染方案,提出了一种大规模神经渲染方法来合成自动驾驶场景(READ),这使得通过各种采样方案在PC上合成大规模驾驶场景成为可能。
疑问:文中提到基于nerf的方法和神经渲染方法,这两个方法不是一回事么?(与仅基于每个场景拟合的NeRF方法不同,神经渲染方法[27, 28, 31]可以通过神经纹理有效地初始化,这些神经纹理被存储为3D网格代理顶部的映射。)
由于模型容量受限、内存和计算存在约束,处理大规模驾驶场景仍然面临很大挑战。此外,要在渲染带有丰富建筑物、车道和路标的照片般逼真的视图时也相当困难,因为从少量输入图像获取的稀疏点云数据通常包含大量空洞。
本文提出的方法使得通过高效的Monte Carlo采样、大规模点云筛选和补丁采样来合成大规模驾驶场景成为可能。
1、对于稀疏点云,我们通过多尺度特征融合来填补其缺失的区域。
2、我们提出了一种基于 − 网络的方法,用于从稀疏点云中合成逼真的驾驶场景。该方法通过基本门模块过滤神经描述符,并使用不同策略融合相同尺度和不同尺度的特征。
3、通过神经描述符编辑和缝合场景
提出的神经场景渲染方法旨在通过用点云表示驾驶场景来合成来自任意相机视点的照片真实感图像。
基于驾驶场景的点云数据,采用多种采样策略获取场景信息并降低计算成本,接着使用w-net来表示带有点云的驾驶场景并合成新场景;最后这些场景能够编辑及缝合以合成数据用于更大更丰富的驾驶场景。
输入三个元素:已知的相机参数;一组驾驶场景的图片;一个点云数据(ply格式)
整个框架分为三个部分:光栅化?;稀疏点云采样; − 渲染网络
以下是光栅化一些细节
1、点云数据可以通过SFM,Multi-View Stereo算法获得,比如Agisoft Metashape软件-输入图像获取点云。
2、每个点 都位于位置,并且与一个神经描述符向量相关联,该向量编码了局部场景内容。? 什么是神经描述符向量-即表示局部几何形状和光度性质的潜在矢量。
3、根据输入的点云计算出神经描述符
4、将梯度传播到输入中,从而自动地从数据中学习神经描述符的特征。具体来说,就是在神经网络中通过反向传播算法计算出误差对输入的导数,然后将导数应用于输入数据,以更新神经网络中的参数,从而使得神经网络能够自动地学习到数据中的特征。这样做可以提高神经网络的性能和精度,使得模型能够更好地适应不同的数据集。
5、通过摄像机的内部和外部参数,可以设计8维神经描述符来表示RGB值,这样就可以从不同视角观察场景
6、在光线栅格化的阶段,通过小孔相机捕捉大小为 × 的图像,构建一个由栅格化的原始图像组成的金字塔St的空间尺度
通过将经过深度测试的点的神经描述符分配给每个像素来形成的
7、在相机的全投影变换下,将St投影到像素上。本质上:神经描述符特征对围绕点的局部3D场景内容进行编码。渲染网络表达了一个局部的3D函数,它在处输出特定的神经场景描述(,),由其局部框架中的神经点建模。简单来说,就是通过神经网络将局部3D场景的信息编码成为神经描述符,然后再通过渲染网络将这些神经描述符转换为具体的场景描述,从而实现对3D场景的处理和操作。
如果用nerf 的方法去拟合上千米的自动驾驶场景, 需要巨大的计算力,为了降低这种算力,需要提出一种新的拟合方法-而不是独立的拟合每个场景,因此文章提出构建整个场景的点云地图提供几何数据,但是大量的点云数据依然很难去训练,因此利用采样的方法将点云数据降低到原来的1/4。
1、屏蔽遮挡的点云。为了避免更新被遮挡点的描述符,我们对每个点的可见性进行了近似。我们采用最近光栅化方案构建一个Z-buffer,仅保留像素位置上具有最低Z值的点。神经描述符会避免远离当前帧相机的点,以更好地合成场景。因此,计算被遮挡点云的计算成本降低了,从而大大提高了训练效率。这Z值是高度值么?
2、蒙特卡罗抽样。。由于场景中点云的分布不同,明显特征区域存在大量的点云。对于天空或动态物体的区域,由于缺乏明显的特征点或特征点较少,相应区域的点云较少。为了有效训练,我们提出了动态训练策略,利用蒙特卡罗方法[24]对大量驾驶场景数据进行采样。在训练阶段中的图像集,也要考虑这些因素
。图像的合成质量()是通过感知损失[11](Perceptual losses for realtime style transfer and super-resolution)计算出来的。我们在每个阶段采用最差表现的前个样本作为训练数据,并采用动态采样的训练策略,使模型能够学习点云的稀疏区域,从而缩短整体训练时间。
3、补丁采样:图像分辨率也很重要,通过采样策略将整个图像随机地划分为多个块,根据可用的GPU内存大小,选择大小为w x h的随机补丁。也就是说,算法会根据GPU内存大小的限制,尽可能地选择最大尺寸的补丁来进行计算。给定相机地内参矩阵如下:
对于Se中的每张图像I,在训练时需要通过下列策略来获得一个补丁集Sp,以确保能够训练到场景中所有的区域。也就是说,在进行训练时,需要从每张图片中选择一些补丁,并将这些补丁组成一个补丁集Sp–这个补丁集的参数,以便训练模型能够涵盖场景中的所有区域。
上面一行是缩放的,下面一行是平移的
将场景的补丁(patch)平移一定的距离(Δ, Δ),以增强从不同视角观看时合成图像的质量。换句话说,通过对补丁进行平移来改善图像的合成效果,使得从不同的视角观察时都能够得到更好的图像质量。
我的理解是,将每个图像进行随机分块后,组合到一起的集合就是原图像平移和缩放的结果了。上面的公式用于抽象地表达。
针对点云数据的空洞和离散点。
受MIMOUNet启发,文章提出了w-net从稀疏点云中合成新视角。
该网络由三部分组成:
1、渲染网络的目的是学习可靠的神经描述符以表示场景,但从点云中学习到的神经描述符仍然存在空洞。为了解决这个问题,设计了一个基本门模块来过滤不同尺度的神经描述符–-这个方法为什么可以解决描述符存在空洞的问题????
33的卷积提取神经描述符的特征,一个由sigmoid函数学习得出的掩码(mask)可以过滤掉神经描述符中无效的数值,显示出描述符中特征的重要性,为了提高效率 与 ReLU 及其变体相比,使用 ELU 可在神经网络中缩短训练时间并提高准确度,但是测试时由于负输入涉及非线性,因此计算速度较慢。 x表示在两个相同维度的向量或矩阵中,将它们对应位置上的元素相乘,得到一个新的向量或矩阵。再归一化,再重复一次上述操作后,将初始特征和滤波后的连接起来作为一个新的特征,用11的卷积层进一步优化新特征。 还使用了Gate convolution 再次优化特征。
1、用不同的尺度融合特征
带有空洞的神经描述符的特征,其中空洞如图红框所示
第1部分融合了相同尺度下的特征,利用了相同尺度的互补信息。第2部分通过融合不同尺度的特征来学习神经描述符中的缺失点。
先说第二部分
对于Fa中缺失的部分可以通过平均池化获得粗略值,Di+1的分辨率更低但是流失的更少,仅从两个尺度上(Di和Di+1)进行特征融合是不够的。
提出w-net实现多尺度融合特征–本文使用了四个尺度的特征(平衡效率和精度),从数据中学习稀疏点云中缺失的点,以便合成逼真的天空、远处物体的新视图。
在上采样阶段使用双线性插值代替转置卷积,这是因为转置卷积基本上是可学习的上采样,可学习参数会增加额外的计算量。
2、用相同的尺度融合特征
Fb是通过对Fa的平均池化获得的,Fd是Fb的降采样,然后再通过1*1卷积与Fb连接获得,通过细节增强来保留丢失的信息。Fc是Di通过门卷积获得。将在相同尺度下的和特征进行融合,可以利用它们之间的互补信息。融合的特征如下。
通过改变神经描述符可以编辑场景(移动,车,人,房)汽车点的xyz在这个方框下,类似ROI
使用一个具有可学习参数的渲染网络,将所有神经描述符投影到RGB图像上。左项代表图像上某位置的投影值,右项
代表投影和光栅化处理
可以通过改变汽车的位置来合成新的视角。以及移除动态目标
要将上图中的x1y1z1与x2y2z2进行缝合需要:1、旋转P1 P2,以配准到一个坐标系下。特征描述符(D1,D2)经过我们的渲染网络训练后,表示场景的纹理。“在边界处对D1和D2进行拼接,以更新场景。新场景是由(D1, D2)组成的。” 在这种情况下,D1和D2是被训练用于渲染场景的两个特征描述符。当它们被拼接在一起时,会形成一个新的特征向量,该向量可以用于创建一个更新后的场景。拼接之后的长度也会改变吧。
1、损失函数
“感知损失”-VGG损失,是一种用于计算生成图像与真实图像之间差异的损失函数。它是通过将生成图像和真实图像输入到预训练的神经网络中,并比较它们在网络中的特征表示来计算的。感知损失通常被用作图像生成技术中的评估指标,以衡量生成图像与真实图像之间的相似程度。
当我们进行图像编辑时,为了让处理后的图像更加真实自然,我们需要对图像中的细节和颜色进行调整。但是有时候过度调整会导致图像失真或者变得粗糙,特别是在处理一些高频细节时,比如纹理、细小的边缘等。因此,我们使用感知损失函数作为目标函数,来指导图像编辑的过程,使得编辑后的图像既能够保留原始图像中的颜色信息,又不会丢失重要的高频细节。
图像真值为
预训练的VGG层
其中 表示随机裁剪的补丁。给定点云以及相机参数C,驾驶场景渲染器
能够学习神经描述符D和网络参数
评估指标 Peak Signal-to-Noise Ratio (PSNR), Structural Similarity (SSIM) and perceptual loss (VGG loss)
PSNR(峰值信噪比)、SSIM(结构相似性)和感知损失(VGG损失)是用于评估图像或视频质量的指标。其中,PSNR是一种基于均方误差的度量方法,用于衡量原始图像与经过压缩或处理后的图像之间的差异;SSIM是一种计算两幅图像结构相似度的指标,可以评估图像保真度、清晰度和对比度等特征;而感知损失则是基于深度学习的方法,使用预训练的卷积神经网络(如VGG)来评估两幅图像在高级语义层面上的相似度,其重点在于模拟人类视觉系统的感知能力。
为了促进公正比较,我们在评估中采用感知度量和学习的感知图像块相似性(LPIPS)。其中,感知度量是指利用人类视觉系统对图像进行主观质量评价的方法;而LPIPS是一种计算图像之间相似度的方法,它以感知学习为基础,能够更好地模拟人类视觉系统的特性,从而更准确地反映两幅图像的相似程度。
对于那些与训练视图差异很大的图像,例如在Brno Urban数据集的右视图中,会丢弃测试帧附近的10帧图像。采用激光雷达的点云数据作为训练输入减小误差。