Skip to content
LISA-VRPublic

About

Code source of the paper "∂DIBR: Differentiable Depth Image-based Rendering for Fast Novel View Synthesis" accepted at ECCV-2026.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

∂DIBR: Differentiable Depth Image-based Rendering for Fast Novel View Synthesis

Armand Losfeld  ·  Sarah Dury  ·  Gauthier Lafruit  ·  Mehrdad Teratani  ·  Daniele Bonatto

ECCV 2026 Poster


Cite this work

@inbook{Losfeld2026,
  title = {$\partial$DIBR: Differentiable Depth Image-based Rendering for Fast Novel View Synthesis},
  ISBN = {9783032370105},
  ISSN = {1611-3349},
  url = {http://dx.doi.org/10.1007/978-3-032-37010-5_22},
  DOI = {10.1007/978-3-032-37010-5_22},
  booktitle = {Computer Vision – ECCV 2026},
  publisher = {Springer Nature Switzerland},
  author = {Losfeld,  Armand and Dury,  Sarah and Lafruit,  Gauthier and Teratani,  Mehrdad and Bonatto,  Daniele},
  year = {2026},
  pages = {398–416}
}

Table of Contents


1. System Requirements

Recommended Environment

  • Linux (e.g., Ubuntu 24.04) — strongly recommended
  • NVIDIA RTX GPU, Vulkan + Slang support, 10–24 GiB VRAM
  • CUDA (version matching your NVIDIA driver)
  • Conda (Anaconda or Miniconda)
  • apptainer (for containerized installations)

Note

Some methods require GPU‑based Vulkan rendering; ensure proper driver installation. On laptops, explicitly ensure the NVIDIA GPU is used.

Download the repo

For nerfbaseline-integrated installation,

git clone https://github.com/LISA-VR/ddbir.git
git submodule update --init --remote external/nerfbaselines

For standalone installation,

git clone https://github.com/LISA-VR/ddbir.git
git submodule update --init --remote external/ZoeDepth
git submodule update --init --remote external/DepthAnything3 #Optional

2. Installing NerfBaselines

All evaluated methods (ours and baselines) are integrated into a unified evaluation workflow using the NerfBaselines API. A modified fork containing our integration is provided in external/nerfbaselines. The forked project can also be found at https://github.com/ArmandLfd/nerfbaselines.

2.1 Create the Conda Environment

git submodule update --init --remote external/nerfbaselines
cd external/nerfbaselines
conda create -n nerfbaselines -y python=3.13
conda activate nerfbaselines

2.2 Install the API

pip install -e .

3. Installing Rendering Methods with Nerfbaselines

Install any supported method:

nerfbaselines install-method --method [gaussian-splatting|2d-gaussian-splatting|triangle-splatting|diff-dibr] --backend [conda|apptainer]

Note

We recommend installing methods inside an Apptainer container for reproducibility. Our ∂DIBR method also works in a standard conda environment.

Warning

If you installed mamba instead of conda, please do not use the apptainer backend, use rather the conda backend. Or install conda.

Warning

If you want to use this code on a HPC, please try to remove some bindings from nerfbaselines/backend/_apptainer.py.

Once completed, you can test the installation:

nerfbaselines test-method --method [gaussian-splatting|2d-gaussian-splatting|triangle-splatting|diff-dibr] --backend [conda|apptainer] --data external://llff/fern

On the first run, the tool downloads:

  • Required datasets
  • LPIPS pretrained weights

Warning

Image pull permissions: Some systems restrict image pulls to privileged users. See: AndreWeiner/ml-cfd-lecture#36.

Note

Vulkan GPU selection: Install vulkan-tools and run vkinfo to verify the active GPU. If the system selects an integrated GPU, remove MESA Vulkan drivers and reinstall NVIDIA Vulkan drivers.


4. Dataset Download and Preparation

4.1 LLFF Dataset

Automatic download:

nerfbaselines download-dataset --data external://llff

The dataset will be download in the default cache folder, e.g., ~/.cache/nerfbaselines/datasets/llff.

4.2 Shiny Dataset

This dataset must be downloaded manually.

  1. Download the Shiny dataset from shiny_shared_folder.
  2. Once done, Copy each scene folder into ~/.cache/nerfbaselines/datasets/shiny/{scene_name}.
  3. Run the script resize.py to resize the images.

5. Training Ours and Baselines Methods

5.1 Default Training

To run a training/optimization with the default parameters of any method:

nerfbaselines train --method [gaussian-splatting|2d-gaussian-splatting|triangle-splatting|diff-dibr] --backend [conda|apptainer] --data ~/.cache/nerfbaselines/datasets/${DATASET_NAME}/${SCENE_NAME} --output ${OUTPUT}

Note

Vulkan Assert failure: Our code can crash with this error: "vulkan Assert failure". Please first check that you have a correct installation of your GPU drivers and Vulkan installation. If the error persists, check if your GPU has enough memory (for full image resolution, at least 24GB of memory). If not, you can use --set scale_factor=${FACTOR} to rescale images and reduce GPU memory (e.g., $FACTOR = 0.5).

5.2 Our Coarse-to-Fine Optimization

Use our script implementing the multi‑stage optimization described in the paper.

To run the script:

chmod u +x scripts/diff-dibr/coarse-to-fine.sh
scripts/diff-dibr/coarse-to-fine.sh --data ~/.cache/nerfbaselines/datasets/${DATASET_NAME}/${SCENE_NAME} --output ${OUTPUT} --backend [conda|apptainer]

5.2.1 Optional Parameters

Parameters Description Type Required
--data Path to input data Path Yes
--output Output directory Path Yes
--backend Backend used to run the code [conda, apptainer] Yes
--num_iters Number of iterations in lvl 1 (lvl2 = 5lvl1/3, lvl3 = 2lvl1) numeric No
--depth_method Depth initialization [Zoe, DepthAnything3, NONE] No
--nb_cams Nb of cams representing the scene numeric No
--nb_a_cams Number of active cameras per rendering numeric No
--l_atv_12 Depth regularization weight (stages 1 & 2) numeric No
--l_atv_3 Depth regularization weight (stage 3) numeric No

7. Interactive Viewer

Launch the viewer:

nerfbaselines viewer --method [gaussian-splatting|2d-gaussian-splatting|triangle-splatting|diff-dibr] --backend [conda|apptainer] --data ~/.cache/nerfbaselines/datasets/${DATASET_NAME}/${SCENE_NAME} --output ${OUTPUT}/checkpoint-${NUM_ITERATIONS} --port 6064

Then, open http://localhost:6064 in your browser.

Note

By default, ${NUM_ITERATIONS} equals 30000 for splatting-based methods. For ours, it equals 40000. For the lower optimization stages, diminish the value to 20000 (lvl 1) or 30000 (lvl 2).


8. Results

The rendering results can be found in ${OUTPUT}/predictions-${NUM_ITERATIONS}.


9. Standalone Installation Without NerfBaselines

While we recommend using NerfBaselines for reproducibility, standalone use is supported.

9.1 Installation

unzip -o ./diff_dibr.zip
cd diff_dibr
conda create -n diff-dibr -y python=3.13
conda activate diff-dibr

pip install -r requirements.txt

pip install \
    torch==2.9.1 \
    torchvision==0.24.1 \
    --index-url https://download.pytorch.org/whl/cu128

pip install lpips==0.1.4

pip install -e .

9.1.1 Depth Submodules

Each depth module requires a dedicated conda environment named after the module:

  • for ZoeDepth, the conda env must be named zoe.
  • For DepthAnything3, it must be depthanything3.
9.1.1.1 ZoeDepth Installation
git submodule update --init --remote external/ZoeDepth
cd external/ZoeDepth
conda create -n zoe -y python=3.9.7
conda activate zoe
conda install -y \
    cuda=11.7.1 \
    h5py=3.7.0 \
    hdf5=1.12.2 \
    matplotlib=3.6.2 \
    matplotlib-base=3.6.2 \
    numpy=1.26.4 \
    scipy=1.10.0 \
    wandb=0.13.9 \
    tqdm=4.64.1 \
    huggingface_hub=0.11.1 \
    timm=0.6.12 \
    pip \
    -c pytorch \
    -c nvidia \
    -c conda-forge

pip install opencv-python==4.6.0.66

pip install \
    torch==1.13.1 \
    torchvision==0.14.1 \
    torchaudio==0.13.1 \
    --index-url https://download.pytorch.org/whl/cu117
9.1.1.2 DepthAnything3 Installation
git submodule update --init --remote external/DepthAnything3
cd external/DepthAnything3
conda create -n depthanything3 -y python=3.12.12
conda activate depthanything3

conda install -y pip
pip install xformers torch\>=2 torchvision pillow \
  --index-url https://download.pytorch.org/whl/cu128

pip install -e .

9.2 Optimization

For optimization, please use NerfBaselines.

9.3 Standalone Viewer

python ./script/diff-dibr/freeview.py --path $OUTPUT/checkpoint-${NUM_ITERATIONS} --nb_cams_synthesis $NB_ACTIVE_CAMS

10. Uninstallation

10.1 Remove conda environment

conda remove --all -n nerfbaselines -y

10.2 Delete Nerfbaselines folder

sudo rm -r ~/.cache/nerfbaselines

10.3 Optional: Cleaning conda cache

conda clean --all -y
conda clean --index-cache
conda clean --packages

Acknowledgments

Armand Losfeld is a FRIA grantee and Sarah Dury is a research fellow of the Fonds de la Recherche Scientifique – FNRS, Belgium. This work was supported by the 24 Top-Tier International Global Collaborative Research Program funded by ETRI; the IITP grant funded by the Korean government (MSIT) (RS-2017-II170072); and the Service Public de Wallonie Recherche – Wal4XR by Win4Excellence (2310144), Belgium.

We also extend our sincere gratitude to the developers and maintainers of the frameworks, methods, and datasets that made this work possible. Their efforts in building high‑quality, open‑source resources have been invaluable for advancing research in neural rendering and novel view synthesis.


License

All original source code (src/, scripts/) is licensed under AGPL-3.0-or-later. Please also read the copyright notice file.

All web design of the github page (index.html, static/js, static/css) is licensed under CC BY-SA 4.0, adapted from eliahuhorwitz/Academic-project-page-template.

All images (static/images/) are licensed under CC BY 4.0. Note: The ULB logo is a registered trademark. Its inclusion in this repository does not grant a license under CC BY 4.0 or CC BY-SA 4.0. It may not be used or reproduced without explicit permission.


Dataset Licenses

  • LLFF is under GPL-3.0 license
  • Shiny (NeX) is under MIT License

About

Code source of the paper "∂DIBR: Differentiable Depth Image-based Rendering for Fast Novel View Synthesis" accepted at ECCV-2026.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages