Entdecken Sie, wie Neural Radiance Fields (NeRF) aus 2D-Bildern 3D-Szenen synthetisieren. Erfahren Sie, wie Sie das NeRF-Training mit Ultralytics für eine präzise Segmentierung verbessern können.
Neural Radiance Fields (NeRF) stellen einen bahnbrechenden Fortschritt in den Bereichen Computervision (CV) und generative KI dar und wurden entwickelt, um fotorealistische 3D-Szenen aus einer spärlichen Reihe von 2D-Bildern zu synthetisieren. Im Gegensatz zu herkömmlichen 3D-Modellierungsansätzen, die sich auf explizite geometrische Strukturen wie Polygone, Netze oder Punktwolken stützen, verwendet ein NeRF ein neuronales Netzwerk (NN), um eine „implizite” Darstellung einer Szene zu erlernen. Durch die Zuordnung von Raumkoordinaten und Blickrichtungen zu Farb- und Dichtewerten können NeRFs neuartige Blickwinkel mit außergewöhnlicher Genauigkeit rendern und komplexe visuelle Effekte wie Reflexionen, Transparenz und variable Beleuchtung präzise erfassen, die mit Standard-Photogrammetrie oft nur schwer zu reproduzieren sind .
Im Kern modelliert ein NeRF eine Szene als kontinuierliche volumetrische Funktion. Diese Funktion wird in der Regel durch ein vollständig verbundenes Deep-Learning-Netzwerk (DL) parametrisiert. Der Prozess beginnt mit dem Ray Marching, bei dem Strahlen von einer virtuellen Kamera durch jedes Pixel der gewünschten Bildebene in den 3D-Raum geworfen werden.
Für Punkte, die entlang jedes Strahls abgetastet werden, nimmt das Netzwerk eine 5D-Eingabe entgegen – bestehend aus der 3D-Raumposition ($x, y, z$) und der 2D-Blickrichtung ($\theta, \phi$) – und gibt die emittierte Farbe und Volumendichte (Opazität) an diesem Punkt aus. Mithilfe von Techniken, die auf Volumenrendering basieren, werden diese abgetasteten Werte akkumuliert, um die endgültige Farbe des Pixels zu berechnen. Das Netzwerk wird trainiert, indem die Differenz zwischen den gerenderten Pixeln und den tatsächlichen Pixeln aus den ursprünglichen Trainingsdaten minimiert wird, wodurch die Modellgewichte effektiv optimiert werden, um die visuellen Eigenschaften der Szene zu speichern .
Die NeRF-Technologie hat sich rasch von der akademischen Forschung zu praktischen Werkzeugen entwickelt und beeinflusst verschiedene Branchen, indem sie die Lücke zwischen statischer Fotografie und interaktiven 3D-Umgebungen schließt.
Es ist hilfreich, NeRF von anderen 3D- und Bildverarbeitungstechnologien zu unterscheiden, um seinen spezifischen Nutzen zu verstehen.
Für das Training eines hochwertigen NeRF sind oft saubere Daten erforderlich. Hintergrundgeräusche oder sich bewegende Objekte können im endgültigen Rendering zu „Ghosting“-Artefakten führen. Um dies zu vermeiden, verwenden Entwickler häufig Instanzsegmentierungsmodelle, um das gewünschte Motiv vor dem Training des NeRF automatisch auszublenden.
Die Ultralytics und die Python ermöglichen eine nahtlose Integration der Segmentierung in diesen Vorverarbeitungs-Workflow. Das folgende Beispiel zeigt, wie man mit YOLO26 Masken für eine Reihe von Bildern generiert und diese für die 3D-Rekonstruktion vorbereitet.
from ultralytics import YOLO
# Load the YOLO26 segmentation model
model = YOLO("yolo26n-seg.pt")
# Run inference to detect and segment objects
# Saving results creates masks useful for NeRF preprocessing
results = model("scene_image.jpg", save=True)
# Access the binary masks for the detected objects
masks = results[0].masks.data
print(f"Generated {len(masks)} masks for NeRF training.")
Durch die Kombination der Präzision der Segmentierung mit der generativen Leistungsfähigkeit von NeRFs können Ingenieure robuste Pipelines für die Generierung synthetischer Daten erstellen, wodurch die Erstellung unbegrenzter Trainingsbeispiele für andere nachgelagerte Aufgaben ermöglicht wird.