Skip to main content

Datasets and benchmarks for neural Monte Carlo denoising

Project description

License PyPI - Version GitHub Repo stars

News  |  Benchmarks  |  Datasets

Datasets and benchmarks for neural Monte Carlo denoising.

What is Monte Carlo denoising?


Monte Carlo integration Kmhkmh

Monte Carlo methods approximate integrals by sampling random points from the function's domain, evaluating the function, and averaging the resulting samples. We mainly focus on light transport simulation as it's a complex and mature application, usually producing visual and intuitive results. In this case, our samples are light paths that a "photon" might take. Above on the right, you see an image rendered with 4 samples per pixel. It's quite noisy.

With a bit of napkin maths, we can estimate that rendering a relatively noise-free 4K image requires tens of billions of samples while rendering a two-hour movie requires quadrillions of samples. Astonishingly, we have data centres fit for this task. Not only do they consume electricity on par with a small town, but such computational requirements put creating 3D art outside the reach of many.

Deep neural networks have an incredible ability to reconstruct noisy data. They learn to combine the sliver of useful information contained in samples from the same object, both spatially from nearby pixels and temporally from subsequent frames. The images denoised with such neural networks (like above on the left) look absurd in comparison.

Getting started

You can start prototyping your denoiser by calling a single function:

from noisebase import Noisebase

data_loader = Noisebase(
   'sampleset_v1', # Our first per-sample dataset
   {
      'framework': 'torch',
      'train': True,
      'buffers': ['diffuse', 'color', 'reference'],
      'samples': 8,
      'batch_size': 16
   }
)

# Get training, pytorch stuff...
for epoch in range(25):
   for data in data_loader:
      ...

And here's the kicker: with just that, our data loaders seamlessly support asynchronous and distributed loading, decompression, and augmentation of large video datasets containing anything from normal maps, diffuse maps, motion vectors, temporally changing camera intrinsics, and noisy HDR samples.

As you scale up, you'll want a little more control. Thankfully, Noisebase is fully integrated with Hydra and Pytorch Lightning.

Noisebase can also:

  • Download training and testing data
  • Runs benchmark with many metrics
  • Neatly summarize everything into tables
  • Help you keep track of denoising performance while keeping your implementation simple

Installation

You can quickly install Noisebase from PyPI:

pip install noisebase

For more complicated workflows, we recommend cloning the repo instead:

git clone https://github.com/balintio/noisebase
cd noisebase
pip install -e . # Editable install

Check our manual for more details.

Citation

Please cite our paper introducing Noisebase when used in academic projects:

@inproceedings{balint2023nppd,
    author = {Balint, Martin and Wolski, Krzysztof and Myszkowski, Karol and Seidel, Hans-Peter and Mantiuk, Rafa\l{}},
    title = {Neural Partitioning Pyramids for Denoising Monte Carlo Renderings},
    year = {2023},
    isbn = {9798400701597},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    url = {https://doi.org/10.1145/3588432.3591562},
    doi = {10.1145/3588432.3591562},
    booktitle = {ACM SIGGRAPH 2023 Conference Proceedings},
    articleno = {60},
    numpages = {11},
    keywords = {upsampling, radiance decomposition, pyramidal filtering, kernel prediction, denoising, Monte Carlo},
    location = {<conf-loc>, <city>Los Angeles</city>, <state>CA</state>, <country>USA</country>, </conf-loc>},
    series = {SIGGRAPH '23}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

noisebase-1.0.tar.gz (36.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

noisebase-1.0-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

noisebase-1.0-1-py3-none-any.whl (41.9 kB view details)

Uploaded Python 3

File details

Details for the file noisebase-1.0.tar.gz.

File metadata

  • Download URL: noisebase-1.0.tar.gz
  • Upload date:
  • Size: 36.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for noisebase-1.0.tar.gz
Algorithm Hash digest
SHA256 d01b053fa0e0b4e8cf6309e6be0e47d5395c9b22725997f675b7b0d8b1626a7a
MD5 019e0edd652c01b727a11b52c7e7b392
BLAKE2b-256 b5c5cc6a676eb5ea7b4b4e49e7048ce776b8a007ebc1db82aab707edbe814373

See more details on using hashes here.

File details

Details for the file noisebase-1.0-py3-none-any.whl.

File metadata

  • Download URL: noisebase-1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for noisebase-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f5b81e6a19f0c109e5dd7938597d8f8393560f3942dd92a9a3cd5288ea622c7
MD5 2e561a718dc8359c5f6c05beb293f99d
BLAKE2b-256 8ea4443cee914934dc1ebd59d474aa25b9f40e4f412bad55968ac42733e1fbfa

See more details on using hashes here.

File details

Details for the file noisebase-1.0-1-py3-none-any.whl.

File metadata

  • Download URL: noisebase-1.0-1-py3-none-any.whl
  • Upload date:
  • Size: 41.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for noisebase-1.0-1-py3-none-any.whl
Algorithm Hash digest
SHA256 2aefa2f23a0f15e34c4ac82544ad7b031310da984dbfd03dab110f7a1521f9d7
MD5 1c24c89160e78f0d859afd595697cd98
BLAKE2b-256 85cc8df45712e204182a71ec4519d6cce7e87d508183f89c35f5d777c40835be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page