Neural Radiance Fields (NeRFs) können fotorealistische 3D-Punktewolken aus Fotos rendern. Das Open-Source-Tool Nerfstudio erleichtert den Einstieg in die neue Technologie. In diesem Recipie wollen wir uns Anschauen wie die Software von Nerfstudio auf unserem MachineLearning Computer genutzt werden kann..

Prolog

NeRF`s unterscheiden sich deutlich von den 3D Scan Methoden die wir dir bereits im MediaDock anbieten können. Wenn wir ein Objekt bearbeitbar machen wollten haben wir bisher 2 unterschiedliche Scanverfahren angewendet:

  1. Photogrammetrie
  2. Streiflichtscannen

Beide Verfahren liefern recht zuverlässig ein 3D Mesh, das mit einer Fototextur versehen wird. Wobei Streiflichtscannen um einiges genauer vermasst sein kann als die Photogrammetrie.

NeRF is the new Kid on the Block und lässt sich trotz der Verwandschaften zum 3D Scan nur schlecht direkt damit vergleichen. Ein NeRF liefert dir eine 3D Punktewolke die aus jedem Blickwinkel akkurat beleuchtet erscheint es ist eher eine 3D Technologie, die für Filmische outputs gedacht sind. Corridor Crew hat eine ziemlich gute zusammenfassung gemacht was mit diesem Tool machbar ist.

NeRF

Vorbereitung

Um dein erstes NeRF zu erstellen, brauchst du ein Video oder eine Serie Bilder von einem Objekt.

  • 1 Video oder eine Serie Bilder von einem Objekt

Datensatz erstellen

Nerfstudio kann diverse Dateninputs nutzen in diesem Beispiel zeigen wir dir die Verarbeitung eines Videos. Wenn du andere Daten verarbeiten willst schau dir doch die Dokumentation hierzu an.

erstelle einen Ordner

Erstelle einen Ordner und speichere dein 4K Video in diesem. Der Pfad zu deinem Ordner sollte so aussehen:

Documents/Applications/nerfstudio/data/nerfstudio/MyFolder/MyMovie.MOV

Starte das Terminal

Öffne das Terminal und starte NerfStudio mit folgender Kommandozeile:

conda activate nerfstudio

Vorbereitung des Datensatzes

Nachdem du das Nerfstudio im Conda Environment gestartet hast kannst du das Training mit deinem Datensatz starten. Um diesen Prozess zu beginnen kopiere folgende Zeile in das Terminal und ändere «MyFolder» und «MyMovie.MOV» entsprechend deinem Ordnernamen und Filnamen…

ns-process-data video --data /home/medo/Documents/Applications/nerfstudio/data/nerfstudio/MyFolder/MyMovie.MOV --output-dir /home/medo/Documents/Applications/nerfstudio/data/nerfstudio/MyFolder/ --no-gpu

Mit dem gestarteten Prozess werden verschiedene Serien Bilder Generiert und eine COLMAP erstellt. Beides Brauchen wir später im Training der eigentlichen Punkte Wolke.

Dieser Prozess geht ca. 30 Minuten, zeit für einen Kaffee!

Training starten

Sind die Daten vorbereitet und die COLMAP Features ohne ERROR Meldung gespeichert worden dann gehts in die nächste Runde: auf Basis des vorbereiteten Datasets kannst du nun den nächsten Schritt in angriff nehmen – Kopiere folgende Commandline ein und ändere wie üblich den Ordner Namen!

ns-train nerfacto --data /home/medo/Documents/Applications/nerfstudio/data/nerfstudio/MyFolder

Browser als Arbeitsfläche

Um zu beobachten wie sich dein Trainig entwickelt kannst du den Link im Terminal öffnen (Control +Links Klick) und im Browser ansehen was aus deinem Datensatz entsteht.

Navigation

im Viewport kannst du folgender massen Navigieren:

Kamerapfade

Unter dem Tab «Render» kannst du Kameras in den 3D Raum einbauen. Wenn Auf «Add Camera» klickst wird deine aktuelle Sicht in einer Kamera Position festgehalten. Mehrere Blickwinkel hinter einander ergeben, dann einen Roten Kamera Pfad. drückst du auf play kannst du dir ansehen wie dein Rendering aussehen wird.

Animationseinstellung

Im gleichen Fenster kannst du auch Animationsdauer und Smoothnes des Pfades bestimmen. Stimmt alles, dann können wir das ganze Rendern!

Rendern

Um das ganze nun als Video zu rendern, Clickst du auf den Knopf Rendern und kopierst die Commandline. Zum Rendern öffnest du in deinem Terminal einen neuen Tab und startest das conda environment erneut gefolgt von der eben erst kopierten Kommandozeile:

conda activate nerfstudio

ns-render camera-path --load-config outputs/MyFolder/nerfacto/2023-07-12_151606/config.yml --camera-path-filename /home/medo/Documents/Applications/nerfstudio/data/nerfstudio/MyFolder/camera_paths/2023-07-12_151606.json --output-path renders/MyFolder/2023-07-12_151606.mp4

et Voilà dein Video müsste danach im renders/MyFolder zu finden sein.

Outputs

Als Outputs lassen sich diverse andere Video Formate Rechenen so zum Beispiel auch Depthmaps. Auch Objekte lassen sich herausrechnen – allerdings ist dies nicht im Sinne der Sache eines NeRF`s.

Autor: teammediadock