VT2020-Deepfake Algorithms-Fiche

Deepfake


Les deepfakes, apparus fin 2017 sur Reddit, sont des vidéos d’une personne dont le visage ou le corps a été altéré, à l’aide d’intelligences artificielles et de deep learning, pour les faire passer pour quelqu’un d’autre. On peut aussi trouver des deepfakes qui synthétisent la voix d’un individu à l'aide d'autres algorithmes.

Les deepfakes sont utilisées le plus fréquemment dans un but malicieux ou pour diffuser des fausses informations (fake news).

Histoire
À l’origine, le terme deepfake provient d’un utilisateur de Reddit nommé Deepfakes. Celui-ci a créé, en décembre 2017, un subreddit sur lequel il partageait des vidéos pornographiques qui contenaient des célébrités. À l’aide de bibliothèques open source comme TensorFlow de Google ainsi que Keras, cet utilisateur a mis au point un algorithme pour générer ces fausses vidéos. Le subreddit grandit vite en popularité, mais il est rapidement fermé par Reddit, et la pornographie truquée a depuis été interdite sur ce site ainsi que de nombreux autres.

Toutefois, cela n'a pas empêché le monde de l'internet de s'intéresser à ce nouveau genre de média. Bien au contraire, on peut trouver à ce jour plusieurs programmes qui permettent de créer ses propres deepfakes. On trouve notamment :


 * FakeApp, un logiciel propriétaire publié en janvier 2018, qui permet de créer ses propres deepfakes et les partager avec d'autres utilisateurs. Cependant, depuis 2019, on lui préfère les alternatives open-source ci-dessous.
 * FaceSwap, qui, à l'origine, contenait le code de l'utilisateur Deepfakes. Ce programme est open source, et basé sur les technologies TensorFlow de Google et Keras.
 * DeepFaceLab, un programme open source, avec une interface en ligne de commande, dont le développement a débuté en 2018.

Auto-encodeur
Les programmes comme FaceSwap et DeepFaceLab utilisent, pour générer des deepfakes, un réseau de neurones nommé auto-encodeur. Le principe d'un auto-encodeur est, à partir de données sources, d'encoder ces données et de les décoder. Pendant la phase de décodage, le programme apprend comment générer ce type de données, afin que les données en sortie ressemblent le plus possible à la source.

Dans le cas d'un logiciel de deepfake, nos données sources sont les images de la personne dont on souhaite copier le visage, et le programme va donc apprendre à le générer pendant la phase de décodage. FaceSwap et DeepFaceLab améliorent cette phase en ajoutant un réseau antagoniste génératif dans leur architecture.

Réseau antagoniste génératif


Un réseau antagoniste génératif (en anglais generative adversarial network ou GAN) oppose un générateur à un discriminateur. Celui-ci compare les données en sortie du générateur à des vraies données qu'il a à sa disposition. Si les données en sortie du générateur sont trop différentes des vraies données, le discriminateur va informer le générateur afin que celui-ci génère de nouvelles données de plus en plus proches de ce qu'on souhaite, jusqu'à ce que le discriminateur n'arrive plus à faire la différence entre de vraies données et des données générées.

Dans le cas de FaceSwap et DeepFaceLab, la phase de décodage de l'auto-encodeur est le générateur du réseau antagoniste génératif. Ce générateur va produire en sortie des visages qui ressemblent à la personne en entrée, et le discriminateur va l'informer s'il arrive à distinguer entre les images générées et les vraies images de cette personne.

Démonstration
Une démonstration est disponible ici.

VT2020

 * Année : VT2020
 * Sujet : Deepfake Algorithms
 * Slides : [slides]
 * Auteurs : Louis De Gaudenzi