Stable-Dreamfusionを使ってテキストから3Dオブジェクトを生成する

github.com

はじめに

今まで画像生成や動画生成は試してきましたが3Dオブジェクト生成は今回が初めてです。

「Stable-Dreamfusion」というのを使わせて頂きました。

環境

Ubuntu 22.04 on WSL2
CUDA 11.8
Python 3.10

導入

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118
git clone https://github.com/ashawkey/stable-dreamfusion
cd stable-dreamfusion
pip install -r requirements.txt

実行

さっそく実行してみましょう。

実行は2段階になっているようです。

  • 低解像度の3Dオブジェクトを作成する
  • 「DMTet」というのを使って高解像度化する

今回はBlenderに取り込める3Dオブジェクトファイル(拡張子obj)を作るところまでやります。

低解像度の3Dオブジェクトを作成する

python main.py --text "a hamburger" --workspace trial -O --vram_O --w 64 --h 64

オプション

この時点での3Dオブジェクトファイル(拡張子obj)を作りたければ以下を実行。
必ずしも必要ありません。

python main.py --workspace trial -O --save_mesh

「DMTet」を使って高解像度化する

python main.py -O --text "a hamburger" --workspace trial_dmtet --dmtet --iters 5000 --init_with trial/checkpoints/df.pth
python main.py -O --text "a hamburger" --workspace trial_dmtet --dmtet --iters 5000 --save_mesh

結果

「DMTet」を使った高解像度化前後の動画です。
左は前、右が後です。




以下はBlenderで読み込んだところです。これ3Dなんです。

上のように表示させるには「3Dビューのシェーディング」を「マテリアルプレビュー」に設定する必要があります。

VRAM使用量は

VRAM 12GBのRTX 3080で実行可能でした。

さいごに

今回はテキストからの3Dオブジェクト生成でした。

今度は画像からの3Dオブジェクト生成に挑戦したいと思います。