Git Product home page Git Product logo

neural-gauge-fields's Introduction

Teaser

General Neural Gauge Fields

Fangneng Zhan, Lingjie Liu, Adam Kortylewsk, Christian Theobalt
The International Conference on Learning Representations (ICLR), 2023

Update

  • 09/2023: We release an improved UV Mapping and learned TriPlane projection, which allow to learn gauge transformation without any regularization.
  • 04/2023: This is an initial release of basic implementation. We are working on the extension of this work, full implementation with cleaned code will be released later.

Installation

Install environment:

conda create -n Gauge python=3.8
conda activate Gauge
pip install torch torchvision
pip install tqdm trimesh scikit-image opencv-python configargparse lpips imageio-ffmpeg kornia lpips tensorboard

Learning UV Mapping

The 3D coordinate is transformed to 2D manifold (e.g., sphere and square) to index neural fields, where explicit (view-dependent) 2D texture can be obtained for scene editing. Enter UV-Mapping directory to play with it.

1. Dataset & Checkpoint

Five pre-processed scenes from DTU dataset can be downloaded from Google Drive.
Pre-trained checkpoints on the five scenes can be downloaded from Google Drive. Save the checkpoints in UV-Mapping/.

2. Test

To render with edited texture (e.g., for DTU scan83), run below command (you can also set the target_texture in dtu_test.sh to your custom texture path):

bash dtu_test.sh 83

To render with original texture, set the target_texture to 'None' and run above command.

3. Training

Run below commands directly (you can also set data_root in dtu_train.sh to your custom dataset path):

bash dtu_train.sh 83

Learning Triplane Projection

Instead of applying orthogonal projection from 3D space to Triplane, we directly learn a flexible mapping with neural fields driven by rendering loss. Enter TriPlane directory to play with it.

1. Dataset

Please refer to Synthetic-NeRF dataset.

2. Training with learned projection

Run below command:

python3 main.py --config configs/lego.txt

3. Training without learned projection

Set gauge_start in configs/lego.txt to a number larger than the total iterations, e.g., 30001. Then run:

python3 main.py --config configs/lego.txt

InfoInv for View Synthesis

The derived InfoInv proves that sinusoidal position encoding is actually applying phase transform to the coordinate and allows to preserve relative position information inherently. Naively including InfoInv can boost the performance of grid-based and MLP-based neural fields. Enter InfoInv directory to run experiments.

1. Dataset

Please refer to Synthetic-NeRF dataset. Note to modify the dataset path in configs/lego.txt.

2. Training

To include InfoInv, run below command:

python3 main.py --config configs/lego.txt --infoinv

To exclude InfoInv, run below command:

python3 main.py --config configs/lego.txt

The effectiveness of InfoInv for surface reconstruction is also proved in PET-NeuS.

Todo

  • ✅ Learning UV mapping for texture editing.
  • ✅ Learning Triplane projection for view synthesis.
  • ✅ Including InfoInv in neural fields.
  • ⬜️ Learning discrete transform for hash mapping.

Citation

If you use this code for your research, please cite our papers.

@inproceedings{zhan2023general,
  title={General Neural Gauge Fields},
  author={Zhan, Fangneng and Liu, Lingjie and Kortylewski, Adam and Theobalt, Christian},
  booktitle={The Eleventh International Conference on Learning Representations},
  year={2023}
}

Acknowledgement

Thanks NeuTex, K-Plane, TensoRF for releasing their implementation codes.

neural-gauge-fields's People

Contributors

fnzhan avatar guspan-tanadi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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.