huawei-bayerlab/marigold-v2-0

Model

ACM Transactions on Graphics (SIGGRAPH Asia 2026)

111

8 commits

1 linked in READMEs

updated Sep 13, 2026

See the code

README

Marigold V2

Revisiting Diffusion Transformers for Monocular Depth Estimation

ACM Transactions on Graphics (SIGGRAPH Asia 2026)

Igor Pavlovic1,2,*,†, Thiemo Wandel2,*, Anton Obukhov2,§
Luca Bartolomei3, Andrey Davydov2, Fabio Tosi3, Matteo Poggi3, Sabine Süsstrunk1, Dengxin Dai2

1EPFL · 2HUAWEI Bayer Lab · 3University of Bologna
*Equal contribution · †Internship · §Project lead
Project website Paper Demo Code Follow

News

2026-12: To appear in ACM Transactions on Graphics 45(6) and to be presented at SIGGRAPH Asia 2026.
2026-09-13: Mirrored on ModelScope: ModelScope website ModelScope model ModelScope demo
2026-09-08: Initial release: inference, evaluation, and training code, the released checkpoints, and the demo.

Usage

Inference, evaluation, and training code lives in the GitHub repository, which downloads this repository and the base model into its assets/ folder:

git clone https://github.com/huawei-bayerlab/marigold-v2.git && cd marigold-v2
bash setup/setup_env.sh && conda activate marigold-v2
python scripts/download_assets.py --skip-datasets
python scripts/infer.py --modality depth --image_dir /path/to/images --output_dir output/depth
python scripts/infer.py --checkpoint assets/checkpoints/Marigold-V2/depth/Log-layered --image_dir ...   # any checkpoint below

Inference needs about 17 GB of GPU memory at 1024² and 29 GB at 2048², so a 24 GB card covers 1024² and 2048² needs 32 GB. Outputs are affine-invariant, i.e. depth up to an unknown scale and shift per image.

Checkpoints

PathOutputTraining
depth/Log-stage2affine-invariant log depthStage 1 → Stage 2 (SinkLoss, VAE decoder fine-tuned). The paper model; default in the code.
depth/Log-stage1affine-invariant log depthStage 1 only: latent MSE + L1 + gradient + iREPA. Initialization for Stage 2 and the layered variant.
depth/Log-layeredsee-through log depthLog-stage1 fine-tuned with SinkLoss on layer 8 of LayeredDepth-Syn; predicts geometry behind glass.
depth/Uniform-baseaffine-invariant linear depth (Marigold V1 style)Stage 1 recipe, 30k steps. Parameterization ablation.
depth/Disparity-baseaffine-invariant inverse depthStage 1 recipe with VAE decoder fine-tuning, 30k steps. Parameterization ablation.
depth/Disparity-layeredsee-through inverse depthStage 1 recipe on layer 8 of LayeredDepth-Syn.
depth/Uniform-layeredsee-through linear depthLayeredDepth-Syn variant of Uniform-base.
normalscamera-space unit normalsangular loss + iREPA + SinkLoss, VAE decoder fine-tuned.
albedolinear RGB albedo in [0, 1]L1 + iREPA, VAE decoder fine-tuned.

Log and linear depth increase with distance, disparity decreases. Each folder holds one trainables.safetensors with keys <component>.<parameter> (Diffuser.* LoRA weights, VAE.* decoder weights when present). qwen_text_embeddings/ contains the precomputed prompt embeddings and masks per modality (<prefix>_prompt_embeds.pt, <prefix>_prompt_mask.pt), so the text encoder of the base model is never needed. manifest.json lists sizes and SHA-256 checksums of all files.

Results

Zero-shot depth with the Pixel-Perfect Depth protocol, depth/Log-stage2, AbsRel ↓ / δ1 ↑ in percent:

NYUv2KITTIETH3DScanNetDIODE
3.6 / 98.05.4 / 97.42.8 / 99.23.7 / 97.95.2 / 97.1

Surface normals, normals, mean angular error ↓ / % within 11.25° ↑:

NYUv2ScanNetiBims-1Sintel
16.6 / 61.214.1 / 67.415.9 / 70.928.7 / 27.6

Albedo on the Hypersim test split, albedo: PSNR 20.78, SSIM 0.811, LPIPS 0.195.

Training data

Depth: Hypersim and Virtual KITTI 2 (about 74k images, as repackaged for Marigold V1). See-through depth: LayeredDepth-Syn. Normals and albedo: Hypersim. All released models were trained on a single 32 GB GPU.

Citation

@article{pavlovic2026marigoldv2,
    author = {Pavlovic, Igor and Wandel, Thiemo and Obukhov, Anton and Bartolomei, Luca and Davydov, Andrey and Tosi, Fabio and Poggi, Matteo and S{\"u}sstrunk, Sabine and Dai, Dengxin},
    title = {Marigold V2: Revisiting Diffusion Transformers for Monocular Depth Estimation},
    year = {2026},
    issue_date = {December 2026},
    publisher = {Association for Computing Machinery},
    volume = {45},
    number = {6},
    url = {https://doi.org/10.1145/3842528},
    doi = {10.1145/3842528},
    journal = {ACM Trans. Graph.},
    month = dec,
    articleno = {204},
    numpages = {14}
}

License

The weights in this repository are released under the Apache License, Version 2.0 (see LICENSE). The base model Qwen-Image-Edit-2509 keeps its own license.

albedo-estimation
dense-prediction
depth-estimation
diffusion-transformer
lora
monocular-depth-estimation
qwen-image-edit
surface-normal-estimation

huawei-bayerlab/marigold-v2-0

Model

ACM Transactions on Graphics (SIGGRAPH Asia 2026)

111

8 commits

1 linked in READMEs

updated Sep 13, 2026

See the code

README

Marigold V2

Revisiting Diffusion Transformers for Monocular Depth Estimation

ACM Transactions on Graphics (SIGGRAPH Asia 2026)

Igor Pavlovic1,2,*,†, Thiemo Wandel2,*, Anton Obukhov2,§
Luca Bartolomei3, Andrey Davydov2, Fabio Tosi3, Matteo Poggi3, Sabine Süsstrunk1, Dengxin Dai2

1EPFL · 2HUAWEI Bayer Lab · 3University of Bologna
*Equal contribution · †Internship · §Project lead
Project website Paper Demo Code Follow

News

2026-12: To appear in ACM Transactions on Graphics 45(6) and to be presented at SIGGRAPH Asia 2026.
2026-09-13: Mirrored on ModelScope: ModelScope website ModelScope model ModelScope demo
2026-09-08: Initial release: inference, evaluation, and training code, the released checkpoints, and the demo.

Usage

Inference, evaluation, and training code lives in the GitHub repository, which downloads this repository and the base model into its assets/ folder:

git clone https://github.com/huawei-bayerlab/marigold-v2.git && cd marigold-v2
bash setup/setup_env.sh && conda activate marigold-v2
python scripts/download_assets.py --skip-datasets
python scripts/infer.py --modality depth --image_dir /path/to/images --output_dir output/depth
python scripts/infer.py --checkpoint assets/checkpoints/Marigold-V2/depth/Log-layered --image_dir ...   # any checkpoint below

Inference needs about 17 GB of GPU memory at 1024² and 29 GB at 2048², so a 24 GB card covers 1024² and 2048² needs 32 GB. Outputs are affine-invariant, i.e. depth up to an unknown scale and shift per image.

Checkpoints

PathOutputTraining
depth/Log-stage2affine-invariant log depthStage 1 → Stage 2 (SinkLoss, VAE decoder fine-tuned). The paper model; default in the code.
depth/Log-stage1affine-invariant log depthStage 1 only: latent MSE + L1 + gradient + iREPA. Initialization for Stage 2 and the layered variant.
depth/Log-layeredsee-through log depthLog-stage1 fine-tuned with SinkLoss on layer 8 of LayeredDepth-Syn; predicts geometry behind glass.
depth/Uniform-baseaffine-invariant linear depth (Marigold V1 style)Stage 1 recipe, 30k steps. Parameterization ablation.
depth/Disparity-baseaffine-invariant inverse depthStage 1 recipe with VAE decoder fine-tuning, 30k steps. Parameterization ablation.
depth/Disparity-layeredsee-through inverse depthStage 1 recipe on layer 8 of LayeredDepth-Syn.
depth/Uniform-layeredsee-through linear depthLayeredDepth-Syn variant of Uniform-base.
normalscamera-space unit normalsangular loss + iREPA + SinkLoss, VAE decoder fine-tuned.
albedolinear RGB albedo in [0, 1]L1 + iREPA, VAE decoder fine-tuned.

Log and linear depth increase with distance, disparity decreases. Each folder holds one trainables.safetensors with keys <component>.<parameter> (Diffuser.* LoRA weights, VAE.* decoder weights when present). qwen_text_embeddings/ contains the precomputed prompt embeddings and masks per modality (<prefix>_prompt_embeds.pt, <prefix>_prompt_mask.pt), so the text encoder of the base model is never needed. manifest.json lists sizes and SHA-256 checksums of all files.

Results

Zero-shot depth with the Pixel-Perfect Depth protocol, depth/Log-stage2, AbsRel ↓ / δ1 ↑ in percent:

NYUv2KITTIETH3DScanNetDIODE
3.6 / 98.05.4 / 97.42.8 / 99.23.7 / 97.95.2 / 97.1

Surface normals, normals, mean angular error ↓ / % within 11.25° ↑:

NYUv2ScanNetiBims-1Sintel
16.6 / 61.214.1 / 67.415.9 / 70.928.7 / 27.6

Albedo on the Hypersim test split, albedo: PSNR 20.78, SSIM 0.811, LPIPS 0.195.

Training data

Depth: Hypersim and Virtual KITTI 2 (about 74k images, as repackaged for Marigold V1). See-through depth: LayeredDepth-Syn. Normals and albedo: Hypersim. All released models were trained on a single 32 GB GPU.

Citation

@article{pavlovic2026marigoldv2,
    author = {Pavlovic, Igor and Wandel, Thiemo and Obukhov, Anton and Bartolomei, Luca and Davydov, Andrey and Tosi, Fabio and Poggi, Matteo and S{\"u}sstrunk, Sabine and Dai, Dengxin},
    title = {Marigold V2: Revisiting Diffusion Transformers for Monocular Depth Estimation},
    year = {2026},
    issue_date = {December 2026},
    publisher = {Association for Computing Machinery},
    volume = {45},
    number = {6},
    url = {https://doi.org/10.1145/3842528},
    doi = {10.1145/3842528},
    journal = {ACM Trans. Graph.},
    month = dec,
    articleno = {204},
    numpages = {14}
}

License

The weights in this repository are released under the Apache License, Version 2.0 (see LICENSE). The base model Qwen-Image-Edit-2509 keeps its own license.

albedo-estimation
dense-prediction
depth-estimation
diffusion-transformer
lora
monocular-depth-estimation
qwen-image-edit
surface-normal-estimation