nv-tlabs/dvlt

Official implementation of Déjà View: Looping Transformers for Multi-View 3D Reconstruction

📚 プロジェクト概要

Déjà View (DVLT) – 多視点 3D 再構築のためのループ型 Transformer – は、NVIDIA と複数の大学によってリリースされた研究グレードのライブラリです。これは、順序のない画像セットやビデオフレームを入力として受け取り、以下を出力するリカレント Transformer を実装しています。

  • ピクセル単位の深度マップ
  • カメラポーズ(外部パラメータおよび内部パラメータ)
  • 3D 点群(ワールド空間座標)
  • 各レイの信頼度スコア

このモデルは一度トレーニングすれば、可変数のリファインメントステップ (K) で実行できます。ステップ数を増やすと計算コストはかかりますが品質が向上するため、速度と精度のトレードオフをその場で調整可能です。


🚀 リポジトリの内容

コンポーネント 提供内容
dvlt/model/dvlt コアとなるリカレント Transformer 実装と 4 つの消去法バリエーション(バニラ、デカップリングブロック、s_out トークンなし、深度スケーリングなし)。
評価ラッパー 5 つの公開ベースライン(VGGT, VGGT-Omega, Depth-Anything-3, MapAnything, Pi3)用の軽量アダプター。元のパッケージ(別途インストールが必要)をインポートするため、DVLT と最先端手法を比較できます。
トレーニングスタック 🤗 accelerate + Hydra 上に構築されたスクリプト。Weights & Biases によるログ記録もオプションで可能です。深度畳み込みヘッド用のステージ 2 ファインチューニングレシピが含まれています。
推論とデモ すぐに実行可能な推論コード、Gradio Web UI、および後続の可視化のために .glb / .rrd ファイルを書き出すオフラインモード。
データローダー ScanNet++, DTU, ETH3D, 7Scenes, NuScenes 用のプリプロセスパイプライン、および重いプリプロセスをスキップする軽量な “benchmark_lite”。
ドキュメントとツール インストールガイド、データセット設定ドキュメント、貢献ガイド、テストスイート、および CLI スクリプト用のタブ補完ヘルパー。

🛠️ クイックスタート (README より)

# 1️⃣ 環境の作成
conda create -n dvlt python=3.12 && conda activate dvlt
conda install pytorch=2.5.1 torchvision pytorch-cuda=12.4 -c pytorch -c nvidia -c conda-forge

# 2️⃣ パッケージのインストール(すべてのオプションを含む)
pip install -e .[all]

推論の例 (Python)

import torch
from accelerate import Accelerator
from dvlt.model.dvlt.model import DVLT
from dvlt.util.preprocess import load_sequence, preprocess_images

ckpt = "nvidia/dvlt"          # ローカルフォルダ、URL、または HF hub ID を指定可能
seq_path = "path/to/scene_dir" # またはビデオファイル

accelerator = Accelerator(mixed_precision="bf16")
model = DVLT(img_size=504)
model.load_pretrained(ckpt, strict=True)
model.setup_test(accelerator)

_, frames = load_sequence(seq_path)
batch = preprocess_images(frames, img_size=504, patch_size=14,
                           device=accelerator.device)

with torch.no_grad(), accelerator.autocast():
    preds = model.predict(batch, accelerator)

# 結果へのアクセス
cameras = preds["cameras"][0]
extrinsics = cameras.camera_to_worlds          # (S, 3, 4)
intrinsics = cameras.get_intrinsics_matrices()# (S, 3, 3)
depths = preds["depths"][0]                   # (S, H, W)
points = preds["world_points"][0]             # (S, H, W, 3)

トレーニング (シングル GPU)

python -m dvlt.scripts.train --config-name dvlt-large data=scannetpp

accelerate を使用したマルチ GPU トレーニング:

accelerate launch --num-processes 4 -m dvlt.scripts.train \
    --config-name dvlt-large data=scannetpp

トレーニングの再開:

python -m dvlt.scripts.train \
    --config-dir=outputs/<run> --config-name=config.yaml \
    trainer.resume_from_checkpoint=latest

評価

# フルベンチマーク (DTU, ETH3D, 7Scenes, ScanNet++, NuScenes)
python -m dvlt.scripts.test --config-name dvlt data=benchmark

# 軽量ベンチマーク(重いプリプロセスなし)
python -m dvlt.scripts.test --config-name dvlt data=benchmark_lite

インタラクティブデモ (Gradio)

python -m dvlt.scripts.gradio_demo          # http://localhost:7860 を開く
# オフラインモード – UI を起動せずに .glb/.rrd ファイルを書き出す
python -m dvlt.scripts.gradio_demo --offline \
    --input /path/to/scene_dir --models dvlt

📊 報告されたパフォーマンス (フルベンチマーク)

データセット Pose AUC@3 Pose AUC@30 Depth inlier@3% Depth AbsRel
DTU 0.8319 0.9880 0.9706 0.0093
ETH3D 0.6604 0.9536 0.7717 0.0267
7Scenes 0.1393 0.8172 0.7437 0.0349
ScanNet++ 0.7941 0.9803 0.9239 0.0167
NuScenes 0.4340 0.8534 0.5853 0.0673

⚙️ 設定システム

このプロジェクトでは Hydra を使用しています。実験設定は src/dvlt/config/experiments/ にあります。

  • dvlt-large – メイントレーニングレシピ(大規模モデル、フルスケジュール)。
  • dvlt-large-ablation* – コマンドラインオーバーライドを介して特定のアーキテクチャ変更を切り替え。
  • dvlt-large-depthconv-stage2 – 深度畳み込みヘッドのファインチューニング(リリースされたチェックポイントと一致)。
  • dvlt – リリースされたステージ 2 チェックポイントをロードする推論専用エイリアス。
  • ベースラインラッパー(vggt, da3-large, pi3x など)も評価用にここで定義されています。

ユーザー固有のパス(データセットの保存場所など)は src/dvlt/config/experiments/user/default.yaml で設定されます。これを local.yaml にコピーして data_root を編集し、コマンドラインで user=local を指定して選択してください。

📄 ライセンス

  • コード – Apache 2.0 (LICENSE を参照)。
  • モデルの重み – NVIDIA ライセンス(研究および評価のみ、非商用)。
  • サードパーティコンポーネントは元のライセンスを保持します(THIRD_PARTY_LICENSES.md に記載)。

📚 引用方法

@article{burzio2026dejaview,
  title   = {D\'ej\'a View: Looping Transformers for Multi-View 3D Reconstruction},
  author  = {Burzio, Alessandro and Fischer, Tobias and Elflein, Sven and Zhou, Qunjie and de Lutio, Riccardo and Ren, Jiawei and Huang, Jiahui and Huang, Shengyu and Pollefeys, Marc and Leal-Taix\'e, Laura and Gojcic, Zan and Turki, Haithem},
  journal = {arXiv preprint arXiv:2605.30215},
  year    = {2026}
}

🎯 ターゲットユーザー

  • ニューラル 3D 再構築 を探求している研究者(特にリカレントまたはループ型 Transformer アーキテクチャに関心がある方)。
  • カジュアルな写真やビデオから高速で反復的な深度およびポーズ推定を必要とする AR/VR パイプライン を構築するエンジニア。
  • 単一のコードベースで最近のベースライン(VGGT, Depth-Anything-3, MapAnything, Pi3)との 公平な比較 を行いたい方。

🔗 リンク

関連

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