Git Product home page Git Product logo

wcmc-public's Introduction

WCMC: Weakly-Supervised Contrastive Learning in Path Manifold for Monte Carlo Image Reconstruction

Official PyTorch implementation of WCMC.

Weakly-Supervised Contrastive Learning in Path Manifold for Monte Carlo Image Reconstruction
In-young Cho, Yuchi Huo*, Sung-eui Yoon,*
KAIST, Repulic of Korea
*denotes co-corresponding authors
in SIGGRAPH 2021

teaser_image teaser_image

Scene credits

Quick Start

  1. State-of-the-art baselines:

    • Kernel-predicting convolutional network (KPCN) [Bako et al. 2017]
      • Image-space method
    • Sample-based denoising network (SBMC) [Gharbi et al. 2019]
      • Sample-space method
    • Layer-based denoising network (LBMC) [Munkberg and Hasselgren 2020]
      • Sample-space method
  2. Clone and build models of your interest; KPCN [Bako et al. 2017], SBMC [Gharbi et al. 2019], and LBMC [Munkberg and Hasselgren 2020]. We modify the original source to be compatible with our code.

  3. Run the following demos.

Demo

  1. Train the diffuse and specular branches of KPCN-Vanilla simultaneously.

    python train_kpcn.py --single_gpu --batch_size 8 --val_epoch 1 --data_dir /mnt/ssd3/iycho/KPCN \
    --model_name KPCN_vanilla --desc "KPCN vanilla" --num_epoch 8 --lr_dncnn 1e-4 --train_branches
    
  2. Fine-tune two branches of KPCN-Vanilla simultaneously.

    python train_kpcn.py --single_gpu --batch_size 8 --val_epoch 1 --data_dir /mnt/ssd3/iycho/KPCN \
    --model_name KPCN_vanilla --desc "KPCN vanilla" --num_epoch 10 --lr_dncnn 1e-6 \
    --start_epoch <??> --best_err <??>
    
  3. More demos are presented at train_kpcn.py, train_sbmc.py, and train_lbmc.py.

Tips for Reproducing this Paper

  1. Try LBMC first.

    • We found that (unoptimized) LBMC does not require many dependencies and so does our framework (path embedding network + path disentangling loss).
  2. Try training your network first and find optimal hyperparameters (e.g., learning rate).

    • Then, attach our manifold framework to your reconstruction model.
    • Use the optimal hyperparameters for the reconstruction network.
    • Please take a look at the paper for other tips, such as setting the manifold-regression balancing parameter of our framework.
  3. All you need are the implementations of the ...

Repository Overview

  • train_kpcn.py # Train KPCN with/without our manifold learning framework
  • train_sbmc.py # Train SBMC with/without our manifold learning framework
  • train_lbmc.py # Train LBMC with/without our manifold learning framework
  • test_models.py # Test any model
  • support/ # All utilities to train/test models
    • datasets.py
    • img_utils.py
    • interfaces.py
    • losses.py
    • metrics.py
    • networks.py
    • utils.py

Citation

@article{cho2021weakly,
  title={Weakly-Supervised Contrastive Learning in Path Manifold for Monte Carlo Image Reconstruction},
  author={Cho, In-Young and Huo, Yuchi and Yoon, Sung-Eui},
  journal={ACM Transactions on Graphics (TOG)},
  volume={40},
  number={4},
  pages={38:1--38:14},
  year={2021},
  publisher={ACM New York, NY, USA},
  url = {https://doi.org/10.1145/3450626.3459876},
}

wcmc-public's People

Contributors

mephisto405 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.