こんにちは、アルフォンソと申します。カシカのエンジニアです。

今日は、Gaussian Splattingを簡単に使い始める方法を説明したいと思います。

This article English version is HERE

Gaussian Splatting インストール

はじめに、Gaussin Splattingを使うのために、いろいろな プログラムとライブラリをインストールする必要があります。

ハードウェア要件

  • CUDA-ready GPU / CUDA 7.0+
  • 24 GB VRAM (小さいデータであれば、少ないVRAMでも可能)

ソフトウェア要件

  • Git
  • Conda
  • Visual Studio 2019 (または新しいバージョン)
  • CUDA Toolkit SDK 11.8
  • COLMAP
  • ImageMagik
  • FFMPEG

CondaとVisual StudioとGitのインストールは、インストーラをダウンロードして、指示に従ってください。簡単です。

CUDA Toolkitのインストールは少し面倒かもしれません, インストールするにはこのガイドをお勧めします here. nvcc (CUDAコンパイラ)をPATHに入れるのは忘れないでください。

まだ, Colmap と ImageMagickFFMPEGダウンロードしてインストールする必要があります。インストールの後でインストールのフォルダーをPATHに入れていください。

次のステップでは、Gaussian Splatting gitのリポジトリのクローンを作成するのために、次のコマンドを使用してください。

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive

(--recursive オプションは重要です。Gaussian Splattingのリポジトリには外部 gitのサブモジュールがあり、これもダウンロードする必要があります。)

次に、Gaussian Splattingのフォルダー内で、次のコマンドを (1 つずつ) 実行します。

SET DISTUTILS_USE_SDK=1 
conda env create --file environment.yml
conda activate gaussian_splatting

これにより、Gaussian Splatting用の Conda 環境が作成されます。この環境名はgaussian_splattingです。Gaussian Splattingを使用するには、最初に Conda 環境をアクティブにする必要があります。これには、次のコマンド conda activate gaussian_splatting を使用します。

ノート 1. Conda は PowerShell で実行せず、Conda はコマンド プロンプトで実行してください。

ノート 2. エラーやインストールの問題が発生した場合は、このガイドに従ってください。

画像の取り込み方法

前回のガイドでは、NERF が SIFT(Scale-Invariant Feature Transform) を使用してカメラの位置を計算していることを説明しました。Gaussian Splattingは Instant NGP と同じようにColmapを使用してカメラ位置を取得します。したがって、画像には SIFT 機能が必要です。エッジ、コーナー、境界線。SIFT の機能が不十分な場合、カメラ位置推定は正しく行われません。

撮影のクイックヒント:

  • 穴ができないようにする. モデルに穴ができないようにするため、 あらゆる角度からオブジェクトを撮影することが重要です。
  • 少ないほど良い. 使用する画像を手動で選択する。トリミングされた、焦点が合っていない、または遮られたオブジェクトを含む画像を破棄します。 最小限の枚数で、あらゆる角度から撮影することが重要です。
  • 静的オブジェクトのみ. Gaussian Splatting は静的オブジェクトでのみ機能します。撮影中にオブジェクトが動かないことが重要です。

撮影のクイックヒント

(Gaussian Splatting の良い入力画像と悪い入力画像のサンプル)

ビデオからの画像 (オプション)

ffmpegを使用すると、ビデオから入力画像を抽出できます。 これには次のコマンドを使用します:

ffmpeg -i input_video.mp4 -qscale:v 1 -qmin 1 -vf fps=4  $04d.jpg

これにより、毎秒 4 フレームが抽出され、JPG 画像が 4 桁の番号名で保存されます。

オブジェクトのマスキング (オプション)

オプションで、オブジェクトを背景から分離できます。これの利点は、出力モデルがより小さく明確になることです。 このために、rembg という Python ライブラリを使用します。 この AIライブラリは、オブジェクトと背景を分離することができます。

Conda 環境内で pip を使用して rembg をインストールします:

pip install rembg[cli]

次に、フォルダー内のすべての写真を処理するのために、次のコマンドを使用してください:

rembg p path/to/input path/to/output

最高の画像の選択

最高の写真を選択することを忘れないでください。これは重要、たった 1 枚の間違った画像がノイズを生み出す。オブジェクトの焦点がずれたり、切り取られたり、遮られたりしてはいけません。

トレーニング済みモデルのビューア

トレーニング済みモデルはoptionフォルダーに保存されます。フォルダー名はランダムです。フォルダーを見つけるには、作成日を確認するだけです。

トレーニングの結果は点群です。この点群は、特別なビューアを使用してのみレンダリングできます。 ビューアのダウンロードはこちらから here

ビューアをダウンロードして解凍します。 そして、次のコマンドを実行します

SIBR_gaussianViewer_app -m output/random_folder_name

結果は次のようになります:

古い車:

盆栽(マスク済み):

くま (マスク済み):