ProvNeRF: Modeling per Point Provenance in NeRFs as a Stochastic Field
Kiyohiro Nakayama, Mikaela Angelina Uy, Yang You, Ke Li, Leonidas Guibas
NeurIPS 2024
Neural radiance fields (NeRFs) have gained popularity with multiple works showing promising results across various applications. However, to the best of our knowledge, existing works do not explicitly model the distribution of training camera poses, or consequently the triangulation quality, a key factor affecting reconstruction quality dating back to classical vision literature. We close this gap with ProvNeRF, an approach that models the provenance for each point -- i.e., the locations where it is likely visible -- of NeRFs as a stochastic field. We achieve this by extending implicit maximum likelihood estimation (IMLE) to functional space with an optimizable objective. We show that modeling per-point provenance during the NeRF optimization enriches the model with information on triangulation leading to improvements in novel view synthesis and uncertainty estimation under the challenging sparse, unconstrained view setting against competitive baselines.
ProvNeRF pretrained models can be downloaded here. Place the unzipped folder at the root of the repository.
We use the processed Scannet and Tanks and Temples datasets from SCADE. Please follow the instructions there to download and unzip the data. Place the unzipped folder at the root of the repository.
# first clone the repo by
git clone https://github.com/diffFacto/diffFacto.git && cd diffFacto
# Create conda environment with python 3.8
conda create -n provnerf python=3.8 -y
conda activate provnerf
# we use torch 2.0.0 and CUDA 11.8
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# we insall other dependencies
pip install tqdm tensorboardX opencv-python configargparse lpips pathlib tensorboard scikit-image To train ProvNeRF for NVS regularization, we need to first train the provenence stochastic field using fIMLE. We provide the trained checkpoints in the provnerf_pretrained/fimle directory. To train a new provenance stochastic field for different scenes on top of a SCADE pretrained model, run the command in provnerf_pretrained/fimle/[scannet/tnt]/[scene_id]/script.sh.
After the provenance stochastic field is trained, we can improve SCADE's NVS quality by running our NVS regularizer. We provide checkpoints after NVS regualization in the provnerf_pretrained/nvs_ckpts directory. To render the test views, run the testing command given in To train a new model with NVS regularization on top of a SCADE pretrained model, run the command in provnerf_pretrained/nvs_ckpts/[scannet/tnt]/[scene_id]/script.sh. To regularize the NVS from a SCADE checkpoint, run the training command in the same script.
This repository is released under MIT License (see LICENSE file for details).
@inproceedings{nakayama2024provnerf,
title={ProvNeRF: Modeling per Point Provenance in NeRFs as a Stochastic Field},
author={Kiyohiro Nakayama and Mikaela Angelina Uy and Yang You and Ke Li and Leonidas Guibas},
journal = {Advances in Neural Information Processing Systems (NeurIPS)}},
year={2024}
}
