Home

Awesome

Surf-NeRF

This project implements the Shadow Neural Radiance (S-NeRF) field from this repository, starting from a modified PyTorch NeRF implementation. The model is able to generate novel views from a sparse collection of satellite images of a scene, as well as estimating a Digital Elevation Model (DEM) of the surface.

<p align="center"> <img src="https://github.com/fsemerar/surfnerf/raw/main/figs/dsm.png" width="80%"></img> </p>

Dataset

The satellite image dataset that was used can be found at this link and it should be placed in a folder called "data" (e.g. data/068 for the images of JAX). The data can be augmented by modifying the inputs in the data_augmentation.py script and then running the command below. You can pass gauss=True to add gaussian blur in the augmented image along with sigma=0.2 to specify the radius of the gaussian blur.

python scripts/data_augmentation.py --gauss=True --sigma=0.2

Installation

It is recommended to create a conda environment using the following command from the root project folder:

conda env create
conda activate surfnerf

Then follow the instructions recommended on this website in order to install the correct version of PyTorch (CPU or GPU enabled).

How to run

To train NeRF on an example dataset run:

python run_nerf.py --config configs/068/068_config.txt

Project Contributors

Cite

If you use Surf-NeRF in your research, please use the following BibTeX entries to cite our paper:

@misc{semeraro2023nerf,
      title={NeRF applied to satellite imagery for surface reconstruction}, 
      author={Federico Semeraro and Yi Zhang and Wenying Wu and Patrick Carroll},
      year={2023},
      eprint={2304.04133},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}