Instant Neural Graphics Primitives with a Multiresolution Hash Encoding

Thomas Müller, Alex Evans, Christoph Schied, Alexander Keller
1/16/2022
cs.CVcs.GRcs.LG

Official code: NVlabs/instant-ngp (17,578 stars, last commit 2026-02-02). 1 more implementation below.

Abstract

Neural graphics primitives, parameterized by fully connected neural networks, can be costly to train and evaluate. We reduce this cost with a versatile new input encoding that permits the use of a smaller network without sacrificing quality, thus significantly reducing the number of floating point and memory access operations: a small neural network is augmented by a multiresolution hash table of trainable feature vectors whose values are optimized through stochastic gradient descent. The multiresolution structure allows the network to disambiguate hash collisions, making for a simple architecture that is trivial to parallelize on modern GPUs. We leverage this parallelism by implementing the whole system using fully-fused CUDA kernels with a focus on minimizing wasted bandwidth and compute operations. We achieve a combined speedup of several orders of magnitude, enabling training of high-quality neural graphics primitives in a matter of seconds, and rendering in tens of milliseconds at a resolution of ${1920\!\times\!1080}$.

View on arXivView PDF

Code Implementations(2)

NVlabs/instant-ngpOfficial100%

Instant neural graphics primitives: lightning fast NeRF and more

17,5782,065C++, NixJan 5, 20228 months agoNOASSERTION
3d-reconstructioncomputer-graphicscomputer-visioncudafunction-approximation+7 more
PyTorch

Lightning fast C++/CUDA neural network framework

4,542585C++, NixApr 16, 20213 weeks agoNOASSERTION
cudadeep-learninggpumlpnerf+4 more

Similar Papers

Cite this paper

@article{mller2022instant,
  title  = {Instant Neural Graphics Primitives with a Multiresolution Hash Encoding},
  author = {Thomas Müller and Alex Evans and Christoph Schied and Alexander Keller},
  year   = {2022},
  eprint = {2201.05989},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/2201.05989}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2201.05989.svg)](https://codeofpaper.com/paper/2201.05989)

Discussion