VT2020-Deepfake Algorithms-Demo: Difference between revisions
(Created page with " Cette démonstration est effectuée à l'aide de [https://github.com/iperov/DeepFaceLab DeepFaceLab]. Le but de cette démonstration est de générer un deepfake avec mon vi...") |
No edit summary |
||
Line 8: | Line 8: | ||
Le téléchargement de DeepFaceLab se fait sur la [https://github.com/iperov/DeepFaceLab page GitHub de DeepFaceLab]. |
Le téléchargement de DeepFaceLab se fait sur la [https://github.com/iperov/DeepFaceLab 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 |
Après avoir téléchargé le programme et l'avoir décompressé sur notre machine, on trouve les fichiers ci-dessous : |
||
[[File:DeepFaceLab0.png|frameless|border|Le contenu du répertoire de l'application]] |
|||
Le dossier ''workspace'' contient ces fichiers : |
|||
[[File:DeepFaceLab1.png|frameless|border|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_dest.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 == |
== É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''. |
|||
[[File:DeepFaceLab2.png|frameless|border|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''. |
|||
[[File:DeepFaceLab3.png|frameless|border|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. |
|||
[[File:DeepFaceLab4.png|frameless|border|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''. |
|||
[[File:DeepFaceLab5.png|frameless|border|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 == |
== Résultat == |
Revision as of 23:37, 3 January 2021
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 dossier workspace contient ces fichiers :
- 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_dest.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.
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.
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.
À 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.
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.