Home

Awesome

CQ-NIR

We introduce to learn neural implicit representations with quantized coordinates, which reduces the uncertainty and ambiguity in the field during optimization.

Project page| Paper

This is the official repo for the implementation of CQ-NIR: Coordinate Quantized Neural Implicit Representations for Multi-view 3D Reconstructionn.accepted at ICCV 2023.

Citation

Cite as below if you find this repository is helpful to your project:

@inproceedings{sijia2023quantized,
  title={Coordinate Quantized Neural Implicit Representations for Multi-view 3D Reconstruction},
  author={Sijia Jiang and Jing Hua and Zhizhong Han},
  booktitle={{IEEE} International Conference on Computer Vision},
  year={2023}
}

Installation

We provide CQ-NIR on two baselines, UNISURF and NeuS.

UNISURF

Make sure that you have all dependencies in place. You can create an anaconda environment called unisurf , you can find out the instruction here.

NeuS

Make sure that you have all dependencies in place. You can create an anaconda environment called neus , you can find out the instruction here.

Dataset

UNISURF

Download the sequences of Dataset generated by the authors of UNISURF, you can find out the data here.

NeuS

Download the sequences of Dataset generated by the authors of NeuS, you can find out the data here.

Training

UNISURF

For training a UNISURF model from scratch run

cd unisurf_cq
python train.py configs/DTU/scan_0$id.yaml

NeuS

For training a NeuS model from scratch

cd neus_cq
python exp_runner.py --mode train --conf ./confs/womask.conf --case <case_name>
cd neus_cq
python exp_runner.py --mode train --conf ./confs/wmask.conf --case <case_name>

Extract mesh from a pretrained model

UNISURF

If you just want to quickly extract a mesh from a pre-trained model, you can run our demo with

cd unisurf_cq
python extract.py configs/DTU/scan_0$id.yaml 

You can find predicted meshes in unisurf_cq/out/scan_0$id/.

NeuS

Extract surface from trained model

cd neus_cq
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 neus_cq/exp/<case_name>/<exp_name>/meshes/<iter_steps>.ply.

Acknowledgement

Some code snippets are borrowed from UNISURF and NeuS. Thanks for these great projects.