ThermoNeRF
Build RGB+Thermal models easily!
This repo is the official Pytorch code for ThermoNerf. PDF here.
Introduction
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}
}
Metadata
Release files for thermo-nerf 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| thermo_nerf-1.0.0.tar.gz | 49.3 MB | Without provenance | Details for thermo_nerf-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| thermo_nerf-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for thermo_nerf-1.0.0-py3-none-any.whl |
Total release size: 50.4 MB
Release files / thermo_nerf-1.0.0.tar.gz
| Download URL | thermo_nerf-1.0.0.tar.gz |
|---|---|
| Size | 49.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36f7f06e954ab9d1bb0008ebe589e37d200f1a97f79e29cd5135dd4c61b3a81d
|
|
BLAKE2b-256 checksum How to use checksums |
2732d8e4ca85bc3f520529f9f5202f60e3e82ac35a07393a4b08eec0c5cc12cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.9
|
Release files / thermo_nerf-1.0.0-py3-none-any.whl
| Download URL | thermo_nerf-1.0.0-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c5a1b8e9dded11710fcee168dd94600541476f6efa24a6b3491d6c83bb4115f
|
|
BLAKE2b-256 checksum How to use checksums |
82cad6dbd50e75a63414854768a308d0254865da051cd8b72694beddf5836bc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.9
|
Security for thermo-nerf 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.