Übersetzer |. Zhu Xianzhong
Rezensent |. Eine Möglichkeit, dieses Problem zu lösen, ist die Verwendung neuronaler Strahlungsfelder (NeRF), einer Methode der künstlichen Intelligenz zur Bilderzeugung. Die Hauptidee von NERF besteht darin, einen kleinen Satz 2D-Bilder des fotografierten Objekts oder der Szene aufzunehmen und diese 2D-Bilder dann zu verwenden, um effizient eine 3D-Darstellung zu erstellen. Dies wird erreicht, indem man lernt, zwischen vorhandenen Bildern zu transformieren. Jetzt kann Ihnen diese Sprungtechnik (auch „Interpolation“ genannt) dabei helfen, Bilder aus neuen Perspektiven auf Objekte zu erstellen!
Klingt gut, oder? Mit Hilfe einer kleinen Reihe von Bildern können Sie ein 3D-Modell erstellen! Dies funktioniert besser als die Standard-Photogrammetrie, die eine riesige Bildbibliothek erfordert, um einige Bilder zu erstellen (Sie benötigen Aufnahmen aus jedem Winkel). Allerdings versprach NVIDIA zunächst, dass NeRFs schnell sein würden; bis vor kurzem war dies jedoch nicht der Fall. Bisher dauerte es bei NeRFs meist lange, bis sie lernten, wie man eine Reihe von Bildern in ein 3D-Modell umwandelt.
Aber heutzutage ist das nicht mehr der Fall. Kürzlich hat NVIDIA eine sofortige NeRF-Software entwickelt, die GPU-Hardware nutzt, um die erforderlichen komplexen Berechnungen durchzuführen. Dieser Ansatz reduziert den Zeitaufwand für die Erstellung eines Modells von Tagen auf Sekunden! NVIDIA macht viele spannende Behauptungen über die Benutzerfreundlichkeit und Geschwindigkeit von Instant-NGP-Software. Auch die Ergebnisse und Beispiele, die sie lieferten, waren beeindruckend:Abbildung 2: NeRF-Bilddemonstration – NVIDIA hat ein cooles Robotiklabor
Es fällt mir schwer, von dieser Demo nicht beeindruckt zu sein – sie sieht großartig aus! Deshalb wollte ich sehen, wie einfach es wäre, dies auf meine eigenen Bilder zu übertragen und mein eigenes NeRF-Modell zu generieren. Deshalb habe ich beschlossen, diese Software selbst zu installieren und zu verwenden. In diesem Artikel werde ich meine Erfahrungen mit dem Experiment beschreiben und das von mir erstellte Modell detailliert beschreiben!
Hauptaufgabenaufteilung
Was sollen wir also tun? Die grob gestaffelten Aufgaben teilen sich wie folgt auf:Zunächst müssen wir einiges Filmmaterial zitieren. Lass uns ein paar Videos aufnehmen, die wir in 3D machen wollen!
Wir übergeben die oben erhaltenen kontinuierlichen Bilddaten an Instant-NGP. Anschließend wird die KI darauf trainiert, die Abstände zwischen den von uns generierten Bildern zu verstehen. Dies ist eigentlich dasselbe wie die Erstellung eines 3D-Modells.
Warehouse-Ressourcen
auf Github anzusehen, um Ihnen bei der reibungslosen Einrichtung zu helfen! Ansonsten läuft der Prozess reibungslos. Der Beamte stellt außerdem ein Python-Skript zur Verfügung, das die Schritte zur Konvertierung des aufgenommenen Videos in ein Bild und die anschließende Konvertierung in ein Modell und Video unterstützt.Experiment 1: LEGO-AutoZuerst habe ich versucht, ein kleines LEGO-Auto in meinem Büro zu NeRFieren. Ich hatte das Gefühl, dass meine fotografischen Fähigkeiten bei weitem nicht ausreichten, da ich einfach keine aussagekräftigen Bilder erstellen konnte. Nur ein seltsamer 3D-Fehler. Vergessen Sie es, werfen wir einen Blick auf ein Beispiel, das uns NVIDIA zur Verfügung gestellt hat. Bitte beachten Sie die Position der Kamera im Bild:
Abbildung 3: Die „Kamera“-Position des von NVIDIA bereitgestellten Standard-NeRF-Modells des Baggers
Eine der Vorbereitungseinstellungen, die sich gut für das Training eignet, besteht darin, eine „Kamera“ in der Szene zu platzieren, wie im Bild oben beschrieben. Bei diesen Kameras handelt es sich um die Winkel, aus denen die Software denkt, dass Sie beim Aufnehmen von Videos auf Sie blicken. Es sollte ein schöner Kreis sein. Mein erstes Lego-Auto sah natürlich überhaupt nicht so aus, sondern wie ein gequetschter Halbkreis.
Um aus dem ersten Versuch zu lernen, habe ich einen Tisch gefunden, der vollständig begehbar war, und ein größeres Lego-Auto gefunden. Ich versuche sicherzustellen, dass ich Fotos auch über einen längeren Zeitraum als bisher aufnehme. Schließlich habe ich aus allen Blickwinkeln ein flüssiges, einminütiges Video gedreht. Insgesamt habe ich weniger als 30 Sekunden gebraucht, um das Modell zu trainieren. Nach 4 Stunden Rendern mit 720p ist hier das Video, das ich gemacht habe:
Abbildung 4: Mein zweites NeRF-Modell – ein LEGO Technic-Auto!
Die Ergebnisse beweisen, dass das obige Experiment 2 besser, zumindest technisch machbar ist. Allerdings gibt es immer noch einen seltsamen Nebel, der sicherlich nicht besonders störend ist. In meinem nächsten Experiment habe ich auch versucht, von weiter hinten zu schießen (ich gehe davon aus, dass der Nebel dadurch verursacht wird, dass die KI „verwirrt“ ist, was sich dort befindet). Ich versuche, mehr Kontrolle über den Parameter aabc_scale zu haben (der misst, wie groß die Szene ist) und ihn dann ein paar Minuten lang zu trainieren. Am Ende des Renderings erhalten wir das Videoergebnis wie folgt:
Abbildung 5: Ein NeRF-Modell, das ich aus einer Pflanze auf dem Wohnzimmertisch gemacht habe
Viel besser! Es ist beeindruckend, wie präzise es die Feinheiten der gehäkelten Blumentöpfe, der Rillen im Holz und des Blattwerks darstellt. Schauen Sie sich die Kamera an, die über die Blätter schwebt!
Jetzt werden unsere Testergebnisse immer besser! Allerdings hätte ich gerne ein Outdoor-Video. Ich habe weniger als zwei Minuten Video außerhalb meiner Wohnung gedreht und mit der Verarbeitung begonnen. Dies ist besonders beim Rendern/Training umständlich. Ich vermute hier, dass mein aabc_scale-Wert ziemlich hoch ist (8), sodass die Rendering-„Strahlen“ sehr weit gehen müssen (d. h. die Anzahl der Dinge, die ich rendern möchte, ist höher). Also musste ich auf 480p umsteigen und die Rendering-FPS von 30 auf 10 senken. Es stellt sich heraus, dass die Wahl der Einstellungsparameter die Renderzeiten beeinflusst. Nach 8 Stunden Rendern kam ich zu Folgendem:
Abbildung 6: Ein NeRF-Modell, das ich außerhalb meiner Wohnung verwendet habe
Ich denke jedoch, dass der dritte Versuch immer noch mein Favorit ist. Ich denke, ich hätte den vierten Versuch etwas besser machen können. Wenn die Renderzeiten jedoch sehr lang werden, wird es schwierig, die Versionen zu durchlaufen und mit verschiedenen Render- und Trainingseinstellungen zu experimentieren. Es ist jetzt schwierig, überhaupt den Kamerawinkel für das Rendern einzustellen, was dazu führt, dass mein Programm extrem langsam wird.
Das ist allerdings wirklich eine ziemlich erstaunliche Ausgabe, da nur ein oder zwei Minuten Videodaten verwendet wurden. Endlich habe ich endlich ein detailliertes und realistisches 3D-Modell!
Was ich am beeindruckendsten finde, ist, dass in 1-2 Minuten Aufnahme jemand (ich) ohne jegliche Photogrammetrie-Ausbildung ein brauchbares 3D-Modell erstellen konnte. Der Prozess erfordert zwar einiges technisches Know-how, aber sobald Sie alles eingerichtet haben, ist es einfach zu verwenden. Die Verwendung eines Python-Skripts zum Konvertieren von Videos in Bilder funktioniert hervorragend. Sobald dies erledigt ist, erfolgt die Eingabe in die KI reibungslos.
Obwohl es schwierig ist, Nvidia diesen Aspekt vorzuwerfen, denke ich, dass ich es ansprechen sollte: Dieses Ding erfordert eine ziemlich leistungsstarke GPU. Ich habe einen T500 in meinem Laptop und diese Aufgabe brachte ihn einfach an seine absoluten Grenzen. Die Trainingszeit ist tatsächlich viel länger als die angekündigten 5 Sekunden, und das Programm stürzt ab, wenn versucht wird, mit 1080p zu rendern (ich habe mich dafür entschieden, dynamisch um den 135*74-Indikator herum zu rendern). Dies ist jedoch immer noch eine enorme Verbesserung, da frühere NeRF-Modellexperimente mehrere Tage dauerten.
Ich glaube nicht, dass jeder ein 3090p-Rig für ein solches Projekt haben wird, daher lohnt es sich, es kurz zu erklären. Die geringe Leistung des Computers erschwerte die Verwendung des Programms, insbesondere als ich versuchte, die Kamera zum „Fliegen“ zu bringen, um ein günstigeres Setup für die Videowiedergabe zu haben. Dennoch sind die Ergebnisse des Prozesses beeindruckend.
Außerdem bestand ein weiteres Problem darin, dass ich die Renderdatei render.py nicht finden konnte (wie Sie sich vielleicht vorstellen können, ist sie für das Rendern von Videos von entscheidender Bedeutung). Seltsamerweise ist es nicht in den offiziell bereitgestellten Open-Source-Code-Repositories enthalten, obwohl es in den meisten Werbeartikeln und anderen Dokumentationen ausführlich erwähnt wird. Deshalb muss ich diesen Schatz unter dem Link https://www.php.cn/link/b943325cc7b7422d2871b345bf9b067f ausgraben.
Abschließend hoffe ich auch, das obige 3D-Modell in eine .obj-Datei konvertieren zu können. Vielleicht ist das jetzt möglich.
Abbildung 7: GIF-Animation eines Fuchses – das ist nicht von mir, sondern von NVIDIA. Nicht schlecht, oder?
NVIDIA Git 1CTO-Expertenblog , Dozent, Computerlehrer an einer Universität in Weifang und ein Veteran in der freiberuflichen Programmierbranche. In den Anfängen konzentrierte er sich auf verschiedene Microsoft-Technologien (stellte drei technische Bücher zu ASP.NET AJX und Cocos 2d-X zusammen). In den letzten zehn Jahren widmete er sich der Open-Source-Welt (vertraut mit beliebten Vollversionen). Stack-Webentwicklungstechnologie) und lernte OneNet/AliOS+Arduino/ESP32/Raspberry Pi und andere IoT-Entwicklungstechnologien sowie Scala+Hadoop+Spark+Flink und andere Big-Data-Entwicklungstechnologien kennen.
Originaltitel:Using AI to Generate 3D Models, Fast!
Das obige ist der detaillierte Inhalt vonErstellen Sie schnell 3D-Modelle basierend auf der Technologie der künstlichen Intelligenz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!