Éclairages Réalistes sur Différents Arrière-plans
Contrôlez la luminosité de n’importe quel portrait en fonction de l'éclairage du nouvel arrière-plan que vous ajoutez.
Avez-vous déjà voulu changer l'arrière-plan d'une image avec un fini réaliste? Si vous avez déjà essayé cela, vous savez déjà que ce n’est pas simple. Vous ne pouvez pas simplement prendre une photo de vous-même dans votre maison et changer l'arrière-plan d'une plage. Ça na juste pas l’air réaliste du tout. Tout le monde dira simplement "c'est photoshop" en une seconde. Pour les films et les vidéos professionnelles, il faut un éclairage parfait et des artistes talentueux pour reproduire une image de haute qualité, et c’est très coûteux. Vous ne pouvez pas faire cela avec vos propres photos. Ou, pouvez-vous?
Eh bien, c'est ce que Google Research tente de réaliser avec ce nouveau document appelé Total Relighting. Le but est de rallumer correctement n'importe quel portrait en fonction de l'éclairage du nouvel arrière-plan que vous ajoutez. Cette tâche est appelée «Ré-éclairage de portrait et remplacement d'arrière-plan», qui, comme son nom l'indique, comporte deux sous-tâches très compliquées:
Remplacement de l'arrière-plan, ce qui signifie que vous devrez supprimer avec précision l'arrière-plan de l'image actuelle pour n'avoir que votre portrait.
Ré-éclairage de portrait, où vous adapterez votre portrait en fonction de l’éclairage de la nouvelle scène.
Comme vous pouvez vous y attendre, ces deux tâches sont extrêmement difficiles, car l'algorithme doit comprendre l'image pour vous y en retirer correctement, puis comprendre suffisamment l'autre image pour modifier l'éclairage de votre portrait pour l'adapter à la nouvelle scène. La chose la plus impressionnante à propos de cet article est que ces deux tâches sont effectuées sans aucun prieur. Cela signifie qu'ils n'ont pas besoin d'autres informations que deux images: votre portrait et le nouvel arrière-plan pour créer cette nouvelle image réaliste. Revenons à la manière dont ils ont attaqué ces deux tâches en détail:
Extraction de la personne dans l’image
Cette première tâche consistant à supprimer l'arrière-plan de votre portrait s'appelle le ‘image matting’, ou dans ce cas, le ‘human matting’, où nous voulons identifier un humain dans une image avec précision. La partie «précise» la rend complexe en raison de nombreux détails à grain fin comme les cheveux flottants que les humains ont. Vous ne pouvez pas simplement rogner le visage sans les cheveux. Cela semblera tout simplement irréel. Pour y parvenir, ils doivent former un modèle qui peut d'abord trouver l'humain, puis prédire un résultat approximatif où nous spécifions ce que nous sommes sûr faisant partie de la personne, ce qui fait partie de l'arrière-plan et ce qui est incertain.
Un renard roux (à gauche) et son trimap (à droite)
C'est ce qu'on appelle un trimap, et on le trouve en utilisant un système de segmentation classique formé pour faire exactement cela: segmenter des personnes des image. Ce trimap est ensuite affiné à l'aide d'une architecture encodeur-décodeur, comme je l'ai déjà expliqué dans une vidéo précédente si cela vous intéresse, partagé ci-bas. Il prend essentiellement ce trimap initial, le réduit en informations condensées, et utilise ces informations condensées pour augmenter celui-ci en un meilleur trimap. Ceci est expliqué plus clairement dans la vidéo (en anglais).
Cela peut sembler magique, mais ça fonctionne parce que le réseau transformant ce trimap en code et ce code en un meilleur trimap a été entraîné sur des milliers d'exemples et a ainsi appris comment y parvenir. Ensuite, ils utilisent ce deuxième trimap pour le raffiner à nouveau dans la forme humaine prédite au final, appelée ‘alpha matte’. Cette étape utilise également un réseau de neurones. Nous avons donc essentiellement trois réseaux impliqués ici, un qui prend l'image et génère un trimap, un second qui prend cette image et ce trimap pour améliorer le trimap, et le dernier qui prend tout cela comme entrées pour générer le ‘alpha matte’ final qu’on peut retrouver à la toute droite de l’image ci-dessus. Toutes ces sous-étapes sont apprises pendant l’entraînement, où nous montrons de nombreux exemples de ce que nous voulons aux réseaux travaillant ensemble pour améliorer le résultat final de manière itérative. Encore une fois, c'est très similaire à ce que j'ai déjà couvert dans ma vidéo sur MODNet, un réseau faisant précisément cela, si vous voulez plus d'informations sur le ‘human matting’:
Ici, tous ces réseaux n'ont constitué que la première étape de cet algorithme: le ‘human matting’. Ce qui est nouveau avec cet article est la deuxième vraie étape, qu’ils appellent le module de rallumage.
Module de Rallumage
Maintenant que nous avons une prédiction précise de l'endroit où se trouve la personne dans l'image, nous devons lui donner un aspect réaliste. Pour ce faire, il est très important que l'éclairage de la personne corresponde à l'arrière-plan, il faut donc soit rallumer la personne, soit la scène d'arrière-plan. Ici, comme la plupart seraient d'accord, le plus simple est de rallumer la personne, alors ils ont visé pour cela. Ce rallumage était certainement la tâche la plus complexe entre les deux, car ils avaient besoin de comprendre comment le corps humain réagit à la lumière.
Comme vous pouvez le voir ici, il existe à nouveau plusieurs sous-réseaux. Le réseau de géométrie, un réseau d'albedo et un dernier réseau d'ombrage. Le réseau de géométrie prend l’image que nous avons produite à l'étape précédente en entrée pour produire des normales de surface. Il s'agit d'une modélisation de la surface de la personne afin que le modèle puisse comprendre les profondeurs et les interactions lumineuses. Ensuite, cette normale de surface est couplée à la même image de premier plan et envoyée dans un réseau d'albédo qui produit l'image d'albédo. Cette image d'albédo est simplement une mesure de la proportion de lumière réfléchie par notre objet d'intérêt, qui est une personne, dans ce cas, réagissant à la lumière provenant de différentes sources. Il nous dit comment les vêtements et la peau de la personne réagissent à la lumière qu'elle reçoit, nous aidant à passer à l'étape suivante. Cette prochaine étape a à voir avec la lumière du nouvel arrière-plan. Nous allons essayer de comprendre comment le nouvel éclairage d'arrière-plan affecte notre portrait en utilisant la réflectance spéculaire apprise et les représentations lumineuses diffuses de notre portrait appelées ici ‘light maps’.
Ces ‘light maps’ ou cartes lumineuses sont calculées à l'aide d'une vue panoramique de votre arrière-plan souhaité. Tout comme son nom l'indique, ces cartes lumineuses montrent essentiellement comment la lumière interagit avec le sujet dans de nombreuses situations. Ces cartes nous permettent de rendre la peau et les vêtements plus brillants ou plus mats en fonction de l'éclairage de l'arrière-plan. Ensuite, ces cartes lumineuses, l'image d'albédo et l’image produite lors de la première étape sont fusionnées dans le dernier et troisième sous-réseau, le réseau d'ombrage.
Ce réseau d'ombrage produit d'abord une version finale de la carte de lumière spéculaire en utilisant les informations d'albédo couplées à tous les candidats de carte de lumière spéculaire que nous avons calculés précédemment. En utilisant cette carte lumineuse finale, notre carte diffuse et l'albédo, nous pouvons enfin rendre notre personne extraite prête à être insérée sur notre nouvel arrière-plan.
Comme vous l'avez vu, tous les réseaux se ressemblaient, exactement comme ceci, qui s'appelle une architecture U-Net ou encodeur-décodeur. Comme je l'ai déjà dit, il prend une entrée, la condense en codes représentant cette entrée et remet ce code à l'échelle dans une nouvelle image. Ces «encodeurs-décodeurs» ne prennent qu'une image dans la première partie du réseau, qui est l'encodeur et la transforme en informations condensées appelées code latent que vous pouvez voir ci-bas à droite. Ces informations contiennent essentiellement les informations pertinentes pour reconstruire l'image en fonction du style que nous voulons qu'elle ait. En utilisant ce qu'ils ont appris pendant l’entraînement, le décodeur effectue l'étape inverse en utilisant ces informations pour produire une nouvelle image avec ce nouveau style. Ce style peut être une nouvelle orientation d'éclairage, mais aussi une image complètement différente comme une carte de surface ou même un ‘alpha matte’, comme dans notre première étape.
Cette technique est extrêmement puissante, principalement en raison de la qualité de l’entraînement qu'ils ont effectuée. Ici, ils ont utilisé 58 caméras avec plusieurs lumières et 70 personnes différentes faisant diverses poses et expressions. Mais ne vous inquiétez pas, cela n'est nécessaire que pour entraîner l'algorithme. La seule chose dont vous avez besoin au moment de l'inférence est votre image et votre nouvel arrière-plan. En outre, vous vous souviendrez peut-être que j'ai mentionné qu'une vue panoramique était nécessaire pour produire cette image ré-éclairée, mais elle peut également être approximée assez précisément avec un autre réseau de neurones en se basant uniquement sur l'image d'arrière-plan sur laquelle vous voulez que votre portrait soit traduit.
Et c'est tout! La fusion de ces deux techniques ensemble fait en sorte qu’il vous suffit donc de donner deux images à l'algorithme, et il fera tout pour vous, produisant un portrait réalistement éclairé de vous-même avec un arrière-plan différent! Cet article de Pandey et al. l'applique aux humains, mais vous pouvez imaginer à quel point cela pourrait être utile sur des objets où vous pourrez simplement prendre des photos d'objets et les placer dans une nouvelle scène avec un éclairage idéal pour leur donner un aspect réel.
Merci d’avoir lu cet article!
Venez discuter avec nous dans notre communauté Discord: ‘Learn AI Together’ et partagez vos projets, vos articles, vos meilleurs cours, trouvez des coéquipiers pour des compétitions Kaggle et plus encore!
Si vous aimez mon travail et que vous souhaitez rester à jour avec l'IA, vous devez absolument me suivre sur mes autres médias sociaux (LinkedIn, Twitter) et vous abonner à ma newsletter hebdomadaire sur l'IA!
Pour supporter mon travail:
La meilleure façon de me soutenir est de souscrire à ma newsletter tel que mentionné précédemment ou de vous abonner à ma chaîne sur YouTube si vous aimez le format vidéo en anglais.
Soutenez mon travail financièrement sur Patreon
Références
Pandey et al., 2021, Total Relighting: Learning to Relight Portraits for Background Replacement, doi: 10.1145/3450626.3459872
Papier: https://augmentedperception.github.io/total_relighting/total_relighting_paper.pdf
Lien du Project: https://augmentedperception.github.io/total_relighting/