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:
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.