主页:https://xharlie.github.io/projects/project_sites/pointnerf/
像NeRF这样的体积神经绘制方法可以生成高质量的视图合成结果,但对每个场景进行了优化,导致重建时间过长。另一方面,深度多视图立体(deep multi-view stereo)方法可以通过直接的网络推理快速重建场景几何。point - nerf结合了这两种方法的优点,Point-NeRF使用神经3D点有效地表示和渲染连续的辐射体积。基于点的亮度场可以通过网络正向推理对多视角图像进行预测。然后可以对每个场景进行优化,在几十分钟内实现超过NeRF的重建质量。point - nerf还可以利用现成的重建方法,如COLMAP,并能够执行点修剪和增长,自动修复这些方法中常见的漏洞和异常值。
NeRF提出用MLP来回归这样的辐射场,而论文提出用点云作为替代来计算体素属性,NeRF体素密度累计公式如下
一个点云P = {(pi, fi, γi)|i = 1, …, N },其中每个点i 位于p i并与含有局部场景信息的神经特征向量f i关联,y i 是一个在[0,1]之间的置信值,描述了这个点接近真实场景表面的程度
给定任意一个3D位置x,在一定半径R内查询它周围的K个相邻的神经点,基于点的神经辐射场可以被抽象为一个神经模块,它在任何位置x 从其相邻位置回归体积密度 σ 和视相关辐亮度 r (在方向d上)
总的来说,论文使用一个类似PointNet的神经网络,完成上述回归过程,首先对每个神经点进行神经处理,然后对多点信息进行聚合,得到最终的估计值
使用一个MLP F来处理每个相邻的神经点,以预测阴影位置x的一个新的特征向量
本质上,原始特征fi编码了pi周围的局部3D场景内容,这个MLP网络表达了一个局部三维函数,在x输出特定的神经场景描述fi,x,由其局部帧中的神经点建模。使用相对位置x−pi使网络对点平移不变,以更好地泛化
使用标准的逆距离加权来聚合神经特征fi,x,从这K个相邻点回归,得到一个描述x处场景外观的单一特征fx
然后MLP,R,从给定观察方向d的特征回归视图相关的辐射
逆距离权值wi广泛应用于分散数据插值;利用它来聚合神经特征,使更近的神经点对阴影计算有更大的贡献。此外,在此过程中使用了per-point confidence γ;这在最终的重建中得到了优化,具有稀疏性损失 sparsity loss,网络拒绝了不必要的点
为了计算x处的体积密度σ,遵循一个类似的多点聚合,首先使用MLP T回归每点的密度σi,然后进行基于距离的逆加权
每个神经点直接贡献于体积密度,而点置信度γi与此贡献明确相关,在我们的点去除过程中利用了这一点
现在开始重建基于点的辐射场,首先利用一个跨场景训练的深度神经网络,通过直接网络推理来生成一个基于点的初始场。通过点生长和修剪技术,进一步优化了这个初始场,通过相应的梯度更新进行初始预测和超级优化
虚线表示亮度场初始化和每个场景优化的梯度更新
通过MLP可以预测每个神经点的属性,但是这过于依赖现有的点云,效率不高。论文提出了一个神经生成模块来预测所有的神经点属性,包括点位置pi、神经特征fi和点置信度γi
利用深度MVS方法,使用基于成本体积的3D CNNs来生成3D点位置,这种网络能产生高质量的密集几何结构,并能很好地跨领域推广
输入图像Iq在每个视点q处有摄像机参数Φq,遵循MVSNet,通过从相邻视点扭曲二维图像特征,构建平面扫描代价体积 plane-swept cost volume,然后使用深度3D CNNs回归深度概率体积,深度概率描述了点在表面上的可能性,因此对深度概率体积进行三线性采样,以获得每个点pi上的点置信度γi
通过线性组合每个平面的深度值来计算深度图Depth,然后将深度映射投影到3D空间以获得每个视图q的点云{p1,…, pNq}
Gp,γ是基于MVSNet网络。Iq1,Φq1,……是在MVS重建中使用的附加相邻视图;在大多数情况下,使用了两个附加的视图。
与此同时使用二维CNN Gf从每个图像Iq中提取神经二维图像特征图。这些特征图与Gp,γ的点(深度)预测对齐,并用于直接预测每个点的特征fi
Gf使用了一个VGG网络架构,它有三个降采样层。将不同分辨率的中间特征结合为fi,提供了一个有意义的点描述来建模多尺度场景外观
最后从多个视点组合点云来得到我们最终的神经点云,除了使用上述点云生成模块,模型支持使用从COLMAP等其他方法重建的点云
点云通常包含降低渲染质量的空洞和异常值,直接优化现有点的位置会使训练不稳定,不能填补大洞,论文为此提出点剪枝和生长技术,逐步提高几何建模和渲染质量
在生成点云的时候,使用了点置信值γi来描述一个神经点是否靠近一个场景表面,为此利用这些置信度值来修剪不必要的离群点, 点置信值γi与体积密度回归中的每点贡献直接相关,因此,低置信值反映了一个点的局部区域的低体积密度,表明它是空的。因此,每10K迭代修剪一次具有γi<0.1的点。同时对点置信度施加了一个稀疏性损失,迫使置信度值接近于零或1
网络需要增长新的点来覆盖原始点云中缺失的场景几何,使用基于Point-NeRF表示建模的局部场景几何,逐步增长点云边界附近的点,利用了每条射线的阴影位置(xj )在射线行进ray marching中取样,以识别新的候选点。具体来说,确定了沿射线具有最高不透明度的阴影位置xjg
对于行进射线 marching ray,在xjg处增加一个神经点,当满足
这意味着该位置位于表面附近,但远离其他神经点,重复这种增长策略,辐射场可以扩展到覆盖初始点云中缺失的区域。点增长特别有利于用像COLMAP这样不密集的方法重建的点云
对每点的相对位置、特征以及观察方向应用频率位置编码。从网络Gf中不同分辨率的三层中提取多尺度图像特征,得到一个具有56个(8+16+32)通道的向量。此外,还从每个输入视点添加了相应的查看方向,以处理与视图相关的效果。因此,最终的每点神经特征是一个59通道向量
从K个神经点邻居计算阴影位置x处的辐射场网络管道。“PosEN”表示位置编码[35]。“d3”表示在x处的3通道视图方向矢量。最终输出是亮度颜色r和密度σ。