3D Gaussian Splatting
- 別名: 3DGS, Gaussian Splatting, Gaussian splats, Gaussian radiance field
- カテゴリ: Sensing › 3D maps & reconstruction
- タグ: scene-representation, 3d-reconstruction, rendering, slam, computer-vision, simulation
3D 環境を色付きで半透明なガウシアンの塊の大きな集合としてモデル化するシーン表現。写真から最適化でき、フォトリアルにリアルタイムでレンダリングできる。
定義
3D ガウシアンスプラッティング(3D Gaussian Splatting、3DGS)は、3D シーンを再構成しレンダリングするための手法であり、Bernhard Kerbl、Georgios Kopanas、Thomas Leimkühler、George Drettakis によって SIGGRAPH 2023 で発表された。シーンは 3D ガウシアンの集合として表現され、各ガウシアンは位置、サイズと向きを決める共分散、不透明度、そして球面調和係数として保存される視点依存の色を持つ。画像をレンダリングするには、ガウシアンを画像平面に投影し、深度でソートして手前から奥へとブレンドする。この処理をスプラッティング(splatting)と呼ぶ。
この表現は、カメラ姿勢が既知の写真から学習される。カメラ姿勢は通常、COLMAP などの Structure from Motion ソフトウェアで求められ、このソフトウェアはガウシアンの初期化に使う疎な点群も提供する。ラスタライザが微分可能であるため、各ガウシアンのパラメータは、レンダリング画像と実画像の差を小さくするように勾配降下法で最適化できる。学習中、ガウシアンは再構成が不十分な領域に追加され、大きすぎる箇所では分割され、ほぼ透明になると削除される。
カメラレイに沿って問い合わせるニューラルネットワークにシーンを保存するニューラル放射場(NeRF)と比べ、ガウシアンスプラッティングは明示的な表現であり、レイマーチングではなく高速なタイルベースのラスタライズでレンダリングされる。これにより高解像度でのリアルタイムレンダリングとより速い学習が得られるが、シーンに非常に多数のガウシアンが含まれうるため、メモリ使用量が大きくなる。ガウシアンは明示的であるため、移動、編集、物体への付着、削除が可能であり、これは暗黙的なネットワークでは難しい。
ロボティクスでは 3DGS がいくつかの形で使われる。地図表現としては、カメラを追跡しながら同時にフォトリアルな地図を構築する密な SLAM システムを支える。シミュレーションアセットとしては、再構成した実シーンを物理シミュレータと組み合わせ、実際の運用環境のリアルな画像上で視覚ポリシーを学習またはテストできる。制約としては、反射面や透明面、レンダリングされた見た目が示すほどには精密でない幾何形状、そしてシーンを十分にカバーするカメラ撮影が必要であることが挙げられる。
重要な理由
3DGS は実在の場所のフォトリアルな再構成をリアルタイムでレンダリングできるほど高速にし、ロボットがリアルな地図を構築できるようにするとともに、チームが実際の部屋のスキャンを視覚学習データに変えられるようにした。視覚ベースのロボット学習において、実環境とシミュレーションをつなぐ広く使われる架け橋となっている。
主な用途
- フォトリアルなシミュレーション — 視覚ポリシーの学習とテストのためにリアルなカメラ画像をレンダリングする
- 密な SLAM — カメラ姿勢を追跡しながらフォトリアルな地図を構築する
- デジタルツイン — 計画や点検のために実際の作業空間、工場、住宅を再構成する
- ドローンナビゲーション — 視覚ベースの飛行のためにリアルな視覚環境を提供する
- シーン編集 — 物体を挿入、移動、除去して多様な学習用シーンを作る
実際の使われ方
チームは通常、ロボットの作業空間の動画または写真一式を撮影し、COLMAP などのツールでカメラ姿勢を推定してから、原著者のコードや Nerfstudio の splatfacto などのオープンソース実装でガウシアンスプラッティングのモデルを学習させる。学習済みのシーンは任意の視点からレンダリングできるため、ロボットの搭載カメラに合わせた仮想カメラを配置して学習画像を生成したり、スプラットを物理シミュレータの衝突形状と位置合わせして、シミュレーション上のロボットが動きながらリアルな画像を見られるようにしたりする。地図構築には、RGB-D カメラまたは単眼カメラを用いたガウシアンスプラッティング SLAM システムを使い、深度センサで幾何形状を検証する。レンダリング画像が正しく見えても、その下の形状が不正確な場合があるからである。
よくある誤解
- ガウシアンスプラッティングはニューラルネットワークである — 最適化されたプリミティブの明示的な集合であり、レンダリングにニューラルネットワークは不要である
- フォトリアルなレンダリングは幾何形状が正確であることを意味する — 見た目が正しくても深度や表面は不正確でありうるため、幾何形状は別途検証が必要である
- 3DGS は物理シミュレーションを置き換える — 扱うのは見た目とレンダリングであり、接触とダイナミクスには依然として物理エンジンと衝突形状が必要である
- どんな写真の集合でも機能する — 十分な視点のカバーと正確なカメラ姿勢が必要であり、反射する内容、透明な内容、動く内容は苦手である
知っておくべき人
- 地図やシーン表現を構築する知覚エンジニア
- 視覚ベースのポリシーを学習させるロボット学習の研究者
- リアルな環境を作るシミュレーションエンジニア
- ドローンナビゲーションの開発者
関連技術
- ニューラル放射場(Neural Radiance Fields、NeRF)
- Structure from Motion(COLMAP)
- SLAM
- 微分可能レンダリング(Differentiable Rendering)
- 点群(Point Cloud)
- Nerfstudio
関連用語
関連プロジェクト
- GENESIS: World's fastest physics engine: 43M FPS for embodied AI learning
- LeRobot: HuggingFace ML library for real-world robotics in PyTorch
- LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
- PyBullet: Python physics simulator for robotics and RL research with fast CPU-based simulation
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
動画
- 3D Gaussian Splatting - Why Graphics Will Never Be The Same: IndividualKex
- 3D Gaussian Splatting! - Computerphile: Computerphile