Tuto: intervertir les visages de Jean Dujardin et Macron grâce au Deep-learning.

Source: Deep Learning on Medium



Les vidéos deepfake du discours d’Obama m’avaient absolument fasciné et terrifié à la fois. J’avais déjà vu ces vidéos ou un visage est remplacé par un autre, mais le réalisme n’était pas aussi frappant. Sans savoir à l’avance que la vidéo était fausse, je serais tombé dans le panneau. Ce sont des chercheurs de l’université de Washington qui ont réalisé cette prouesse. En donnant plusieurs milliers d’heures de vidéo d’Obama à un algorithme de deep-learning, il a pu apprendre à recréer intégralement et en mouvement son visage.

On pourrait penser que créer soi-même une telle vidéo est impossible et demande accès à des ressources secret défense ainsi qu’à une armée de développeur. En faisant des recherches sur internet on se rend pourtant compte que ces vidéos sont créés à partir d’un outil open source, TensorFlow et qu’on a même le droit à des logiciels crée par la communauté qui facilite son utilisation spécifiquement pour créer des Deepfakes. Certes, il faut être un peu habitué au vocabulaire, à l’utilisation de l’invite de commande et savoir un peu trafiquer sa configuration système, mais aucune compétence poussée en programmation n’est requise dans les différents tutoriels proposés. Voulant à tout prix tester par moi-même, je me souviens avoir sur mon ordinateur les deux OSS117 en très bonne qualité et j’ai toujours trouvé une forte ressemblance entre son personnage principal et notre président.

Etape 1 : Montage vidéo

Il faut dans un premier temps effectuer un travail de montage vidéo basique : garder uniquement des passages avec le visage clairement visible et sans autres humains à l’écran. Tout cela à pour but d’éviter des datas parasites qui viendraient fausser le modèle de l’algorithmes lors de l’entrainement.

Etape 2 : Nettoyer les datasets

Les vidéos sont ensuite traitées par un petit logiciel qui identifie les visages et les isoles frame par frame dans des .png. Malgré le montage de la première étape des erreurs peuvent subsister et il s’agit d’en éliminer le plus possible pour que le modèle appris par l’algorithme soit le plus fidèle possible.

Sur 88344 images analysés le logiciel détecte 87794 visages, le montage ne suffit pas.

Etape 3 : Entraîner le model

C’est la partie la plus longue, les deux datasets — qui correspondent aux visages de Macron et Jean Dujardin — sont soumis à l’algorithme qui va apprendre de ces images et en dégager des paramètres, un modèle, lui permettant de remplacer le visage A par le visage B et inversement. Il ne faut ni sous entraîner les modèles (il ne connaît pas assez les visages et ne fait pas bien la transposition), ni les sur-entraîner (il va faire exagérer les récurrences et ne pas prendre en compte des expressions faciales un peu différentes comme un sourire par exemple). On peut utiliser des commandes python pour paramétrer l’apprentissage et changer par exemple la batch size (nombre d’exemples utilises en une itération). Lors de l’entrainement la seule information disponible sur l’invite de commande est celle de la valeur Loss , une valeur comprise entre 1 et 0 pour chacun des deux modèles, au plus elle se rapproche de 0 au plus le modèle est bien entraîné. Lorsque l’on voit que la valeur stagner voire remonter, c’est que l’entrainement est a son maximum d’optimisation. Après plusieurs essais, sur mon ordinateur le temps d’entrainement optimal d’un modèle semble se situer entre 8 et 9h.

A gauche l’invite de commande , a droite l’aperçu du model de Macron en cours d’entrainement

Etape 4 : Prier et utiliser le modèle sur une vidéo courte

Voici quelques Screenshot des vidéos qui ressortent de l’expérience

L’exercice est tout de meme facilité par le fait que les visages de Macron et Dujardin se ressemble déjà à la base, ce qui est clairement visible ici.

Les résultats que j’ai obtenus dans l’ensemble sont un peu décevant par rapport aux résultats vus sur internet. J’ai seulement mis en capture d’écran les quelques passages présentables, mais la plupart du temps soit le visage est flou, soit il y a un problème de teinte ( c’est net, les expressions sont bien reproduites mais un carré d’une teinte différente délimite le centre du visage). Dans les forums ont m’indique que c’est notamment ma configuration graphique qui me limite. Pour le commun des mortels j’ai une excellente config (GTX 1080, 16 go de RAM ), mais dans le monde du deep learning elle est en fait très moyenne. Cela rend les sessions d’entrainement très longues , et le tâtonnement difficile. De plus mes connaissances trop basiques de Python et du machine Learning ne me permettent pas d’utiliser pleinement les possibilités offertes par Tensorflow (Je n’ai pas vraiment compris a quoi correspondait le paramètre « Epoch » par exemple). Après 4 nuits passé à écouter le vacarmes assourdissants des ventilateurs à pleins régimes, j’arrête l’expérience.

Conclusion :

Créer des deepfakes semble aujourd’hui à la portée du grand public. Certes peu de monde possède un PC capable de donner de bons résultats, cependant on ne parle pas ici d’une configuration digne d’un centre de recherche mais bien de setups destinés à du gaming (très) poussé. Ce ne sont plus seulement les gouvernements ou les grandes entreprises qui ont les moyens d’utiliser l’intelligence artificielle pour falsifier une vidéo. Et cela pose énormément de questions sur le futur de l’information. Si tout le monde peut créer ce genre de contenu, peut-on encore croire en la véracité d’une vidéo d’un simple discours, même en étant très attentif ? La réponse pour moi est clairement non. Et il semblerait que le meilleur moyen de déceler un deepfake d’une vraie vidéo à l’heure actuelle soit … une intelligence artificielle.