不使用神经网络学习,训练速度比原始NeRF快3倍,渲染速度比原始NeRF快3000倍,并且视觉质量没有下降。
本文工作基于PlenOctrees。PlenOctrees使用NeRF-SH和baking的方式,将优化过程从MLP转移到稀疏八叉体素网络上,从而避免了推理阶段的MLP推理,大幅提升了渲染的速度。
但是PlenOctrees并没有提升训练的速度,NeRF-SH的训练仍然需要较长的时间。很多相似的工作也一直在优化推理的速度(比如baking的方法),但是这往往需要更久的训练时间。
本文工作在PlenOctrees的启发下,完全摒弃了NeRF的训练,从头用稀疏八叉树体素网格进行优化。由于完全不使用神经网络,并且采用剪枝、从粗到细的训练策略,训练时间大幅缩短。同时网格采用三线性插值,代替了PlenOctrees中网格中心点直接替代的方法,提高了渲染图像的质量。
基于此,本文创造了不使用神经网络,但是端到端完全可微分的优化框架。本文工作表明,场景隐式表达的关键不在于神经网络,而在于可微分的体积渲染。
每个顶点存储的是密度和球谐系数。只在光线与占用体素的交线上进行采样,并采用三线性插值的方法,求得采样点的体积密度和球谐系数。最终通过体渲染的方法重建出目标视图图像。
TV Loss(total variation loss)正则化,为了约束体素表达的平滑性。 $\Delta^2_x(\bold v,d)$代表体素$(i,j,k)$中样本点的第d个值与临近体素 $(i+1,j,k)$中样本点第d个值的差异。
剪枝的方法与PlenOctrees相同,剔除所有视图中不太可见的体素,稀疏化场景网格。
刚开始训练时体素网格使用$256^3$,训练一段时间后upsample到 $512^3$,新增加的格点使用原有的网格进行三线性插值。
由于三线性插值,直接prune会对表面附近颜色和密度造成不利影响,因为这些点的值会与pruned voxel进行插值。为了解决这个问题,执行膨胀操作,以便仅在体素本身及其邻居都被视为未被占用时才对体素进行prune。