XYZNOT

Paper · arXiv 2308.04079

3D Gaussian Splatting for Real-Time Radiance Field Rendering

Veröffentlicht cs.GRcs.CV arXivPDF

Mit Übersetzung und KI lesen

Zusammenfassung in drei Zeilen

  1. 🎯 Radiance-Field-Methoden (wie NeRFs) liefern hohe visuelle Qualität, leiden jedoch unter langsamem volumetrischem Ray-Marching und langen Trainingszeiten, während schnelle gitterbasierte Methoden Kompromisse bei Qualität oder Rendering-Geschwindigkeit eingehen.
  2. 🔧 Szenen werden explizit mit anisotropen 3D-Gauss-Funktionen repräsentiert, die aus spärlichen SfM-Punkten initialisiert werden, mittels adaptiver Dichtekontrolle (Klonen und Teilen) optimiert und über einen sichtbarkeitsbewussten, kachelbasierten differenzierbaren GPU-Rasterisierer gerendert.
  3. 📈 Erreicht visuelle Spitzenqualität auf dem Niveau von Mip-NeRF360 mit Echtzeit-Rendering-Geschwindigkeiten von über 130–160 FPS bei 1080p-Auflösung und Trainingszeiten von unter einer Stunde.

Abstract

Radiance-Field-Methoden haben die Synthese neuartiger Ansichten von Szenen, die mit mehreren Fotos oder Videos erfasst wurden, grundlegend revolutioniert. Das Erreichen einer hohen visuellen Qualität erfordert jedoch nach wie vor neuronale Netze, deren Training und Rendering rechenintensiv sind, während neuere, schnellere Methoden unweigerlich Qualität gegen Geschwindigkeit eintauschen. Für unbegrenzte und vollständige Szenen (anstelle isolierter Objekte) und Rendering in 1080p-Auflösung erreicht derzeit kein Verfahren Echtzeit-Bildraten. Wir führen drei Schlüsselelemente ein, die es ermöglichen, den aktuellen Stand der Technik bezüglich visueller Qualität bei wettbewerbsfähigen Trainingszeiten zu erreichen und vor allem eine qualitativ hochwertige Synthese neuartiger Ansichten in Echtzeit (>= 30 fps) bei 1080p-Auflösung zu liefern. Erstens repräsentieren wir die Szene, ausgehend von spärlichen Punkten aus der Kamerakalibrierung, mit 3D-Gauss-Funktionen, die wünschenswerte Eigenschaften kontinuierlicher volumetrischer Radiance Fields für die Szenenoptimierung beibehalten, während unnötige Berechnungen in leerem Raum vermieden werden. Zweitens führen wir eine verschränkte Optimierung/Dichtekontrolle der 3D-Gauss-Funktionen durch, insbesondere die Optimierung anisotroper Kovarianz, um eine präzise Repräsentation der Szene zu erzielen. Drittens entwickeln wir einen schnellen, sichtbarkeitsbewussten Rendering-Algorithmus, der anisotropes Splatting unterstützt, das Training beschleunigt und Echtzeit-Rendering erlaubt. Wir demonstrieren visuelle Qualität auf dem Stand der Technik und Echtzeit-Rendering auf mehreren etablierten Datensätzen.

Original-Abstract (Englisch)

Radiance Field methods have recently revolutionized novel-view synthesis of scenes captured with multiple photos or videos. However, achieving high visual quality still requires neural networks that are costly to train and render, while recent faster methods inevitably trade off speed for quality. For unbounded and complete scenes (rather than isolated objects) and 1080p resolution rendering, no current method can achieve real-time display rates. We introduce three key elements that allow us to achieve state-of-the-art visual quality while maintaining competitive training times and importantly allow high-quality real-time (>= 30 fps) novel-view synthesis at 1080p resolution. First, starting from sparse points produced during camera calibration, we represent the scene with 3D Gaussians that preserve desirable properties of continuous volumetric radiance fields for scene optimization while avoiding unnecessary computation in empty space; Second, we perform interleaved optimization/density control of the 3D Gaussians, notably optimizing anisotropic covariance to achieve an accurate representation of the scene; Third, we develop a fast visibility-aware rendering algorithm that supports anisotropic splatting and both accelerates training and allows realtime rendering. We demonstrate state-of-the-art visual quality and real-time rendering on several established datasets.

Leseleitfaden

Problem und Motivation

Neuronale Radiance Fields (NeRFs) haben die Synthese neuartiger Ansichten revolutioniert, indem sie kontinuierliche implizite Szenenrepräsentationen über Multi-Layer Perceptrons (MLPs) optimieren. Das Rendern dieser kontinuierlichen Felder stützt sich jedoch auf stochastisches volumetrisches Ray-Marching, welches die Auswertung von Dutzenden oder Hunderten von Abtastpunkten pro Strahl erfordert. Dies führt zu erheblicher Rechenlast, langen Trainingszeiten (z. B. bis zu 48 Stunden für Mip-NeRF360) und sehr langsamen Inferenzgeschwindigkeiten (Sekunden pro Frame), was eine Echtzeit-Navigation bei hohen Auflösungen wie 1080p verhindert.

Zwar greifen schnellere Radiance-Field-Varianten (wie Plenoxels und InstantNGP) auf Voxel- oder Hash-Gitter zurück, um das Training zu beschleunigen, doch büßen sie häufig visuelle Wiedergabetreue ein und haben Schwierigkeiten mit leerem Raum oder hochfrequenten Details. Umgekehrt bieten punktbasierte Ansätze eine explizite, GPU-freundliche Geometrie; die traditionelle Punktrasterisierung benötigt jedoch dichte Multi-View Stereo (MVS)-Geometrie, um Löcher zu vermeiden, oder verlässt sich auf CNN-Nachbearbeitung, die zeitliches Flackern verursacht.

Diese Arbeit schlägt eine unstrukturierte, explizite Szenenrepräsentation mittels 3D-Gauss-Funktionen (3D Gaussians) in Kombination mit einem schnellen kachelbasierten Rasterisierer vor, wodurch die Rendering-Qualität erstklassiger impliziter Radiance Fields mit Echtzeit-Bildraten und wettbewerbsfähigen Optimierungszeiten vereint wird.


Kernideen

  1. Unstrukturierte 3D-Gauss-Repräsentation: Anstelle kontinuierlicher Koordinatennetzwerke oder dichter Gitter wird das Radiance Field durch diskrete 3D-Gauss-Funktionen mit vollen anisotropen Kovarianzmatrizen parametrisiert, die aus spärlichen Structure-from-Motion (SfM)-Punktwolken initialisiert werden – ohne Normalen oder dichtes MVS zu erfordern.
  2. Parametrisierung über Skalierung und Rotation: Um sicherzustellen, dass die Kovarianzmatrix während des gesamten Gradientenabstiegs positiv semidefinit bleibt, wird sie in einen 3D-Skalierungsvektor und einen Einheitsquaternion entkoppelt.
  3. Adaptive Dichtekontrolle (Adaptive Density Control): Die Optimierung steuert die Szenendichte dynamisch durch Verfolgung der Positionsgradienten im View-Space: Unterrepräsentierte Gauss-Funktionen werden geklont und überrepräsentierte geteilt, während transparente oder übermäßig große Splats bereinigt werden.
  4. Sichtbarkeitsbewusste kachelbasierte Rasterisierung (Visibility-Aware Tile-Based Rasterization): Ein maßgeschneiderter GPU-Rasterisierer unterteilt die Bildschirmpixel in -Kacheln, sortiert Splats pro Frame mittels eines schnellen Radix-Sorts nach Tiefe und führt ein Alpha-Blending anisotroper Projektionen von vorne nach hinten durch, ohne die Anzahl der Splats zu begrenzen, die Gradienten-Updates erhalten.

Methode

1. 3D-Gauss-Szenenrepräsentation

Eine 3D-Gauss-Funktion mit dem Mittelpunkt wird durch ihre Kovarianzmatrix im Weltkoordinatensystem definiert:

Um zu gewährleisten, dass während der Optimierung stets positiv semidefinit bleibt, wird sie in eine Rotationsmatrix und eine Skalierungsmatrix faktorisiert: Hierbei wird als 3D-Vektor gespeichert und mit einer Exponential-Aktivierung ausgewertet; wird durch eine normalisierte Einheitsquaternion parametrisiert.

Für das Rendering werden die 3D-Gauss-Funktionen nach dem EWA-Splatting-Framework auf 2D-Bildkoordinaten projiziert. Gegeben eine Betrachtungstransformation und die Jacobi-Matrix der affinen Näherung der projektiven Transformation, lautet die 2D-Kovarianzmatrix im Screen-Space: Die dritte Zeile und Spalte werden verworfen, was eine -Kovarianzmatrix für das planare Splatting ergibt.

2. Rendering und Bildentstehung

Jede Gauss-Funktion besitzt eine Opazität (über eine Sigmoid-Aktivierung auf beschränkt) sowie Koeffizienten sphärischer harmonischer Funktionen (Spherical Harmonics, SH), die die blickrichtungsabhängige Farbe beschreiben. Das Mischen von sortierten, überlappenden Gauss-Funktionen an einem Pixel folgt der standardmäßigen volumetrischen Formulierung: wobei durch Auswertung der projizierten 2D-Gauss-Funktion, multipliziert mit der gelernten punktweisen Opazität, bestimmt wird.

3. Optimierung und adaptive Kontrolle

Die Verlustfunktion kombiniert einen -Verlust mit einem D-SSIM-Verlust (mit ):

Die adaptive Dichtekontrolle wird alle 100 Iterationen auf Gauss-Funktionen angewendet, deren durchschnittlicher Positionsgradient im View-Space übersteigt:

  • Klonen (Unter-Rekonstruktion): Bei kleinen Gauss-Funktionen wird ein Duplikat erstellt und entlang der Richtung des Positionsgradienten verschoben.
  • Teilen (Über-Rekonstruktion): Bei großen Gauss-Funktionen wird das Primitiv durch zwei kleinere Gauss-Funktionen ersetzt, deren Skalierung um den Faktor reduziert wird, wobei ihre Ausgangspositionen aus der Eltern-Gauss-Funktion abgetastet werden.
  • Pruning (Bereinigung): Entfernt Gauss-Funktionen mit oder solche, die im Welt- bzw. View-Space übermäßig groß sind. Alle Iterationen werden die Opazitäten nahe Null zurückgesetzt, um schwebende Artefakte auszufiltern.

4. Schneller differenzierbarer kachelbasierter Rasterisierer

  • Der Bildschirm wird in Kacheln von Pixeln unterteilt.
  • Gauss-Funktionen, die ein Frustum-Culling bei einem 99%-Konfidenzintervall passieren, erhalten 64-Bit-Schlüssel, die Kachel-ID und Tiefe im View-Space kodieren.
  • Ein einziger GPU-Radix-Sort sortiert alle Instanzen über den gesamten Frame hinweg.
  • Thread-Blöcke akkumulieren die Farbe pro Kachel von vorne nach hinten, bis die Sättigung erreicht (Abbruch vor dem Überschreiten von ).
  • Der Backward-Pass durchläuft die Kacheln von hinten nach vorne und rekonstruiert Zwischen-Opazitäten, indem die final akkumulierte Opazität durch das des jeweiligen Primitivs geteilt wird. Dies vermeidet speicherintensive dynamische Pixel-Puffer.

Ergebnisse

  • Mip-NeRF360-Datensatz: Nach 30.000 Iterationen (durchschnittliche Trainingszeit von 41 Min. 33 Sek.) erzielt 3D Gaussian Splatting einen durchschnittlichen SSIM von 0,815, einen PSNR von 27,21 dB und einen LPIPS von 0,214. Damit erreicht oder übertrifft es Mip-NeRF360 (SSIM 0,792, PSNR 27,69 dB, LPIPS 0,237, 48 Stunden Training) und rendert mit 134 FPS gegenüber 0,06 FPS bei Mip-NeRF360.
  • Schnelle Konfiguration (7.000 Iterationen): Liefert einen SSIM von 0,770 und einen PSNR von 25,60 dB in nur 6 Min. 25 Sek. bei 160 FPS und übertrifft damit InstantNGP-Base (SSIM 0,671, 11,7 FPS) und Plenoxels (SSIM 0,626, 6,79 FPS) bei vergleichbaren Trainingszeiten deutlich.
  • Tanks&Temples & Deep Blending: Auf Tanks&Temples erreichen 30.000 Iterationen einen SSIM von 0,841 und einen PSNR von 23,14 dB bei 154 FPS. Auf Deep Blending wird ein SSIM von 0,903 und ein PSNR von 29,41 dB bei 137 FPS erzielt.
  • Synthetic Blender: Erzielt ausgehend von einer rein zufälligen Initialisierung mit 100.000 Punkten einen durchschnittlichen PSNR von 33,32 dB und rendert mit 180–300 FPS.

Grenzen und offene Fragen

  • Unbeobachtete Ansichten und Ausreißer: Eine lückenhafte Abdeckung oder Blickwinkel weit abseits der Trainingspfade können sichtbare Artefakte erzeugen, wie etwa langgezogene oder fleckenhafte Gauss-Projektionen.
  • Popping-Artefakte: Abrupte Wechsel in der Tiefensortierung oder aggressives Guard-Band-Culling können während der Kamerabewegung Popping-Effekte hervorrufen, was den Bedarf an besserem Antialiasing unterstreicht.
  • Speicherverbrauch: Obwohl kompakt im Vergleich zu klassischen dichten Punktwolken, benötigt die explizite Repräsentation Hunderte von Megabytes (z. B. 400–750 MB für Szenen mit 1–5 Millionen Gauss-Funktionen). Nicht optimierter Prototyp-Code kann beim Training zudem GPU-Speicherspitzen von über 20 GB verursachen.
  • Fehlende Regularisierung: Das Framework enthält keine explizite geometrische Glättung oder Dichte-Regularisierer, wodurch in Regionen mit unzureichender Sichtstrahlabdeckung schwebende Hintergrundartefakte (Floaters) entstehen können.

Schlüsselbegriffe

3D Gaussians
Die unstrukturierten, differenzierbaren 3D-Kernprimitive, definiert durch eine Mittelposition, eine anisotrope Kovarianzmatrix, Opazität und sphärische harmonische Erscheinungskoeffizienten.
Anisotropic Covariance
Eine gerichtete 3D-Ausdehnung, die in separate Skalierungsvektoren und Einheitsrotationsquaternionen aufgeteilt ist, wodurch sich Gauss-Funktionen zu flachen Ellipsoiden verformen können, die an Oberflächen anliegen.
Adaptive Density Control
Eine intermittierende Optimierungsstrategie, die Gauss-Funktionen durch Klonen oder Teilen von Primitiven mit großen Positionsgradienten hinzufügt und transparente oder übergroße Primitive entfernt.
Tile-Based Rasterization
Eine GPU-gestützte Rendering-Pipeline, die den Viewport in -Pixel-Kacheln aufteilt, um überlappende Gauss-Splats parallel effizient zu sortieren und zu überblenden.
Alpha-Blending
Die Akkumulation von Farbe und Transmission von vorne nach hinten, welche die volumetrische Standard-NeRF-Integration über sortierte 2D-projizierte Splats nachbildet.
Radix Sort
Ein GPU-Sortieralgorithmus, mit dem Gauss-Funktionen anhand von 64-Bit-Schlüsseln aus Kachel-ID und Tiefe im View-Space global parallel sortiert werden.
Spherical Harmonics (SH)
Eine frequenzbasierte Richtungsfunktionsbasis, die verwendet wird, um die blickrichtungsabhängige Farbe auf jedem Gauss-Primitiv über bis zu 4 Bänder darzustellen.

Fragen

Wie werden 3D-Gauss-Funktionen vor der Optimierung initialisiert?

Sie werden anhand der spärlichen Punktwolke initialisiert, die als Nebenprodukt der Structure-from-Motion (SfM)-Kamerakalibrierung anfällt. Die anfänglichen isotropen Skalierungen leiten sich aus dem durchschnittlichen Abstand zu den drei nächsten Nachbarpunkten ab. Für synthetische Szenen kann auch eine gleichmäßige Zufallsinitialisierung verwendet werden.

Was ist der Unterschied zwischen dem Klonen und dem Teilen von Gauss-Funktionen?

Beim Klonen wird eine kleine Gauss-Funktion dupliziert und entlang ihres Positionsgradienten verschoben, um fehlende geometrische Merkmale abzudecken (Unter-Rekonstruktion). Beim Teilen wird eine übermäßig große Gauss-Funktion in zwei kleinere aufgeteilt, deren Skalierung um den Faktor 1,6 verringert wird, um detailreiche Regionen mit hoher Varianz besser zu erfassen (Über-Rekonstruktion).

Warum sortiert der Rasterisierer pro Kachel statt pro Pixel?

Das Sortieren pro Kachel mittels eines einzigen globalen GPU-Radix-Sorts auf kombinierten Kachel-Tiefen-Schlüsseln vermeidet den hohen Rechenaufwand einer pixelweisen Primitivsortierung und ermöglicht hohe Bildraten bei vernachlässigbarer visueller Approximation.

Wie vermeidet der Backward-Pass das Speichern langer pixelweiser Primitivlisten im globalen Speicher?

Der Rasterisierer durchläuft die vorhandenen sortierten Listen pro Kachel erneut von hinten nach vorne und rekonstruiert Zwischen-Opazitäten, indem die endgültig akkumulierte Opazität durch den Alpha-Wert des jeweiligen Gauss-Primitivs geteilt wird. Dies erfordert lediglich einen konstanten Speicheraufwand pro Pixel.

Die Übersicht auf dieser Seite wurde von einer KI aus dem Paper erstellt und kann Fehler enthalten. Details stehen im Paper.

Mit Übersetzung und KI lesen