見出し画像

WSL2でDirector3Dを試してみる

「与えられたテキストから連続したカメラの内部関数と外部関数を生成するための軌跡拡散モデル」「カメラとテキストから粗い3DGSを20秒で生成する3DGS駆動のマルチビュー潜在拡散モデル」らしいDirector3Dを試してみます。

使用するPCはドスパラさんの「GALLERIA UL9C-R49」。スペックは
・CPU: Intel® Core™ i9-13900HX Processor
・Mem: 64 GB
・GPU: NVIDIA® GeForce RTX™ 4090 Laptop GPU(16GB)
・GPU: NVIDIA® GeForce RTX™ 4090 (24GB)
・OS: Ubuntu22.04 on WSL2(Windows 11)
です。


1. 準備

環境セットアップ

python3 -m venv director3d
cd $_
source bin/activate

リポジトリをクローン。

git clone https://github.com/imlixinyang/director3d
cd director3d

パッケージのインストール。

pip install torch torchvision xformers
#
pip install kiui scipy opencv-python-headless kornia omegaconf imageio imageio-ffmpeg  seaborn==0.12.0 plyfile ninja tqdm diffusers transformers accelerate timm einops matplotlib plotly typing argparse gradio kaleido==0.1.0
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
pip install "git+https://github.com/ashawkey/diff-gaussian-rasterization.git"

モデルのダウンロード

wgetコマンドを実行します。

wget https://huggingface.co/imlixinyang/director3d/resolve/main/model.ckpt?download=true -O model.ckpt

2. 試してみる

推論のまえに、オプションを確認します。

  • --config : 設定ファイル。初期値、configs/main.yaml

  • --ckpt : モデルの指定。初期値、model.ckpt

  • --text_file : プロンプトを書いたファイル

  • --text : コマンドラインからプロンプトを指定

  • --text_templete : 置き換え文字列を指定。コード読むに、text_file内の特定文字列(これがtext_template)を--textで指定した文字列で置き換える、ですね。初期値、$test$

  • --export_all: ぜんぶ、つまり video、camera、.ply、imageの4つを生成・出力する。初期値、false

  • --export_video: videoを生成する。初期値、false

  • --export_camera: cameraを生成する。初期値、false

  • --export_ply: .plyを生成する。初期値、false

  • --export_image: image(.jpg)を生成する。初期値、false

  • --num_refine_step: リファインのステップ数。初期値、1000

  • --out_dir: 出力先。初期値、./exps/tmp

  • --num_sample: 生成するサンプル数。初期値、4

  • --use_3d_mode_every_m_steps: 何ステップ毎に3Dモードを使用するか。初期値、10

  • --gpu: cuda:X の X。初期値、0

CUDA_VISIBLE_DEVICES=0 python inference.py --export_all --text "a delicious hamburger on a wooden table."

実行した結果がこちら。export_allを指定しているので、camera, image, ply, videoがそれぞれ、4つのサンプル(これは初期値)が生成されています。

-rw-r--r-- 1 user user     2216 Jul 25 02:50 'exps/tmp/camera/a delicious hamburger on a wooden table._0.npy'
-rw-r--r-- 1 user user     2216 Jul 25 03:04 'exps/tmp/camera/a delicious hamburger on a wooden table._1.npy'
-rw-r--r-- 1 user user     2216 Jul 25 03:33 'exps/tmp/camera/a delicious hamburger on a wooden table._2.npy'
-rw-r--r-- 1 user user     2216 Jul 25 04:04 'exps/tmp/camera/a delicious hamburger on a wooden table._3.npy'

-rw-r--r-- 1 user user   786511 Jul 25 02:50 'exps/tmp/image/a delicious hamburger on a wooden table._0.png'
-rw-r--r-- 1 user user   830097 Jul 25 03:04 'exps/tmp/image/a delicious hamburger on a wooden table._1.png'
-rw-r--r-- 1 user user   862410 Jul 25 03:33 'exps/tmp/image/a delicious hamburger on a wooden table._2.png'
-rw-r--r-- 1 user user   947923 Jul 25 04:04 'exps/tmp/image/a delicious hamburger on a wooden table._3.png'

-rw-r--r-- 1 user user 26087570 Jul 25 02:50 'exps/tmp/ply/a delicious hamburger on a wooden table._0.ply'
-rw-r--r-- 1 user user 14906976 Jul 25 02:50 'exps/tmp/ply/a delicious hamburger on a wooden table._0.splat'
-rw-r--r-- 1 user user 30685394 Jul 25 03:04 'exps/tmp/ply/a delicious hamburger on a wooden table._1.ply'
-rw-r--r-- 1 user user 17534304 Jul 25 03:04 'exps/tmp/ply/a delicious hamburger on a wooden table._1.splat'
-rw-r--r-- 1 user user 40644994 Jul 25 03:33 'exps/tmp/ply/a delicious hamburger on a wooden table._2.ply'
-rw-r--r-- 1 user user 23225504 Jul 25 03:33 'exps/tmp/ply/a delicious hamburger on a wooden table._2.splat'
-rw-r--r-- 1 user user 58920763 Jul 25 04:04 'exps/tmp/ply/a delicious hamburger on a wooden table._3.ply'
-rw-r--r-- 1 user user 33668800 Jul 25 04:05 'exps/tmp/ply/a delicious hamburger on a wooden table._3.splat'

-rw-r--r-- 1 user user  3829724 Jul 25 02:51 'exps/tmp/video/a delicious hamburger on a wooden table._0.mp4'
-rw-r--r-- 1 user user  3713292 Jul 25 03:04 'exps/tmp/video/a delicious hamburger on a wooden table._1.mp4'
-rw-r--r-- 1 user user  4197060 Jul 25 03:33 'exps/tmp/video/a delicious hamburger on a wooden table._2.mp4'
-rw-r--r-- 1 user user  4625209 Jul 25 04:05 'exps/tmp/video/a delicious hamburger on a wooden table._3.mp4'

で、そのうちの exps/tmp/video/a delicious hamburger on a wooden table._0.mp4 がこちら。

気になるVRAMの使用量は24GBぎりぎりでして、生成される内容によって、24GBにおさまる場合もあれば、溢れる場合もあります。

生成時間は、VRAM内におさまるか否かでかなり変わります。24GB以内であれば、6分52秒ほど、溢れた場合は15分~2時間とかなりのばらつきがあります。

別のオプションでも試してみました。

CUDA_VISIBLE_DEVICES=0 python inference.py --export_all --num_samples 1 --text "a delicious sanuki udon noodle on a wooden table."
  • num_samples: サンプル数1

  • text: 讃岐うどん

として生成された結果がこちら。

讃岐うどん、たべたくなってきました。

この記事が気に入ったらサポートをしてみませんか?