DONeRF: Towards Real-Time Rendering of Compact Neural Radiance Fields using Depth Oracle Networks
The recent research explosion around Neural Radiance Fields (NeRFs) shows that there is immense potential for implicitly storing scene and lighting information in neural networks, e.g., for novel view generation. However, one major limitation preventing the widespread use of NeRFs is the prohibitive computational cost of excessive network evaluations along each view ray, requiring dozens of petaFLOPS when aiming for real-time rendering on current devices. We show that the number of samples required for each view ray can be significantly reduced when local samples are placed around surfaces in the scene. To this end, we propose a depth oracle network, which predicts ray sample locations for each view ray with a single network evaluation. We show that using a classification network around logarithmically discretized and spherically warped depth values is essential to encode surface locations rather than directly estimating depth. The combination of these techniques leads to DONeRF, a dual network design with a depth oracle network as a first step and a locally sampled shading network for ray accumulation. With our design, we reduce the inference costs by up to 48x compared to NeRF. Using an off-the-shelf inference API in combination with simple compute kernels, we are the first to render raymarching-based neural representations at interactive frame rates (15 frames per second at 800x800) on a single GPU. At the same time, since we focus on the important parts of the scene around surfaces, we achieve equal or better quality compared to NeRF.
1 Comment
This is an interesting suggestion for reducing the computational cost of rendering with NeRF. I like the idea of using a depth oracle network to predict sample locations, and I think this could potentially lead to significant speedups.
This has extreme potential for real-time viewing of photoreal scenes down the road. I fully agree, there is a lot of potential here, but the tech might not be far enough along just yet for anyone to consider it viable.
I think It has potential now as a way to preview a scene, but with changing or animated scenes I'd assume it would add a lot of complications.
Since in 3D software we are always aware of the camera position and object distance, it feels like a logical leap that we'd be able to optimize scenes for future viewing as we work on them using this method to speed up rendering, although, I can already picture a few barriers that will be difficult to pass.
It feels like one of the better potential uses for NeRFs. If someone starts a build utilizing it I'd be very interested in contributing.