huawei-bayerlab/marigold-v2
Marigold V2: Revisiting Diffusion Transformers for Monocular Depth Estimation
Marigold V2 – 扩散 Transformer 深度与稠密视觉模型
这是什么 – Marigold V2 是一个研究级代码库,可将预训练的扩散 Transformer(Qwen-Image-Edit-2509 模型)转换为快速、单步的预测器,用于各种稠密图像模态:单目深度、透视深度、表面法线和反照率。作者提供了一系列检查点、轻量微调配方(LoRA 适配器 + 小型 VAE 解码器),以及用于推理、评估和训练的脚本。
核心思想
- 复用冻结的扩散主干 – 大型 Qwen 文本到图像模型保持冻结;仅学习小型可训练适配器(LoRA)和 VAE 解码器,使微调成本低廉(在单张 32 GB GPU 上约 1 周)。
- 单步稠密预测 – 不同于需要多个采样步骤的经典扩散流程,Marigold V2 在一次前向传播中产生最终稠密图。
- 多种输出模态 – 通过替换 LoRA 检查点和提示嵌入,同一个主干可重新用于深度(对数、线性、视差、透视)、法线和反照率。
- 仿射不变深度 – 深度值以每张图像的未知尺度/平移输出,这与论文中使用的评估协议相符。
提供的组件
| 组件 | 内容 |
|---|---|
| 检查点 | 针对每种模态和深度参数化的 LoRA 适配器(存储为 trainables.safetensors)。全部共享冻结的 Qwen 主干和预先计算的文本提示嵌入,因此 7 B 文本编码器永远不会加载。 |
推理脚本(scripts/infer.py) |
简单的 CLI,可对任何图像文件夹运行深度、法线或反照率。输出 NumPy .npy 图和可视化 PNG。 |
| 评估启动器 | Bash 脚本,会下载标准深度/法线基准(NYUv2、KITTI、ETH3D、ScanNet、DIODE、iBims-1 等)并计算论文中报告的指标。 |
| 训练框架 | YAML 驱动的配置系统(marigoldv2/experiments/...)加上小型注册表,用于连接数据集、变换、网络块、损失图和优化器。支持单 GPU 和多 GPU(accelerate launch)。 |
| 数据集辅助工具 | 用于下载和预处理大型 Hypersim、Virtual KITTI-2、LayeredDepth-Syn 和 DINOv3 感知损失检查点的脚本。 |
| 演示与网页 UI | Hugging Face Spaces 链接(Marigold-V2-web),用于快速视觉测试。 |
快速开始(Linux、Python 3.10、CUDA GPU)
# Clone & set up environment (conda, CUDA 12.8 wheels)
git clone https://github.com/huawei-bayerlab/marigold-v2.git
cd marigold-v2
bash setup/setup_env.sh # creates conda env "marigold-v2"
conda activate marigold-v2
# Download model weights and example images
python scripts/download_assets.py --skip-datasets
# Run depth on the bundled examples
python scripts/infer.py \
--modality depth \
--image_dir assets/examples \
--output_dir output/examples
默认深度检查点(depth/Log-stage2)可产生 README 中报告的最先进数字(例如 NYUv2 上 AbsRel 3.6 %、δ1 98 %)。
训练新模型(大致流程)
- 准备数据 – 该仓库包含用于获取 Hypersim、Virtual KITTI-2 和可选分层深度数据的脚本。
- 从
marigoldv2/experiments/...选择配置(例如training_relative_log_depth_config_stage2.yaml)。 - 启动训练:
– 第 1 阶段(160 k 步)在 32 GB GPU 上约需 5 天;第 2 阶段(30 k 步)约 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 - 生成的
trainables.safetensors可直接与scripts/infer.py搭配使用。
扩展到新稠密任务 – 该框架是模块化的:
- 在
marigoldv2/config/datasets/中添加数据集 YAML 和清单加载器。 - 编写一个小型
network_graph步骤,将解码后的 RGB 输出转换为所需表示(例如语义图)。 - 添加损失模块(例如交叉熵)和验证指标。
- 在新的实验文件夹中注册新模块,并将新的训练配置指向它们。 README 包含以表面法线实验为模板的逐步指南。
性能与硬件注意事项
- 1024×1024 推理需要约 17 GB GPU 内存;2048×2048 需要约 29 GB。
- 扩散 Transformer 在加载时量化为 4 位,可减少内存并加速推理。
- 对于深度补全,该仓库提供分块局部适配脚本,可在较高分辨率输入上改善 MAE。
在哪里找到更多信息
- 论文:https://arxiv.org/abs/2609.08084(SIGGRAPH Asia 2026)。
- 模型权重:https://huggingface.co/huawei-bayerlab/marigold-v2-0。
- 演示:https://hf.co/spaces/huawei-bayerlab/marigold-v2-web。
- ModelScope 镜像(网站、模型、演示)列于 News 下。
TL;DR – Marigold V2 是一个以研究为导向的开源工具包,可将冻结的扩散 Transformer 重新用于快速、高质量的单目深度、透视深度、法线和反照率预测器,并附有用于端到端训练、评估和推理的脚本。它完全属于 AI/ML 领域,并非离题的集合。
相关
- 项目
- Dispatch
- Dispatch
- 项目
- Dispatch