DeepFakes

Le tecniche che analizzeremo sono quattro, due approcci che utilizzano il deep learning (3.1 DeepFakes e 3.2 NeuralTextures) e due basati su computer grafica (3.3 Face2Face e 3.4 FaceSwap), per quanto riguarda il risultato delle quattro tecniche inoltre, DeepFakes e FaceSwap scambiano il volto delle persone mentre il NeuralTextures e Face2Face lasciano inalterata l’identità delle persone ma ne modificano l’espressione e con ulteriore elaborazione anche il parlato.

Tutti e quattro i metodi richiedono come input coppie video di attori di origine e di destinazione. Per analizzare i primi due abbiamo spiegato il concetto di codifica automatica e come le reti neurali possono utilizzarlo per comprimere e decomprimere le immagini. Come fonte per il nostro lavoro abbiamo scelto vari e autorevoli progetti, cercando di assemblare e analizzare in modo tale da dare una visione di insieme del fenomeno e lo stato dell’arte della ricerca. 

Deep Fake composition image

3.1 DeepFakes

Il termine Deepfakes, come abbiamo visto, è diventato ampiamente un sinonimo di sostituzione del viso basata sul deep learning, ma è anche il nome di un metodo di manipolazione specifico che si è diffuso tramite forum online.

Sono disponibili varie applicazioni di DeepFakes, in particolare le più note per la manipolazione delle immagini fisse sono FakeApp e Facewap , rintracciabili in rete e su Github.

La tecnica deepfakes consente di sostituire il volto di una persona in una sequenza target con un’altra che è stata osservata in un video sorgente o in una raccolta di immagini (dataset). Il metodo si basa su due autoencoder, di cui uno condiviso che è addestrato a ricostruire le immagini della sorgente sul viso target. Un rivelatore di viso viene utilizzato per ritagliare e allineare le immagini. Per creare un’immagine fake, il codificatore e il decodificatore della faccia sorgente vengono applicati alla faccia obiettivo. L’uscita dell’autocodificatore viene quindi inserita nel resto dell’immagine usando Poisson editing[1].

 

[1] È un tipo di elaborazione di immagini digitali che opera sulle differenze tra i pixel vicini, anziché direttamente sui valori dei pixel. Matematicamente, un gradiente di immagine rappresenta la derivata di un’immagine, quindi l’obiettivo dell’elaborazione del dominio del gradiente è costruire una nuova immagine integrando il gradiente, che richiede la risoluzione dell’equazione di Poisson.

In questo schema (vedi sopra), vediamo come in pratica il volto originale viene inviato a un codificatore. Il risultato è una rappresentazione dimensionale di qualità inferiore di quella stessa faccia, che a volte viene definita vettore di base o faccia latente. Quando viene passata attraverso un decodificatore, la faccia latente viene quindi ricostruita. Gli autoencoder, come detto, sono in perdita (di qualità), quindi è improbabile che il volto ricostruito abbia lo stesso livello di dettaglio che aveva originariamente. Per quanto durante la fase di addestramento abbiamo visto che più la rete viene allenata con un vasto dataset, più dettagliata riuscirà ad essere la ricostruzione del viso e di tutte le quelle parti di viso “ignote” (denti e interno della bocca).

Il programmatore ha il pieno controllo sulla forma della rete neurale utilizzata (quanti strati, quanti nodi per strato e come sono collegati tra loro). Allenare una rete neurale significa ottimizzare i suoi pesi per raggiungere un obiettivo specifico. Nel caso di un codificatore automatico tradizionale, le prestazioni di una rete si misurano su come ricostruisce l’immagine originale dalla sua rappresentazione nello spazio latente.

Il Training

È importante notare che se addestriamo due autoencoder separatamente, questi saranno incompatibili tra loro. I volti latenti si basano su caratteristiche specifiche che ogni rete ha ritenuto significative durante il suo processo di formazione. Infatti, se due codificatori automatici vengono addestrati separatamente su facce diverse, i loro spazi latenti rappresenteranno caratteristiche diverse.

Ciò che rende possibile la tecnologia di scambio di facce è trovare un modo per forzare la codifica di entrambe le facce latenti sulle stesse caratteristiche. Deepfakes ha risolto questo problema avendo entrambe le reti che condividevano lo stesso codificatore, ma utilizzando due diversi decodificatori.

Durante la fase di addestramento, queste due reti vengono trattate separatamente. Il decodificatore A è addestrato solo con le facce di A; il decodificatore B è addestrato solo con facce di B. Tuttavia, tutte le facce latenti sono prodotte dallo stesso Encoder. Ciò significa che lo stesso codificatore deve identificare caratteristiche comuni in entrambe le facce.

Generazione di Deepfakes

Quando il processo di addestramento è completo, possiamo passare una faccia latente generata dal Soggetto A al Decodificatore B – vedi schema – il Decodificatore B proverà a ricostruire il Soggetto B, dalle informazioni relative al Soggetto A.

Se la rete ha generalizzato abbastanza bene ciò che crea un volto, lo spazio latente rappresenterà le espressioni e gli orientamenti del viso. Ciò significa generare una faccia per il soggetto B con la stessa espressione e orientamento del soggetto A. Per rendere ancora più chiaro il funzionamento riportiamo qui sotto due differenti test, uno per la trasmissione dell’espressione del viso da un soggetto ad un altro e un altro che oltre all’espressione sostituisce anche il volto.