「3Dガウシアンスプラッティング入門」
Introduction to 3D Gaussian Splatting
3Dガウススプラッティングは、小さな画像サンプルから学習したフォトリアルなシーンをリアルタイムでレンダリングするための技術であり、3Dガウススプラッティングによるリアルタイム放射輝度フィールドレンダリングに記載されています。この記事では、その動作原理とグラフィックスの未来について解説します。
ガウススプラッティングのシーンの例については、こちらのリモートガウスビューアーをご覧ください。
3Dガウススプラッティングとは何ですか?
3Dガウススプラッティングは、本質的にはラスタライゼーション技術です。つまり:
- シーンを説明するデータを持つ。
- データを画面に描画する。
これは、コンピュータグラフィックスの三角形ラスタライゼーションに類似しており、画面上に多くの三角形を描画するために使用されます。
ただし、三角形ではなくガウス分布を使用します。以下は、境界を明確にするために描画された単一のガウス分布のラスタライズ例です。
ガウス分布は、次のパラメータで説明されます:
- 位置:どこにあるか(XYZ)
- 共分散:どのように伸縮されるか(3×3行列)
- 色:何色か(RGB)
- アルファ:どれくらい透明か(α)
実際には、複数のガウス分布が一度に描画されます。
これが三つのガウス分布です。では、700万個のガウス分布はどうでしょうか?
以下は、それぞれのガウス分布を完全に不透明にラスタライズしたものです。
これが3Dガウススプラッティングの概要です。次に、論文で説明されている手順を詳しく見ていきましょう。
動作原理
1. Structure from Motion
最初のステップは、Structure from Motion(SfM)の手法を使用して、一連の画像からポイントクラウドを推定することです。これは、2D画像のセットから3Dポイントクラウドを推定するための手法です。これはCOLMAPライブラリを使用して行うことができます。
2. ガウス分布への変換
次に、各ポイントをガウス分布に変換します。これはラスタライゼーションには十分です。ただし、SfMデータからは位置と色のみが推定できます。高品質な結果を得るためには、学習が必要です。
3. 学習
学習手順では、ニューラルネットワークのような確率的勾配降下法を使用しますが、レイヤーはありません。学習手順は以下の通りです:
- 異なる可能性のあるガウス分布を微分可能なガウスラスタライゼーションを使用して画像にラスタライズする
- ラスタライズされた画像と正解画像の差に基づいて損失を計算する
- 損失に基づいてガウス分布のパラメータを調整する
- 自動的な密度化と剪定を適用する
ステップ1から3は概念的に非常にシンプルです。ステップ4は以下の操作を行います:
- 特定のガウス分布に対して勾配が大きすぎる場合(つまり、間違っている場合)、分割/クローンを行う
- ガウス分布が小さい場合はクローンを作成する
- ガウス分布が大きい場合は分割する
- ガウス分布のアルファが低すぎる場合は削除する
この手順は、ガウシアンが細かい詳細に適合するのを助け、不必要なガウシアンを剪定します。
4. 可微分ガウシアンラスタリゼーション
前述のように、3Dガウシアンスプラッティングは、データを画面に描画するラスタリゼーション手法です。しかし、いくつかの重要な要素は次のようになっています:
- 高速
- 可微分
ラスタライザーの元の実装はここで見つけることができます。ラスタリゼーションには以下の手順が含まれます:
- カメラの視点から各ガウシアンを2Dに射影する。
- 深度によってガウシアンをソートする。
- 各ピクセルに対して、前から後ろに向かってガウシアンをブレンドする。
追加の最適化手法は論文で説明されています。
ラスタライザーが可微分であることも重要です。これにより、確率的勾配降下法でトレーニングすることができます。ただし、これはトレーニングに関連するだけであり、トレーニングされたガウシアンは非可微分な手法でもレンダリングすることができます。
誰が関心を持つか?
なぜ3Dガウシアンスプラッティングに多くの注目が集まっているのでしょうか?明らかな答えは、結果が自己証明しているからです – リアルタイムで高品質なシーンです。しかし、これには他にも理由があるかもしれません。
ガウシアンスプラッティングで何ができるかについては、まだ多くの未知があります。アニメーション化できるでしょうか?次の論文「Dynamic 3D Gaussians: tracking by Persistent Dynamic View Synthesis」は、それが可能であることを示唆しています。他にも多くの未知があります。反射はできるでしょうか?参照画像をトレーニングせずにモデル化できるでしょうか?
最後に、体感型AIの研究においても関心が高まっています。これはAI研究の分野で、最新のパフォーマンスは人間のパフォーマンスに比べて桁違いに低く、課題の大部分は3D空間の表現にあります。3Dガウシアンスプラッティングは、3D空間の非常に密な表現を提供するため、体感型AIの研究においてどのような影響があるかはどうでしょうか?
これらの質問はこの手法に注目を集めます。実際の影響はまだ見えていません。
グラフィックスの未来
では、これがグラフィックスの未来にどのような意味を持つのでしょうか?まず、利点と欠点に分けてみましょう:
利点
- 高品質で写実的なシーン
- 高速でリアルタイムなラスタリゼーション
- 比較的高速なトレーニング
欠点
- 高いVRAM使用量(表示には4GB、トレーニングには12GB)
- 大きなディスクサイズ(1GB以上のシーン)
- 既存のレンダリングパイプラインと互換性がない
- 静的(現時点では)
これまで、元のCUDA実装はVulkan、DirectX、WebGPUなどのプロダクションレンダリングパイプラインには適応されていません。そのため、実際の影響はまだ見えていません。
すでに次のような適応が行われています:
- リモートビューア
- WebGPUビューア
- WebGLビューア
- Unityビューア
- 最適化されたWebGLビューア
これらはリモートストリーミング(1)または伝統的な四角形ベースのラスタリゼーション手法(2-5)に依存しています。四角形ベースの手法は数十年にわたるグラフィックス技術と互換性がありますが、品質やパフォーマンスが低下する可能性があります。ただし、ビューア#5は、四角形ベースの手法でも最適化のトリックによって高品質/パフォーマンスを実現できることを示しています。
では、3Dガウシアンスプラッティングはプロダクション環境で完全に再実装されるのでしょうか?答えはおそらく「はい」です。主なボトルネックは、数百万のガウシアンをソートすることであり、元の実装ではCUDAでのみ利用可能な高度に最適化されたソートであるCUBデバイスラジックスソートを効率的に行っています。ただし、十分な努力をすれば、他のレンダリングパイプラインでもこのレベルのパフォーマンスを達成することは確かに可能です。
質問がある場合や参加したい場合は、Hugging Face Discordに参加してください!
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles