Angenommen, Sie sehen sich ein paar Fotos eines Objekts an. Können Sie sich vorstellen, wie es aus anderen Blickwinkeln aussieht? Die Leute können es tun. Wir können erraten, wie die Teile aussehen, die wir noch nicht gesehen haben, oder wie die Winkel aussehen, die wir noch nicht gesehen haben. Das Modell verfügt tatsächlich über eine Möglichkeit, dies zu tun, da es anhand einiger Szenenbilder auch Bilder aus unsichtbaren Blickwinkeln erstellen kann.
NeRF (Neural Radiance Field), das eine neue Perspektive darstellt, ist in letzter Zeit am auffälligsten und wurde für die ECCV 2020 Best Paper Honourable Mention nominiert. Es erfordert nicht den vorherigen komplizierten dreidimensionalen Rekonstruktionsprozess, sondern nur einen Wenige Fotos und das Aufnehmen der Fotos Durch Ändern der Position der Kamera können Bilder aus einer neuen Perspektive synthetisiert werden. Die atemberaubenden Effekte von NeRF zogen viele visuelle Forscher an und in der Folge entstand eine Reihe hervorragender Arbeiten.
Die Schwierigkeit besteht jedoch darin, dass solche Modelle relativ komplex zu erstellen sind und es derzeit kein einheitliches Code-Basis-Framework für ihre Implementierung gibt, was zweifellos die weitere Erforschung und Entwicklung in diesem Bereich behindern wird. Zu diesem Zweck hat die Rendering-Generierungsplattform OpenXRLab eine hochmodulare Algorithmenbibliothek XRNeRF aufgebaut, um die Konstruktion, das Training und die Inferenz von NeRF-ähnlichen Modellen schnell zu realisieren.
Open-Source-Adresse: https://github.com/openxrlab/xrnerf
NeRF-Klassenaufgaben beziehen sich im Allgemeinen auf die Erfassung von Szeneninformationen aus einer bekannten Perspektive, einschließlich Die aufgenommenen Bilder sowie die jedem Bild entsprechenden internen und externen Parameter werden verwendet, um Bilder aus einer neuen Perspektive zu synthetisieren. Mit Hilfe des Diagramms im NeRF-Artikel können wir diese Aufgabe sehr gut nachvollziehen.
Ausgewählt aus arxiv: 2003.08934.
NeRF erfasst beim Sammeln von Bildern auch 5-dimensionale Szeneninformationen, dh ein Bild entspricht einem dreidimensionalen Koordinatenwert und zwei anderen Lichtstrahlungswinkeln. Eine solche Szene wird durch ein mehrschichtiges Perzeptron als Strahlungsfeld modelliert, was bedeutet, dass das mehrschichtige Perzeptron einen dreidimensionalen Koordinatenpunkt eingibt und ihn der Dichte und RGB-Farbe des Punktes zuordnet, wodurch Voxel-Rendering verwendet wird (Volume Rendering) zur Umwandlung des Strahlungsfeldes in eine fotorealistische virtuelle Perspektive.
Wie im Bild oben gezeigt, kann nach dem Aufbau des Strahlungsfeldes durch einige Bilder das Bild des Schlagzeugs aus einer neuen Perspektive generiert werden. Da NeRF keine explizite 3D-Rekonstruktion erfordert, um die gewünschte neue Perspektive zu erhalten, bietet es ein auf Deep Learning basierendes implizites 3D-Darstellungsparadigma, mit dem 3D-Szenen nur mithilfe von 2D-Positionsbilddaten für Informationen trainiert werden können.
Seit NeRF sind endlos NeRF-ähnliche Modelle aufgetaucht: Mip-NeRF verwendet Kegel anstelle von Strahlen, um die Erzeugung feiner Strukturen zu optimieren; KiloNeRF verwendet Tausende von Miniatur-Mehrschicht-Perzeptronen anstelle eines einzelnen großen Mehrschicht-Perzeptrons Perceptron reduziert den Rechenaufwand und erreicht Echtzeit-Rendering-Funktionen. Darüber hinaus erlernen Modelle wie AniNeRF und Neural Body die Transformation der menschlichen Perspektive aus kurzen Videobildern, um eine gute perspektivische Synthese und Fahreffekte zu erzielen Bilder mit spärlicher Perspektive und geometrische Prioritäten ermöglichen eine verallgemeinerbare menschliche Darstellung zwischen verschiedenen IDs.
GN'R schlägt eine verallgemeinerbare implizite Felddarstellung des menschlichen Körpers vor und erzielt einen Einzelmodell-Rendering-Effekt für den menschlichen Körper Vorteile im Forschungsbereich Es ist sehr beliebt, aber es handelt sich schließlich um eine relativ neue Methode, sodass die Modellimplementierung definitiv schwieriger ist. Wenn Sie ein herkömmliches Framework wie PyTorch oder TensorFlow verwenden, müssen Sie zunächst ein ähnliches NeRF-Modell finden und es dann darauf basierend modifizieren.
Dies führt zu mehreren offensichtlichen Problemen. Zunächst müssen wir eine Implementierung vollständig verstehen, bevor wir sie so ändern können, wie wir es wollen. Tatsächlich ist der Arbeitsaufwand für diesen Teil immer noch nicht groß . Zweitens, da die offiziellen Implementierungen verschiedener Papiere nicht einheitlich sind, wird beim Vergleich des Quellcodes verschiedener NeRF-Modelle viel Energie verbraucht. Schließlich weiß niemand, ob das Training einige neuartige Tricks enthält Prozess eines bestimmten Papiers schließlich Ohne einen einheitlichen Codesatz wird die Validierung neuer Ideen für neue Modelle zweifellos viel langsamer sein.
Um viele Probleme zu lösen, hat OpenXRLab ein einheitliches und hochmodulares Codebasis-Framework XRNeRF für das NeRF-Klassenmodell erstellt.
XRNeRF implementiert viele NeRF-Modelle, was den Einstieg erleichtert und die experimentellen Ergebnisse der entsprechenden Modelle leicht reproduzieren kann Papiere. XRNeRF unterteilt diese Modelle in fünf Module: Datensätze, MLP, Netzwerk, Embedder und Render. Die Benutzerfreundlichkeit von XRNeRF liegt darin, dass verschiedene Module über den Konfigurationsmechanismus zu einem vollständigen Modell zusammengestellt werden können. Dies ist äußerst einfach zu verwenden und erhöht außerdem die Wiederverwendbarkeit erheblich.
Um die Benutzerfreundlichkeit zu gewährleisten, ist daher auch Flexibilität erforderlich, um die spezifischen Funktionen oder die Implementierung verschiedener Module durch einen anderen Satz von Registermechanismen anzupassen Dadurch wird XRNeRF stärker entkoppelt und der Code leichter verständlich.
Darüber hinaus übernehmen alle von XRNeRF implementierten Algorithmen den Pipeline-Modus. Die Pipeline liest die Originaldaten und erhält nach einer Reihe von Verarbeitungen die Eingabe des Modells . Das Modell Die Pipeline verarbeitet die Eingabedaten und erhält die entsprechende Ausgabe. Eine solche Pipeline verbindet den Konfigurationsmechanismus und den Registrierungsmaschinenmechanismus zu einer vollständigen Architektur.
XRNeRF implementiert viele Kern-NeRF-Modelle und verknüpft sie über die oben genannten drei Mechanismen, um ein hochmodulares Code-Framework zu erstellen, das sowohl einfach zu verwenden als auch flexibel ist.
XRNeRF ist eine NeRF-Algorithmusbibliothek, die auf dem Pytorch-Framework basiert. Sie hat derzeit Szenen- und Körperrichtungen reproduziert. 8 klassische Papiere. Im Vergleich zur direkten Modellierung hat XRNeRF die Effizienz, Kosten und Flexibilität der Modellerstellung erheblich verbessert und verfügt über eine vollständige Nutzungsdokumentation, Beispiele und Problem-Feedback-Mechanismen. Zusammenfassend umfassen die Kernfunktionen von XRNeRF die folgenden fünf Punkte.
1 Viele Mainstream- und Kernalgorithmen implementiert
#🎜🎜 #Für Beispielsweise die Pionierarbeit NeRF, CVPR 2021 Best Paper Candidate (NeuralBody), ICCV 2021 Best Paper Honourable Mention (Mip-NeRF) und Siggraph 2022 Best Paper (Instant NGP).
Auf der Grundlage der Implementierung dieser Modelle kann XRNeRF auch sicherstellen, dass der Reproduktionseffekt grundsätzlich mit dem in übereinstimmt das Papier. Wie in der folgenden Abbildung dargestellt, kann es anhand der objektiven PSNR- und SSIM-Indikatoren den Effekt des Originalcodes gut reproduzieren.
2. Modularer Aufbau# 🎜 🎜#
XRNeRF modularisiert das gesamte Code-Framework, um die Wiederverwendbarkeit des Codes zu maximieren und Forschern die Wiederverwendung vorhandener Codes zu erleichtern. Durch die Analyse der vorhandenen NeRF-Klassenmodellmethoden wird der spezifische Modulprozess des XRNeRF-Designs in der folgenden Abbildung dargestellt:
#🎜🎜 ## 🎜🎜#
Der Vorteil der Modularität besteht darin, dass wir, wenn wir das Datenformat ändern müssen, nur die Logik unter dem Dataset-Modul ändern müssen, wenn wir die Logik zum Rendern von Bildern ändern müssen , wir müssen nur das Render-Modul ändern.
3. Standard-Datenverarbeitungspipeline
Die Datenvorverarbeitung für NeRF-Algorithmen ist relativ komplex und vielfältig Um das Problem zu lösen, stellt XRNeRF eine Reihe von Standard-Datenverarbeitungsverfahren bereit. Es wird seriell aus mehreren Datenverarbeitungsvorgängen abgerufen. Sie müssen lediglich den Datenpipeline-Teil in der Konfigurationskonfigurationsdatei ändern, um den reibungslosen Aufbau der Datenverarbeitung abzuschließen.
NeRF-Konfigurationsdatenflussabschnitt.
Die für mehrere Datensätze erforderlichen Datenverarbeitungsoperationen wurden in XRNeRF implementiert. Sie müssen diese Operationen nur in der Reihenfolge in der Konfiguration definieren Kann den Aufbau des Datenverarbeitungsprozesses abschließen. Wenn in Zukunft eine neue Operation hinzugefügt werden muss, müssen Sie nur die Implementierung der neuen Operation im entsprechenden Ordner abschließen, und dem gesamten Datenverarbeitungsprozess kann eine Codezeile hinzugefügt werden.
4. Modulare Netzwerkkonstruktionsmethode
XRNeRF Medium Die Das Modell besteht hauptsächlich aus Embedder, MLP und Rendermodell und ist über ein Netzwerk verbunden. Diese können voneinander entkoppelt werden und ermöglichen so den Austausch verschiedener Module zwischen verschiedenen Algorithmen.
Der Einbetter gibt die Position und Perspektive des Punktes ein und gibt die eingebetteten Feature-Daten aus. Der MLP verwendet die Ausgabe des Einbetters als Eingabe und gibt die Dichte und die RGB-Farbe aus des Abtastpunkts; das Rendermodell gibt das Ausgabeergebnis von MLP ein und führt Integration und andere Operationen entlang der Punkte auf dem Strahl durch, um den RGB-Wert eines Pixels im Bild zu erhalten. Diese drei Module werden über das Standard-Netzwerkmodul zu einem Gesamtmodell verbunden.
Passen Sie die Codestruktur des Netzwerkmoduls an.
5. Guter Reproduktionseffekt 🎜#Unterstützt das schnellste 60-Sekunden-Trainingsnetzwerk, 30 Bilder pro Sekunde Echtzeit-Rendering und Unterstützt hochauflösendes, Anti-Aliasing, mehrskaliges Szenen- und Humanbild-Rendering. Unabhängig davon, ob Sie die objektiven PSNR- und SSIM-Indikatoren oder den subjektiven Demo-Anzeigeeffekt betrachten, kann XRNeRF den Effekt des Originalcodes gut reproduzieren.
Verwendung von XRNeRFXRNeRF-Framework scheint sehr gute Funktionen zu haben und ist außerdem sehr einfach und bequem zu verwenden. Während des Installationsprozesses stützt sich XRNeRF beispielsweise auf viele Entwicklungsumgebungen wie PyTorch, CUDA-Umgebung, visuelle Verarbeitungsbibliotheken usw. XRNeRF bietet jedoch eine Docker-Umgebung und Bilddateien können direkt über DockerFile erstellt werden.
Wir haben es versucht. Im Vergleich zur schrittweisen Konfiguration verschiedener Betriebsumgebungen und Pakete ist nur eine Zeile Docker-Build erforderlich ist erforderlich Die Befehlskonfigurationsmethode ist offensichtlich viel praktischer. Darüber hinaus wird beim Erstellen eines Docker-Images die inländische Image-Adresse in der Docker-Datei konfiguriert, sodass die Geschwindigkeit immer noch sehr hoch ist und grundsätzlich kein Grund zur Sorge über Netzwerkprobleme besteht.
Nachdem wir das Image erstellt und den Container aus dem Image gestartet haben, können wir den Projektcode und die Daten über den Docker-CP-Befehl in den Container übertragen. Sie können die Projektadresse beim Erstellen des Containers jedoch auch direkt über den Parameter -v dem Inneren des Containers zuordnen. Hierbei ist jedoch zu beachten, dass der Datensatz an einem bestimmten Ort abgelegt werden muss (ansonsten muss die Konfigurationsdatei geändert werden), beispielsweise im Datenordner unter dem XRNeRF-Projekt.
Im Allgemeinen ist die ungefähre Ordnerstruktur nach dem Herunterladen der Daten wie folgt:
# 🎜🎜#Jetzt sind Umgebung, Daten und Code bereit. Mit nur einer kurzen Codezeile können Sie das Training und die Verifizierung des NeFR-Modells durchführen:
#🎜🎜 #python run_nerf.py --config configs/nerf/nerf_blender_base01.py --dataname lego
wobei dataname den spezifischen Datensatz im Datenverzeichnis darstellt und config die spezifische Konfigurationsdatei des Modells darstellt. Da XRNeRF ein hochgradig modulares Design verwendet, wird seine Konfiguration mithilfe eines Wörterbuchs erstellt. Obwohl es auf den ersten Blick etwas umständlich erscheinen mag, ist es nach dem tatsächlichen Verständnis der Designstruktur von XRNeRF sehr einfach zu lesen.
Subjektiv gesehen enthält die Konfigurationsdatei (nerf_blender_base01.py) alle notwendigen Informationen zum Training des Modells, einschließlich des Optimierers, der verteilten Strategie, der Modellarchitektur und der Daten Vorverarbeitungskonfigurationen im Zusammenhang mit Iteration usw. und sogar eine Menge Bildverarbeitung sind enthalten. Zusammenfassend lässt sich sagen, dass die Konfigurationsdatei config zusätzlich zur spezifischen Codeimplementierung den gesamten Trainings- und Inferenzprozess beschreibt.
Beschreibt die Konfigurationskonfiguration des Modellstrukturteils.
Insgesamt verläuft XRNeRF von der grundlegenden Einrichtung der Betriebsumgebung bis zur endgültigen Ausführung der Schulungsaufgaben relativ reibungslos. Darüber hinaus können Sie durch die Konfiguration der Konfigurationsdatei oder die Implementierung spezifischer OPs auch eine sehr hohe Modellierungsflexibilität erzielen. Im Vergleich zur direkten Verwendung der Deep-Learning-Framework-Modellierung wird XRNeRF zweifellos viel Entwicklungsarbeit reduzieren, und Forscher oder Algorithmeningenieure können auch mehr Zeit für Modell- oder Aufgabeninnovationen aufwenden.
Das NeRF-Klassenmodell steht immer noch im Mittelpunkt der Forschung im Bereich Computer Vision. Eine einheitliche Codebasis wie XRNeRF kann wie die Transformer-Bibliothek von HuggingFace immer mehr Vorzügliches sammeln Forschungsarbeiten, bei denen immer mehr neuer Code und neue Ideen gesammelt werden. Im Gegenzug wird XRNeRF auch die Erforschung von NeRF-Modellen durch Forscher erheblich beschleunigen, wodurch es einfacher wird, dieses neue Feld auf neue Szenarien und Aufgaben anzuwenden, und das Potenzial von NeRF wird ebenfalls beschleunigt.
Das obige ist der detaillierte Inhalt vonDurch das Brainstorming neuer Perspektiven wurde ein einheitliches NeRF-Codebasis-Framework als Open Source bereitgestellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!