Créez des rendus 3D réalistes avec l'IA !

Le rendu 3D est la capacité de générer un modèle photoréaliste dans l'espace comme ceux ci-bas, à partir d'images de l'objet, de la personne ou de la scène d'intérêt. Dans ce cas, vous auriez une poignée d'images de cette sculpture ou télévision et demanderiez à la machine de comprendre à quoi l'objet dans ces images devrait ressembler dans l'espace. Vous demandez essentiellement à une machine de comprendre la physique et les formes à partir d'images. C'est assez facile pour nous puisque nous ne connaissons que ça le monde réel et les profondeurs, mais c'est un tout autre défi pour une machine qui ne voit que des pixels.

Nouvelle synthèse de vues à l'aide du modèle (NeROIC). Image de la page du projet.

Alors, vous pourriez demander, pourquoi voulons-nous faire cela ? Je dirais que la réponse est assez évidente. Pour moi, il y a tellement d'applications possibles par le fait d'avoir une application qui pourrait simplement prendre quelques photos d'un objet et synthétiser parfaitement le modèle 3D pour le mettre en images, dans des scènes 3D ou même dans des jeux vidéo instantannément. C'est vraiment prometteur, mais pour que ces modèles soient réalistes, l'éclairage est encore tout un défi.

C'est formidable que le modèle généré semble précis avec des formes réalistes, mais qu'en est-il de la façon dont il se fond dans la nouvelle scène ? Et si les conditions d'éclairage varient dans les photos prises et que le modèle généré semble différent selon l'angle sous lequel vous le regardez ? Cela nous semblerait automatiquement bizarre et irréaliste. Ce sont les défis auxquels Snapchat et l'Université de Californie du Sud se sont attaqués dans cette nouvelle recherche.

Voyons maintenant comment ils ont relevé les défis d'éclairage et de réalisme liés à la création d'un objet virtuel à partir d'images. La technique s'appuie sur les champs de rayonnement neuronal, qui sont largement utilisés pour la reconstruction avec de nombreux modèles tels que NeRF que nous avons déjà abordés dans des articles précédents. En règle générale, les champs de rayonnement neuronal nécessitent des images prises dans les mêmes conditions idéales, mais ce n'est pas ce que nous voulons ici. Comme dans l’image ci-bas.

Approche NeRF. Image tirée du papier.

Leur approche commence ainsi par NeRF, et comme je l'ai dit, je l'ai déjà couvert sur ma chaîne, donc je ne le couvrirai plus, mais n'hésitez pas à faire une pause et à lire mon article pour mieux comprendre le fonctionnement de NeRF. En bref, NeRF est un réseau neuronal qui est formé pour déduire la couleur, l'opacité et la rayonnance de chaque pixel en utilisant les images comme entrées et deviner les pixels manquants pour les petites parties de l'objet qui ne sont pas présentes dans les images. Mais cette approche ne fonctionne pas pour les grandes pièces manquantes ou les différentes conditions d'éclairage, car elle ne peut interpoler qu'à partir des images d'entrée. Ici, nous avons besoin de quelque chose de plus pour extrapoler et faire des hypothèses sur ce qui devrait apparaître ici et là ou à quoi ces pixels devraient ressembler sous cet éclairage, etc.

De nombreuses approches s'appuient sur NeRF pour résoudre ce problème, mais nécessitent toujours plus d'entrées de la part de l'utilisateur, ce qui n'est pas ce que nous voulons et est difficile à avoir dans de nombreux cas, en particulier lorsque nous voulons créer un bon ensemble de données sur lequel entraîner ces modèles. En bref, ces modèles ne comprennent pas vraiment l'objet ni l'environnement dans lequel se trouve l'objet.

Paramètres de caméra et génération de modèle NeRF. Image tirée du papier.

Alors on revient toujours au problème de l'éclairage… Ici, leur but est d'utiliser cette architecture dans les images en ligne. Ou, en d'autres termes, des images avec des éclairages, des caméras, des environnements et des poses variables. Quelque chose que NeRF peut difficilement faire avec réalisme.

Les seules choses dont ils auront besoin, autres que les images de l'objet eux-mêmes, sont une segmentation approximative du premier plan de l’image et une estimation des paramètres de la caméra, qui peuvent toutes deux être obtenues assez facilement avec d'autres modèles disponibles. L'estimation de premier plan est simplement un masque qui vous indique où se trouve l'objet d'intérêt sur votre image, comme ceci :

Ce qu'ils ont fait différemment, c'est qu'ils séparent le rendu de l'objet de l'éclairage. Ils se concentrent sur deux choses, qui se font en deux étapes.

Vue d'ensemble du modèle NeROIC, comme nous le verrons ci-dessous. Image tirée du papier.

La première étape (a) est d’estimer la forme de l'objet, ou sa géométrie, qui est la partie la plus similaire à NeRF, ici appelée le “réseau géométrique”. Il prendra les images d'entrée, les masques de segmentation et l'estimation des paramètres de la caméra dont nous avons discuté, créera un champ de rayonnement et trouvera une première estimation de la densité et des couleurs de chaque pixel, comme dans NeRF, mais s'adaptera aux conditions d'éclairage variables dans les images d'entrée. Cette différence repose sur les deux branches que vous voyez ci-dessus (rouge vs. gris), séparant le contenu statique (haut) des différents paramètres variables (bas) tels que la caméra ou les ombres. Cela nous permettra d'enseigner à notre modèle comment isoler correctement le contenu statique d'autres paramètres indésirables comme l'éclairage. Mais nous n'avons pas fini ici.

En (b), nous allons estimer les normales de surface à partir de ce champ de densité appris, qui seront nos textures. Ou, en d'autres termes, nous prendrons les résultats que nous venons de produire et trouverons comment notre objet réagira à la lumière. Le modèle trouvera des propriétés matérielles de l'objet à ce stade, ou au moins une estimation de celles-ci, en utilisant une convolution 3D avec un noyau de Sobel. Il s'agira essentiellement d'un filtre que nous appliquerons en trois dimensions pour trouver tous les bords et leur netteté, ce qui peut ressembler à ceci sur une image en 2 dimensions (image ci-dessous, à gauche) et cela sur un rendu en 3 dimensions (image ci-dessous , à droite), nous donnant des informations essentielles sur les différentes textures et formes de l'objet. Pour ce qui est d’une convolution, je vous invite à lire mon article sur le sujet où je décris le processus simplement.

Filtre Sobel appliqué en 2D (à gauche) et normale de surface produite à l'aide d'un filtre Sobel 3D (à droite).

La dernière étape (c) consiste à corriger la géométrie apprise et à optimiser les normales que nous venons de produire à l'aide de ce réseau de rendu, qui est très similaire au premier réseau de géométrie. Là encore, il y a deux branches, une pour le matériel et une autre pour l'éclairage. Ils utiliseront des harmoniques sphériques pour représenter le modèle d'éclairage et optimiser ses coefficients lors de la formation. Comme ils l'expliquent dans l'article, avec plus d'informations si cela vous intéresse, les harmoniques sphériques sont utilisées ici pour représenter un groupe de fonctions de base définies sur la surface de la sphère. On peut trouver sur Wikipédia que « chaque fonction définie sur la surface d'une sphère peut s'écrire comme une somme de ces harmoniques sphériques ». Cette technique est souvent utilisée pour calculer l'éclairage sur des modèles 3D. Cela produit des ombres et des ombres très réalistes avec relativement peu de frais généraux. En bref, cela réduira simplement le nombre de paramètres à estimer mais gardera la même quantité d'informations.

Ainsi, au lieu d'apprendre à restituer l'éclairage approprié pour l'ensemble de l'objet à partir de zéro, le modèle apprendra plutôt les coefficients corrects à utiliser dans les harmoniques sphériques qui estimeront l'éclairage sortant de la surface de chaque pixel, simplifiant le problème à un peu de paramètres. L'autre branche sera entraînée pour améliorer les normales de surface de l'objet en suivant la même astuce en utilisant le “Phong BRDF standard”, qui modélisera les propriétés du matériau de l'objet en fonction de quelques paramètres à trouver. Enfin, les sorties des deux branches, donc le rendu final et l'éclairage seront fusionnés pour trouver la couleur finale de chaque pixel du modèle 3D.

Ce démêlage de la lumière et des matériaux est la raison pour laquelle ils sont capables d'appliquer n'importe quel éclairage à l'objet et de le faire réagir de manière réaliste. N'oubliez pas que cela se fait en utilisant seulement quelques images provenant d'Internet et qu'elles peuvent toutes avoir des conditions d'éclairage différentes. C'est extrêmement impressionnant!

Et voilà ! C'est ainsi que ce nouveau papier de Kuang et ses collaborateurs de Snapchat ont créé NeROIC, un modèle de rendu 3D d'objets à partir d'images en ligne !

J'espère que vous avez apprécié ce bref aperçu du papier. Toutes les références sont en liens ci-dessous ainsi que leur code. Faites-moi savoir ce que vous pensez de l'explication, de la technique et de la façon dont vous l'utiliseriez dans le monde réel !

Merci d'avoir lu cet article, et regardez la vidéo (en anglais, sous-titrée en français) pour plus d'exemples :

Références

Précédent
Précédent

Enregistrements audio améliorés avec l'IA ! (Et giveaway NVIDIA !)

Suivant
Suivant

Édition de visage en vidéos avec l’IA !