Neural Radiance Fields (NeRF)
Neuronale Strahlungsfelder (NeRF) bilden eine 3D-Szene in einem neuronalen Netzwerk ab, das mit Fotos samt Kamerapositionen trainiert wird. Neue Ansichten werden durch Volumenrendering entlang der Kamerastrahlen erzeugt.
Ein neuronales Strahlungsfeld (NeRF) stellt eine 3D-Szene als neuronales Netz dar, das jede 3D-Position und Blickrichtung einer Dichte und einer Farbe zuordnet. Das Netz lernt diese Zuordnung anhand gewöhnlicher Fotos mit bekannten Kamerapositionen. Zum Rendern einer Ansicht wird durch jedes Pixel ein Strahl geschickt, das Netz an Punkten entlang des Strahls abgefragt und die Ergebnisse mittels Volumenrendering kombiniert. So zeigt ein trainiertes NeRF die Szene aus Blickwinkeln, die keine Kamera aufgenommen hat. Ben Mildenhall, Pratul Srinivasan, Matthew Tancik und ihre Kolleginnen und Kollegen von UC Berkeley, Google Research und UC San Diego stellten die Methode auf der ECCV 2020 in NeRF: Szenen als neuronale Strahlungsfelder für die Synthese von Ansichten darstellen vor. NeRFs bilden Reflexionen, dünne Strukturen und halbtransparente Materialien nach, mit denen meshbasierte Photogrammetrie Schwierigkeiten hat. Sie lösten außerdem die Welle der Forschung zum neuronalen Rendering aus, aus der Gaussian Splatting hervorging.
So funktionieren Neural Radiance Fields#
Das ursprüngliche NeRF ist ein mehrschichtiges Perzeptron ohne Faltungen. Es verarbeitet eine kodierte 3D-Position mit 8 vollständig verbundenen Schichten mit jeweils 256 Kanälen und gibt eine Volumendichte sowie einen Merkmalsvektor mit 256 Werten aus. Der Merkmalsvektor wird mit der kodierten Blickrichtung kombiniert und durch eine weitere Schicht mit 128 Kanälen geleitet, die eine RGB-Farbe ausgibt. Die Dichte hängt nur von der Position ab, wodurch die Geometrie über verschiedene Ansichten hinweg konsistent bleibt. Die Farbe hängt zusätzlich von der Blickrichtung ab und erfasst dadurch Glanzlichter und Reflexionen, die sich mit der Kamerabewegung verschieben:
Zum Rendern eines Pixels tastet NeRF mit einem groben Netz 64 Punkte entlang des Kamerastrahls ab, anschließend 128 weitere Punkte dort, wo der grobe Durchlauf Dichte festgestellt hat, und wertet ein feines Netz an allen Punkten aus. Jede Abtastung trägt proportional zu ihrer Deckkraft und zur Transmission bei – dem Anteil des Lichts, der die davorliegenden Abtastungen übersteht. Die gewichtete Summe ergibt die Pixelfarbe. Beim Training wird die quadrierte Abweichung minimiert zwischen den gerenderten und fotografierten Pixelfarben in Stapeln von 4.096 Strahlen. Kameraposen stammen in der Regel aus Structure-from-Motion-Software wie COLMAP. Eine Szene erforderte 100.000 bis 300.000 Iterationen, also etwa ein bis zwei Tage auf einer NVIDIA V100 GPU.
Ein einfaches MLP, das mit Rohkoordinaten gespeist wird, lernt glatte Funktionen und verwischt feine Details. Deshalb bildet NeRF jede Koordinate zunächst mit Sinus- und Kosinusfunktionen auf sich verdoppelnden Frequenzen ab: 10 für die Position und 4 für die Richtung. Dieser PyTorch-Code passt dasselbe Netz mit und ohne Positionskodierung an ein gestreiftes 1D-Signal an:
import torch
from torch import nn
torch.manual_seed(0)
# Color along one line through a scene, with fine detail such as a striped texture
x = torch.linspace(-1, 1, 512).unsqueeze(1)
target = torch.sin(12 * torch.pi * x) * torch.cos(3 * torch.pi * x)
# NeRF's positional encoding: sines and cosines of the coordinate at 10 doubling frequencies
freqs = 2.0 ** torch.arange(10) * torch.pi
encoded = torch.cat([torch.sin(x * freqs), torch.cos(x * freqs)], dim=1)
for name, inputs in (("raw coordinate", x), ("positional encoding", encoded)):
mlp = nn.Sequential(nn.Linear(inputs.shape[1], 256), nn.ReLU(), nn.Linear(256, 256), nn.ReLU(), nn.Linear(256, 1))
optimizer = torch.optim.Adam(mlp.parameters(), lr=1e-3)
for step in range(1000):
loss = ((mlp(inputs) - target) ** 2).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"{name}: mean squared error {loss.item():.4f}")Die Ausgabe lautet raw coordinate: mean squared error 0.0870 und positional encoding: mean squared error 0.0000. Die mittlere Leistung des Signals beträgt 0,25. Daher erfasst das Netz mit Rohkoordinaten etwa ein Drittel davon – die feinen Streifen – nicht, während das kodierte Netz das Signal reproduziert.
Schnellere und robustere NeRFs#
- Kantenglättung und unbegrenzte Szenen: Mip-NeRF rendert Kegel statt unendlich dünner Strahlen, um Aliasing zu vermeiden. Mip-NeRF 360 erweitert das Verfahren auf unbegrenzte 360°-Aufnahmen.
- Geschwindigkeit: NVIDIA ersetzt mit Instant NGP den Großteil des Netzes durch eine mehrskalige Hash-Tabelle gelernter Merkmale. Dadurch verkürzt sich das Training von Tagen auf Sekunden oder Minuten und das Rendern auf einige zehn Millisekunden bei 1920×1080.
- Fotos aus der freien Umgebung: NeRF in the Wild ergänzt Einbettungen für das Erscheinungsbild einzelner Fotos und eine separate Komponente für vorübergehende Objekte. So lassen sich auch Sammlungen von Internetfotos mit wechselnder Beleuchtung und vorbeigehenden Touristen sauber rekonstruieren.
- Text zu 3D: DreamFusion optimiert ein NeRF so lange, bis seine Renderings aus allen Blickwinkeln für ein 2D-Text-zu-Bild-Diffusionsmodell plausibel aussehen. So entstehen aus Eingabeaufforderungen 3D-Objekte, ohne dass 3D-Trainingsdaten benötigt werden.
NeRF und verwandte Konzepte#
- Gaussian Splatting: Stellt eine Szene explizit als Millionen von 3D-Gauß-Funktionen dar und rastert diese. Das ermöglicht Echtzeit-Rendering ohne Netzwerkauswertung für jedes Pixel. 2023 erreichte das Verfahren die Qualität von Mip-NeRF 360 und löste NeRF in vielen Aufnahmewerkzeugen ab, benötigt dafür aber mehr Speicher.
- Photogrammetrie: Erstellt ein explizites Mesh, indem Merkmale über mehrere Fotos hinweg abgeglichen werden. Meshes sind kompakt und lassen sich in gängiger 3D-Software bearbeiten, haben aber Schwierigkeiten mit glänzenden, transparenten und sehr dünnen Oberflächen.
- Tiefenschätzung: Ein NeRF erzeugt nebenbei eine Tiefenkarte: den erwarteten Abstand, bei dem jeder Strahl endet. Dafür muss es jedoch zuvor anhand zahlreicher Fotos einer Szene mit bekannten Kameraposen optimiert werden. Monokulare Tiefenmodelle schätzen die Tiefe aus einem einzelnen Bild in einem Vorwärtsdurchlauf.
- Implizite neuronale Repräsentationen: NeRF ist eine implizite neuronale Repräsentation, die speziell auf Strahlung und Dichte ausgerichtet ist. Daneben gibt es Netze, die Bilder, Formen oder Audiodaten als stetige Funktionen speichern.
Anforderungen an die Aufnahme#
Ein NeRF setzt eine statische Szene mit gleichbleibender Beleuchtung voraus, die aus vielen überlappenden Blickwinkeln und mit präzisen Kameraposen fotografiert wurde. Das ursprüngliche Paper trainierte jedes synthetische Objekt mit 100 gerenderten Ansichten und jede reale, nach vorn gerichtete Szene mit 20 bis 62 Fotos. Alles, was sich während der Aufnahme bewegt, etwa eine vorbeigehende Person oder ein Auto, erscheint auf manchen Fotos, auf anderen aber nicht. Die Optimierung erklärt diese Unterschiede mit halbtransparenten „Schwebeteilchen“. Ultralytics YOLO26-Modelle zur Instanzsegmentierung maskieren Personen und Fahrzeuge auf jedem Foto, sodass Strahlen durch diese Pixel beim Training ausgelassen werden können.
Anwendungen in der Praxis#
- Film und virtuelle Produktion: Aufgenommene Orte werden rekonstruiert und entlang neuer Kamerapfade als fotorealistische Hintergründe und Referenzen für Kulissen gerendert.
- Robotik und Fahrsimulation: Aufgezeichnete Umgebungen werden rekonstruiert, damit Teams für autonome Fahrzeuge und Robotik Sensoransichten von Positionen rendern können, die bei der ursprünglichen Fahrt nicht aufgenommen wurden.
- Produktvisualisierung: Aus einigen Dutzend Fotos eines Artikels wird eine interaktive Ansicht, die Kundinnen und Kunden frei drehen können.
- Karten: Für Immersive View in Google Maps rekonstruierte Google Restaurant- und Café-Innenräume mit NeRF anhand von DSLR-Fotos, die pro Standort in etwa einer Stunde aufgenommen wurden. Das Verfahren baut auf Mip-NeRF 360 auf und ergänzt die Einbettungen für das Erscheinungsbild aus NeRF in the Wild sowie die Belichtungssteuerung aus Block-NeRF. Die Ergebnisse wurden als interaktive 360°-Videos entlang ausgewählter Flugrouten bereitgestellt.










