Skip to main content

thermo-nerf

Project description

ThermoNeRF

Build RGB+Thermal models easily!

This repo is the official Pytorch code for ThermoNerf. PDF here.

thermal EPFL pavillon thermal cup

Introduction

Summary of the method

We present ThermoNeRF, a novel multimodal approach based on Neural Radiance Fields, capable of rendering new RGB and thermal views of a scene jointly. To overcome the lack of texture in thermal images, we use paired RGB and thermal images to learn scene density, while distinct networks estimate color and temperature information.

One of the unique contribution of ThermoNeRF is that both RGB and thermal data are used to backpropagate to the density, leading to a consistent representation of the scene for both RGB and thermal.

The ThermoNeRF package is built on top of Nerfstudio.

Dataset

We introduce ThermoScenes, a new dataset to palliate the lack of available RGB+thermal datasets for scene reconstruction.

We also provide instructions on how to build your own thermal scene. If you create a new scene and wish to share it with everyone, send it to us and we may add it to ThermoScenes.

Installation

ThermoNeRF was tested under Python 3.10 and with torch 1.13.1.

Clone the package. If you want to use FLIR cameras and build your dataset, clone with the submodule:

$ git clone --recurse-submodules git@github.com:Schindler-EPFL-Lab/thermo-nerf.git

Install the package by running uv sync --all-extras --prerelease=allow and then thermoNeRF should be ready to go.

Train and Evaluate

To train and evaluate ThermoNeRF, first download our dataset and then use the following scripts

python thermo_nerf/scripts/train_eval_script.py --data-asset-path DATA_PATH --model-type thermal-nerf --max-num-iterations ITERATIONS

E.g.

python thermo_nerf/scripts/train_eval_script.py --data data/ThermoScenes/double_robot/ --model_type thermal-nerf --max_num_iterations 1000

Evaluate

To evaluate a model, run the following script.

python thermo_nerf/scripts/eval_script.py --dataset_path DATA_PATH --model_uri MODEL_PATH --output_folder RESULTS_PATH

Render

Rendering can be done by creating specific camera poses (camera path) and query them from your trained model. For more information about it, check Nerfstudio Documentation

To render a path of a scpefic scene using a pretrained model, use the following script

python thermo_nerf/scripts/render_video_script.py --dataset_path DATA_PATH --model_uri MODEL_PATH --camera_path_filename CAMERA_PATH_JSON --output_dir RENDER_RESULTS_PATH

Visualization

A more exhaustive evaluation of the model can be done using Nerfstudio viewer. To render a thermal model run the related script:

python thermo_nerf/scripts/thermal_viewer.py --model-path MODEL_PATH --dataset-path DATA_PATH

Contribute

We welcome contributions! Feel free to fork and submit PRs.

We format code using ruff and follow PEP8. The code needs to be type annotated and following our documentation style.

How to cite

@article{hassan2025thermonerf,
  title={ThermoNeRF: A multimodal Neural Radiance Field for joint RGB-thermal novel view synthesis of building facades},
  author={Hassan, Mariam and Forest, Florent and Fink, Olga and Mielle, Malcolm},
  journal={Advanced Engineering Informatics},
  volume={65},
  pages={103345},
  year={2025},
  publisher={Elsevier}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thermo_nerf-1.0.0.tar.gz (49.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thermo_nerf-1.0.0-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file thermo_nerf-1.0.0.tar.gz.

File metadata

  • Download URL: thermo_nerf-1.0.0.tar.gz
  • Upload date:
  • Size: 49.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.9

File hashes

Hashes for thermo_nerf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 36f7f06e954ab9d1bb0008ebe589e37d200f1a97f79e29cd5135dd4c61b3a81d
MD5 b6f2c456ef7375098184f9747c40848d
BLAKE2b-256 2732d8e4ca85bc3f520529f9f5202f60e3e82ac35a07393a4b08eec0c5cc12cd

See more details on using hashes here.

File details

Details for the file thermo_nerf-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for thermo_nerf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c5a1b8e9dded11710fcee168dd94600541476f6efa24a6b3491d6c83bb4115f
MD5 0c58e6c627aa00270d52f5b2633b68a1
BLAKE2b-256 82cad6dbd50e75a63414854768a308d0254865da051cd8b72694beddf5836bc6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page