Official PyTorch implementation.
Kyu-Beom Han1,
Olivia G. Odenthal2,
Woo-Jae Kim1,
Sung-eui Yoon1
KAIST, Repulic of Korea1
University of Stuttgart, Germany2
- "My Kitchen" by tokabilitor under CC-0.
- "Bath" by Ndakasha under CC-0.
Our pixel-wise guidance framework enhances the per-pixel contribution of each type of auxiliary features (G-buffers and P-buffers[Cho et al. 2021]), achieving considerable test performance increase compared to baseline denoising models.
Our code is tested on Ubuntu 18.04 with an Intel i9-10940X CPU with NVIDIA Geforce RTX 3090, RTX 2080ti, and Quadro RTX 8000 graphics cards.
- Clone the git repository and create a PyTorch Anaconda environment as below:
conda create -n pytorch python=3.10 activate pytorch pip install torch pip install h5py tensorboard tensorboardX opencv-python kornia scipy pandas tqdm matplotlib visdom imageio scikit-image numpy pykeops
New: Our framework works on recent PyTorch version! 2. Go to torch_utils and follow the instructions to install per-pixel kernel function for PyTorch
- Run the shell script in the directory 'scripts/' to train the model.
-
Supporting State-of-the-art baselines:
- Image-space MC Denoising
- Kernel-predicting convolutional network (KPCN) [Bako et al. 2017]
- Adversarial Monte Carlo Denoising (AdvMCD) [Xu et al. 2019]
- Sample-space MC Denoising (TODO)
- Neural Denoising with Layer Embeddings (NDLE) [Munkberg and Hasselgren 2020]
- Sample-based Monte Carlo Denoising (SBMC) [Gharbi et al. 2019]
- Image-space MC Denoising
-
Repository Overview
- train_kpcn.py # Train KPCN with G- & P- buffers
- train_adv.py # Train AdvMCD with G- & P- buffers
- train_lbmc.py (TODO) # Train NDLE with G- & P- buffers
- train_sbmc.py (TODO) # Train SBMC with G- & P- buffers
- train_ensemble.py # Train Our Guidance Denoising Framework
- test_models.py # Test any model
- support/ # Codes for baselines & utilities
- WCMC/ # Codes for reproducing KPCN & SBMC & WCMC
- AdvMCD/ # Codes for reproducing AdvMCD
- NDLE/ (TODO) # Codes for reproducing NDLE
- datasets.py
- img_utils.py
- interfaces.py
- losses.py
- metrics.py
- networks.py
- utils.py
- support/ # Codes for baselines & utilities
- scripts/ # Scripts to train models
- torch_utils # Cuda implementation of per-pixel kernel for PyTorch [Munkberg and Hasselgren 2020]
Our dataset is about 2TB large. If you are interested in our work and happy to play with our dataset, please leave an git issue requesting the dataset. We will provide a link you can download the whole dataset.
- Bako, Steve, et al. "Kernel-predicting convolutional networks for denoising Monte Carlo renderings." ACM Trans. Graph. 36.4 (2017): 97-1.
- Gharbi, Michaël, et al. "Sample-based Monte Carlo denoising using a kernel-splatting network." ACM Transactions on Graphics (TOG) 38.4 (2019): 1-12.
- Munkberg, Jacob, and Jon Hasselgren. "Neural denoising with layer embeddings." Computer Graphics Forum. Vol. 39. No. 4. 2020.
- Cho, In-Young, Yuchi Huo, and Sung-Eui Yoon. "Weakly-supervised contrastive learning in path manifold for Monte Carlo image reconstruction." ACM Trans. Graph. 40.4 (2021): 38-1.