Application de génération de visages dans une image avec un GAN

By 3 mars 2020 mars 4th, 2020 VeoNews

Mi-février, cinq étudiants de l’ESIR ont présenté leurs travaux en collaboration avec VeoNum. Dans le cadre de leur projet industriel, ils ont développé une application capable de détecter les visages présents sur des photos et regénérer ceux-ci à volonté.

En plus du côté ludique de l’application, celle-ci ouvre des possibilités en termes d’anonymisation de photo. Au lieu de flouter les visages des personnes ne souhaitant pas apparaître sur vos images, on peut imaginer les remplacer par des visages totalement fictifs.

Application VeoFace Reconstructor développée par les étudiants de l’ESIR

Le GAN dans tout ça ?

L’application utilise un GAN [1] (Generative Adversarial Network), c’est-à-dire un réseau de neurones artificiels capable de générer des données réalistes (ici, des visages). Ce réseau est décomposé en deux parties : un générateur et un discriminateur.

Durant sa phase d’apprentissage, les deux entités vont jouer l’une contre l’autre au jeu suivant. A partir d’un signal aléatoire, le générateur construit un jeu de données qu’il envoi ensuite au discriminateur. Ce dernier reçoit également un jeu de données réelles provenant d’une base d’apprentissage. Le but du discriminateur est de pouvoir différencier les données réelles des données envoyées par le générateur. A l’inverse, ce dernier doit être capable de tromper le discriminateur.

Schéma de l’entrainement d’un GAN.

Ce jeu répété de nombreuses fois va pousser le générateur à adapter ses paramètres pour produire des données plus réalistes afin que le discriminateur les confonde avec les données d’apprentissage. Dans notre cas, les étudiants ont utilisé la base de données publique CelebA [2] comportant plus de 200 000 images de visages de célébrités. Après de nombreuses itérations, le générateur arrive à produire des images tels que celles-ci :

Intégrer le GAN à l’application

Une fois le GAN entrainé, les étudiants ont pu intégrer le générateur à leur application en utilisant le framework Tensorflow Lite.

L’application se charge de trouver les visages dans l’une de vos photos (prise avec la caméra ou parmi votre galerie). Vous pouvez ensuite préciser les visages que vous souhaitez regénérer. Là, le générateur produit un visage à partir d’un signal aléatoire et le propose à l’utilisateur à la place du visage détecté.

Exemple d’utilisation de l’application

Améliorations possibles

Cette première application n’est cependant pas parfaite. Il est clair que le visage généré aléatoirement et plaqué directement sur l’image peut présenter de nombreuses incohérences. Par exemple :

Pour y faire face, les étudiants ont proposé d’appliquer une technique de morphing pour placer le visage généré dans l’image. L’idée étant de faire correspondre au mieux la position du visage réel avec celui regénéré.

Exemple de morphing entre G. W. Bush et A. Schwarzenegger (https://en.wikipedia.org/wiki/Morphing)

Cependant, par manque de temps cette dernière fonctionnalité n’a pas pu être implémentée correctement sur l’application Android.

Une autre possibilité testée à Veonum consiste à laisser au GAN le soin d’insérer au mieux le visage généré dans l’image. Pour cela, nous donnons le contexte du visage (c.-à-d. son contour) comme information à l’entrée du générateur en plus du signal aléatoire. Le discriminateur reçoit quant à lui l’image du visage généré fusionné avec le contexte. Ainsi le générateur doit apprendre à rendre le visage le plus réaliste possible dans son contexte.

Les résultats obtenus ne sont pas encore parfaits mais il est clair que cette fois, le contexte est bien pris en compte dans la génération du visage.

Les étudiants de L’ESIR

  • Gatien Gaumerais, étudiant de 3 année en IN
  • Adrien Gegout, étudiant de 3 année en SI
  • Tugdual Le Pen, étudiant de 3 année en IN
  • Paul le Tannou, étudiant de 3 année en IN
  • Simon Moisan, étudiant de 3 année en SI

Liens

[1] Ian J. Goodfellow, et al. « Generative adversarial nets. » Advances in neural information processing systems. 2014. (http://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf)

[2] Ziwei Liu, et al. « Deep Learning Face Attributes in the Wild  » Proceedings of International Conference on Computer Vision. 2015. (http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html)