This is a JAX implementation of NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction.
recommend using conda
conda env create --file conda.yaml
conda activate jaxneus
prepare datasets
./download.sh
- Training without masks
python exp_runner.py --mode train --conf ./confs/womask.conf --case <case_name>
- Training with masks
python exp_runner.py --mode train --conf ./confs/wmask.conf --case <case_name>
- Extract surface from trained model
python exp_runner.py --mode validate_mesh --conf <config_file> --case <case_name> --is_continue # use latest checkpoint
The corresponding mesh can be found in exp/<case_name>/<exp_name>/meshes/<iter_steps>.ply
.
- View interpolation
python exp_runner.py --mode interpolate_<img_idx_0>_<img_idx_1> --conf <config_file> --case <case_name> --is_continue # use latest checkpoint
The corresponding image set of view interpolation can be found in exp/<case_name>/<exp_name>/render/
.
Follow the NeuS code structure and command line for experiments. The rendering function is designed to handle a single ray and vectorized to apply to a batch of rays. The rendering procedure is optimized for speed using just-in-time compilation (JIT).