fabiotosi92/ZipDepth

[ECCV 2026] Official implementation of "ZipDepth: Bringing Lightweight Zero-Shot Monocular Depth Anywhere, on Any Device". A compact 6.1M-parameter network for zero-shot monocular depth estimation, running in real time from server GPUs to mobile phones via knowledge distillation from foundation models.

📦 ZipDepth とは何ですか?

ZipDepth は ECCV 2026 で発表された軽量でゼロショットの単眼深度推定モデルです。特定のタスクに合わせた微調整なしに、単一の RGB 画像から密な深度マップを予測します。最大の特徴はその 精度と効率のトレードオフ です:非常に大きなトランスフォーマー基盤モデルと同等の性能を達成しながら、モデルサイズは約 6 M パラメータに抑え、現代の GPU で 1 k FPS 以上 の速度で動作します(モバイル/エッジハードウェアでも快適に動作)。


🔑 コアアイデア

コンポーネント 機能
エンコーダ RepVGG 再パラメータ化可能な畳み込みから構成される4段階階層。初期段階では ストリッププーリングアテンション で水平/垂直方向の文脈を捉え、後段では シグマ・アンド・エキサイトグローバルコンテキストブロック を追加。
ネック マルチスケールプーリング(SPPF)と クロススケール融合 モジュールで特徴量を統合してからデコード。
デコーダ コンパクトな特徴マップピラミッド(FPN)と 凸アップサンプリング ヘッドを搭載し、サブピクセル精度の深度マップを生成。
2つのチェックポイント zipdepth_base.pth(GPU対応、torch.nn.Unfold を使用)と zipdepth_base_npu.pth(Unfold不要、ONNX/CoreML/TFLite への変換が容易でモバイル/NPU向け)。

🚀 使い始め

# クローンとインストール
git clone https://github.com/fabiotosi92/ZipDepth
cd ZipDepth
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt   # PyTorch ≥2.4 が必要
pip install -e .

推論(単一画像、フォルダ、または動画)

python scripts/infer.py \
  --checkpoint checkpoints/zipdepth_base.pth \
  --input assets/examples/im0.jpg \
  --input-size 384          # 短辺、32の倍数に丸められる

オプションフラグ--fp16(半精度)、--compile(torch.compile)、--npu(NPU対応チェックポイント使用)、--no-colormap / --save-raw.npy 形式の生深度出力を取得。

モデルのエクスポート

  • ONNX(モバイル/エッジ向け推奨):
    python scripts/export.py \
      --ckpt checkpoints/zipdepth_base_npu.pth \
      --format onnx --height 384 --width 384 --npu
    
  • TorchScript(トレースまたはフリーズ):純粋な PyTorch 配備用。

📊 パフォーマンス概要

データセット パラメータ数 GFLOPs(384×384) 通常の遅延(RTX 3090)
NYUv2, KITTI, ETH3D, ScanNet, DIODE ~6.1 M ~0.9 G 0.8 ms(TensorRT FP16)→ 約1300 FPS

論文のパレートプロットでは、ZipDepth が軽量モデル領域を支配しつつ、最良の大型モデルと数パーセント以内の差で競合していることが示されています。


🛠️ 学習(研究志向)

  • データ:17の公開画像ドメイン(例:COCO、Cityscapes、MegaDepth など)で Depth Anything V2 Large からの知識蒸留により生成された 1400 万件の RGB-深度ペア。ファイルパスのリストは training_files.txt.gz として提供。実際の画像は元のデータセットから入手する必要があります。
  • パイプラインscripts/prepare_index.py で JSON インデックスを構築 → オプションで NumPy メモリマップに変換して高速 I/O を実現。
  • 起動(単一GPU例):
    python scripts/train.py --config configs/default.json
    
    Multi-GPU は torchrun と標準 DDP を使用。
  • 損失関数:スケール・シフト不変深度損失 + グラデント正則化、AdamW と One-Cycle LR スケジュールで最適化。

📱 オンデバイスでのデプロイ

  1. NPU対応チェックポイントzipdepth_base_npu.pth)を選択。
  2. ONNX にエクスポート(scripts/export.py --format onnx --npu)。
  3. ONNX モデルを対象ランタイム(ONNX Runtime Mobile、CoreML、TFLite、NCNN など)に変換。
  4. アップサンプリングヘッドはモバイル NPU で広くサポートされている演算子のみを使用しており、クリーンな変換が保証されます。

🙏 謝辞と引用

著者らは Marigold(評価プロトコル提供)および Depth Anything V2(擬似ラベル提供)の作成者に感謝します。ZipDepth を研究で使用する場合、以下の引用を記載してください:

@inproceedings{tosi2026zipdepth,
  title     = {ZipDepth: Bringing Lightweight Zero-Shot Monocular Depth Anywhere, on Any Device},
  author    = {Tosi, Fabio and Bartolomei, Luca and Poggi, Matteo and Mattoccia, Stefano},
  booktitle = {European Conference on Computer Vision (ECCV)},
  year      = {2026}
}

📧 お問い合わせ

質問がある場合は、README に記載されたメールアドレスまでご連絡ください。

関連

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