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 テキスト-to-画像モデルは凍結されたままにし、小さな学習可能アダプタ(LoRA)と VAE デコーダのみを学習するため、ファインチューニングが安価(単一の 32 GB GPU で約 1 週間)です。
  • 単一ステップの密予測 – 多数のサンプリングステップを必要とする従来の拡散パイプラインとは異なり、Marigold V2 は 1 回のフォワードパスで最終的な密マップを生成します。
  • 複数の出力モダリティ – LoRA チェックポイントとプロンプト埋め込みを差し替えることで、同じバックボーンを深度(対数、線形、視差、シースルー)、法線、アルベドに再利用できます。
  • アフィン不変深度 – 深度値は画像ごとの未知のスケール/シフトまで出力され、論文で使用されている評価プロトコルと一致します。

提供されるコンポーネント

コンポーネント 内容
チェックポイント 各モダリティと深度パラメータ化に対応する LoRA アダプタ(trainables.safetensors として保存)。すべて凍結された Qwen バックボーンと事前計算されたテキストプロンプト埋め込みを共有するため、7 B テキストエンコーダは読み込まれません。
推論スクリプト(scripts/infer.py) 任意の画像フォルダに対して深度、法線、アルベドを実行するシンプルな CLI。NumPy .npy マップと可視化 PNG を出力します。
評価ランチャー 標準的な深度/法線ベンチマーク(NYUv2、KITTI、ETH3D、ScanNet、DIODE、iBims-1 など)をダウンロードし、論文で報告されている指標を計算する Bash スクリプト。
学習フレームワーク YAML 駆動の設定システム(marigoldv2/experiments/...)と、データセット、変換、ネットワークブロック、損失グラフ、オプティマイザを接続する小さなレジストリ。単一 GPU とマルチ GPU(accelerate launch)をサポート。
データセットヘルパー 大規模な Hypersim、Virtual KITTI-2、LayeredDepth-Syn、DINOv3 知覚損失チェックポイントをダウンロードおよび前処理するスクリプト。
デモと Web 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 %)を生成します。

新しいモデルの学習(おおよその流れ)

  1. データを準備 – リポジトリには Hypersim、Virtual KITTI-2、およびオプションのレイヤード深度データを取得するスクリプトが含まれています。
  2. marigoldv2/experiments/... から設定を選択(例:training_relative_log_depth_config_stage2.yaml)。
  3. 学習を開始:
    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
    
    – ステージ 1(160 k ステップ)は 32 GB GPU で約 5 日、ステージ 2(30 k ステップ)は約 1 日かかります。
  4. 得られた trainables.safetensors は scripts/infer.py で直接使用できます。

新しい密タスクへの拡張 – フレームワークはモジュール式です:

  • marigoldv2/config/datasets/ にデータセット YAML とマニフェストローダーを追加します。
  • デコードされた RGB 出力を目的の表現(例:セマンティックマップ)に変換する小さな network_graph ステップを記述します。
  • 損失モジュール(例:クロスエントロピー)と検証指標を追加します。
  • 新しい実験フォルダに新しいモジュールを登録し、新しい学習設定をそれらに向けます。 README には、表面法線の実験をテンプレートとして使用したステップバイステップのガイドが含まれています。

パフォーマンスとハードウェアの注意事項

  • 1024×1024 の推論には約 17 GB の GPU メモリが必要です。2048×2048 には約 29 GB 必要です。
  • 拡散 Transformer は読み込み時に 4 ビットに量子化され、メモリを削減し推論を高速化します。
  • 深度補完のために、リポジトリは高解像度入力で実行したときに MAE を改善するタイル状ローカル適応スクリプトを提供しています。

詳細情報


TL;DR – Marigold V2 は、凍結された拡散 Transformer を高速で高品質な単眼深度、シースルー深度、法線、アルベド予測器に再利用する、研究志向のオープンソースツールキットであり、エンドツーエンドの学習、評価、推論用のスクリプトを備えています。これは完全に AI/ML 領域に属し、的外れなコレクションではありません。

関連

  • プロジェクト
  • Dispatch
  • Dispatch
  • プロジェクト
  • Dispatch