Rendering 速度提升到200FPS.
coarse to fine策略 + 缓存结果后渲染时直接查询的策略
NeRF在渲染时需要临时逐个计算,这种先缓存再查询的方式类似于字典index速度会得到极大提升,再加上对一些invalid点的skip,最终速度渲染速度达到200FPS以上,训练速度提升88%。
分成两个阶段:coarse and fine.
第一阶段把整个scence分成DxDxD份。
valida samples 定义:density > 0 的点为有效点。
原因:volume rendering公式可表示为:
如果density σi = 0,则:

所以,density 为0的samples point对最终的渲染结果是没有贡献的,可跳过。
有效样本点的占比在10% - 20%左右,如果V = 10%,则通过这种策略,速度可提高10倍左右
i 是DxDxD中的第几个立方体的index。
公式7是每个体素的密度的更新公式,作者说这种表达能够反映整个场景的latest density distribution,这里我没太明白。

Pivotal Sampling
仅仅采样ray射线上pivotal的点附近Ns个点

下图中,左边是第一阶段的有效点分布,右边是第二阶段的关键点分布。

取Ns=5,也就是第二阶段采样临近点的个数。则第二阶段大约实现8倍的加速,具体计算见原文。
最后一步,渲染的时候通过作者所说的名为NerfTree的方式查询。其实就是简单的2 depth的八叉树。
下面这个图,中间的就是八叉树(refer to Plenoctree)

Dc 就是第一阶段(coarse)的分辨率384x384x384.
Df 就是第二阶段(fine)的分辨率4x4x4。

不同分辨率的速度对比:

各个策略的消融实验:

和其他方法的对比实验:

采样策略带来的增益,应用在其他方法中的对比:

内存和缓存时间、查询时间的对比:

可视化:

It still needs to train from scratch when handling novel scenes.This is also a common issue in other state-of- the-art NeRF-based methods