3D Gaussian Splatting入門
3D Gaussian Splattingは、少数の画像サンプルから導き出されたフォトリアリスティックなシーンのリアルタイムレンダリングを可能にするラスタライズ技術です。これは、従来の三角形ベースのラスタライズからガウシアンベースのアプローチへのシフトを表し、3D環境の高忠実度な視覚的再構成を可能にします。
3D Gaussian Splattingのコアメカニズム
3D Gaussian Splattingはラスタライズ技術として機能し、つまりシーンを記述するデータを取り込み、それをスクリーンに描画します。従来のコンピュータグラフィックスが三角形ラスタライズに依存するのに対し、この方法はガウシアンを使ってシーンを表現します。
各ガウシアンは以下の4つの主要パラメータで定義されます:
- 位置: ガウシアンのXYZ座標。
- 共分散: ガウシアンの伸びやスケールを定義する3x3行列。
- 色: ガウシアンのRGB値。
- アルファ: ガウシアンの透明度レベル(\u03b1)。
これらのガウシアンを何百万個(単一シーンで最大700万個)ラスタライズすることで、システムは3Dオブジェクトまたは環境の密集したフォトリアリスティックな表現を作成できます。
テクニカルパイプライン
3D Gaussian Splattingシーンの作成プロセスは、4つの異なるステージで構成されます:
1. 構造から運動(SfM)
パイプラインは、2D画像のセットから3Dポイントクラウドを推定する構造から運動(SfM)から始まります。これは通常、COLMAPライブラリを使用して達成されます。
2. ガウシアンへの変換
推定ポイントクラウドの各ポイントはガウシアンに変換されます。これにより即時ラスタライズが可能になりますが、初期変換では位置と色データのみが提供されます。高品質な結果を得るためには、表現をトレーニングプロセスにかける必要があります。
3. 確率的勾配降下法によるトレーニング
トレーニングは、確率的勾配降下法(SGD)を使用してガウシアンパラメータを最適化することで行われます。プロセスは以下の手順に従います:
- ラスタライズ: ガウシアンは微分可能なラスタライザを使用して画像にレンダリングされます。
- 損失計算: ラスタライズされた画像とグランドトゥルース画像の差が計算されます。
- パラメータ調整: ガウシアンパラメータは損失に基づいて調整されます。
- 密度化と剪定: システムはガウシアンの数を自動的に管理します。勾配が大きい場合、小さなガウシアンはクローンされ、大きなガウシアンは分割されます。逆に、ガウシアンのアルファ値が低すぎる場合、それは削除(プルーニング)されます。
4. 微分可能なガウシアンラスタライズ
SGDによるトレーニングを可能にするため、ラスタライザは微分可能である必要があります。レンダリングプロセスでは、各ガウシアンをカメラの視点から2Dに投影し、深度でソートし、各ピクセルに対して前方から後方へブレンドします。
パフォーマンスのトレードオフと制限
3D Gaussian Splattingは高品質でリアルタイムのパフォーマンスを提供しますが、特定の技術的制約をもたらします:
利点
- 高品質でフォトリアリスティックなシーン再構成。
- 高速なリアルタイムラスタライズ速度。
- 比較的高速なトレーニング時間。
欠点
- 高いVRAM使用量: ビューイングには4GB、トレーニングには12GBのVRAMが必要。
- 大きなストレージ要件: 単一のシーンはディスク上で1GBを超えることがあります。
- パイプライン非互換性: 元のCUDA実装は、Vulkan、DirectX、またはWebGPUなどの既存の本番レンダリングパイプラインとネイティブに互換性がありません。
- 静的な性質: 元の方法は静的なシーンのために設計されています。
産業への影響と将来の展望
3D Gaussian Splattingは3D空間の密な表現を提供し、これは3D空間を正確に表現することが主要な課題であるEmbodied AI研究に大きな影響を与える可能性があります。さらに、Dynamic 3D Gaussiansへの研究は、この技術が最終的にアニメーションをサポートできる可能性を示唆しています。
本番環境への統合については、何百万ものガウシアンの効率的なソートが主なボトルネックです。元の実装はCUDA固有の最適化であるCUBデバイスラディックスソートを使用しています。ただし、WebGPU、WebGL、Unity用のビューアなど、いくつかの適応がすでに現れています。これらの一部はクアッドベースのラスタライズを使用しており、これが品質やパフォーマンスを低下させる可能性がありますが、最適化のテクニックによりCUDA環境外でも高品質な結果が可能であることがすでに示されています。