Code release for EMVSNet (evidential multi-view stereo), with training, depth inference, uncertainty estimation, and depth-map fusion.
News: EMVSNet has been presented at the ISPRS 2026 Toronto Congress.
This repository includes:
- core model/training code (
train.py,models/) - inference and uncertainty export (
eval.py,evaluation/) - depth map fusion to point clouds (
fusion.py,fusion_padding.py) - optional Docker workflows for reproducible/cloud runs
conda create -n emvsnet python=3.9 -y
conda activate emvsnet
pip install --upgrade pip
pip install -r requirements.txtSet your DTU root once (expected structure: $TRAINPATH/<scan folders> from the DTU preprocessing used by this repo):
export TRAINPATH=/path/to/mvs_training/dtuYou can also edit env.sh and reuse shell scripts from scripts/.
https://huggingface.co/BuTTerK3ks/EMVSNet
python train.py \
--dataset dtu_yao \
--trainpath "$TRAINPATH" \
--trainlist lists/dtu/train.txt \
--vallist lists/dtu/val.txt \
--testlist lists/dtu/test.txt \
--batch_size 1 \
--epochs 1 \
--view_num 5 \
--numdepth 128 \
--interval_scale 1.06 \
--image_scale 0.25 \
--lr 0.001 \
--optimizer adam \
--evidential_method der \
--logdir ./checkpoints/quickstartpython eval.py \
--dataset data_eval_transform \
--testpath "$TRAINPATH" \
--testlist lists/dtu/test.txt \
--batch_size 1 \
--numdepth 256 \
--interval_scale 1.0 \
--image_scale 1.0 \
--view_num 7 \
--loadckpt /path/to/model.ckpt \
--outdir ./outputs_dtu \
--evidential_method derpython fusion.py \
--testpath "$TRAINPATH" \
--testlist lists/dtu/test.txt \
--outdir ./outputs_dtu \
--test_dataset dtuUse Docker if you want a reproducible runtime or cloud deployment. Local setup above remains the recommended development path.
docker build -t emvsnet:latest .Host data directory should be mounted to /workspace/data, with DTU at /workspace/data/mvs_training/dtu.
docker run --gpus all --rm -it \
-v /path/to/host_data:/workspace/data:ro \
-v /path/to/host_output:/workspace/output \
emvsnet:latest \
python train.py \
--dataset dtu_yao \
--trainpath /workspace/data/mvs_training/dtu \
--trainlist lists/dtu/train.txt \
--vallist lists/dtu/val.txt \
--testlist lists/dtu/test.txt \
--batch_size 1 \
--epochs 1 \
--view_num 5 \
--numdepth 128 \
--interval_scale 1.06 \
--image_scale 0.25 \
--lr 0.001 \
--optimizer adam \
--evidential_method der \
--logdir /workspace/output/checkpoints/quickstartcp docker.env.example docker.env
# edit docker.env (HOST_DATA_PATH and OUTPUT_PATH)
docker compose up -d
docker compose logs -fHelpful script entry points:
scripts/train_dtu.shscripts/train_dtu_ddp.shscripts/eval_dtu.shscripts/fusion_dtu.shscripts/eval_tnt.shscripts/fusion_tnt.sh
Please cite the EMVSNet paper if you use this codebase:
@inproceedings{grannemann2026emvsnet,
title={EMVSNet: Evidential Multi-View Stereo Reconstruction for Sampling-free Depth and Uncertainty Estimation},
author={Grannemann, Christian and Mehltretter, Max},
journal={ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences},
volume={11},
pages={259--267},
year={2026},
publisher={Copernicus GmbH}
}This project builds on AA-RMVSNet and its open-source PyTorch implementation.
Our evidential uncertainty components are also inspired in part by ELFNet.
We thank the original authors and maintainers for making their work publicly available.
Released under the MIT License. See LICENSE.
