[1/2] Utilisation de l'apprentissage distribué pour la détection de deepfakes
Partie 1/2 : État de l'art et présentation de notre approche
Fabien Gelus
Dans cet article, nous présentons plusieurs techniques de manipulation de visage appelées «deepfakes» et montrons pourquoi il est important d'améliorer la recherche sur la détection de deepfakes. Nous présentons l'état de l'art des jeux de données et des algorithmes de détection de deepfake, et introduisons une approche d'apprentissage automatique sécurisée, traçable et distribuée pour un benchmark d’algorithmes de détection de deepfake à l'aide du framework Substra.
Le deepfake est une forme de «média synthétique» dans lequel une personne dans une image ou une vidéo existante est remplacée par quelqu'un d'autre qui lui ressemble. Les deepfakes tirent parti de techniques puissantes d’apprentissage automatique (en anglais Machine Learning/ML) pour manipuler ou générer du contenu visuel et audio avec un fort potentiel de duperie (def. Wikipedia). Ils peuvent potentiellement devenir nuisibles lorsqu'ils sont utilisés pour du revenge porn, des fake news (des exemples éducatifs de deepfakes de Mark Zuckerberg, Barack Obama, Boris Johnson et Jeremy Corbyn ont été publiés dans un but de prévention), des canulars ou encore de l’usurpation d'identité. Le deepfake est même devenu un sujet Github et dispose d’un fil Reddit dédié.
Comment les deepfakes sont-ils générés?
Le nom «deepfake» est souvent utilisé pour désigner différentes techniques de manipulation de visages. Les plus courantes sont les techniques «d'échange d'identité» (“Identity Swap”) et de «reconstitution faciale» (“Facial Reenactment”). Ces termes ont été introduits pour la première fois dans l'article de FaceForensics ++.
À l'origine, le terme «deepfakes» était utilisé comme pseudonyme par un utilisateur de Reddit qui prétend avoir écrit le premier algorithme d'échange d'identité utilisant le ML et qui a inspiré le logiciel open-source deepfakes/faceswap (2017). L'échange d'identité est une technique de synthèse d'images basée sur les réseaux de neurones, utilisée pour «permuter» un visage sur une vidéo existante avec celui d'une autre personne.
Les étapes de base pour créer un échange d'identité sont la détection du visage, l'apprentissage du visage et la reconstruction de l'image. Pour apprendre les visages, la plupart des algorithmes utilisent des auto-encodeurs : ce sont des modèles d'apprentissage non supervisés, qui sont utilisés pour apprendre une représentation compressée des données. Dans ce processus, les images des deux visages A et B sont envoyées à des réseaux de neurones appelés encodeur et décodeur pour apprendre une représentation compressée des visages. L'encodeur est utilisé pour compresser les visages en caractéristiques (comme l'expression et l'orientation), représentées dans le diagramme ci-dessous comme «latent faces», et un décodeur apprend pour chaque latent face à reconstruire l'image d'origine. En échangeant les décodeurs, l'auto-encodeur peut alors générer un visage pour le sujet B avec les mêmes caractéristiques que le sujet A.
L'utilisation de réseaux de neurones est bien plus efficace en termes de qualité et de réalisme, par rapport à d'autres techniques plus «graphiques» pour l'échange d'identité telles que MarekKowalski/FaceSwap, qui consiste en une simple détection de visage suivi d’une superposition d'images.
Après l'échange d'identité, une autre technique majeure de manipulation de visage est la reconstitution faciale. Elle est utilisée pour modifier les expressions d'une personne en transférant les expressions d'une personne source vers la cible.
Différentes méthodes d'apprentissage profond (“deep learning”) peuvent être utilisées pour générer des vidéos de reconstitution faciale : Face2Face, NeuralTextures et LipSynch par exemple.
Pour générer des deepfakes, plusieurs outils sont disponibles en ligne. Nous avons choisi de nous concentrer uniquement sur les logiciels open source car leur code est auditable :
FaceSwap-GAN (2018) est l'un des premiers outils d'échange d'identité à introduire des réseaux adverses génératifs (GAN) en plus de l'architecture d'auto-encodeur originale. La particularité des GANs est le réseau discriminant qui évalue la réalité des deepfakes générés et apprend au modèle à générer des deepfakes plus réalistes.
DeepFaceLab (2018) est un outil d'échange d'identité qui offre plusieurs modèles de taille et de profondeur différentes paramètrables (par exemple avec des options HD et GAN) et plusieurs modes d'extraction de visage. Il fournit une interface en ligne de commande et une interface graphique légère pour une pré-visualisation de l'apprentissage et un bloc-notes Google Colab intégré. Les rendus s'avèrent être de meilleure qualité que le dépôt original deepfakes/faceswap (voir cet article pour plus de détails).
First Order Motion Model (2019) peut générer à la fois des manipulations par échange d'identité et par reconstitution faciale. Il fournit également un bloc-notes Google Colab pour générer rapidement des deepfakes sans avoir besoin d'un ordinateur puissant (voir ce papier pour plus de détails).
D’autres manipulations du visage telles que la manipulation d'attributs ([1912.01865] StarGAN v2: Diverse Image Synthesis for Multiple Domains) ou des visages entièrement synthétisés ([1710.10196] Progressive Growing of GANs for Improved Quality, Stability, and Variation), essaient non pas «d’imiter» quelqu'un d'autre, mais de modifier des attributs physiques (couleur des cheveux, de la peau, etc.) ou de générer des visages entiers de manière aléatoire.
Des visages entièrement synthétisés à l'aide de GAN comme StyleGan2 ont récemment été utilisés pour créer de fausses personnalités afin d'espionner des communautés ou de publier de la désinformation.
Pourquoi est-il essentiel de détecter les deepfakes ?
Nous avons vu qu'avec le développement d'outils open source de génération de deepfake et le libre accès à des ressources informatiques à distance, tout le monde peut créer son propre deepfake. Compte tenu de la simplicité d'utilisation de ces outils, de leurs possibles utilisations malveillantes et de l'amélioration de la qualité des deepfakes au fil des années (cf. la première méthode de deepfake à résolution mégapixel de Disney), il est important de concentrer les recherches sur la détection des deepfakes. Avec la portée et la rapidité des informations diffusées sur les réseaux sociaux, des deepfakes convaincants peuvent rapidement toucher des millions de personnes et avoir des impacts négatifs sur notre société : Facebook, Microsoft et Google ont compris la nécessité d'un détecteur de deepfake rapide et automatique et ont déjà mobilisé des ressources dans ce domaine.
Comment détecter les deepfakes?
Pour détecter les vidéos manipulées au niveau du visage, plusieurs jeux de données ont été réalisés, rassemblant des vidéos "réelles" et "fausses" provenant de différentes sources, dans le but d'entraîner des modèles de ML et d'évaluer les algorithmes de détection.
Certains jeux de données collectent de "vraies" vidéos sur Youtube et génèrent ensuite des deepfakes avec différentes méthodes : les jeux de données Celeb-DF (2020) et FaceForensics++ (2019) ont utilisé deepfakes/faceswap avec quelques optimisations afin de créer des deepfakes de meilleure qualité.
Certains autres jeux de données utilisent des acteurs pour enregistrer leur ensemble de données de vidéos «réelles», pour ensuite générer des deepfakes avec celles-ci : le jeu de données DF-TIMIT (2018) a utilisé faceswap-GAN, tandis que le DeepFakeDetection (DFD) de Google (2019) et le DFDC de Facebook (2020) ont utilisé des algorithmes non-divulgués.
D'autres jeux de données comme Deepfake in the wild (2019) sont entièrement réalisés à partir de deepfakes publiés sur Internet.
Souvent, ces jeux de données ne sont pas directement disponibles au téléchargement. Vous devez contacter les fournisseurs et accepter certaines conditions (ne l'utiliser qu'à des fins de recherche non commerciale et éducative uniquement, ne pas distribuer, copier ou héberger l'ensemble de données, ne pas l'incorporer dans un autre ensemble de données, etc.). C'est l'une des raisons pour lesquelles une approche d'apprentissage distribué pourrait simplifier le processus d'accès et de collecte de ces jeux de données (vous trouverez les détails de notre approche plus loin).
Chaque fabricant de jeux de données a essayé de construire de nouvelles méthodes de détection et de les comparer aux autres sur son propre jeu de test : c'est ainsi qu'est née l'idée de plateformes publiques de référence (“benchmarks”) :
Le benchmark de FaceForensics (2019) donne un jeu de test non labellisé au public et permet aux chercheurs de soumettre leurs propres prédictions (une seule soumission est autorisée). Le meilleur algorithme a une précision de 91,7 %. Les détails de la mise en œuvre des méthodes les mieux classées ne sont pas divulgués, sauf pour LGSC-Lite (précision de 84,8 %).
Le challenge Kaggle DFDC (2020) comporte deux classements, l'un établi à partir de prédictions sur un jeu de test public non labellisé et l'autre à partir d'une ré-exécution du code des participants par l'hôte sur un jeu de test privé. Le modèle le plus performant a atteint une précision moyenne de 82,6 % sur le classement public et 65 % sur le classement privé. Les méthodes communes aux gagnants ont été partagées et le modèle gagnant est disponible sur GitHub.
En même temps, plusieurs articles et méthodes pour détecter les deepfakes ont été publiés et la littérature semble être florissante :
Méthodes basées sur les artefacts:
Méthodes utilisant les CNN :
CNN combiné avec RNN :
Auto-encodeurs :
Nous pouvons également noter que des méthodes pour empêcher l'utilisation d'images dans les deepfakes sont en train d'émerger : [2003.01279] Disrupting Deepfakes: Adversarial Attacks Against Conditional Image Translation Networks and Facial Manipulation Systems.
Cependant, tous ces modèles de détection sont formés sur différents jeux de données et utilisent différents jeux de test pour mesurer leur efficacité : il est nécessaire de disposer d'un véritable benchmark commun de ces méthodes.
Certains outils open source ont été publiés, dans le but de rassembler des jeux de données et des modèles provenant de différents contributeurs (par exemple, dessa-oss/DeepFake-Detection et zerofox-oss/deepstar), mais n'ont pas gagné en popularité, certainement dû au manque de documentation et d'orchestration entre les propriétaires de jeux de données et des modèles. C'est pourquoi nous avons pensé à une nouvelle approche.
Pourquoi utiliser un framework comme Substra ?
Nous proposons d'utiliser une approche de ML sécurisée, traçable et distribuée pour entraîner et tester vos algorithmes de détection, à l'aide du framework open source Substra.
Cette approche offre plusieurs avantages pour l'entraînement et le test de modèles de détection de deepfake:
Nous prévoyons de rassembler une grande diversité de jeux de données de deepfakes afin d'être aussi représentatifs que possible des deepfakes que vous pouvez trouver «in the wild» (sur internet). Nous pouvons alors offrir l'opportunité d'entraîner des modèles directement sur une instance publique «TestNet» de Substra (à des fins éducatives)
Un benchmark public sera réalisé afin de tester les modèles soumis sur un jeu de test commun, secret et hétérogène, fournissant une évaluation réelle de leurs performances (avec des perspectives de certification) et un classement non biaisé.
Grâce au framework Substra, les jeux de données ne sont pas exposés aux utilisateurs et ne sont accessibles que par les algorithmes soumis. Dans le cadre d'un partenariat entre détenteurs de jeux de données, les participants peuvent créer un nœud Substra pour calculer les tâches d'entraînement et/ou de test localement (là où les données sont stockées), puis choisir ensuite de renvoyer le modèle résultant ou seulement les résultats du test, selon les conditions d'utilisation de leur ensemble de données.
Pour les propriétaires de jeux de données, cela garantit que :
leur jeu de données ne peut pas être utilisé par des acteurs malveillants : le framework permet la traçabilité des tâches de ML, afin qu’ils sachent exactement comment et sur quelles données les modèles de détection ont été entraînés. Cela garantit également la reproductibilité des résultats des tests.
le jeu de test utilisé pour un benchmark des modèles de détection est gardé secret.
Pour illustrer notre approche, nous allons détailler un cas d'utilisation de base (en rapport avec le schéma ci-dessus) :
Un utilisateur du TestNet soumet son algorithme au nœud public Substra. Il veut entraîner son modèle (implémenté dans l'algorithme) et le tester ensuite sur tous les jeux de données disponibles.
Le jeu de données local est le jeu de données du nœud public, composé de jeux de données qui ont été autorisés pour être hébergés par Substra. Il est divisé en deux parties, un jeu d'entraînement et un jeu de test.
D'autre part, les propriétaires de jeux de données sont des organisations potentielles qui accepteraient un partenariat mais préféreraient que leurs données restent chez elles. Ils choisissent si leurs données peuvent être utilisées pour des tâches d'entraînement et/ou de test. Les jeux de données peuvent être de nature différente (par exemple, différentes méthodes de génération de deepfakes) mais conserveraient le même format (par exemple des vidéos mp4 d'une taille maximale de 40 Mo).
Nous représentons ici un cas d'utilisation où un ensemble de données 1 n'est disponible que pour des tâches d'entraînement et un ensemble de données 2 n'est disponible que pour des tâches de test (le modèle n'est pas renvoyé).
Le modèle est entraîné sur le jeu de données local (jeu d'entraînement) et sur le jeu de données 1. Il est ensuite renvoyé à l'utilisateur, et soumis à la tâche de test. Le modèle entraîné est testé sur le jeu de données local (jeu de test) et le jeu de données 2. Les résultats sont ensuite agrégés et affichés sur le leaderboard public.
Conclusion
Nous avons vu que les deepfakes deviennent une véritable menace pour nos réseaux sociaux et pour Internet en général, non seulement en raison d'utilisations malveillantes comme la désinformation, le vol d'identité ou le harcèlement en ligne, mais aussi en raison de la facilité d'utilisation des outils de création de deepfake et de l'amélioration de leur qualité au fil des années. Nous avons également constaté que l'état actuel des jeux de données de détection de deepfake ne permet pas une bonne représentation des deepfakes que nous pourrions rencontrer sur le Web, et qu'il est nécessaire de rassembler des sources disparates et de créer une référence commune pour toutes les méthodes de détection.
C'est pourquoi nous avons introduit une approche de ML sécurisée, traçable et distribuée à l'aide du framework Substra, dans le but de créer une plateforme de test public avec plusieurs jeux de données et une référence de test commune. Nous pourrions alors allier les propriétaires de jeux de données et les concepteurs d'algorithmes afin d'améliorer l'état de l'art en matière de détection de deepfakes.
Si vous êtes intéressé par les aspects techniques du framework et l'implémentation d'un détecteur de deepfake avec Substra, une deuxième partie de cet article sera publiée prochainement. Abonnez-vous à notre newsletter pour rester à l'écoute !
Contactez-nous
Vous souhaitez mettre la main sur le détecteur de deepfakes ?
Dépôt d'exemples de Substra : https://github.com/SubstraFoundation/substra-examples
Besoin d'aide ou d'informations supplémentaires ? Venez discuter sur Slack !