注意書き

本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

Gaussian Splatting (windows環境)を試してみる

ディープラーニング

SIGGRAPH 2023で発表されたGaussian Splatting を試してみます。以前のNeRFとは違って、小データ、学習も早いということで、かなり自分としても楽しみなものでした。ここではWindows環境で試してみたまでの流れを紹介します。

GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"
Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering" - graphdeco-inria/gaussian-splatting
スポンサーリンク

環境の構築

先に挙げたリポジトリでコード一式が含まれているので、これを動くように環境を整えていきます。
とてもわかりやすく説明をしているサイトがあり、私もそれを見て環境を整えました。 “E:\example\GausianSplatting” というフォルダを作成して、そのなかにリポジトリを置く構成です。

Gaussian Splattingを試す (Windows) – ft-lab

ただしImageMagickはインストールせず、実行環境も VRAM 24GBはないのでその点が異なります。
CUDA 11.8をインストールの際にNVIDIAドライバが更新となりました。バージョンは 522.06 です。最近ブラックアウト問題が発生しているNVIDIAドライバの話を聞いたので、ドキリとしましたが大丈夫なようです。

注意点として、Visual Studio Professional を使用している場合には、先のページで記載されているcl.exeへのパスを通す部分において読み替えが必要です。以下のコマンドで、環境変数を更新するようにします。

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"

学習

私の場合には、スマホで動画撮影をして、そこから画像データを切り出すという方法を選んでいるので、以下の手順で学習・トレーニングを実行しました。

動画から画像を切り出す

以下のコマンドを実行して画像を切り出しました。ここで my_movie.mp4 はスマホで撮影した動画ファイルです。これを E:\example\GausianSplatting に仮置きしています。”-r” オプションは切り出すときのレート指定です。今回は 2fps で切りだしています。

cd E:\example\GausianSplatting
md input
ffmpeg -i my_movie.mp4  -r 2 output/image_%05d.jpg

COLMAP データセット作成

以下のコマンドを実行します。COLMAPの指定には、COLMAP.batのパスを入れるものとして、exeを指定するのではない点に注意です。”-s “オプションでは、前セクションで用意した input フォルダがあるフォルダをフルパスで指定します。

cd E:\example\GausianSplatting\gaussian-splatting
python convert.py --colmap_executable "E:\example\GausianSplatting\COLMAP\COLMAP-3.8-windows-cuda\COLMAP.bat" -s E:\example\GausianSplatting\gaussian-splatting

このコマンドは画像の枚数や解像度によっては、実行時間がそこそこ掛かるようです。

トレーニング

以下のコマンドを実行してトレーニングを行います。この処理には時間が掛かるのと、VRAMを多く消費します。処理が完了すると、 output/(…) なフォルダが作成され、結果が書き出されます。

python train.py -s E:\example\GausianSplatting\gaussian-splatting

私の場合には VRAM 24GB 搭載されていないこともあり、用意したデータセットでは Out of Memory が出てしまうこともありました。

そこで、解像度が 1.6K 以上はスケールがかかるようなので、元データに 4K は不要と考えました。今回は FullHD 程度、撮影秒数も 1分に満たないくらいのデータで試してみました。(オプションを変えると解像度の部分は変更できる模様ですが、デフォルトではスケールされるということで)。このくらいのものであれば 12GB のメモリでも、Gaussian Splatting を試してみることが出来ます。実際、使用量を目視していた範囲では、8GB も使用していないため、8GB モデル品でも十分に試せるのではないかと思います。

低VRAM量で試す際、”–densify_grad_threshold” というパラメータを変更するというものも方法の1つのようです。実際試してみたところ、どのくらい有効なものか判断が難しいので、入力データ量を減らす方向で進めました。

実行

Windows のビューワーを リポジトリのReadmeに記載されたリンクをクリックして取得します。
取得したらファイルの内容を適当なところに展開します。私の場合は、 “E:\example\GausianSplatting\viewers” に展開を行いました。この場所に対してパスを通しておきます。

set PATH=%PATH%;E:\example\GausianSplatting\viewers

以下のコマンドを実行して、ビューワーを起動します。ここで指定している -m オプションは学習結果が格納されたパスとなります。リポジトリを背馳した場所のoutputフォルダ以下になんらかのフォルダが出来ているので、それを指定します。

cd E:\example\GausianSplatting\gaussian-splatting
SIBR_gaussianViewer_app -m output\febb5294-a

実行すると以下のような感じでした。 WASDで移動、IJKLで視線の方向を変えるという操作です。

まとめ

このくらいのレベルのものが1分弱の動画撮影で、作成できるのは面白いですね。以前に試してみたNeRFのものよりも手軽に試せるようになるので、今後の発展も期待できそうです。

その他

いろいろ試してみた結果、スマホのカメラ設定も影響がありそうです。

  • オートフォーカスをオフ
  • ホワイトバランスの自動調整をオフ

このような設定を入れると、生成結果が安定する傾向にあるように感じました。

コメント

タイトルとURLをコピーしました