In diesem Jahr hat die beeindruckende Leistung großer Modelle, die von chatgpt vertreten werden, den AICG-Bereich völlig in Aufruhr versetzt. Verschiedene GPT- und AI-Mapping-Produkte schießen nach einem Regen wie Pilze aus dem Boden. Hinter jedem erfolgreichen Produkt stehen exquisite Algorithmen. In diesem Artikel erhalten Sie eine detaillierte Einführung in den Prozess und den Code, wie Sie mit einem Mobiltelefon mehrere Fotos derselben Szene aufnehmen, dann neue Perspektiven synthetisieren und Videos erstellen. Die in diesem Artikel verwendete Technologie ist NeRF (Neural Radiance Fields), eine 3D-Rekonstruktionsmethode, die auf Deep Learning basiert und seit 2020 entwickelt wurde. Sie kann hochwertige Szenenrendering-Bilder erzeugen, indem sie die Lichtdurchlässigkeit und Strahlungsübertragung lernt die Szene und 3D-Modelle. Zu den Prinzipien und der Literatur habe ich am Ende eine Referenzliste, aus der jeder lernen kann. In diesem Artikel wird es hauptsächlich aus einer neuen Perspektive der Codenutzung und Umgebungskonstruktion vorgestellt.
Die in diesem Artikel verwendete Hardwareumgebung ist GPU RTX3090 und das Betriebssystem ist Windows 10. Die verwendete Software ist die Open-Source-NeRF-Implementierung (https://github.com). /cjw531/nerf_tf2) . Da RTX 3090 die Unterstützung von CUDA 11.0 und höher erfordert und TensorFlow-gpu Unterstützung von 2.4.0 und höher erfordert, haben wir nicht das offizielle https://github.com/bmild/nerf gewählt, da die bmild-Umgebung Tensorflow verwendet. gpu==1.15, die Version ist zu alt. Beim Ausführen von https://github.com/bmild/nerf/issues/174#issue-1553410900 tritt das folgende Problem auf. Ich habe in diesem TT auch geantwortet, dass ich ein Upgrade auf 2.8 durchführen muss. Aber selbst wenn Sie https://github.com/cjw531/nerf_tf2 verwenden, ist die Umgebung etwas problematisch. Erstens ist die Geschwindigkeit sehr langsam, da es mit dem ausländischen Conda-Kanal verbunden ist. Zweitens verwendet seine Umgebung tensorflow==2.8 und gibt nicht die Version von tensorflow-gpu an. für diese beiden Fragen. Wir haben die Datei „environment.yml“ geändert.
# To run: conda env create -f environment.ymlname: nerf_tf2channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- conda-forgedependencies:- python=3.7- pip- cudatoolkit=11.0- cudnn=8.0- numpy- matplotlib- imageio- imageio-ffmpeg- configargparse- ipywidgets- tqdm- pip:- tensorflow==2.8- tensorflow-gpu==2.8- protobuf==3.19.0- -i https://pypi.tuna.tsinghua.edu.cn/simple
Öffnen Sie cmd und geben Sie den folgenden Befehl ein.
conda env create -f environment.yml
Fügen Sie nerf_tf2 zu Jupyter hinzu, damit Sie Jupyter verwenden können, um die laufenden Ergebnisse des Systems einfach anzuzeigen.
// 安装ipykernelconda install ipykernel
//是该conda环境在jupyter中显示python -m ipykernel install --user --name 环境名称 --python -m ipykernel install --user --name 环境名称 --display-name "jupyter中显示名称"display-name "jupyter中显示名称"
//切换到项目目录cd 到项目目录//激活conda环境activate nerf_tf2//在cmd启动jupyterjupyter notebook
Jetzt sind die Conda-Umgebung und Jupyter bereit.
Das vom Mobiltelefon aufgenommene Bild Beispiel
feature_extractor_args = ['colmap', 'feature_extractor','--database_path', os.path.join(basedir, 'database.db'),'--image_path', os.path.join(basedir, 'images'),'--ImageReader.single_camera', '1',# '--SiftExtraction.use_gpu', '0',]
Python imgs2poses.py
Nach dem Ausführen der Datei imgs2poses.py wurden das Sparse-Verzeichnis colmap_out.txt, Database.db, Poses_bounds.npy generiert, und dann haben wir ein neues erstellt Kopieren Sie unter dem Nerf_tf2-Projektverzeichnis data/nerf_llff_data/ll das obige Sparse-Verzeichnis undposes_bounds.npy in dieses Verzeichnis. Abschließend konfigurieren wir eine neue Datei config_ll.txt. An diesem Punkt sind unsere Datenvorbereitungsarbeiten abgeschlossen.
expname = ll_testbasedir = ./logsdatadir = ./data/nerf_llff_data/lldataset_type = llfffactor = 8llffhold = 8N_rand = 1024N_samples = 64N_importance = 64use_viewdirs = Trueraw_noise_std = 1e0
Open-Source-Software auf die Windows-Plattform migrieren.
Da diese Open-Source-Software hauptsächlich Mac und Linux unterstützt, kann sie nicht unter Windows ausgeführt werden und erfordert eine Änderung von load_llff.py.
load_llff-Codemigration
Führen Sie 300.000 Batch-Schulungen durch.
activate nerf_tf2python run_nerf.py --config config_ll.txt
render_demo läuft
Da wir nur wenige Eingabebilder verwenden, nur 10, ist der Laufeffekt nicht sehr gut, aber der Gesamtprozess ist der gleiche. Tipps: Die Hälfte der verwendeten offiziellen Codes sind 30 oder sogar 100 Bilder.
Ein Rendering aus einer neuen Perspektive
Farn Offiziell synthetisierter neuer Perspektiveneffekt
https://zhuanlan.zhihu.com/p/554093703.
https://arxiv.org/pdf/2003.08934.pdf.
https://zhuanlan.zhihu.com/p/593204605.
https://inst.eecs.berkeley.edu/~cs194-26/fa22/Lectures/nerf_lecture1.pdf.
Das obige ist der detaillierte Inhalt vonDIY-Produktion digitaler Inhalte mithilfe von KI-Technologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!