Cette année, les performances époustouflantes des grands modèles représentés par chatgpt ont complètement enflammé le domaine de l'AICG. Divers produits de cartographie GPT et IA poussent comme des champignons après la pluie. Derrière chaque produit à succès se cachent des algorithmes exquis. Cet article vous donnera une introduction détaillée au processus et au code permettant d'utiliser un téléphone mobile pour prendre plusieurs photos de la même scène, puis synthétiser de nouvelles perspectives et générer des vidéos. La technologie utilisée dans cet article est NeRF (Neural Radiance Fields), qui est une méthode de reconstruction 3D basée sur l'apprentissage profond qui a émergé depuis 2020. Elle peut générer des images de rendu de scène de haute qualité en apprenant la transmission de la lumière et le transfert de rayonnement de la scène et des modèles 3D. Concernant ses principes et sa littérature, j'ai une liste de références à la fin pour que chacun puisse s'en inspirer. Cet article le présente principalement sous une nouvelle perspective d’utilisation du code et de construction d’environnement.
L'environnement matériel utilisé dans cet article est GPU RTX3090 et le système d'exploitation est Windows 10. Le logiciel utilisé est l'implémentation open source NeRF (https://github.com /cjw531/nerf_tf2) . Étant donné que RTX 3090 nécessite la prise en charge de CUDA 11.0 et supérieur et que TensorFlow-gpu nécessite la prise en charge de 2.4.0 et supérieur, nous n'avons pas choisi le https://github.com/bmild/nerf officiel car l'environnement bmild utilise tensorflow -. gpu==1.15, la version est trop ancienne. Il y aura le problème suivant lors de l'exécution de https://github.com/bmild/nerf/issues/174#issue-1553410900. J'ai également répondu dans ce tt que je devais passer à la version 2.8. Mais même si vous utilisez https://github.com/cjw531/nerf_tf2, son environnement est quelque peu problématique. Tout d’abord, parce qu’il est connecté au canal conda étranger, la vitesse est très lente. Deuxièmement, son environnement utilise tensorflow==2.8 et ne précise pas la version de tensorflow-gpu. pour ces deux questions. Nous avons modifié environnement.yml.
# 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
Ouvrez cmd et entrez la commande suivante.
conda env create -f environment.yml
Ajoutez nerf_tf2 à jupyter, afin que vous puissiez utiliser jupyter pour visualiser facilement les résultats d'exécution du système.
// 安装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
Maintenant, l'environnement conda et jupyter sont prêts.
La photo prise par le téléphone portable Exemple
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
Après avoir exécuté le fichier imgs2poses.py, le répertoire clairsemé, colmap_out.txt, database.db, poses_bounds.npy ont été générés, puis nous en avons créé un nouveau. sous le projet nerf_tf2 Directory data/nerf_llff_data/ll, copiez le répertoire clairsemé ci-dessus et pose_bounds.npy dans ce répertoire. Enfin, nous configurons un nouveau fichier config_ll.txt. À ce stade, notre travail de préparation des données est terminé.
expname = ll_testbasedir = ./logsdatadir = ./data/nerf_llff_data/lldataset_type = llfffactor = 8llffhold = 8N_rand = 1024N_samples = 64N_importance = 64use_viewdirs = Trueraw_noise_std = 1e0
Migrer les logiciels open source vers la plateforme Windows.
Étant donné que ce logiciel open source prend principalement en charge Mac et Linux, il ne peut pas fonctionner sous Windows et nécessite une modification de load_llff.py.
load_llff migration de code
Exécutez 300 000 formations par lots.
activate nerf_tf2python run_nerf.py --config config_ll.txt
render_demo running
Comme nous utilisons quelques images d'entrée, seulement 10, l'effet de course n'est pas très bon, mais le processus global est le même. Astuces : La moitié des codes officiels utilisent 30 voire 100 images.
Le rendu sous une nouvelle perspective
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!