Neural Radiance Fields (NeRF): Studiennotizen

NeRF und Neural Volumetric Rendering – Studiennotizen

  • Kontext und Ziel

    • NeRF steht für Neural Radiance Fields und verbindet Rendering- und Vision-Ansätze durch ein invertiertes Rendering-Framework.
    • Eingabe: eine Menge kalibrierter Bilder; Ausgabe: eine 3D-Szenenrepräsentation, die neue Ansichten (novel views) rendern kann.
    • Sichtweise: Computer Vision als Inverse Rendering – aus Bildern auf eine 3D-Szene schließen.
    • NeRF wird aus Material von Pratul Srinivasan erläutert und in der Vorlesung als eine Form der neuralen Volumenrendering-Representation präsentiert.
  • Drei zentrale Komponenten (Three Key Components)

    • Neural Volumetric 3D Scene Representation
    • Eine kontinuierliche 5D-Funktion, abgebildet als MLP, repräsentiert die Szene: $(x, y, z, \theta, \phi) \mapsto (r, g, b, \sigma)$.
    • Farbwerte $r,g,b$ und Dichte $\sigma$ hängen vom Ort und der Blickrichtung ab.
    • Die 3D-Szene wird als volumetrische Darstellung (Volumetric 3D) modelliert, nicht als Mesh oder Punktwolke.
    • Differentiable Volumetric Rendering Function $\Omega$
    • Ein differentiabler Rendering-Operator, der aus dem Dichtefeld und den Farbwerten entlang eines Strahls ein RGBA-Bild bildet.
    • Kernidee: Rendern durch Summe entlang eines Strahls (Ray) mit Transmissions- und Opacity-Mechanismen.
    • Optimization via Analysis-by-Synthesis
    • Ziel: Alle Trainingsansichten rekonstruiert zu reproduzieren; Parameter des MLP werden durch Gradientenabstieg optimiert, um die Sams-Rendering-Ergebnisse an die Ground-Truth-Bilder anzupassen.
  • Formale Grundlage: 3D-Szene als kontinuierliche 5D-Funktion

    • Domain und Output
    • Eingabe: $(x,y,z,\theta,\phi)$ (Ort + Blickrichtung)
    • Ausgabe: $(r,g,b,\sigma)$ (Farbwert an der Position + Dichte)
    • Parameterisierung
    • Die Szene wird durch ein MLP modelliert, typischerweise mit mehreren Schichten (im Vortrag: 9 Layer, 256 Kanäle).
    • Modelldefinition: FΩ:(x,y,z,θ,ϕ)(r,g,b,σ)F_\Omega: (x,y,z,\theta,\phi) \mapsto (r,g,b,\sigma)
  • Volumetrische Rendering-Grundlagen (NeRF-Rendering)

    • Ray-Tracing-Setup
    • Kamera: Strahl $\mathbf{r}(t) = \mathbf{o} + t \mathbf{d}$ durch die Szene, wobei $\mathbf{o}$ der Blickpunkt und $\mathbf{d}$ die Richtung ist.
    • An jeder Position $t$ entlang des Strahls gibt es eine Punkt-Color $\mathbf{c}(t) = (r,g,b)$ und eine Dichte/Opacity $\alpha(t) = 1 - e^{-\sigma(t) \delta}$, wobei $\delta$ der Sampling-Schritt ist.
    • Volumetrische Rendering-Operatoren
    • Alpha-Transparenz pro Sample: α<em>i=1exp(σ</em>iδi)\alpha<em>i = 1 - \exp(-\sigma</em>i \delta_i)
    • Transmittance bis Sample $i$: T<em>i=</em>j=1i1(1αj)T<em>i = \prod</em>{j=1}^{i-1} (1 - \alpha_j)
    • Farb-Score entlang des Strahls (volumenbasierte Schätzung): c<em>i=1NT</em>iα<em>ic</em>i\mathbf{c} \approx \sum<em>{i=1}^N T</em>i \alpha<em>i \mathbf{c}</em>i
    • Alternativ: Gewichte W<em>i=T</em>iα<em>iW<em>i = T</em>i \alpha<em>i, dann c</em>i=1NW<em>ic</em>i\mathbf{c} \approx \sum</em>{i=1}^N W<em>i \mathbf{c}</em>i
    • Minimierung und Differenzierbarkeit
    • Die Farbwahrnehmung entlang vieler Strahlen (Bildpixel) wird simuliert und mit Ground-Truth-Bildern verglichen.
    • Die Parametrisierung des MLP ist differentiable, sodass Gradienten durch das Rendering zurück in das Netzwerk fließen.
    • Modifikation für Dichte statt direkter Dichte-Angabe
    • Häufige Darstellung: α<em>i=1exp(σ</em>iδ<em>i)\alpha<em>i = 1 - \exp(-\sigma</em>i \delta<em>i), wobei $\deltai$ der Sampling-Abstand ist.
    • Diese Form erleichtert die numerische Integration und die Approximation des Integralwerts entlang des Strahls.
  • Representierung, Encodierung und Architektur

    • 5D-Funktion als kontinuierlicher, 3D-Volumen-basierter Repräsentation
    • Eingänge: Ort $(x,y,z)$ plus Blickrichtung $(\theta, \phi)$; Ausgabe: Farb- und Dichtewerte.
    • NeRF-Architektur
    • Ein MLP mit typischer Größe: 9 Schichten, 256 Kanäle pro Layer.
    • Input wird oft durch eine Positional Encoding erweitert, um Hochfrequenz-Informationen zu ermöglichen.
    • Positional Encoding (hochfrequenzige Abbildung)
    • Naive koordinatenbasierte MLPs haben Schwierigkeiten mit hohen Frequenzen; Lösung ist eine Vorverarbeitung der Eingaben mit einer hochfrequenten Abbildung (z. B. Sinus-/Kosinus-Funktionen über verschiedene Frequenzen).
    • Beispielhafte Darstellung: Eingabekoordinaten durch eine Verstärkung der Frequenzen, z. B. sin(2x) als einfache Demonstration; in der Praxis eine Reihe von Frequenzen, um feine Details abzudecken.
  • Erweiterung: View-Dependent Field

    • Erweiterung: Zusätzlich zur 3D-Position wird die Blickrichtung in den Input des MLP aufgenommen (3D-Punkt + Richtung), um spiegelnde/ansprechende Oberflächen korrekt darzustellen.
    • Vorteile: Realistische Darstellung von Blickwinkel-Abhängigkeiten (z. B. shiny/reflektierende Oberflächen).
  • Training und Optimierung

    • Ziel
    • Trainiere das MLP so, dass die volumenthe Rendering-Ansichten mit den gegebenen Ground-Truth-Bildern übereinstimmen.
    • Verlustfunktion
    • Typischer Verlust: Kommunikationslose L2-Differenz zwischen Ground-Truth und Rendering: L(θ)=<em>vVI</em>vgtI<em>vpred(θ)</em>22\mathcal{L}(\theta) = \sum<em>{v \in \mathcal{V}} \left| I</em>v^{gt} - I<em>v^{pred}(\theta) \right|</em>2^2, wobei $\theta$ die Netzwerkparameter darstellt.
    • Training-Pipeline
    • Für jede Trainingsepoche werden Strahlen (Pixelstrahlen) aus allen Ansichten abgetastet.
    • Für jeden Strahl Sampling-Positionen $t_i$ berechnet das MLP $(r,g,b,\sigma)$; via volumetrisches Rendering wird ein vorhergesagtes Bild erstellt.
    • Gradientenabstieg über alle Strahlen minimiert den Verlust.
    • Ergebnisvisualisierung
    • Ergebnisse zeigen: überzeugende sichtabhängige Effekte, realistische Geometrie und Occlusion durch volumetrische Dichte.
  • Was NeRF ist und was es nicht ist

    • NeRF = Volume Rendering + Koordinaten-basiertes Netzwerk
    • Es ist kein Mesh, keine Punktwolke; es ist eine volumetrische Repräsentation mit kontinuierlichen Voxeln (Volumen).
    • Der 3D-Szene wird als eine schöne, dichte Wolke von Farbe und Dichte modelliert, keine expliziten Oberflächen.
  • Praktische Details & Datenanforderungen

    • Kalibrierte Kameras sind nötig: extrinsische (Standpunkt) und intrinsische Parameter (Brennweite, Verzerrung etc.).
    • Wie man diese Parameter erhält: Struktur aus Bewegung (Structure from Motion, SfM) bzw. SLAM; übliche Tools wie Colmap (Bezug aus Vorlesung: Schönberger et al. 2016).
    • Zusammenhang mit klassischen 3D-Techniken: NeRF baut auf dem Konzept der Plenoptik auf, aber statt expliziter Geometrie generiert es Pixelwerte direkt aus einem volumetrischen Modell.
  • Plenoptik, Plenoptic Function und Bildbasierte Rendering-Historie

    • Plenoptic Function (7D): $P(\theta, \phi, \lambda, t, Vx, Vy, V_z)$ – Zustand aller Dinge, die wir sehen können – Bildet die visuelle Realität ab.
    • Vereinfachungen im Verlauf: Fokus auf Blickrichtung plus Position, later auf RGB-Farben und Frames.
    • Ziel: Plenoptic Function aus Bilddaten rekonstruieren und Bild-basiertes Rendering bzw. Novel View Synthesis ermöglichen.
    • Historischer Kontext: SfM/Multiview Stereo (MVS) liefern solide Kameraparameter, dann NeRF als neuer Ansatz zur Repräsentation und Rendering der Szene.
  • Beziehung zu Struktur-from-Motion, Photogrammetrie und MVS

    • NeRF setzt SfM voraus, um Kameraparameter zu schätzen; daher ist die Problemkategorie ähnlich wie Multi-View Stereo (MVS).
    • Aufbauende Konzepte: Kameramodellierung, Extrinsics/Intrinsics, Kalibrierung.
  • Ergebnisse, Vorteile und Limitationen (Stand ca. 2020)

    • Vorteile
    • Realistische, view-dependent Rendering-Effekte
    • Detaillierte Geometrie inklusive Occlusions
    • Limitationen
    • Sehr teils langsam im Training und Rendering
    • Abhängigkeit von Pose-Genauigkeit der Kameras
    • Annahme statischer Szenen und Beleuchtung
    • Nicht direkt generalisierbar zwischen verschiedenen Szenen
  • Probleme, Caveats & Hinweise aus der Vorlesung

    • Ein wichtiger Hinweis: Training eines NeRF erfordert kalibrierte Kameras – Extrinsics/Intrinsics müssen bekannt sein.
    • Alternative Wege: SfM/SLAM-gestützte Vorverarbeitung, um Kameraparameter zu schätzen, bevor NeRF trainiert wird.
  • Zusammenfassung der Kernideen

    • Repräsentiere die Szene als volumetrischen, farbigen Nebel (fog) – Farb- und Dichtewerte werden durch eine MLP mapping $3D$-Positionen zu $(c,\sigma)$ erzeugt.
    • Renderen erfolgt durch Strahlabtastung, volumetrische Integration und Transmittanz
    • Farbwert pro Strahl: c<em>i=1NT</em>iα<em>ic</em>i\mathbf{c} \approx \sum<em>{i=1}^N T</em>i \alpha<em>i \mathbf{c}</em>i
    • α<em>i=1exp(σ</em>iδi)\alpha<em>i = 1 - \exp(-\sigma</em>i \delta_i)
    • T<em>i=</em>j=1i1(1αj)T<em>i = \prod</em>{j=1}^{i-1} (1 - \alpha_j)
    • Modelldesign: Koordinatenbasiertes Netzwerk (MLP) mit Positional Encoding, ggf. Ansicht-abhängige Erweiterung durch Eingabe der Blickrichtung
    • Training erfolgt mittels Gradientenabstieg, um die Rendering-Ergebnisse der Trainingsansichten zu reproduzieren
    • Historischer Kontext: NeRF baut auf Plenoptik, SfM/MVS und Bild-basierter Rendering-Ansätze auf, bietet jedoch eine neue, flexible volumetrische Repräsentation
  • Wichtige Formeln (Zusammenfassung)

    • Strahlgleichung: r(t)=o+td\mathbf{r}(t) = \mathbf{o} + t \mathbf{d}
    • Alpha-Qualität pro Sample: α<em>i=1exp(σ</em>iδi)\alpha<em>i = 1 - \exp(-\sigma</em>i \delta_i)
    • Transmittanz bis Sample $i$: T<em>i=</em>j=1i1(1αj)T<em>i = \prod</em>{j=1}^{i-1} (1 - \alpha_j)
    • Endgültige Farbabbildung entlang eines Strahls: c<em>i=1NT</em>iα<em>ic</em>i\mathbf{c} \approx \sum<em>{i=1}^N T</em>i \alpha<em>i \mathbf{c}</em>i
    • Netz-Output: FΩ:(x,y,z,θ,ϕ)(r,g,b,σ)F_\Omega: (x,y,z,\theta,\phi) \to (r,g,b,\sigma)
    • Inputs inklusive Direction (für view-dependent): $(x,y,z,\theta,\phi)$ bzw. $(x,y,z,\mathbf{v})$
    • Positional Encoding (hochfrequente Kodierung) zur Verbesserung der Repräsentation hochfrequenter Details
  • Praktische Lektion aus der Originalpräsentation

    • NeRF encodiert überzeugende View-Dependent-Effekte durch Richtungseinbeziehung.
    • Die Geometrie des Scenes wird durch Dichtefeld und Farbfelder dargestellt, nicht durch explizite Oberflächen.
    • Die Validierung erfolgt durch Abgleich der rendernden Bilder mit Ground-Truth-Bildern aus mehreren Kamerawinkeln.
  • Anmerkung zur Terminologie in den Slides

    • NeRF: Neural Radiance Fields = Volumetrische Rendering + Koordinaten-basiertes Netzwerk.
    • Volumetric Rendering: Rendering-Ansatz, der keinen konkreten Oberflächenprozess benötigt, sondern Integrale durch Volumen durchführt.
  • Relevante Zitate / Referenzen (aus dem Transkript)

    • NeRF: Mildenhall, Srinivasan, Tancik, Barron, Ramamoorthi, Ng – ECCV 2020.
    • Kontextuelle Verweise: Structure from Motion, Colmap (Schönberger et al. 2016), Plenoptic Function (A. Efros, L. McMillan).