Appearance
Video Depth Anything — 動画向け深度推定と展開
Video Depth Anything(VDA)— 動画向け深度推定
Video Depth Anything は、動画から深度推定を行うツールです。公式GitHubの説明は「Video Depth Anything: Consistent Depth Estimation for Super-Long Videos」で、リポジトリは DepthAnything/Video-Depth-Anything です。
Video Depth Anything(VDA)は、長時間動画に対して一貫した深度推定を行うAIモデルとして整理されています。既存のDepth Anything V2をベースにしており、時間的な安定性と高速性を両立するモデルとして扱われています。
なぜVDAが必要か
Depth Anything V2を動画にそのまま適用すると、フレームごとに深度推定が揺れ、映像の奥行きが不安定に見える課題があります。VDAは動画向けに、フレーム間の一貫性を改善する目的で検討されています。
VDAのモデル種別とライセンス
| モデル | 規模 | 特徴 | ライセンス / 商用可否 | 用途 |
|---|---|---|---|---|
| Small(VDA-S) | 約28M | 高速、精度は良好 | Apache 2.0 / 商用利用可 | Unity / iPad向け候補、製品採用検証対象 |
| Base(VDA-B) | 約113M | 推論速度は普通、高精度 | CC BY-NC 4.0 / 非商用 | 研究用・高精度比較 |
| Large(VDA-L) | 約381M | 重い、最高精度 | CC BY-NC 4.0 / 非商用 | 検証・比較用のみ |
商用プロジェクトではSmallモデルを使用する方針です。Base / Largeは非商用ライセンスとして扱います。
相対深度とメトリック深度
| 種類 | 内容 | 主な用途 |
|---|---|---|
| 相対深度 | 手前・奥など、相対的な奥行き関係を表す | 3D表示、LKGの視覚効果 |
| メトリック深度 | 実際の距離スケールに基づく深度 | AR、計測、整合性が必要なシーン |
LKG表示目的の場合、まずは相対深度で検証可能です。
VDAの導入手順
基本手順は、GitHubリポジトリをcloneし、requirements.txt をインストールし、checkpoints ディレクトリにモデルを配置する流れです。
bash
git clone https://github.com/DepthAnything/Video-Depth-Anything.git
cd Video-Depth-Anything
pip install -r requirements.txtget_weights.sh では、checkpoints ディレクトリを作成し、SmallモデルとLargeモデルのpthファイルをHugging Faceから wget でダウンロードします。利用する重みのライセンスを確認してから取得してください。
bash
#!/bin/bash
mkdir checkpoints
cd checkpoints
wget https://huggingface.co/depth-anything/Video-Depth-Anything-Small/resolve/main/video_depth_anything_vits.pth
wget https://huggingface.co/depth-anything/Video-Depth-Anything-Large/resolve/main/video_depth_anything_vitl.pthWindowsではWSL利用
Windows環境では bash get_weights.sh を直接実行できなかったため、WSLの利用が検討されました。検証ではWSL 2をデフォルトに設定し、Ubuntu 22.04をインストールして作業を進めています。
WSL上では、WindowsのCドライブに /mnt/c からアクセスできます。
| 項目 | 記録 |
|---|---|
| WSL | WSL 2 |
| Linux | Ubuntu 22.04 |
| git | git version 2.34.1 |
| pip | pip 22.0.2 / Python 3.10 |
| pip導入 | sudo apt update 後に sudo apt install python3-pip |
| PATH対応 | export PATH="$PATH:$HOME/.local/bin" を実行し、source ~/.bashrc で反映 |
サンプル実行
Largeモデルを使うサンプル実行コマンドです。
bash
python3 run.py --input_video ./assets/example_videos/davis_rollercoaster.mp4 --output_dir ./outputs --encoder vitl--encoder vitl はLargeサイズのモデルを使う指定です。商用利用前提の検証では、Smallモデルの vits を優先してください。

VDA検証結果
以下の処理時間は、GPU、VRAM、動画長、フレーム数、入力解像度が揃って記録されていないため、参考値です。
| 検証内容 | モデル | 参考処理時間 | 計測条件 | LKGレビュー |
|---|---|---|---|---|
davis_rollercoaster.mp4 | Large | 約3分 | 動画長、フレーム数、GPU、VRAMは記録なし | 立体視はできているが、ブロック状ノイズや粗さが目立つ。奥行きが板状に見える場面がある |
| 任意の検証動画 | Large | 約7分半 | 動画長、フレーム数、GPU、VRAMは記録なし | 同様に、立体感はあるがノイズや粗さが目立つ |
| 同一系統の動画 | Small | 約20秒 | 動画長、フレーム数、GPU、VRAMは記録なし | 奥行きの付け方は控えめ。中間距離の推定が弱い印象 |
| rollercoasterサンプル | Small | 約20秒 | 動画長、フレーム数、GPU、VRAMは記録なし | Largeで一部見られた時間方向のガタつきがSmallでは目立たない例があった |
評価軸を分けると、解像感や奥行き量ではLargeが有利な場面があります。一方で、時間的安定性やアーティファクトの少なさではSmallが良く見える場面もありました。商用利用を前提とする場合は、ライセンス上もSmallを中心に検証します。
VDAのモデル変換とUnity / iPad展開
VDAは、Python上では .pth のまま利用できますが、UnityやiPadで利用するにはモデル形式の変換が必要です。なお、VDAのONNX / CoreML変換は方針段階であり、変換成功を確認した手順としては未確定です。
モデル形式
| 形式 | 内容 | 主な用途 |
|---|---|---|
.pth | PyTorchモデル形式 | Pythonでの学習・研究・公式実装実行 |
.onnx | 形式統一された推論モデル形式 | Windows / Unity / ONNX Runtime |
.mlpackage | Apple CoreML形式 | iPad / iPhone。ANE利用を前提とする場合の候補 |
Unityでは .pth をそのまま直接使用できません。基本的なモデル利用フローは Python → ONNX → Unity です。
iPadでANE利用を前提にする場合は、ONNXを直接使うのではなく、CoreMLへ変換して動作可否を検証する必要があります。ONNX RuntimeのiOS利用やCoreML Execution Providerの利用可能性は別途検証対象です。
ONNX / CoreML変換方針
以下は未検証の変換方針です。成功した変換コマンド、使用したcoremltoolsバージョン、変換ログ、推論結果の一致確認が揃うまでは、確定手順として扱いません。
| 対象 | 方針 | 状態 |
|---|---|---|
| ONNX変換 | torch.onnx.export() を使用し、動画長に対応するためDynamic Axesを有効化する案 | 未検証 |
| iPad用変換 | ONNXまたはPyTorchモデルからCoreMLへの変換を試す案 | 未検証 |
| CoreML最適化 | float16化などを試す案 | 未検証 |
| モデル最適化 | fp16化・量子化を検討 | 未検証 |
| iPad確認 | ANE対応、速度、メモリ使用量、出力品質を確認 | 未検証 |
出力形式
| 出力形式 | 内容 | 用途 |
|---|---|---|
| PNG連番 | 各フレームの深度マップ | Unityでのメッシュ再構築、確認用 |
| EXR | 高ダイナミックレンジ深度 | 精度保持の観点でLKG向け3D再構成の有力候補 |
| NPZ | NumPy形式の深度配列 | データ解析、高速再生 |
| MP4 | 深度動画 | プレビュー、比較 |
| RGBD動画 | RGBとDepthを組み合わせた動画 | LKG変換用 |
| 3Dメッシュ | Depthから再構築したメッシュ | Unity / LKG表示 |
LKG用途では、精度保持を重視する場合はEXRまたはNPZが候補です。PNG連番は軽く、汎用性が高い形式として扱えますが、正規化やビット深度によって奥行き情報が失われる可能性があります。
バッチ処理とストリーミング
VDAには通常のバッチ版と、training-free streamingという実験版ストリーミングモードがあります。
| モード | 内容 | 精度記録 | 方針 |
|---|---|---|---|
| オフライン / バッチ | 全フレームをまとめて処理 | δ₁ ≒ 0.926 | 現状の推奨 |
| ストリーミング | フレームを逐次処理し、時系列情報をキャッシュして再利用 | δ₁ ≒ 0.836 | 実験段階、研究・デモ用 |
ストリーミングモードは品質にばらつきがあるため、現状はバッチ処理を基準とし、ストリーミングは参考程度に扱います。
← ローカル深度推定 Windows — Depth Anything V2 / Video Depth Anything / Apple Depth Pro / MoGe 検証ガイド 概要に戻る