Appearance
Video Depth Anything -- 動画の深度推定
概要
このセクションでは、Video Depth Anythingがどのようなモデルであるか、そしてなぜ動画専用の深度推定モデルが必要なのかを説明します。
なぜ動画専用モデルが必要か
画像の深度推定モデル(Depth Anything V2など)を動画に適用する場合、最も素朴な方法は各フレームを1枚ずつ独立に処理することです。しかし、この方法には致命的な問題があります。フレーム間で深度マップがちらつく(フリッカーが発生する) のです。
深度推定モデルは、入力画像のわずかな変化(カメラの微小な動き、照明の変化など)に対して出力が大きく変動することがあります。人間の目にはほとんど同じに見える連続する2フレームでも、深度マップは大きく異なる場合があります。これを動画として再生すると、奥行きがフレームごとにパタパタと変わり、非常に見づらい映像になります。
Video Depth Anythingはこの「時間的一貫性(temporal consistency)」の課題を解決するために設計されたモデルです。Depth Anything V2のアーキテクチャをベースとしつつ、隣接フレーム間の情報を活用する時間的な伝搬モジュールを追加しています。これにより、前後のフレームの深度推定結果を考慮しながら各フレームの深度マップを生成するため、長尺の動画でも安定した深度マップが得られます。
LKG(Looking Glass)のような立体視ディスプレイで動画を再生する場合、深度マップのちらつきは立体感のガタつきとして直接体感されるため、時間的一貫性の確保は特に重要です。
基本情報
- 公式サイト: https://videodepthanything.github.io/
- GitHub: https://github.com/DepthAnything/Video-Depth-Anything
前提条件
このセクションでは、Video Depth Anythingを動作させるために必要な環境を説明します。
| 項目 | 要件 |
|---|---|
| OS | Windows 10/11 + WSL(Ubuntu 22.04) |
| Python | 3.10以上 |
| GPU | CUDA対応のNVIDIA GPU |
| Git | インストール済みであること |
なぜWSLが必要か
Video Depth Anythingの導入にはbashスクリプト(.shファイル)の実行が必要です。Windowsネイティブ環境ではbashスクリプトを直接実行できないため、WSL(Windows Subsystem for Linux)を使ってLinux環境を用意する必要があります。
WSLはWindows上でLinuxカーネルを動作させる仕組みであり、WSL2ではNVIDIA GPUのパススルーがサポートされています。Windows側にNVIDIAドライバがインストールされていれば、WSL内から追加設定なしでCUDAを利用できます(WSL内にCUDA Toolkitを別途インストールする必要はありません)。
WSLのセットアップ
このセクションでは、Linuxに不慣れな状態からWSLを導入する手順を説明します。松崎はLinuxについて無知な状態からWSLを導入しました。以下はその作業ログに基づく、実際に動作確認済みの手順です。
参考にした動画: https://youtu.be/E1exh1g2tos?si=wPhdHcUKQi6ncqRN
手順1. WSL2をデフォルトに設定
管理者権限のPowerShellで以下を実行します。
powershell
wsl --set-default-version 2手順2. Ubuntuのインストール
powershell
wsl --install -d Ubuntu-22.04インストール後、そのままユーザー名とパスワードの設定画面に入ります。任意のユーザー名とパスワードを設定します。
手順3. パッケージの更新とpipのインストール
WSL内で以下を実行します。sudo apt updateを先に実行することが重要です。これを飛ばすとパッケージのインストールに失敗します。
bash
# パッケージリストの更新(これをしないとpipがインストールできない)
sudo apt update && sudo apt upgrade -y
# pipのインストール
sudo apt install python3-pip
# 確認
pip3 --version松崎所感: 最初に
sudo apt install python3-pipを実行した際に「Package python3-pip has no installation candidate」エラーが出た。sudo apt updateを先に実行してからやり直すことで解決した。
手順4. PATHの設定
pipでインストールしたパッケージのコマンドが見つからない場合、PATHを追加します。
bash
export PATH="$PATH:$HOME/.local/bin"
source ~/.bashrc手順5. WSLの起動と終了
次回以降の起動は以下のコマンドで行います。
powershell
wsl -d Ubuntu-22.04終了する場合はexitで抜けたあと、以下で完全にシャットダウンできます。
powershell
wsl --shutdownWSL Tips
WSLを使いこなすための実用的な知識をまとめます。
Windowsドライブへのアクセス: WSL内からWindowsのファイルシステムには/mnt/c/(Cドライブ)、/mnt/d/(Dドライブ)などでアクセスできます。松崎もcd /mnt/c/workでWindows側の作業フォルダに移動しています。
GPU パススルー: WSL2ではNVIDIA GPUのパススルーがサポートされています。Windows側にNVIDIAドライバがインストールされていれば、WSL2内から追加設定なしでCUDAが利用できます。WSL内にCUDA Toolkitを別途インストールする必要はありません(ドライバだけでよいです)。
よくあるトラブルと対処法
sudo apt installでパッケージが見つからない場合は、先にsudo apt updateを実行します- pythonコマンドが使えない場合は
python3を試します(Ubuntu 22.04ではデフォルトでpython3です) /mnt/c/以下のファイル操作はWSLネイティブのファイルシステムより遅いです。大量のファイルI/Oがある場合はWSLのホームディレクトリ(~/以下)で作業する方が高速ですget_weights.shのような単純なシェルスクリプトであれば、Git Bashでも実行できる場合があります。ただし、Python環境やCUDA連携を含む場合はWSLの方が安定します
導入手順
このセクションでは、Video Depth Anythingのインストールから推論実行までの手順を説明します。
手順1. リポジトリのクローンと依存パッケージのインストール
WSL内で作業フォルダに移動し、以下を実行します。
bash
git clone https://github.com/DepthAnything/Video-Depth-Anything
cd Video-Depth-Anything
pip install -r requirements.txt手順2. モデルの重みをダウンロード
方法A: bashスクリプトで一括ダウンロード
bash
bash get_weights.shget_weights.shの中身は以下の通りです。checkpointsディレクトリを作成し、HuggingFaceからSmallとLargeのモデルを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.pth方法B: 手動ダウンロード
HuggingFaceのリポジトリページからモデルファイルを直接ダウンロードし、checkpoints/ディレクトリに配置します。

推論の実行
このセクションでは、実際に動画の深度推定を実行する方法と、モデルサイズごとの違いを説明します。
以下のコマンドで動画の深度推定を実行します。
bash
python3 run.py \
--input_video ./assets/example_videos/davis_rollercoaster.mp4 \
--output_dir ./outputs \
--encoder vitlencoderオプション
末尾の--encoderオプションで使用するモデルサイズを指定します。vitはVision Transformerの略であり、lはLarge、sはSmallを意味します。パラメータ数が大きいほど精度は高いですが、処理時間も長くなります。
| オプション | モデルサイズ | 説明 |
|---|---|---|
vitl | Large | 高精度。処理時間は長い |
vits | Small | 高速。細部の精度はやや劣る |
処理時間の実測値(松崎の環境)
| 動画 | エンコーダ | 処理時間 |
|---|---|---|
| davis_rollercoaster.mp4(サンプル) | vitl (Large) | 約3分 |
| スマホ撮影の動画 | vitl (Large) | 約7分30秒 |
| davis_rollercoaster.mp4(サンプル) | vits (Small) | 約20秒 |
| スマホ撮影の動画 | vits (Small) | 約20秒 |
出力結果
Largeモデル(vitl)での出力です。左が元動画、右が深度推定の出力です。
サンプル動画(davis_rollercoaster.mp4): https://youtu.be/06M_yMRpogU
松崎がスマホで撮った動画: https://www.youtube.com/watch?v=Cd_JziildBI&ab_channel=%E3%81%8F%E3%82%8B%E3%81%BF%E3%82%86%E3%81%B9%E3%81%97
LKGでの確認
このセクションでは、生成した深度推定動画をLKGで立体視した際の品質評価と、SmallモデルとLargeモデルの比較を行います。
Largeモデルでの所感
松崎所感: 一本目も二本目もガビガビすぎる。画像の深度推定しか経験がないのでどのくらいすごいとかは言えないが、立体視はできてる。でも奥行きのつき方がペーパーマリオ的にも見える。
「ガビガビ」に見える原因としては、以下が考えられます。
- 動画の解像度: 動画は画像と比べてフレームあたりの解像度が低いことが多いです。深度マップの解像度も元動画に引きずられるため、LKGの高精細ディスプレイで表示すると粗さが目立ちます
- 深度マップの量子化: 動画として出力する際に、深度値が8bitのグレースケールに量子化されます。画像の深度推定では16bitやfloatで出力できるのに対し、動画では256段階に丸められるため、段階的な奥行きの変化が「ペーパーマリオ的」に見える一因になりえます
- モデルの特性: 動画向けの時間的一貫性を優先した結果、各フレームの深度精度がやや犠牲になっている可能性があります
Small vs Large モデルの比較
Smallモデルで深度推定した結果:
松崎所感: 確かに奥行きの付け方がSmallのほうが控えめというか、中間部分の深度推定がうまくできていない感じがあった。Largeのほうがうまいのは言い切れると思うが、rollercoasterのサンプル動画だとLargeで一瞬ガタつきがあったのがSmallのほうでなくなっていた。
| 項目 | Large (vitl) | Small (vits) |
|---|---|---|
| 処理速度 | 遅い(サンプル3分) | 速い(サンプル20秒) |
| 奥行きの精度 | 高い | 中間部分が弱い |
| 安定性 | サンプルで一瞬ガタつきあり | ガタつきなし |
| 全体的な品質 | Largeの方が上 | 速度重視なら十分 |
Smallモデルでガタつきが解消されたのは興味深い結果です。パラメータ数が少ないモデルは、入力の微小な変化に対する感度が低い傾向があるため、結果として時間的な安定性が高くなったと考えられます。プレビュー用途など速度を優先する場合はSmall、最終出力にはLargeを使うという使い分けが現実的です。
関連技術と参考情報
モデルのバックボーン: Video Depth AnythingはDepth Anything V2をベースとしており、ViT(Vision Transformer)アーキテクチャを採用しています。vitlはViT-Large、vitsはViT-Smallを意味します。
Video Depth Anything V2: 本記事執筆後にVideo Depth Anything V2がリリースされており、時間的一貫性がさらに改善されています。同じGitHubリポジトリで公開されているので、最新のモデルを確認することを推奨します。
LKGでの利用について: 深度推定の結果をLKGで立体視するには、元の動画と深度マップ動画を組み合わせて表示します。深度マップの品質(解像度、時間的な安定性)が立体視の品質に直結するため、用途に合わせてモデルサイズを選択するとよいです。
参考リンク
- Video Depth Anything 公式サイト
- GitHub - DepthAnything/Video-Depth-Anything
- HuggingFace (Small)
- HuggingFace (Large)
- WSL参考動画
- 出力結果: Large サンプル
- 出力結果: Large 自前動画
- 出力結果: Small サンプル
- 出力結果: Small 自前動画
Author: 松崎 | Source:
松崎/Video Depth Anything 1a8aba435ee780a5a574cee826331803.md| AI補完: 2026-03-05