Comment apprendre en profondeur les faux vidéos (Deepfake) et comment le détecter?

La fabrication de photos pornos de célébrités n’est pas nouvelle. Cependant, fin 2017, un utilisateur de Reddit, Deepfakes, a commencé à appliquer l'apprentissage en profondeur pour fabriquer de fausses vidéos de célébrités. Cela commence une nouvelle vague de fausses vidéos en ligne. La DARPA, au sein de l'armée américaine, finance également des recherches sur la détection de fausses vidéos. En fait, l'application d'IA pour créer des vidéos a commencé bien avant Deepfakes. Face2Face et UW, qui «synthétisent Obama (apprennent la synchronisation labiale à partir de l’audio)», créent de fausses vidéos encore plus difficiles à détecter. En fait, ils sont si réels que Jordan Peele en a créé un ci-dessous pour avertir le public.

Dans cet article, nous expliquons le concept de Deepfakes. Nous localisons certaines des difficultés et expliquons comment identifier les fausses vidéos. Nous nous intéressons également à une recherche menée à l’Université de Washington pour créer des vidéos qui peuvent être synchronisées sur un son potentiellement faux.

Concept de base

Le concept de Deepfakes est très simple. Disons que nous voulons transférer le visage d’une personne A vers une vidéo de la personne B.

Premièrement, nous recueillons des centaines ou des milliers d’images pour les deux personnes. Nous construisons un encodeur pour encoder toutes ces images en utilisant un réseau CNN à apprentissage approfondi. Ensuite, nous utilisons un décodeur pour reconstruire l'image. Cet autoencodeur (l'encodeur et le décodeur) a plus d'un million de paramètres mais n'est même pas assez proche pour mémoriser toutes les images. Le codeur doit donc extraire les fonctionnalités les plus importantes pour recréer l'entrée d'origine. Pensez-y comme un sketch criminel. Les caractéristiques sont les descriptions d'un témoin (encodeur) et un dessinateur composite (décodeur) les utilise pour reconstruire une image du suspect.

Pour décoder les caractéristiques, nous utilisons des décodeurs distincts pour la personne A et la personne B. Nous formons maintenant le codeur et les décodeurs (en utilisant la rétropropagation) de sorte que l'entrée corresponde étroitement à la sortie. Ce processus prend du temps. Avec une carte graphique GPU, il faut environ 3 jours pour générer des résultats décents. (après avoir répété le traitement des images environ 10 millions de fois)

Après la formation, nous traitons la vidéo image par image pour échanger un visage avec un autre. À l'aide de la détection de visage, nous extrayons le visage de la personne A et l'introduisons dans l'encodeur. Cependant, au lieu d'alimenter son décodeur d'origine, nous utilisons le décodeur de la personne B pour reconstruire l'image. c'est-à-dire que nous dessinons la personne B avec les caractéristiques de A dans la vidéo d'origine. Ensuite, nous fusionnons le nouveau visage créé dans l'image d'origine.

Intuitivement, le codeur détecte l’angle du visage, le ton de la peau, l’expression du visage, l’éclairage et d’autres informations importantes pour la reconstruction de la personne A. Lorsque nous utilisons le deuxième codeur pour reconstruire l’image, nous dessinons la personne B mais avec le contexte de A Dans l'image ci-dessous, l'image reconstruite présente des caractères faciaux de Trump tout en conservant l'expression faciale de la vidéo cible.

Source: Derpfakes et Wikipédia

Image

Avant la formation, nous devons préparer des milliers d'images pour les deux personnes. Nous pouvons prendre un raccourci et utiliser la bibliothèque de détection de visage pour extraire les images de leurs vidéos. Passez beaucoup de temps à améliorer la qualité de vos photos faciales. Cela influe considérablement sur votre résultat final.

  • Supprimez tous les cadres contenant plus d'une personne.
  • Assurez-vous d'avoir une abondance de séquences vidéo. Extraire les images faciales contient différentes postures, angles et expressions faciales.
  • Supprimez toutes les images de mauvaise qualité, teintées, petites, mal éclairées ou occluses.
  • Certains ressemblant aux deux personnes peuvent aider, comme une forme de visage similaire.

Nous ne voulons pas que notre autoencoder se souvienne simplement de l’entrée d’entraînement et reproduise directement le résultat. Rappelez-vous que toutes les possibilités ne sont pas réalisables. Nous introduisons le débruitage pour introduire les variantes de données et former l'auto-codeur à apprendre de manière intelligente. Le terme débruitage peut être trompeur. Le concept principal est de déformer certaines informations, mais nous nous attendons à ce que l’auto-encodeur ignore intelligemment cette anomalie mineure et recrée l’original. c’est-à-dire rappelons ce qui est important et ignorons les variantes non nécessaires. En répétant la formation plusieurs fois, le bruit d’information s’annulera et finira par être oublié. Ce qui reste, ce sont les modèles réels qui nous intéressent.

Dans notre image faciale, nous sélectionnons 5 × 5 points de la grille et les éloignons légèrement de leur position initiale. Nous utilisons un algorithme simple pour déformer l'image en fonction de ces points de grille décalés. Même l'image déformée peut ne pas sembler exacte, mais c'est le bruit que nous voulons introduire. Ensuite, nous utilisons un algorithme plus complexe pour construire une image cible en utilisant les points de grille décalés. Nous voulons que nos images créées soient aussi proches que les images cibles.

Un exemple de point de grille 2 × 2.

Cela semble étrange, mais cela oblige l’auto-encodeur à apprendre les fonctionnalités les plus importantes.

Pour mieux gérer les différentes positions, angles du visage et emplacements, nous appliquons également l’augmentation d’image pour enrichir les données d’entraînement. Pendant l'entraînement, nous pivotons, zoomons, traduisons et retournons notre image faciale de manière aléatoire dans une plage spécifique.

Modèle de réseau profond

Prenons une courte pause pour illustrer l’apparence de l’auto-codeur. (Quelques connaissances de base de CNN sont nécessaires ici.) Le codeur est composé de 5 couches de convolution permettant d'extraire les entités suivies de 2 couches denses. Ensuite, il utilise un calque de convolution pour suréchantillonner l'image. Le décodeur poursuit l'échantillonnage avec 4 couches de convolution supplémentaires jusqu'à reconstitution de l'image 64 × 64.

Pour suréchantillonner la dimension spatiale, par exemple de 16 × 16 à 32 × 32, nous utilisons un filtre de convolution (filtre 3 × 3 × 256 × 512) pour mapper la couche (16, 16, 256) en (16, 16, 512). . Ensuite, nous le remodelons à (32, 32, 128).

Problèmes

Ne soyez pas trop excité. Si vous utilisez une mauvaise implémentation, une mauvaise configuration ou si votre modèle n'est pas correctement formé, vous obtiendrez le résultat de la vidéo suivante. (Découvrez les premières secondes. J'ai déjà marqué la vidéo vers 3:37.)

La zone du visage est scintillante, floue avec une couleur qui saigne. Et il y a des cases évidentes autour du visage. On dirait que des gens collent des images sur son visage par force brute. Ces problèmes sont faciles à comprendre si nous expliquons comment échanger manuellement le visage.

Nous commençons avec deux images (1 et 2) pour 2 femmes. Dans l'image 4, nous essayons de coller le visage 1 sur 2. Nous nous rendons compte que leur visage est très différent et que la découpe du visage (le rectangle rouge) est beaucoup trop grande. On dirait que quelqu'un lui a mis un masque de papier. Essayons maintenant de coller la face 2 sur 1 à la place. Dans l'image 3, nous utilisons une découpe plus petite. Nous créons un masque qui supprime certaines zones d'angle afin que la découpe puisse mieux se fondre. Ce n'est pas bien, mais c'est certainement mieux que 4. Mais il y a un changement soudain du ton de la peau autour de la zone limite. Dans l'image 5, nous réduisons l'opacité du masque autour de la limite afin que le visage créé puisse mieux se fondre. Mais la tonalité de couleur et la luminosité de la découpe ne correspondent toujours pas à la cible. Donc, dans l'image 6, nous ajustons la tonalité de couleur et la luminosité de la découpe à la cible. Ce n'est pas encore assez bon mais pas mal pour notre petit effort.

Dans Deepfakes, il crée un masque sur le visage créé afin qu'il puisse se fondre dans la vidéo cible. Pour éliminer davantage les artefacts, nous pouvons

  • appliquer un filtre gaussien pour diffuser davantage la zone limite du masque,
  • configurer l'application pour développer ou réduire davantage le masque, ou
  • contrôler la forme du masque.

Si vous regardez de plus près une fausse vidéo, vous remarquerez peut-être un double menton ou des bords fantômes autour du visage. C’est l’effet secondaire de la fusion de 2 images à l’aide d’un masque. Même le masque améliore la qualité, il y a un prix à payer. En particulier, la plupart des fausses vidéos que je vois, le visage est un peu enfoui par rapport aux autres parties de l'image. Pour contrebalancer cela, nous pouvons configurer Deepfakes pour appliquer un filtre de netteté à la face créée avant le fondu. Il s'agit d'un processus d'essai et d'erreur visant à trouver le bon équilibre entre artefacts et netteté. Évidemment, la plupart du temps, nous avons besoin de créer des images légèrement floues pour éliminer les artefacts visibles.

Même l'auto-codeur devrait créer des visages correspondant à la nuance de couleur cible. Parfois, il a besoin d'aide. Deepfakes propose un post-traitement pour ajuster la teinte de couleur, le contraste et la luminosité du visage créé en fonction de la vidéo cible. Nous pouvons également appliquer le clonage transparent cv2 pour fusionner l’image créée avec l’image cible à l’aide du réglage automatique de la tonalité. Cependant, certains de ces efforts peuvent être contre-productifs. Nous pouvons faire en sorte qu'un cadre particulier ait fière allure. Mais si nous en faisons trop, cela peut nuire à la régularité temporelle des images. En effet, le clone sans couture dans Deepfakes est une cause majeure possible de chute. Ainsi, les gens se tournent souvent de manière transparente pour voir si le glissement peut être réduit.

L'auto-codeur ne parvient pas à créer les visages appropriés. Pour cela, nous devons ajouter plus d’images diversifiées afin de mieux former le modèle ou d’accroître l’augmentation des données. Éventuellement, nous devrons peut-être former le modèle plus longtemps. Dans les cas où nous ne pouvons pas créer le bon visage pour certaines images vidéo, nous ignorons les images problématiques et utilisons une interpolation pour recréer les images supprimées.

Repères

Nous pouvons également déformer notre visage créé en fonction des points de repère du visage dans le cadre cible d'origine.

C’est ainsi que Rogue One associe la jeune princesse Leia à une autre actrice.

La source

Meilleur masque

Dans notre effort précédent, notre masque est préconfiguré. Nous pouvons faire beaucoup mieux si notre masque est associé à l'image d'entrée et au visage créé.

Introduisons les réseaux génératifs d’adversaires (GAN).

GAN

Dans le GAN, nous introduisons un discriminateur de réseau profond (un classifieur CNN) pour distinguer si les images faciales sont originales ou créées par l’ordinateur. Lorsque nous transmettons des images réelles à ce discriminateur, nous formons le discriminateur lui-même à mieux reconnaître les images réelles. Lorsque nous introduisons des images créées dans le discriminateur, nous l’utilisons pour entraîner notre auto-codeur à créer des images plus réalistes. Nous transformons cela en une race dans laquelle les images créées ne se distinguent finalement pas des vraies.

De plus, notre décodeur génère des images ainsi que des masques. Étant donné que ces masques sont appris à partir des données d'apprentissage, cela permet de mieux masquer l'image et de créer une transition plus douce vers l'image cible. En outre, il gère mieux le visage partiellement obstrué. Dans de fausses vidéos, lorsque le visage est partiellement bloqué par une main, la vidéo peut défiler ou devenir enterrée. Avec un meilleur masque, nous pouvons masquer la zone obstruée dans la face créée et utiliser à la place la partie dans l'image cible.

Même si le GAN est puissant, il faut beaucoup de temps pour s’entraîner et faire appel à un niveau d’expertise élevé pour réussir. Par conséquent, il n'est pas aussi populaire qu'il devrait l'être.

Fonction de perte

Outre le coût de reconstruction, le GAN ajoute des coûts de générateur et de discriminateur pour former le modèle. En effet, nous pouvons ajouter des fonctions supplémentaires de perte pour perfectionner notre modèle. Le coût des bords, qui est commun, permet de déterminer si l’image cible et l’image créée ont le même bord au même endroit. Certaines personnes s'intéressent également à la perte de perception. Le coût de reconstruction mesure la différence en pixels entre l'image cible et l'image créée. Cependant, cela peut ne pas être une bonne mesure pour mesurer la façon dont notre cerveau perçoit les objets. Par conséquent, certaines personnes peuvent utiliser la perte de perception pour remplacer la perte de reconstruction initiale. C'est assez avancé, je laisserai donc ces passionnés lire le papier dans la section référence. Vous pouvez analyser plus en profondeur les mauvaises performances de vos fausses vidéos et introduire une nouvelle fonction de coût pour résoudre le problème.

Manifestation

Laissez-moi choisir quelques-unes des bonnes vidéos Deepfakes et voir si vous pouvez les détecter maintenant. Jouez au ralenti et accordez une attention particulière à:

  • Est-ce qu'il est trop flou en comparant avec d'autres zones non faciales de la vidéo?
  • Est-ce que ça passe?
  • Y a-t-il un changement de ton de peau près du bord du visage?
  • At-il le double menton, les doubles sourcils, les doubles arêtes du visage?
  • Lorsque le visage est partiellement bloqué par les mains ou d’autres objets, est-ce que cela s’efface ou devient flou?

Pour créer de fausses vidéos, nous appliquons différentes fonctions de perte afin de rendre les vidéos plus visuelles et agréables. Comme le montrent les fausses images de Trump, les traits de son visage ressemblent beaucoup à ceux du vrai, mais cela change si vous regardez de plus près. Par conséquent, à mon avis, si nous introduisons la vidéo cible dans un classifieur pour identification, il y a de fortes chances que cela échoue. De plus, nous pouvons écrire des programmes pour vérifier le lissage temporel. Étant donné que nous créons des visages indépendamment sur plusieurs images, nous nous attendons à ce que la transition soit moins fluide que sur une vidéo réelle.

Synchronisation labiale audio

La vidéo réalisée par Jordan Peele est l’une des plus difficiles à identifier comme des faux. Mais une fois que vous regardez de plus près, la lèvre inférieure d'Obama est plus floue par rapport aux autres parties du visage. Par conséquent, au lieu d’échanger le visage, je soupçonne qu’il s’agit d’une véritable vidéo Obama, mais la bouche est fabriquée de façon à synchroniser les lèvres avec un faux son.

Pour le reste de cette section, nous discuterons de la technologie de synchronisation labiale mise au point à l’Université de Washington (UW). Vous trouverez ci-dessous le déroulement du travail sur le papier de synchronisation labiale. Il remplace l'audio d'une adresse présidentielle hebdomadaire par un autre audio (audio d'entrée). Au cours du processus, nous synthétisons à nouveau la bouche et le menton afin que son mouvement soit synchronisé avec le faux son.

La source

Tout d'abord, en utilisant un réseau LSTM, l'audio x est transformé en une séquence de 18 points de repère y dans la lèvre. Ce LSTM génère une forme de bouche clairsemée pour chaque image vidéo de sortie.

Modifié à partir de la source

Compte tenu de la forme de la bouche y, il synthétise la texture de la bouche pour la bouche et le menton. Ces textures de bouche sont ensuite composées avec la vidéo cible pour recréer l'image cible:

La source

Alors, comment crée-t-on la texture de la bouche? Nous voulons que cela ait l'air réel mais aussi que nous ayons une finesse temporelle. Ainsi, l’application examine les vidéos cibles pour rechercher des images de candidats ayant la même forme de bouche calculée que celle souhaitée. Ensuite, nous fusionnons les candidats en utilisant une fonction médiane. Comme indiqué ci-dessous, si nous utilisons davantage de cadres candidats pour effectuer la moyenne, l’image devient floue tandis que la régularité temporelle s’améliore (aucun feuilletage). D'autre part, l'image peut être moins enterrée mais nous pouvons voir défiler lorsque nous passons d'une image à l'autre.

La source

Pour compenser le flou, on améliore et on affûte les dents. Mais évidemment, la netteté ne peut pas être complètement restaurée pour la lèvre inférieure.

La source

Enfin, nous devons reconfigurer le cadre afin de savoir où insérer la fausse texture de la bouche. Cela nous aide à nous synchroniser avec le mouvement de la tête. En particulier, la tête d’Obama cesse habituellement de bouger lorsqu’il met son discours en pause.

La rangée supérieure en bas représente les images vidéo d'origine de l'audio d'entrée que nous avons utilisé. Nous insérons cette entrée audio dans notre vidéo cible (la deuxième ligne). Lorsque vous le comparez côte à côte, nous réalisons que le mouvement de la bouche de la vidéo originale est très proche du mouvement de la bouche fabriqué.

La source

UW utilise des cadres existants pour créer la texture de la bouche. Au lieu de cela, nous pouvons utiliser le concept Deepfakes pour générer la texture de la bouche directement à partir de l’auto-encodeur. Nous devons collecter des milliers d'images et utiliser le LSTM pour extraire les fonctionnalités de la vidéo et de l'audio. Ensuite, nous pouvons former un décodeur pour générer la texture de la bouche.

Plus de pensées

Il est particulièrement intéressant de voir comment nous appliquons les concepts d'intelligence artificielle pour créer de nouvelles idées et de nouveaux produits, mais pas sans avertissement! Les impacts sociaux peuvent être énormes. En fait, ne publiez pas de fausses vidéos pour le plaisir! Cela peut vous causer des ennuis juridiques et nuire à votre réputation en ligne. J'examine ce sujet en raison de mon intérêt pour le méta-apprentissage et la détection des adversaires. Mieux vaut utiliser votre énergie pour des choses plus innovantes. Par contre, la fausse vidéo restera et sera améliorée. Ce n'est pas mon but de faire de meilleures fausses vidéos. À travers ce processus, j’espère que nous saurons mieux appliquer le GAN pour reconstruire l’image. Peut-être qu'un jour, cela pourrait éventuellement aider à détecter les tumeurs.

Autre précaution, veillez à ce que les applications que vous téléchargez téléchargent des vidéos Deepfakes. Selon certaines informations, certaines applications détournent des ordinateurs pour exploiter la crypto-monnaie. Fais attention.

Liste d'autres articles

Référence

Synthétiser Obama: apprendre la synchronisation labiale à partir de l'audio

Clonage sans couture

Perte de perception

Crédits

Crédits photo (foulard, femme)