Supposons que vous regardiez quelques photos d'un objet, pouvez-vous imaginer à quoi il ressemble sous d'autres angles ? Les gens peuvent le faire. Nous pouvons deviner à quoi ressemblent les parties que nous n'avons jamais vues auparavant, ou à quoi ressemblent les angles que nous n'avons pas vus. Le modèle dispose en fait d'un moyen de le faire, étant donné certaines images de scène, il peut également réfléchir à des images sous des angles invisibles.
Rendre une nouvelle perspective, la plus accrocheuse récemment est NeRF (Neural Radiance Field), qui a été nominé pour la mention honorable du meilleur article ECCV 2020. Il ne nécessite pas le processus de reconstruction tridimensionnelle compliqué précédent, seulement un. quelques photos et la prise de vue des photos En changeant la position de l'appareil photo, des images sous une nouvelle perspective peuvent être synthétisées. Les effets étonnants du NeRF ont attiré de nombreux chercheurs en arts visuels, et une série d'excellents travaux ont ensuite été produits.
Mais la difficulté est que de tels modèles sont relativement complexes à construire et qu'il n'existe actuellement aucun cadre de base de code unifié pour les mettre en œuvre, ce qui entravera sans aucun doute l'exploration et le développement ultérieurs dans ce domaine. À cette fin, la plate-forme de génération de rendu OpenXRLab a construit une bibliothèque d'algorithmes hautement modulaire XRNeRF pour aider à réaliser rapidement la construction, la formation et l'inférence de modèles de type NeRF.
Adresse Open source : https://github.com/openxrlab/xrnerf
Les tâches de classe NeRF font généralement référence à la capture d'informations sur la scène sous une perspective connue, y compris les images capturées, ainsi que les paramètres internes et externes correspondant à chaque image, pour synthétiser des images sous une nouvelle perspective. Nous pouvons comprendre cette tâche très clairement à l’aide du diagramme de l’article NeRF.
Sélectionné depuis arxiv : 2003.08934.
NeRF collectera également des informations sur la scène en 5 dimensions lors de la collecte d'images, c'est-à-dire qu'une image correspond à une valeur de coordonnées tridimensionnelles et à deux autres angles de rayonnement lumineux. Une telle scène sera modélisée comme un champ de radiance via un perceptron multicouche, ce qui signifie que le perceptron multicouche saisira un point de coordonnées tridimensionnelles et le mappera à la densité et à la couleur RVB du point, utilisant ainsi le rendu voxel. (Volume Rendering) pour convertir le champ de rayonnement en une perspective virtuelle photoréaliste.
Comme le montre l'image ci-dessus, après avoir construit le champ de rayonnement à travers quelques images, l'image de la batterie sous une nouvelle perspective peut être générée. Étant donné que NeRF ne nécessite pas de reconstruction 3D explicite pour obtenir la nouvelle perspective souhaitée, il fournit un paradigme de représentation implicite 3D basé sur l'apprentissage profond, qui peut entraîner des scènes 3D en utilisant uniquement des données d'images posées en 2D pour obtenir des informations.
Depuis NeRF, des modèles de type NeRF ont émergé à l'infini : Mip-NeRF utilise des cônes au lieu de rayons pour optimiser la génération de structures fines ; KiloNeRF utilise des milliers de perceptrons multicouches miniatures au lieu d'un seul grand multicouche. perceptron réduit la quantité de calcul et atteint des capacités de rendu en temps réel ; de plus, des modèles tels que AniNeRF et Neural Body apprennent la transformation de la perspective humaine à partir de courtes images vidéo pour obtenir une bonne synthèse de perspective et des effets de conduite ; Les images en perspective clairsemées et les a priori géométriques permettent un rendu humain généralisable entre différents identifiants.
GN'R propose une représentation de champ implicite du corps humain généralisable et obtient un effet de rendu du corps humain à modèle unique
Bien que les algorithmes actuels de type NeRF aient d'excellents avantages dans le domaine de la recherche Elle est très populaire, mais c'est une méthode relativement nouvelle après tout, donc la mise en œuvre du modèle est nettement plus difficile. Si vous utilisez un framework conventionnel tel que PyTorch ou TensorFlow, vous devez d'abord trouver un modèle NeRF similaire, puis le modifier en fonction de celui-ci.
Faire cela entraînera plusieurs problèmes évidents. Tout d'abord, nous devons comprendre complètement une implémentation avant de pouvoir la modifier comme nous le souhaitons. La charge de travail de cette partie n'est en fait pas minime, et deuxièmement, à cause des différences entre les officiels. la mise en œuvre du document n'est pas uniforme.La comparaison du code source de différents modèles de classe NeRF consommera beaucoup d'énergie.Après tout, personne ne sait s'il existe de nouvelles astuces dans le processus de formation d'un certain document. il n’existe pas d’ensemble de code unifié, la vérification des nouvelles idées pour les nouveaux modèles sera sans aucun doute beaucoup plus lente.
Afin de résoudre de nombreux problèmes, OpenXRLab a construit un framework de base de code unifié et hautement modulaire XRNeRF pour le modèle de classe NeRF.
XRNeRF implémente de nombreux modèles NeRF, ce qui facilite le démarrage et peut facilement reproduire les résultats expérimentaux des articles correspondants. XRNeRF divise ces modèles en cinq modules : ensembles de données, mlp, réseau, intégration et rendu. La facilité d'utilisation de XRNeRF réside dans le fait que différents modules peuvent être assemblés pour former un modèle complet via le mécanisme de configuration. Il est extrêmement simple à utiliser et augmente également considérablement la réutilisation.
Pour garantir la facilité d'utilisation, la flexibilité est également requise. XRNeRF peut personnaliser les caractéristiques spécifiques ou la mise en œuvre de différents modules via un autre ensemble de mécanismes de registre, rendant ainsi XRNeRF plus découplé et le code plus facile à comprendre. .
De plus, tous les algorithmes implémentés par XRNeRF adoptent le mode Pipeline. Le Pipeline sur les données lit les données d'origine et obtient l'entrée du modèle après une série de traitements. la sortie correspondante. Un tel pipeline connecte le mécanisme de configuration et le mécanisme de la machine d'enregistrement pour former une architecture complète.
XRNeRF implémente de nombreux modèles NeRF de base et les relie ensemble via les trois mécanismes ci-dessus pour créer un cadre de code hautement modulaire, à la fois facile à utiliser et flexible.
XRNeRF est une bibliothèque d'algorithmes de classe NeRF basée sur le framework Pytorch. Elle a reproduit 8 articles classiques dans les directions scène et corps. Par rapport à la modélisation directe, XRNeRF a considérablement amélioré l'efficacité, le coût et la flexibilité de la création de modèles, et dispose d'une documentation d'utilisation complète, d'exemples et de mécanismes de retour d'informations sur les problèmes. En résumé, les fonctionnalités principales de XRNeRF comportent les cinq points suivants.
1. Implémentation de nombreux algorithmes traditionnels et de base
tels que le pionnier NeRF, CVPR 2021 Best Paper Candidate (NeuralBody), ICCV 2021 Best Paper Honorable Mention (Mip-NeRF) et Siggraph 2022 Best Paper. (NGP instantané).
Sur la base de la mise en œuvre de ces modèles, XRNeRF peut également garantir que l'effet de reproduction est fondamentalement cohérent avec celui du document. Comme le montre la figure ci-dessous, à en juger par les indicateurs objectifs PSNR et SSIM, il peut bien reproduire l'effet du code original.
2. Conception modulaire
Le code est lu et modifié. En analysant les méthodes de modèle de classe NeRF existantes, le processus de module spécifique de conception XRNeRF est illustré dans la figure ci-dessous :
L'avantage de la modularité est que si nous devons modifier le format des données, nous besoin de modifier le module Dataset La logique ci-dessous, en supposant que nous devons modifier la logique de rendu des images, il nous suffit alors de modifier le module Modèle de rendu.
3. Pipeline de traitement de données standard
Visant les problèmes plus complexes et diversifiés de prétraitement des données pour les algorithmes NeRF, XRNeRF fournit un ensemble de processus de traitement de données standard. Il est obtenu en série à partir de plusieurs opérations de traitement de données. Il vous suffit de modifier la partie pipeline de données dans le fichier de configuration pour terminer la construction en douceur du traitement des données.
Partie du flux de données de configuration NeRF.
XRNeRF a déjà implémenté les opérations de traitement de données requises pour plusieurs ensembles de données. Il vous suffit de définir ces opérations dans la configuration pour terminer la construction du processus de traitement des données. Si une nouvelle opération doit être ajoutée à l'avenir, il vous suffit de terminer l'implémentation de la nouvelle opération dans le dossier correspondant, et une ligne de code peut être ajoutée à l'ensemble du processus de traitement des données.
4. Méthode de construction de réseau modulaire
Le modèle dans Réaliser le remplacement de différents modules entre différents algorithmes.
L'intégrateur saisit la position et la perspective du point et génère les données de caractéristiques intégrées ; le MLP utilise la sortie de l'intégrateur comme entrée et génère la densité et la couleur RVB du point d'échantillonnage ; le modèle de rendu saisit le résultat de sortie ; du MLP et des points le long du rayon Effectuer l'intégration et d'autres opérations pour obtenir la valeur RVB d'un pixel sur l'image. Ces trois modules sont connectés via le module réseau standard pour former un modèle complet.
Personnalisez la structure du code du module réseau.
5. Bon effet de reproduction
Prend en charge le réseau de formation le plus rapide de 60 secondes, le rendu en temps réel de 30 images par seconde et prend en charge la scène haute définition, anti-aliasing, multi-échelle et rendu d'image humaine. Qu'il s'agisse des indicateurs objectifs PSNR et SSIM ou de l'effet d'affichage de démonstration subjectif, XRNeRF peut bien reproduire l'effet du code original.
Le framework XRNeRF semble avoir de très bonnes fonctionnalités, et il est également très simple et pratique à utiliser. Par exemple, lors du processus d'installation, XRNeRF s'appuie sur de nombreux environnements de développement, tels que PyTorch, l'environnement CUDA, les bibliothèques de traitement visuel, etc. Cependant, XRNeRF fournit un environnement Docker et les fichiers image peuvent être créés directement via DockerFile.
Par rapport à la configuration étape par étape de divers environnements d'exploitation et packages, la méthode de configuration de la commande sur une seule ligne docker build uniquement est évidemment beaucoup plus pratique. De plus, lors de la création d'une image Docker, l'adresse de l'image nationale est configurée dans le DockerFile, donc la vitesse est toujours très rapide et il n'y a fondamentalement pas besoin de s'inquiéter des problèmes de réseau.
Après avoir construit l'image et démarré le conteneur à partir de l'image, nous pouvons transférer le code du projet et les données vers le conteneur via la commande docker cp. Cependant, vous pouvez également mapper directement l'adresse du projet à l'intérieur du conteneur via le paramètre -v lors de la création du conteneur. Cependant, il convient de noter ici que l'ensemble de données doit être placé dans un certain emplacement (sinon le fichier de configuration doit être modifié), tel que le dossier de données sous le projet XRNeRF.
De manière générale, après avoir téléchargé les données, la structure approximative des dossiers est la suivante :
Maintenant, l'environnement, les données et le code sont tous prêts, juste une courte ligne de code, vous pouvez effectuer formation et vérification du modèle NeFR :
python run_nerf.py --config configs/nerf/nerf_blender_base01.py --dataname lego
où dataname représente l'ensemble de données spécifique dans le répertoire de données et config représente le fichier de configuration spécifique du modèle. Parce que XRNeRF adopte une conception hautement modulaire, sa configuration est construite à l'aide d'un dictionnaire. Bien que cela puisse sembler un peu lourd à première vue, après avoir réellement compris la structure de conception de XRNeRF, elle est très simple à lire.
Subjectivement parlant, le fichier de configuration (nerf_blender_base01.py) contient toutes les informations nécessaires à la formation du modèle, y compris les optimiseurs, les stratégies distribuées, l'architecture du modèle, le prétraitement et l'itération des données, etc., et même de nombreuses configurations liées au traitement d'image Également inclus. En résumé, en plus de l'implémentation de code spécifique, le fichier de configuration décrit l'ensemble du processus de formation et d'inférence.
Décrivez la configuration Config de la partie structure du modèle.
En général, XRNeRF est relativement fluide, depuis la configuration de l'environnement opérationnel de base jusqu'à l'exécution finale des tâches de formation. De plus, en configurant le fichier de configuration ou en implémentant un OP spécifique, vous pouvez également obtenir une très grande flexibilité de modélisation. Par rapport à l'utilisation directe de la modélisation d'un cadre d'apprentissage profond, XRNeRF réduira sans aucun doute beaucoup de travail de développement, et les chercheurs ou ingénieurs en algorithmes pourront également consacrer plus de temps à l'innovation de modèles ou de tâches.
Le modèle de classe NeRF est toujours au centre de la recherche dans le domaine de la vision par ordinateur. Une base de code unifiée comme XRNeRF, comme la bibliothèque Transformer de HuggingFace, peut rassembler de plus en plus d'excellents travaux de recherche et rassembler de plus en plus de nouveaux codes avec de nouveaux. des idées. À son tour, XRNeRF accélérera également considérablement l'exploration des modèles de type NeRF par les chercheurs, facilitant ainsi l'application de ce nouveau domaine à de nouveaux scénarios et tâches, et le potentiel de NeRF sera également accéléré.
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!