今回の記事ではDreamGaussianによる3Dモデル生成の実装を紹介します。
Google Colabを使用して簡単に実装できますので、ぜひ最後までご覧ください。
今回の内容
・DreamGaussianとは
・DreamGaussianの実装
DreamGaussianとは
DreamGaussianは、効率的かつ高品質な3Dコンテンツ生成を目指す新しいフレームワークで、3Dガウススプラッティングモデルを設計し、UV空間でのメッシュ抽出とテクスチャ精緻化を伴います。Neural Radiance Fieldsの占有枝刈りと対比して、3Dガウスの逐次的密度化が3D生成タスクで大幅に高速に収束することを示しています。さらに、3Dガウスをテクスチャ化されたメッシュに変換し、詳細を微調整する効率的なアルゴリズムを導入して、テクスチャの品質を向上させ、ダウンストリームアプリケーションを容易にします。
詳細は以下のリンクからご確認ください。
導入
ここからはGoogle colabを使用して、DreamGaussianを実装していきましょう。
まずはGPUを使用できるように設定をします。
「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更
Googleドライブをマウントします。
from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive
公式リポジトリをクローンします。
!git clone https://github.com/dreamgaussian/dreamgaussian
%cd dreamgaussian
必要なライブラリをインストールします。
# install dependencies
!pip install -q einops plyfile dearpygui huggingface_hub diffusers accelerate transformers xatlas trimesh PyMCubes pymeshlab rembg[gpu,cli] omegaconf ninja
# pre-built wheels (faster)
!pip install -q https://github.com/camenduru/diff-gaussian-rasterization/releases/download/v1.0/diff_gaussian_rasterization-0.0.0-cp310-cp310-linux_x86_64.1.whl
!pip install -q https://github.com/camenduru/diff-gaussian-rasterization/releases/download/v1.0/simple_knn-0.0.0-cp310-cp310-linux_x86_64.1.whl
# nvdiffrast
!pip install -q git+https://github.com/NVlabs/nvdiffrast
# kiuikit
!pip install -q git+https://github.com/ashawkey/kiuikit
以上で導入は完了です。
Image-to-3D
サンプル画像
まずは公式で用意されているサンプル画像を使用して実装してみます。
%run process.py data/csm_luigi_rgba.png
Elevation = 0
NAME = 'csm_luigi'
IMAGE_PROCESSED = NAME + '_rgba.png'
%run main.py --config configs/image.yaml input=data/{IMAGE_PROCESSED} save_path={NAME} elevation={Elevation} force_cuda_rast=True
%run main2.py --config configs/image.yaml input=data/{IMAGE_PROCESSED} save_path={NAME} elevation={Elevation} force_cuda_rast=True
%run -m kiui.render logs/{NAME}.obj --save_video {NAME}.mp4 --wogui --force_cuda_rast
3Dモデルを作ることができました。
オリジナル画像
次に自分自身で用意した画像を用いて実装します。
ここでは以下の記事で作成した画像を使用することにします。
まずは画像を用意して、アップロードします。
※以下のコードを実行するとアップロードすることができます
import os
%cd data/
# rm * # remove all old files!
from google.colab import files
uploaded = files.upload()
IMAGE = os.path.basename(next(iter(uploaded))) # filename
%cd ..
前処理として、背景を除去します。
# preprocess
%run process.py data/{IMAGE}
NAME = os.path.splitext(IMAGE)[0]
IMAGE_PROCESSED = NAME + '_rgba.png'
Elevation = 0
IMAGE_PROCESSED = NAME + '_rgba.png'
%run main.py --config configs/image.yaml input=data/{IMAGE_PROCESSED} save_path={NAME} elevation={Elevation} force_cuda_rast=True
%run main2.py --config configs/image.yaml input=data/{IMAGE_PROCESSED} save_path={NAME} elevation={Elevation} force_cuda_rast=True
%run -m kiui.render logs/{NAME}.obj --save_video {NAME}.mp4 --wogui --force_cuda_rast
オリジナルの画像でも3Dモデルを作ることができました。
参考
まとめ
最後までご覧いただきありがとうございました。
今回の記事ではDreamGaussianによる3D生成の実装を紹介しました。