huawei-bayerlab/marigold-v2
Marigold V2: Revisiting Diffusion Transformers for Monocular Depth Estimation
Marigold V2 – 擴散變換器深度與密集視覺模型
是什麼 – Marigold V2 是一個研究級程式碼庫,將預訓練的擴散變換器(Qwen‑Image‑Edit‑2509 模型)轉化為多個密集圖像到圖像任務的快速單步預測器:單眼深度(對數深度與線性深度)、穿透深度、表面法線與反照率。作者提供了一種輕量級微調方案,可在單一消費級 GPU 上執行(完整深度模型約需 5 天,其他變體少於 1 天),並在標準基準測試中達到最尖端精度。
核心概念
- 擴散變換器再利用 – 大型擴散模型被凍結;僅訓練小型 LoRA 適配器與 VAE 解碼器,使微調成本低廉。
- 單步推論 – 訓練後,模型在一次前向傳播中即可預測目標密集圖,無需迭代擴散採樣。
- 統一架構 – 透過載入不同的檢查點與提示嵌入,可輕鬆將同一骨幹網路切換為輸出深度、法線或反照率。
- 仿射不變深度 – 深度預測在每張圖像上允許未知的尺度/偏移,與論文中使用的評估協議一致。
你將獲得
- 適用於任意影像資料夾的即用型推論腳本(
scripts/infer.py)。 - 主要深度與法線基準測試(NYUv2、KITTI、ETH3D、ScanNet、DIODE、iBims‑1、Sintel 等)的評估啟動器。
- 訓練腳本與模組化 YAML 驅動的設定系統,可複現已發表模型或新增任務。
- 托管於 Hugging Face 上的預訓練檢查點(LoRA 適配器 + VAE 解碼器),以及預計算的 Qwen 文字提示嵌入,因此 7 B 文字編碼器無需載入。
快速開始(Linux,Python 3.10,CUDA GPU)
# 克隆並設定 conda 環境(預設使用 CUDA 12.8 輪子)
git clone https://github.com/huawei-bayerlab/marigold-v2.git
cd marigold-v2
bash setup/setup_env.sh # 建立環境 "marigold-v2"
conda activate marigold-v2
# 下載模型權重與示範資源(跳過大型資料集)
python scripts/download_assets.py --skip-datasets
# 在範例影像上執行深度推論
python scripts/infer.py \
--modality depth \
--image_dir assets/examples \
--output_dir output/examples
結果將以 *.npy 深度圖與視覺化 PNG 的形式出現在 output/examples 目錄下。
如何訓練 / 微調
- 下載訓練資料(Hypersim、Virtual KITTI 2)與 iREPA 損失所需的 DINOv3 特徵:
python scripts/download_assets.py --include-dinov3
- 執行兩階段深度訓練(階段 1 ≈ 5 天,階段 2 ≈ 1 天,32 GB GPU):
# 階段 1 – iREPA + 畫素損失
python marigoldv2/script/train/train.py \
--config marigoldv2/experiments/20260316_qwen_depth/training_relative_log_depth_config.yaml \
--output_dir output/train_runs --no_wandb
# 階段 2 – SinkLoss + VAE 微調(從階段 1 檢查點初始化)
python marigoldv2/script/train/train.py \
--config marigoldv2/experiments/20260316_qwen_depth/training_relative_log_depth_config_stage2.yaml \
--output_dir output/train_runs --no_wandb
替換設定路徑以訓練法線、反照率或檢查點表中列出的其他深度變體。
擴展至新密集任務 此框架由 YAML 設定驅動,宣告:
- 資料集定義(
marigoldv2/config/datasets/) - 要註冊自訂元件的 Python 模組清單(
register_modules) - 描述前向傳播的
network_graph(例如:encode → DiT → decode → post‑process) - 拉取預測與目標的
loss_graph - 包含排程、量化與 LoRA 設定的
optimization塊。 要新增任務,複製現有實驗資料夾,實作小型資料集載入器、輸出適配器(例如,將解碼後的 RGB 轉換為 XYZ 法線),以及損失函數,然後將新 YAML 設定指向它們。在scripts/infer.py中新增MODALITIES項目後,推論將自動支援新模態。
基準測試與效能(論文中報告)
| 指標 | NYUv2 | KITTI | ETH3D | ScanNet | DIODE |
|---|---|---|---|---|---|
| AbsRel ↓ / δ1 ↑(深度) | 3.6 / 98.0 | 5.4 / 97.4 | 2.8 / 99.2 | 3.7 / 97.9 | 5.2 / 97.1 |
| 平均角度誤差 ↓ / 11.25° ↑(法線) | 16.6 / 61.2 | 14.1 / 67.4 | 15.9 / 70.9 | 28.7 / 27.6 | |
| 反照率(Hypersim 測試) – PSNR 20.78,SSIM 0.811,LPIPS 0.195 |
資源
- 示範:Hugging Face Space – https://huggingface.co/spaces/toshas/Marigold-V2
- 模型權重:https://huggingface.co/huawei-bayerlab/marigold-v2-0
- 論文:https://arxiv.org/abs/2609.08084(即將發表於 ACM TOG,SIGGRAPH Asia 2026)
- 網站:https://hf.co/spaces/huawei-bayerlab/marigold-v2-web
何時使用
- 你需要高品質的單眼深度或其他密集預測,但不想承擔多步擴散採樣的開銷。
- 你擁有單一 GPU,並希望在數天內對自訂資料集進行模型微調。
- 你需要一個可擴展至新密集視覺輸出(法線、反照率、穿透深度等)的單一程式碼庫。
引用
@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},
journal = {ACM Trans. Graph.},
volume = {45},
number = {6},
pages = {204},
doi = {10.1145/3842528},
}
相關
- 專案
- 專案
- 專案
- 專案