简介
论文链接:https://arxiv.org/abs/2204.02585
由于原始NeRF网络的神经网络不能缓存,Garbin等人。提出了“FastNeRF”,它将问题分解为两个子网一个只依赖于样本点的3D坐标,另一个只依赖于2D摄像机的观看方向。尽管这种分解使它们能够减少缓存大小,并以每秒200帧以上的速度执行推断,但内存开销仍然很大。SqueezeNeRF,它比FastNeRF的稀疏缓存的内存效率高出60倍以上,并且在推断期间仍然能够在高规格GPU上以每秒190帧以上的速度渲染。
创新点
- SqueezeNeRF是第一种允许NeRF渲染速度超过150帧/秒,缓存大小小于200兆字节的方法。该方法基于一种新颖的NeRF架构,该架构基于FastNeRF的进一步分解。
- 提出了一个全面的评估NeRF后续工作更快的推断,并比较他们的速度,性能和内存需求。
实现流程
原始NeRF网络的缓存大小为O(n5)阶,其中n为每个输入维度的容器数量。右上:FastNeRF架构,基于位置相关的网络Fpos和Fdir。FastNeRF网络的Cache-size为O(n3)级。下:提出的SqueezeNeRF架构,进一步将FastNeRF中的位置依赖网络分解为3个网络:fxy pos、fyz pos和fzx pos。SqueezeNeRF网络的缓存大小为O(n2)级。上图中(x, y, z)表示输入样本的3D位置,(θ, φ)表示相机射线方向,(r, g, b, σ)为颜色和密度/不透明度值。
Default architecture
如上图中所示,将Fpos进一步划分为三个网络
为了简单起见,在默认的SqueezeNeRF配置中,将每个σj建模为一个标量值,每个k建模为一个D维向量(wj σ∈R, wj k∈RD)。使用一个直接的组合方案来建模fσ, fk,如图所示。我们简单地将所有σj相乘,得到最终的σ值。我们把每个kj相加得到k。
Alternate architecture
虽然其他的分解方案,如将(x, y, z)分解为x, y, z而不是(x, y), (y, z)和(z, x)也是可能的,但发现,前一种分解方案导致相当差的结果。对于更复杂的组合函数的实验作为未来工作的一部分
Fdir与FastNeRF相同。在计算σ, (u, v, w)后,我们计算3D点样本的颜色,然后计算最终的像素颜色。在计算最终的像素颜色之后,SqueezeNeRF以类似NeRF的方式训练。