はじめに
Xで面白そうなデモ動画を見つけたので、自前のQuestでデモのWebXRを動かしたらとても面白くて感動していたんですけど、開発者がVideo-Depth-Anythingをもとにして深度マップつくったぜ。と言っていてたのでこのモデルを試してみました。
注意としては、このXRのインタラクションデモがつくれるようになるわけではなくて、開発者がこのデモをつくるときに使用した、動画を入力とした深度推定を行うモデルを動かす、というのがこの記事の内容です。
リポジトリはこちら
実行環境
以下の環境で実行してます。
項目 | 内容 |
---|---|
CPU | Intel Core i9-14900K |
メモリ | DDR4 64GB |
GPU | NVIDIA GeForce RTX 3090 (VRAM24GB) |
OS | Windows 11 |
インストール
私はcondaをつかって環境が壊れないように管理しているのでcondaを使う前提で進めます。
conda環境とgit clone
READMEにはpythonのバージョン指定がなかったのでいったん3.10で入れてます。
conda create -n video-depth-anything python=3.10
conda環境を起動
conda activate video-depth-anything
git cloneします。
git clone https://github.com/DepthAnything/Video-Depth-Anything
cloneしたディレクトに移動。
cd Video-Depth-Anything
必要なパッケージ類をインストール。
pip install -r requirements.txt
windows環境の場合
用意してあるシェルスクリプトは実行できないので手打ちします。
まず学習済みモデル保存用フォルダをつくります。
mkdir checkpoints
モデルのダウンロードはREADMEに載っているリンクからできます。赤丸で囲ったSmallとLargeをダウンロードして、それをchekpoints
フォルダに入れればOK。
Linux環境の場合
以下のコマンドを実行すればok。
bash get_weights.sh
以上で準備完了です。
実行
python run.py --input_video ./assets/example_videos/davis_rollercoaster.mp4 --output_dir ./outputs --encoder vitl
するとWarning出ます。
WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:
PyTorch 2.1.1+cu121 with CUDA 1201 (you have 2.1.1+cpu)
Python 3.10.11 (you have 3.10.18)
Please reinstall xformers (see https://github.com/facebookresearch/xformers#installing-xformers)
Memory-efficient attention, SwiGLU, sparse and more won't be available.
Set XFORMERS_MORE_DETAILS=1 for more details
いちおうそのまま実行はしてくれそうではありますが、進行ゲージが止まったままなので修正する必要があります。
いろいろ試してもうまくいかなくてIssuesを見ていたら解決策がありました。
以下を追加で実行すると解決するはず、、
pip install -U xformers --index-url https://download.pytorch.org/whl/cu118
無視してOK押したら一応処理は終わってoutputs
にオリジナル動画と深度推定処理後の動画が生成されました。
いちおうできてはいるみたい。ほかにもいろいろ試してみましたが、完全にエラー吐かない状態にはもっていけなかったのと、もう処理自体はできてるのでここで勘弁してください(許して)。
感想
処理を走らせてGPUの使用率を見ていると、ギザギザの波形になっていたので、画像1枚1枚に対して深度推定をかけているようです(たぶん)。
いや全く問題ないんですけど、ネイティブで動画入力の深度推定モデルは珍しいので、てっきり最適化処理によってもっとスムーズに処理してくれるのかなと思っていただけです。
ちなみに名前が似ているDepth Anyting ACも動画の入力に対応しています。処理速度はこちらのACのほうが速かったです。
なんかすんなりインストールできないし、いろいろ修正してもエラー吐くし、個人的にネットからダウンロードした動画を入力に入れたら謎のエラー吐くしでちょっと癖が強い子だと思いました。
あとこの子メインメモリ(GPUではない)をかなり消費します。
推定が終わってから全部のフレームを合成して動画にする処理があるからか、最後にものすごいメモリを消費します。動画が短いなら大丈夫です。
同じく深度推定モデルであるAppleのDepth-Proはネイティブでは動画の入力に対応していませんが、1枚1枚の処理は高速ですし、同じように動画を入力としてサイドバイサイド動画を出力するスクリプトを載せた記事を書いてるのでよかったら見てみてください(高度なステマ)。