Maison > Article > Périphériques technologiques > Créez rapidement des modèles 3D basés sur la technologie de l'intelligence artificielle
Traducteur | Zhu Xianzhong
Réviseur | Sun Shujuan
Figure 1 : Couverture
La génération d'un modèle 3D peut prendre du temps ou nécessiter un grand nombre d'images de référence. Une façon de résoudre ce problème consiste à utiliser les champs de radiance neuronale (NeRF), une méthode d’intelligence artificielle pour générer des images. L'idée principale de NERF est de prendre un petit ensemble d'images 2D de l'objet ou de la scène que vous avez photographié, puis d'utiliser ces images 2D pour créer efficacement une représentation 3D. Ceci est réalisé en apprenant à transformer entre les images existantes. Désormais, cette technique de saut (également appelée « interpolation ») peut vous aider à créer des images de nouvelles perspectives sur les objets !
Ça a l’air bien, non ? À l'aide d'un petit ensemble d'images, vous pouvez créer un modèle 3D ! Cela fonctionne mieux que la photogrammétrie standard, qui nécessite une énorme bibliothèque d'images pour générer certaines images (vous avez besoin de photos sous tous les angles). Cependant, NVIDIA avait initialement promis que les NeRF seraient rapides, mais jusqu'à récemment, ce n'était pas le cas ; Auparavant, les NeRF avaient tendance à prendre beaucoup de temps pour apprendre à convertir un ensemble d'images en modèle 3D.
Mais de nos jours, ce n’est plus le cas. Récemment, NVIDIA a développé un logiciel NeRF instantané qui exploite le matériel GPU pour exécuter les calculs complexes nécessaires. Cette approche réduit le temps nécessaire pour créer un modèle de quelques jours à quelques secondes ! NVIDIA fait de nombreuses affirmations passionnantes sur la convivialité et la vitesse des logiciels Instant NGP. De plus, les résultats et les exemples qu'ils ont fournis étaient impressionnants :
Figure 2 : Démonstration d'image NeRF – NVIDIA a un laboratoire de robotique sympa
J'ai du mal à ne pas être impressionné par cette démo - Elle a l'air géniale ! Je voulais donc voir à quel point il serait facile de transférer cela sur mes propres images et de générer mon propre modèle NeRF. J'ai donc décidé d'installer et d'utiliser ce logiciel moi-même. Dans cet article, je vais décrire mon expérience avec l'expérience et détailler le modèle que j'ai réalisé !
Alors, que devons-nous faire ? Les tâches grossièrement mises en scène sont réparties comme suit :
Je n'entrerai pas dans les détails de la façon dont tout cela fonctionne, mais je fournirai des liens vers de nombreuses ressources que j'ai trouvées utiles. Donc, ensuite, je vais me concentrer sur les vidéos que j'ai réalisées et sur quelques bribes de connaissances sur lesquelles je suis tombé en cours de route.
Le logiciel NeRF instantané de NVIDIA n'est pas facile à installer. Bien que les instructions relatives au logiciel soient claires, j'ai l'impression que la partie requise des instructions n'offre pas beaucoup de marge de manœuvre en ce qui concerne la version spécifique du logiciel dont un individu a besoin. Il me paraissait impossible d'utiliser CUDA 11.7 ou VS2022, mais je pense que c'est le retour à la version CUDA 11.6 et VS2019 qui a finalement réussi l'installation. Parmi eux, j'ai rencontré de nombreuses erreurs, telles que "CUDA_ARCHITECTURES est vide pour la cible", etc. En effet, la coopération entre CUDA et Visual Studio n'est pas conviviale. Par conséquent, je recommande sincèrement aux lecteurs intéressés de se référer à la vidéo et aux ressources de l'entrepôt sur Github pour vous aider à tout configurer en douceur !
À part ça, le processus se déroule sans problème. Le responsable fournit également un script Python pour aider à guider les étapes de conversion de la vidéo capturée en image, puis à la convertir en modèle et en vidéo.
Au début, j'ai essayé de néRF-ifier une petite voiture LEGO dans mon bureau. J'avais l'impression que mes compétences en photographie étaient loin d'être suffisantes car je ne pouvais tout simplement pas créer d'images significatives. Juste un étrange défaut 3D. Oubliez ça, jetons un œil à un exemple fourni par NVIDIA. Veuillez noter la position de la caméra sur la photo :
Figure 3 : La position de la « caméra » du modèle NeRF par défaut de la pelle fourni par NVIDIA
L'un des paramètres de préparation qui fonctionne bien pour la formation consiste à placer une « caméra » dans la scène comme décrit dans l'image ci-dessus. Ces caméras sont les angles auxquels le logiciel pense que vous faites face lors de l'enregistrement d'une vidéo. Cela devrait être un joli cercle. Bien sûr, ma première voiture Lego ne ressemblait pas du tout à cela, mais à un demi-cercle écrasé.
Pour tirer les leçons du premier essai, j'ai trouvé une table entièrement accessible à pied et j'ai trouvé une voiture Lego plus grande. J'essaie également de m'assurer de capturer des photos pendant des périodes plus longues qu'avant. Enfin, j'ai tourné une vidéo fluide d'une minute sous tous les angles. Au total, il m'a fallu moins de 30 secondes pour entraîner le modèle. Après 4 heures de rendu en 720p, voici la vidéo que j'ai réalisée :
Figure 4 : Mon deuxième modèle NeRF – une voiture LEGO Technic !
Les résultats prouvent que l'expérience 2 ci-dessus est meilleure, du moins techniquement réalisable. Cependant, il y a toujours un étrange brouillard, ce qui n'est certainement pas très gênant. Dans ma prochaine expérience, j'ai également essayé de tirer plus en arrière (je suppose que le brouillard est causé par le fait que l'IA est "confuse" sur ce qu'il y a là). J'essaie d'avoir plus de contrôle sur le paramètre aabc_scale (qui mesure la taille de la scène), puis de l'entraîner pendant quelques minutes. A la fin du rendu, on obtient le résultat vidéo comme indiqué ci-dessous :
Figure 5 : Un modèle NeRF que j'ai réalisé à partir d'une plante sur la table du salon
Bien mieux ! C’est impressionnant de voir comment il représente les subtilités des pots de plantes au crochet, les rainures du bois et le feuillage avec une telle précision. Regardez la caméra qui survole les feuilles !
Maintenant, les résultats de nos tests s'améliorent de plus en plus ! Cependant, j'aimerais une vidéo en extérieur. J'ai tourné moins de 2 minutes de vidéo à l'extérieur de mon appartement et j'ai commencé à la traiter. Ceci est particulièrement fastidieux pour le rendu/la formation. Je suppose ici que ma valeur aabc_scale est assez élevée (8), donc les "rayons" de rendu doivent aller très loin (c'est-à-dire que le nombre de choses que je veux restituer est plus élevé). J'ai donc dû passer en 480p et baisser le FPS du rendu de 30 à 10. Il s'avère que le choix des paramètres de réglage affecte les temps de rendu. Après 8 heures de rendu, je me suis retrouvé avec ce qui suit :
Figure 6 : Un modèle NeRF que j'ai utilisé à l'extérieur de mon appartement
Je pense que le troisième essai reste cependant mon préféré. Je pense que j'aurais pu faire un peu mieux le quatrième essai. Cependant, lorsque les temps de rendu deviennent très longs, il devient difficile de parcourir les versions et d'expérimenter différents paramètres de rendu et d'entraînement. Il est maintenant difficile même de définir l'angle de la caméra pour le rendu, ce qui rend mon programme extrêmement lent.
C'est vraiment un résultat assez étonnant, puisque seulement une minute ou deux de données vidéo ont été utilisées. Enfin, j'ai enfin un modèle 3D détaillé et réaliste !
Ce que je pense le plus impressionnant, c'est qu'en 1 à 2 minutes de prise de vue, quelqu'un sans aucune formation en photogrammétrie (moi) pourrait créer un modèle 3D réalisable. Le processus nécessite un certain savoir-faire technique, mais une fois que tout est configuré, il est facile à utiliser. Utiliser un script Python pour convertir des vidéos en images fonctionne très bien. Une fois cela fait, la saisie dans l’IA se déroulera sans problème.
Cependant, même s’il est difficile de reprocher à Nvidia cet aspect, j’estime que je devrais en parler : cette chose nécessite un GPU assez puissant. J'ai un T500 dans mon ordinateur portable et cette tâche l'a simplement poussé à ses limites absolues. Le temps de formation est en effet bien plus long que les 5 secondes annoncées, et essayer de faire un rendu en 1080p fera planter le programme (j'ai choisi de faire un rendu dynamique autour de l'indicateur 135*74). Il s’agit là encore d’une énorme amélioration, car les précédentes expériences sur le modèle NeRF prenaient plusieurs jours.
Je ne pense pas que tout le monde aura une plate-forme 3090p pour un projet comme celui-ci, cela vaut donc la peine de l'expliquer brièvement. L'ordinateur peu performant rendait le programme difficile à utiliser, surtout lorsque j'essayais de faire "voler" la caméra afin d'avoir une configuration plus propice au rendu vidéo. Pourtant, les résultats du processus sont impressionnants.
De plus, un autre problème auquel j'ai été confronté était de ne pas pouvoir trouver le fichier de rendu render.py (comme vous pouvez le deviner, il est crucial pour le rendu des vidéos). Très étrangement, il ne figure pas dans les référentiels de code open source officiellement fournis, bien qu'il soit fortement mentionné dans la plupart des articles publicitaires et autres documents. Par conséquent, je dois extraire ce trésor à partir du lien https://www.php.cn/link/b943325cc7b7422d2871b345bf9b067f.
Enfin, j'espère également convertir le modèle 3D ci-dessus en un fichier .obj. Peut-être que maintenant, c'est possible.
Figure 7 : Animation GIF d'un renard - ce n'est pas moi qui l'ai fait, c'est NVIDIA. Pas mal, non ?
Le processus expérimental ci-dessus me rappelle le DALL-E développé par OpenAI, qui est également une technologie d'intelligence artificielle capable de générer des images. Aujourd’hui, cette technologie est devenue extrêmement populaire, en partie parce qu’elle est très accessible. De plus, DALL-E montre un exemple vraiment intéressant de ce que les modèles d’intelligence artificielle peuvent faire, ainsi que de leurs limites. C'est même devenu un phénomène de culture pop maintenant (ou du moins figuré en grande partie sur mon fil Twitter) - des gens créent leurs propres photos DALL-E étranges et les partagent entre eux. Je peux imaginer que quelque chose de similaire se produise avec cette technologie : le potentiel viral d’un site Web permettant à quiconque de télécharger une vidéo et de créer un modèle 3D pouvant être partagé avec des amis est énorme. Quelqu’un finira forcément par le faire !
Personnellement, j'attends avec impatience d'autres résultats expérimentaux dans ce domaine. Je veux pouvoir générer des modèles super réalistes, puis les transférer dans AR/VR. Grâce à ces technologies, vous pouvez même organiser des réunions Web – n’est-ce pas amusant ? Parce qu'il vous suffit d'utiliser l'appareil photo de votre téléphone pour atteindre cet objectif, et la plupart des utilisateurs disposent déjà de cette configuration matérielle dans leur téléphone aujourd'hui.
Dans l’ensemble, je suis impressionné. C'est formidable de pouvoir enregistrer une vidéo d'une minute sur votre téléphone et de la transformer en un modèle que vous pouvez parcourir. Bien que le rendu prenne un certain temps et soit un peu difficile à installer, cela fonctionne très bien. Après quelques expériences, j'ai un résultat vraiment sympa ! J'attends avec impatience d'autres expériences !
Zhu Xianzhong, rédacteur de la communauté 51CTO, Blog expert 1CTO , conférencier, professeur d'informatique dans une université de Weifang et vétéran de l'industrie de la programmation indépendante. Au début, il s'est concentré sur diverses technologies Microsoft (compilé trois livres techniques liés à ASP.NET AJX et Cocos 2d-X. Au cours des dix dernières années, il s'est consacré au monde open source (familier avec les logiciels complets populaires). technologie de développement Web de pile) et découvert OneNet/AliOS+Arduino/ESP32/Raspberry Pi et d'autres technologies de développement IoT et Scala+Hadoop+Spark+Flink et d'autres technologies de développement Big Data.
Titre original : Utiliser l'IA pour générer des modèles 3D, rapidement !, auteur : Andrew Blance
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!