見出し画像

Latent-NeRF によるテキストからの3D生成を試す

「Latent-NeRF」によるテキストからの3D生成を試したので、まとめてみました。

前回

1. Latent-NeRF

「Latent-NeRF」は、テキストから3Dを生成する手法です。3D形状とテクスチャの形状誘導の機能で、よりイメージ通りの3Dモデルを生成できるようになりました。「stable-dreamfusion」と「text2mesh」をベースにしています。

2. Latent-NeRFのインストール

ColabへのLatent-NeRFのインストール方法は、次のとおりです。

(1) メニュー「編集→ノートブックの設定」で、「ハードウェアアクセラレータ」に「GPU」を選択。
自分は高速化のために「Colab Pro」の「プレミア」を使いました。

(2) GPUの確認。

# GPUの確認
!nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  A100-SXM4-40GB      Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P0    44W / 400W |      0MiB / 40536MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

(3) MiniCondaのインストール。
Python 3.9のものを利用しました。

# MiniCondaのインストール
%%bash
MINICONDA_INSTALLER=Miniconda3-py39_4.9.2-Linux-x86_64.sh
MINICONDA_DOWNLOAD_HP=https://repo.anaconda.com/miniconda
MINICONDA_PREFIX=/usr/local
wget $MINICONDA_DOWNLOAD_HP/$MINICONDA_INSTALLER
chmod +x $MINICONDA_INSTALLER
./$MINICONDA_INSTALLER -b -f -p $MINICONDA_PREFIX

(4) 「Latent-NeRF」のインストール。

# Latent-Nerfのインストール
!git clone https://github.com/eladrich/latent-nerf
%cd latent-nerf
!pip install -r requirements.txt

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

# パッケージのインストール
!pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
!pip install --upgrade numpy
!pip install imageio[ffmpeg]
!pip install imageio[pyav]

(6) iglのインストール。
シェイプガイドによる3Dモデル生成 (latent_nerf.pyのshape_path付き) で必要になります。

# iglのインストール
!conda install -c conda-forge igl

(7) kaolinのインストール。
テクスチャ生成 (latent_paint.py) で必要になります。

# kaolinのインストール
!pip install git+https://github.com/NVIDIAGameWorks/kaolin

(8) HuggingFaceのログイン。

# HuggingFaceにログイン
!huggingface-cli login

3. 3Dモデルの生成

3Dモデルの生成 (Sketch-Guided Latent-NeRF) の手順は、次のとおりです。

(1) latent_nerf.pyを実行。
5000ステップにA100で40分ほどかかりました。

# 3Dモデルの生成
!python -m scripts.train_latent_nerf --config_path demo_configs/latent_nerf/lego_man.yaml

引数は、lego_man.yamlに記述されてます。

・lego_man.yaml

log:
  exp_name: 'lego_man'
guide:
  text: 'a lego man'
  shape_path: shapes/teddy.obj
optim:
  iters: 5000
  seed: 10
render:
  nerf_type: 'latent'

(2) 「latent-nerf/experiments/lego_man/results」の出力を確認。

4. テクスチャの生成

テクスチャの生成 (Latent-Paint) の手順は、次のとおりです。

(1) latent_paint.pyの実行。
5000ステップにA100で13分ほどかかりました。

# テクスチャの生成
!python -m scripts.train_latent_paint --config_path demo_configs/latent_paint/nascar.yaml

引数は、nascar.yamlに記述されてます。

・nascar.yaml

log:
  exp_name: 'nascar'
guide:
  text: 'a next gen nascar'
  shape_path: shapes/nascar.obj
  shape_scale: 0.6
render:
  backbone: 'texture-mesh'

(2) 「latent-nerf/experiments/nascar/results」の出力を確認。

Unityに配置するとこんな感じです。

次回




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