--- title: "DLIM: Deepfake" date: 2021-11-29 14:00 categories: [Image S9, TVID] tags: [Image, S9, TVID] math: true --- Lien de la [note Hackmd](https://hackmd.io/@lemasymasa/Bkh1-8MYF) # Deepfake Les GAN permettent de creer de faux surprenat avec des reseaux profonds (d'ou *Deepfakes*) - Creation de visage (StyleGAN) ![](https://i.imgur.com/IbMcGmR.png) - Fausse video comme celle de [Poutine soulignant la faiblesse des democraties](https://youtu.be/sbFHhpYU15w) ## Autoencoders :::info Avant les GAN il y a eu les autoencodeurs qui ne demandent pas de verite terrain ::: ![](https://i.imgur.com/IPpGxM8.png) Les resultats sont moyens ![](https://i.imgur.com/USNs8FD.png) ## U-net :::info U-net est une sorte d'autoencodeur avec une verite terrain et des ponts ::: ![](https://i.imgur.com/VLI4MzU.png) ## Autoencodeur variationel (VAE) On decoupe l'espace latent en sa moyenne et son ecart-type ![](https://i.imgur.com/NIX9qzr.png) Pour construire ce reseau on definit 2 fonctions d'erreur: - Distance image d'arrivee/image de depart (*cf* autoencodeur) - Divergence de Kullback-Leibler entre le vecteur de l'espace latent et une gaussienne type: $KL(N(\mu, \sigma), N(0,I))$ $$ E=\alpha E_{reconstruction} + \beta[\text{mean}^2 + \text{std_deriv}^2 - \log (\text{std_deriv}^2)-1] $$ ## VAE - generation :::info On peut créer de nouvelles images en gardant la moyenne et en modulant l’écart type $z=\mu+\varepsilon\sigma$ ::: Avec les chiffres manuscrits et un espace latent a 2 dimensions $[\mu, \sigma]$ on a: ![](https://i.imgur.com/Dsivdsn.png) [Exemple de Keras](https://keras.io/examples/generative/vae/) # Vector Quantised-Variational AutoEncoder (VQ-VAE) On fabrique une collection de valeurs de vecteurs latents (*embedding space*). Une valeur est un vecteur lorsque le vecteur latent est en 3D Si la sortie de l'encodeur est de $32\times 32\times 50$ alors la collection a des vecteurs de dimension $50$. On traduit la sortie de l'encodeur en prenant pour chaque valeur, la plus proche dans la collection ![](https://i.imgur.com/ZUF0W9Y.png) ## VQ-VAE Compression ![](https://i.imgur.com/BI494c2.png) Un facteur de compression de $42$: - L'image d'origine a $128\times128\times 3\times 8$ bits - L'image est encodee avec $32\times32\times9$ bits ($521$ valeurs possibles) - (il faut aussi stocker la collection de valeurs soit $512\times D$) On peut entrainer un classifieur sur les images $32\times 32\times 1$, ca marche ## VQ-VAE-2 - Multi-echelle ![](https://i.imgur.com/0FqjEWA.png) # GAN :::info Un Generative Adversarial Network (GAN) est un autoencodeur avec un **discriminateur** qui indique si le resultat est un vrai ou faux ![](https://i.imgur.com/w4PY46X.png) ::: L'erreur du discriminateur permet qu'il se corrige (minimise l'erreur) et que le generateur se corrige (maximise l'erreur du discriminateur) ## Conditional GAN :::info Le principe est d'enrichier un GAN en ajoutant des informations supplementaires (la classe de l'image par ex.) en entree du generateur et du discriminateur ![](https://i.imgur.com/TM8yxrE.png) ::: :::success On a ainsi des images plus realistes en sortie ::: ## Pix2Pix C'est un GAN conditionel ![](https://i.imgur.com/64eapce.png) Le generateur est un reseau en U et le discriminateur un classifieur CNN adapte. On peut ainsi generer des images a partir de dessins. # Cycle GAN *Peut-on faire de l'auto-apprentissage (sans verite terrain) avec un GAN ?* Si le but est de passer d'un type d'image a un autre, c'est possible. Pour cela on utilise 2 generateurs, $G$ et $F$, et 2 discriminateurs, $DX$ et $DY$ - $G$ fabrique une image de type $Y$ a partir d'une image de type $X$ - $F$ fabrique une image de type $X$ a partir d'une image de type $Y$ - $DX$ indique si l'image donnee est vraie ou a ete generee par $F$ - $DY$ indique si l'image donnee est vraie ou a ete generee par $G$ ![](https://i.imgur.com/kJdVWwj.png) ## Applications ![](https://i.imgur.com/0JsEQel.png) # StyleGAN ![](https://i.imgur.com/CnNihr6.png) ## Melange de style Avec 2 vecteurs de l'espace latent on peut melanger $2$ visage en injectant le 1er jusqu'a une couche dans la synthese, puis le second ![](https://i.imgur.com/DiVS1JF.png) Plus on injecte tard le 2e, moins l'impact est important (seulement les hautes frequences) ## Vers le visage moyen Lorsqu'on est dans l'espace $\mathcal W$ avec une valeur latente $w$ on peut interpler le visage moyen $\bar w$ $$ w=\bar w+\psi(w-\bar w) $$ ![](https://i.imgur.com/d5YVMmr.png)