自打伯克利和谷歌联合打造的 NeRF 横空出世,江湖上静态图变动图的魔法就风靡开来。
不过,想要像这样依靠 AI 来简化 3D 动态效果的制作,算力开销可不小:
以 NeRF 为例,想要在 1440×1600 像素、90Hz 的 VR 头盔中实现实时渲染,需要 37 petaFLOPS(每秒 10^15 次浮点运算)的算力 —— 这在目前的 GPU 上根本不可能实现。
怎么降低点计算复杂度?
现在,来自奥地利格拉兹科技大学和 Facebook 的研究人员,就想出一招:引入真实深度信息。
就这一下,很快的,推理成本最高能降低 48 倍,并且只用 1 个 GPU,就能以每秒 20 帧的速度实现交互式渲染。
画质什么的,也没啥影响,甚至还能有所提升:
具体是怎样一招,咱们往下接着聊。
基于深度预言网络的 NeRF
首先需要说明的是,NeRF,即神经辐射场(neural radiance field)方法,是沿相机射线采样 5D 坐标,来实现图像合成的。
也就是说,在 NeRF 的渲染过程中,需要对每条射线都进行网络评估,以输出对应的颜色和体积密度值等信息。
这正是造成 NeRF 在实时渲染应用中开销过大的主要原因。
而现在,格拉兹科技大学和 Facebook 的研究人员发现,引入真实深度信息,只考虑物体表面周围的重要样本,每条视图射线(view ray)所需的样本数量能够大大减少,并且不会影响到图像质量。
基于此,他们提出了 DONeRF。
DONeRF 由两个网络组成,其一,是 Sampling Oracle Network,使用分类法来预测沿视图射线的最佳采样位置。
具体来说,这个深度预言网络通过将空间沿射线离散化,并预测沿射线的采样概率,来预测每条射线上的多个潜在采样对象。
如下图所示,3 个颜色通道编码了沿射线的 3 种最高采样概率,灰度值表明其中可能只有一个表面需要被采样,而彩色数值则表明这些样本需要在深度上展开。
其二,是一个着色网络,使用类似于 NeRF 的射线行进累积法来提供 RGBA 输出。
为了消除输入的模糊性,研究人员还将射线转换到了一个统一的空间,并使用非线性采样来追踪接近的区域。
另外,在两个网络之间,研究人员对局部采样进行扭曲,以使着色网络的高频预测被引导到前景上。
本文还引入了视图单元(view cell)的概念。一个视图单元被定义为一个具有主要方向和最大视角的边界框。
简单来说,这个边界框能够捕捉到所有源于框内、并且在一定旋转范围内的视图射线。
利用这样的方法,就可以对大场景进行分割,解决 NeRF 没有办法应用于大场景的问题。
此外,较小的视图单元减少了场景中的可见内容,因此可能会进一步提高成像质量。
对比结果
所以,DONeRF 相较于前辈 NeRF,到底能快多少?
不妨直接来看对比结果。
在相似的质量下,NeRF 总共使用了 256 个样本。而 DONeRF 只用到了 4 个样本,在速度上可以实现 20-48 倍的提升。
并且在成像细节方面,DONeRF 的图像边缘更为清晰。
研究人员还指出,在 16 个样本的情况下,从峰值信噪比(PSNR)来看,几乎所有场景中 DONeRF 都超越了 NeRF。
传送门
论文地址:
https://arxiv.org/abs/2103.03231
项目地址:
https://depthoraclenerf.github.io/