You are currently viewing 3D Gaussian Splattingで手持ちのフィギュアを3D化してみる

3D Gaussian Splattingで手持ちのフィギュアを3D化してみる

3D Gaussian Splattingという技術に興味があったので試しに使ってみました。
開発環境の構築方法や実施方法は他の方のブログに詳しく書いてあったため、このブログでは自分の具体的な実施内容を紹介したいと思います。

マシンスペックは以下になります。
・Windows11
・GPU GeForceRTX 2080 VRAM 8GB
・CPU Core-i7 9700K
・メモリ 24GB

環境構築からビューワー起動まで

環境構築からテストデータ作成、トレーニング実行までは以下のブログが参考になりました。
3D Gaussian SplattingのWindows環境構築手順を解説 | taziku / AI × クリエイティブ | 東京・名古屋
3D Gaussian Splatting 動画から3Dのシーン生成を解説 | taziku / AI × クリエイティブ | 東京・名古屋
3D Gaussian Splattingでトレーニングしたデータをビューワーで表示する | taziku / AI × クリエイティブ | 東京・名古屋

自分が実施するときも、上記のブログを参考に実行させていただきました。
そのうえで、今回自分が行った内容を紹介いたします。

手持ちのフィギュアをGoProで撮影する

今回は手持ちのフィギュアの一つであるホロライブ所属の「白上フブキ」さんのフィギュアを利用しました。
GoProで全身をくまなく撮影し、データ作成画像を用意します。
FFMPEGを利用して動画から静止画を切り出して、1800枚ほどの画像を用意しました。

トレーニング用データの準備

画像の準備ができたらトレーニングを行います。
こちらもブログの手順通りのコマンドを実行すれば大丈夫です。
参考までに自分が実行したコマンドは以下の通りです(cdコマンドでgaussian-splattingのフォルダに移動した後に実行します)

python convert.py --colmap_executable "F:\Project\MachineLerning\tools\COLMAP-3.8-windows-cuda\COLMAP.bat" -s F:\Project\MachineLerning\gaussian-splatting\TrainingData

この処理にかなり時間がかかり、合計7-8時間ほどかかってしまったかと思います。
幸い、処理途中でチェックポイントが保存されているようで、処理済みの部分は再開時にスキップされます。

トレーニングを実施

上記の処理が終了したらトレーニングを実施します。
必要スペックでVRAM 24GB以上が要求されているため、自分のマシンではメモリ不足でそのままコマンドを実行したら動きませんでした。

具体的には以下のコマンドでトレーニングを行い、クオリティを犠牲にしています。
(gaussian-splattingのtrain.pyが配置されているディレクトリに移動した後に実施します。TrainDataは上記のトレーニング用データの準備で使用したディレクトリです)

python train.py --densify_grad_threshold 0.01 --resolution 800 -s ..\TrainingData\

上記の設定でVRAM使用料は10GBとなっていました(専用GPUメモリ8GB、共有GPUメモリ2GB使用)
トレーニングにかかった時間は6時間ほどとなりました。

ビューワーで表示する

ビューワーは別途ダウンロードが必要ですが、最初に紹介したブログにダウンロード場所が記載してあります。
以下のコマンドでビューワーを起動しました。

C:\Users\ユーザー名\Desktop\viewers\bin\SIBR_gaussianViewer_app.exe -m .\output01ec31-3\

トレーニングが終了するとoutputフォルダの中にランダムな英数字のフォルダが数個作成されます。
指定するフォルダは「point_cloud」フォルダを含んでいるフォルダを指定します。

実際のビューワー動作時の画像はXに載せていますのでご興味あればご覧ください。

以上

簡単ですが3D Gaussian Splattingについて利用してみた紹介でした。
要求スペックが高かったため、一度はあきらめていましたが、パラメータ調整で何とかなりました。
再現度は高いですが、品質の良いデータを準備するのが少し大変そうですね。(GoProだと接近しすぎたり、カメラを早く動かしてしまうことで画像がぶれてしまったため)

あとは、このモデルをポリゴンメッシュで出力できるような機能があればいうこと無しです。
スキャンしたモデルをゲームと組み合わせて使ってみたいですね!

コメントを残す