3D Gaussian Splatting
- Auch genannt: 3DGS, Gaussian Splatting, Gaussian splats, Gaussian radiance field
- Kategorie: Sensing › 3D maps & reconstruction
- Schlagwörter: scene-representation, 3d-reconstruction, rendering, slam, computer-vision, simulation
Eine Szenendarstellung, die eine 3D-Umgebung als große Menge farbiger, halbtransparenter Gauß-Blobs modelliert, die aus Fotos optimiert und in Echtzeit fotorealistisch gerendert werden können.
Definition
3D Gaussian Splatting (3DGS) ist ein Verfahren zur Rekonstruktion und zum Rendern von 3D-Szenen, vorgestellt von Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler und George Drettakis auf der SIGGRAPH 2023. Eine Szene wird als Menge von 3D-Gaußfunktionen dargestellt, jede mit einer Position, einer Kovarianz, die ihre Größe und Ausrichtung festlegt, einer Opazität und einer blickwinkelabhängigen Farbe, die als Koeffizienten von Kugelflächenfunktionen gespeichert ist. Zum Rendern eines Bildes werden die Gaußfunktionen auf die Bildebene projiziert, nach Tiefe sortiert und von vorne nach hinten überblendet; dieser Vorgang heißt Splatting.
Die Darstellung wird aus Fotos mit bekannten Kameraposen gelernt, die meist mit Structure-from-Motion-Software wie COLMAP ermittelt werden; diese liefert auch eine dünn besetzte Punktwolke, mit der die Gaußfunktionen initialisiert werden. Da der Rasterisierer differenzierbar ist, lassen sich die Parameter jeder Gaußfunktion per Gradientenabstieg optimieren, um den Unterschied zwischen gerenderten und realen Bildern zu verringern. Während des Trainings werden in unzureichend rekonstruierten Bereichen Gaußfunktionen hinzugefügt, zu große geteilt und solche entfernt, die nahezu transparent werden.
Im Vergleich zu Neural Radiance Fields (NeRFs), die eine Szene in einem neuronalen Netz speichern, das entlang von Kamerastrahlen abgefragt wird, ist Gaussian Splatting eine explizite Darstellung, die mit schneller kachelbasierter Rasterisierung statt mit Ray Marching gerendert wird. Das ermöglicht Echtzeit-Rendering bei hoher Auflösung und schnelleres Training, auf Kosten eines höheren Speicherbedarfs, da eine Szene eine sehr große Zahl von Gaußfunktionen enthalten kann. Weil die Gaußfunktionen explizit sind, können sie verschoben, bearbeitet, an Objekte angehängt oder gelöscht werden, was mit einem impliziten Netz schwieriger ist.
Die Robotik nutzt 3DGS auf verschiedene Weise. Als Kartendarstellung unterstützt es dichte SLAM-Systeme, die die Kamera verfolgen und gleichzeitig eine fotorealistische Karte aufbauen. Als Simulations-Asset kann eine rekonstruierte reale Szene mit einem Physiksimulator gekoppelt werden, sodass visuelle Policies auf realistischen Bildern der tatsächlichen Einsatzumgebung trainiert oder getestet werden. Zu den Grenzen gehören spiegelnde oder transparente Oberflächen, eine Geometrie, die weniger präzise ist, als das gerenderte Erscheinungsbild vermuten lässt, und der Bedarf an guter Kameraabdeckung der Szene.
Warum es wichtig ist
3DGS hat die fotorealistische Rekonstruktion realer Orte so schnell gemacht, dass sie sich in Echtzeit rendern lässt. Damit können Roboter realistische Karten aufbauen und Teams den Scan eines realen Raums in visuelle Trainingsdaten verwandeln. Es ist zu einer weit verbreiteten Brücke zwischen realen Umgebungen und Simulation für bildbasiertes Roboterlernen geworden.
Wichtige Anwendungen
- Fotorealistische Simulation — Rendern realistischer Kameraansichten zum Trainieren und Testen visueller Policies
- Dichtes SLAM — Aufbau fotorealistischer Karten bei gleichzeitiger Verfolgung der Kamerapose
- Digitale Zwillinge — Rekonstruktion realer Arbeitsbereiche, Fabriken oder Wohnungen für Planung und Inspektion
- Drohnennavigation — Bereitstellung realistischer visueller Umgebungen für bildbasiertes Fliegen
- Szenenbearbeitung — Einfügen, Verschieben oder Entfernen von Objekten, um abwechslungsreiche Trainingsszenen zu erzeugen
In der Praxis
Ein Team nimmt typischerweise ein Video oder eine Fotoserie des Arbeitsbereichs des Roboters auf, schätzt die Kameraposen mit COLMAP oder einem ähnlichen Werkzeug und trainiert ein Gaussian-Splatting-Modell mit einer Open-Source-Implementierung wie dem Code der ursprünglichen Autoren oder splatfacto von Nerfstudio. Die trainierte Szene lässt sich aus jedem Blickwinkel rendern; deshalb platziert man virtuelle Kameras, die den Bordkameras des Roboters entsprechen, um Trainingsbilder zu erzeugen, oder richtet den Splat an der Kollisionsgeometrie eines Physiksimulators aus, damit ein simulierter Roboter beim Bewegen realistische Ansichten sieht. Für die Kartierung nutzen Teams Gaussian-Splatting-SLAM-Systeme mit einer RGB-D- oder Monokamera und validieren die Geometrie mit Tiefensensoren, weil gerenderte Bilder korrekt aussehen können, während die zugrunde liegende Form ungenau ist.
Häufige Missverständnisse
- Gaussian Splatting ist ein neuronales Netz — es ist eine explizite Menge optimierter Primitive; zum Rendern wird kein neuronales Netz benötigt
- Ein fotorealistisches Rendering bedeutet genaue Geometrie — das Erscheinungsbild kann stimmen, während Tiefe und Oberflächen ungenau sind, daher muss die Geometrie gesondert validiert werden
- 3DGS ersetzt die Physiksimulation — es übernimmt Erscheinungsbild und Rendering; Kontakt und Dynamik erfordern weiterhin eine Physik-Engine und Kollisionsgeometrie
- Es funktioniert mit jeder beliebigen Fotoserie — es braucht gute Abdeckung der Blickwinkel und genaue Kameraposen und hat Schwierigkeiten mit spiegelnden, transparenten oder bewegten Inhalten
Wer das wissen sollte
- Perception-Ingenieure, die Karten und Szenendarstellungen aufbauen
- Forschende im Roboterlernen, die bildbasierte Policies trainieren
- Simulationsingenieure, die realistische Umgebungen erstellen
- Entwickler von Drohnennavigation
Verwandte Technologien
- Neural Radiance Fields (NeRF)
- Structure from Motion (COLMAP)
- SLAM
- Differenzierbares Rendering (Differentiable Rendering)
- Punktwolke (Point Cloud)
- Nerfstudio
Verwandte Begriffe
Verwandte Projekte
- 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
Videos
- 3D Gaussian Splatting - Why Graphics Will Never Be The Same: IndividualKex
- 3D Gaussian Splatting! - Computerphile: Computerphile