VT2020-Deepfake Algorithms-Demo

From air
Revision as of 12:20, 4 January 2021 by Louis.De-Gaudenzi (talk | contribs) (→‎Téléchargement de DeepFaceLab)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Cette démonstration est effectuée à l'aide de DeepFaceLab.

Le but de cette démonstration est de générer un deepfake avec mon visage remplaçant celui de Elon Musk.

Téléchargement de DeepFaceLab

Le téléchargement de DeepFaceLab se fait sur la page GitHub de DeepFaceLab.

Après avoir téléchargé le programme et l'avoir décompressé sur notre machine, on trouve les fichiers ci-dessous :

Le contenu du répertoire de l'application

Le dossier workspace contient ces fichiers :

Le contenu du répertoire workspace

  • data_src.mp4 est la vidéo source. Cette vidéo doit contenir le visage de la personne qu'on souhaite copier. Plus la vidéo contient de mimiques différentes et variées de la personne, plus le résultat sera réaliste, mais l'apprentissage sera aussi plus long.
  • data_dst.mp4 est la vidéo destination. Cette vidéo doit contenir le visage de la personne sur qui on souhaite coller le visage source.
  • data_src, data_dst et model nous serviront par la suite.

Dans mon cas, j'ai remplacé la vidéo source présente de base, qui contenait Robert Downey Jr., par une vidéo de moi d'environ deux minutes. Dans cette vidéo, il est préférable de montrer le plus grand nombre de mimiques possibles, de parler, de tourner la tête dans plusieurs directions, afin de montrer son visage sous tous les aspects possibles, afin que le programme ait beaucoup de matière pour apprendre à générer notre visage.

Étapes

Nettoyer l'espace de travail (optionnel)

Si ce n'est pas la première fois que vous utilisez le programme, il faut nettoyer l'espace de travail.

Pour cela, on exécute le fichier 1) clear workspace.bat.

Extraire les images de la vidéo source

Lors de cette étape, on va extraire un certain nombre d'images à intervalles réguliers dans notre vidéo source, pour ensuite les sauvegarder dans le répertoire data_src.

Pour cela, on exécute le fichier 2) extract images from video data_src.bat.

Extraire les images de la vidéo destination

Cette étape va permettre d'extraire chaque image de la vidéo destination, pour les sauvegarder dans le répertoire data_dst.

Pour cela, on exécute le fichier 3) extract images from video data_dst FULL FPS.bat.

Extraire les visages des images de la vidéo source

Maintenant qu'on a une liste d'images qui proviennent de la vidéo source, nous allons faire appel à de la reconnaissance faciale, pour ne garder que les parties des images sources qui nous intéressent. Les visages seront stockés dans data_src/aligned.

Pour cela, on exécute le fichier 4) data_src faceset extract.bat.

Une partie de la longue liste de visage dans la vidéo source

Extraire les visages des images de la vidéo destination

Le but de cette étape est comme la précédente, mais pour les images de la vidéo destination. Les visages seront stockés dans data_dst/aligned.

Pour cela, on exécute le fichier 5) data_dst faceset extract.bat.

Une partie de la longue liste de visage dans la vidéo destination

Lancer la phase d'apprentissage de l'IA

On veut maintenant que l'IA apprenne à générer ces visages. Pour cela, nous allons créer un nouveau modèle d'apprentissage afin qu'elle puisse apprendre leur génération en partant de zéro.

Pour cela, on exécute le fichier 6) train SAEHD.bat. Cette étape est gourmande en ressources pour la carte graphique. On peut laisser cette étape durer aussi longtemps qu'on veut, mais plus on attendra, et plus le résultat sera précis et réaliste.

L'interface de la phase d'apprentissage

À noter également qu'il est possible et même recommandé d'utiliser un modèle déjà existant. Ces modèles peuvent être trouvés sur des forums dédiés par exemple.

Fusionner la vidéo destination avec les visages générés par l'IA

Le programme arrive à coller un visage source sur la destination de manière assez précise, mais il faut qu'on règle quelques options, comme le mode de mélange de couleurs, le flou des bords du visage généré, la netteté du résultat, etc.

Pour cela, on exécute le fichier 7) merge SAEHD.bat.

L'interface de la phase de fusion

On appuie sur la touche Tab pour afficher/cacher le menu d'aide qui montre les commandes. Quand on a fini les modifications, il suffit d'appuyer sur Échap pour quitter le script et appliquer les changements.

Produire le deepfake

Le programme est maintenant prêt à produire le résultat tant attendu.

Pour cela, on exécute le fichier 8) merged to mp4.bat.

Résultat

Le résultat produit par cette démonstration est visionnable ici.

VT2020