任务

将场景切分成块,逐块用tiny MLP表征,从而加速多视图合成,且不牺牲视觉质量。

背景

NeRF带来了视图合成的新范式,但是其MLP往往比较大,对于pixel-level的query需要很多次的前向推理,不适合扩展到大场景,也不利于实时的渲染。

KiloNeRF将场景切分为uniform的grid,对每个grid使用独立的tiny MLP表征,显著加速了推理速度。

NSVF使用ESS(empty space skipping)和ERT(early ray termination)聚集了采样的区域,减少了采样点的个数,解放了无用区域的内存占用,KiloNeRF照搬了它的方法。

Pipeline

Untitled

Untitled

训练

训练阶段分为三个步骤:

2步骤类似一种良好的权值初始化,3步骤是进一步的微调。因为tiny MLP没有全局信息,所以不做蒸馏的话会在空白区域带来伪影。

Nerf++曾表示,颜色预测函数对于观察视角来说,尽量得是一个简单的函数,这种先验可以避免空白区域的伪影问题。但是tiny MLP太小,将32设置为更小的数会影响视觉质量,所以使用L2 regularization来使得其变得稀疏,间接符合”简单函数“的先验。

采样

复制ESS和ERT,ESS的cell是uniform gird分辨率的1/16倍,每个cell中的333 subgrid,在normal NeRF中进行采样,若cell中有一处subgrid的 $\sigma$不为0,该cell就是occupied的,否则就是empty。

加速

由于分区块的原因,不同采样点也许归不同的MLP管,所以传统的批量矩阵乘法不再适用。本工作采用MAGMA中的自定义CUDA routine解决了这个问题。