見出し画像

NVIDIA GET3D で人工知能による3Dモデル生成を試す

「NVIDIA GET3D」で人工知能による3Dモデル生成を試したので、まとめました。

1. NVIDIA GET3D

「NVIDIA GET3D」は、NVIDIAが開発した2D画像から3Dモデルを生成するAIモデルです。

2. Colabでの実行

Colabでの実行手順は、次のとおりです。

(1) Colabで新規ノートブックを作成し、メニュー「編集 → ノートブックの設定で「GPU」を選択。

(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  Tesla T4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   46C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

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

# パッケージのインストール
!git clone https://github.com/nv-tlabs/GET3D
%cd GET3D 
!mkdir cache; 
!wget https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/metrics/inception-2015-12-05.pkl
!pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
!pip install ninja xatlas gdown
!pip install git+https://github.com/NVlabs/nvdiffrast/
!pip install meshzoo imageio gputil h5py point-cloud-utils imageio imageio-ffmpeg==0.4.4 pyspng==0.1.0
!pip install urllib3
!pip install scipy
!pip install click
!pip install tqdm
!pip install opencv-python==4.5.4.58

(4) 環境変数の準備。

# 環境変数の準備
!export PYTHONPATH=$PWD:$PYTHONPATH
!export CUDA_VISIBLE_DEVICES=0,

(5) 学習済みモデルのダウンロード。

# 学習済みモデルのダウンロード
!gdown --folder 1oJ-FmyVYjIwBZKDAQ4N1EEcE9dJjumdW

以下の4つの学習済みモデルがダウンロードされます。

・shapenet_table.pt : テーブル
・shapenet_motorbike.pt : バイク
・shapenet_chair.pt : 椅子
・shapenet_car.pt : 車

(6) 3Dモデルの生成。
今回は、バイクの3Dモデルを生成します。

# 3Dモデルの生成
!python train_3d.py --outdir=save_inference_results/shapenet_motorbike  --gpus=1 --batch=4 --gamma=40 --data_camera_mode shapenet_motorbike  --dmtet_scale 1.0  --use_shapenet_split 1  --one_3d_generator 1  --fp32 0 --inference_vis 1 --resume_pretrain /content/GET3D/get3d_release/shapenet_motorbike.pt --inference_to_generate_textured_mesh 1

--outdir : 出力フォルダ
--gpus : GPUの数
--batch : バッチサイズ
--gamma : R1 正則化の重み
--data_camera_mode : データセット種別
--dmtet_scale : dmtet の次元のスケール
--use_shapenet_split : 学習分割
--one_3d_generator : 空オブジェクトのgradientの切り離し
--fp32 : 混合精度
--inference_vis : 推論の実行
--resume_pretrain : 事前学習済みモデル
--inference_to_generate_textured_mesh : テクスチャメッシュの生成

(7) 左端のフォルダアイコンでファイル一覧を表示し、「save_inference_results/shapenet_motorbike/texture_mesh_for_inference」からモデルをダウンロード。
16個のモデルが生成されています。

・0000000.obj〜0000016.obj : メッシュ
・0000000.mtl〜0000016.mlt : マテリアル
・0000000.png〜0000016.png : テクスチャ

Unityに3Dモデルを配置すると、次のようになります。

3. 参考

公式のColabノートブックは以下で参照できます。



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