Come creare un deepfake: tutorial introduttivo per chi non lo ha mai fatto

Fino a qualche anno fa, il fotoritocco era un’arte nel quale si cimentavano solo gli esperti del settore, e che spesso comportava ore e ore di controlli manuali per curare ogni particolare e realizzare un falso più autentico possibile.

Oggi, più precisamente da qualche anno a questa parte, i progressi nel machine learning hanno consentito di fare grandi passi in avanti, e modificare una foto è diventato quasi un processo automatico. Ad esempio: l’estrazione del profilo di una persona da una foto, cioè rimuoverne lo sfondo, viene affidata ad algoritmi di ML, spesso anche online, come removebg.com. Inoltre, grazie a determinate reti neurali come le GAN, è possibile compiere operazioni di face-swapping (cioè mettere la faccia di una persona nel corpo di un’altra) in una maniera che risulta quasi indistinguibile agli occhi di un osservatore: i prodotti di queste operazioni si chiamano deepfakes e nell’ultimo anno sono diventati estremamente popolari.

Quale dei due è quello vero?

Per realizzarli non servono grandi competenze: può farli chiunque, scaricando un semplice tool da usare nel proprio computer. Va detto però, che richiedono tempo (alcuni giorni per la realizzazione di un video) e per far funzionare il programma serve una scheda grafica (GPU) da almeno 2GB di vRAM. In realtà,io personalmente ho usato una GPU da 2GB con il mio laptop e dopo alcuni minuti il programma è sempre andato in crash, pertanto sarebbe consigliabile dotarsi di una GPU da 4 o 8 GB o superiore. (Ad esempio GTX 1050, GTX 1070 Ti, GTX 1080 Ti).

Maggiore è la vRAM della vostra scheda grafica, migliore sarà il risultato e minore il tempo impiegato per creare il video. Nella media, servono 72 ore per creare un deepfake con una GPU da 8 GB. Volendo si può usare anche la propria CPU, cioè il processore del proprio computer, ma ci vorrebbero settimane di attesa per la creazione del video.

Questi i requisiti minimi consigliati per la creazione di deepfake:
–  Scheda grafica con almeno 2GB di vRAM
– processore i3 o AMD 9
– 8 GB di RAM
– 20 GB di spazio libero nel proprio PC

Chi ha una scheda grafica NVIDIA si ricordi di scaricare ed installare il toolkit CUDA prima di iniziare a creare il proprio deepfake. Link al download: https://developer.nvidia.com/cuda-downloads

Il primo passo è quello di scaricarsi i tool: i più usati sono FakeApp, OpenFaceLab e OpenFaceSwap. OpenFaceLab viene solitamente preferito agli altri due per la facilità d’uso, oltre per il fatto che permette di creare deepfakes anche con schede grafiche diverse dalle NVIDIA.

Per scaricarlo cliccate questo link:

https://mega.nz/#F!b9MzCK4B!zEAG9txu7uaRUjXz9PtBqg

Vi troverete davanti a una schermata del genere:

A questo punto, se avete una scheda grafica NVIDIA potete scaricare uno dei files .exe che cominciano per “DeepFaceLabCUDA”. Se invece avete una AMD o altro tipo, scaricate uno dei files che cominciano per “DeepFaceLabOpenCL”.

La terminazione “build_(mese)_(mese)_(anno)” corrisponde alla data di rilascio di quella versione. Scaricate quindi il file .exe con la data più recente. Una volta scaricato, cliccateci sopra ed installatelo.

L’installazione provvederà a creare una cartella nel vostro computer, chiamata “DeepFaceLab”.

Questo il contenuto all’interno della cartella:

Ci sono due cartelle, e un gran numero di file eseguibili. A noi interessa solamente la cartella “workspace” e alcuni di questi file eseguibili.

Andiamo quindi dentro la cartella workspace:

Ci sono due file video all’interno: “data_dst” e “data_src”. Essi sono i video sorgente e il video destinazione per la creazione dei deepfake. Il “video_src” è quello dove c’è la faccia che volete translare” mentre “video_dst” è il video in cui volete inserire la faccia.

Se ad esempio volete fare un deepfake dove Di Maio parla nel corpo di Salvini, “video_src” dovrà contenere un video di Di Maio, mente “video_dst” dovrà contenerne uno di Salvini.

Potete quindi cancellare i “data_dst” e “data_src” che trovate nella cartella e rimpiazzarli con i vostri nuovi “data_dst” e “data_src” da impiegare per la creazione del deepfake.

Il prossimo passo è ritornare nella cartella “DeepFaceLab” e cliccare sul file eseguibile “extract images from video data src“. Questo file estrarrà tutti i fotogrammi del video sorgente.

Il file eseguibile si presenterà a voi in questo modo. Vi chiede in quale formato volete salvare le immagini: cliccate invio e il programma inizierà ad estrarre le immagini.

– Se all’inizio non compare nessuna scritta, basta aspettare qualche secondo.-

Una volta compiuta questa operazione, noterete che tutti i fotogrammi estratti sono raccolti nella cartella “data_src” contenuta in “workspace”.

Come secondo passo, fate partire il file eseguibile “data_src extract faces MT best GPU“: questo programma estrarrà i volti dai fotogrammi raccolti nell’operazione precedente.

Tali volti saranno salvati nella sottocartella “aligned” della cartella “data_src” contenuta in workspace.

Successivamente, eseguire i file  data_src sort by similar histogram e data_src check result.

A questo punto recatevi nella cartella aligned, contenente tutti i volti estratti, e cancellate quelli che non rappresentano la faccia interamente, o sono stati estratti male.

Fatto questo, abbiamo raccolto un dataset con tutti i volti della faccia da translare.

Facciamo quindi lo stesso per il video di destinazione. Cliccare quindi sul file eseguibile “extract PNG from video data_dst FULL FPS“: saranno estratti, come nel caso precedente, tutti i fotogrammi del video.

Successivamente, il file data_dst extract faces MT (or DLIB) best GPU permetterà a sua volta di estrarre i volti dai fotogrammi precedentemente ricavati.

Infine, clicchiamo su data_dst sort by similar histogram data_dst check results. Quest’ultimo aprirà un programma, chiamato XNViewMP, che mostrerà tutti i volti estratti con tanto di landmark facciali. Controllateli ed eliminate quelli che non sono ben allineati con i tratti visivi.

In questo caso si può notare che il volto non è stato estratto correttamente.

Una volta controllati i volti estratti dai video sorgente e destinazione, la preparazione dei nostri dataset sarà terminata.

Potremo quindi iniziare ad allenare il nostro programma e creare deepfake. Questa operazione viene detta training, che per l’appunto vuol dire allenare in lingua inglese.

Troverete vari file eseguibili per fare questo: DF, H64, H128, LIAEF128, SAE

H64 e SAE funzionano con schede grafiche da 2GB di vRAM o superiore.

H128: 3GB di vRAM o superiore.

DF e LIAEF128: 5GB di vRAM o superiore

Noi usiamo il più semplice tra tutti, l’H64, impiegato, oltre che in DeepFaceLab, anche in FakeApp.

Clicchiamo quindi su “train H64“.

Vi verrà chiesto quale scheda grafica usare. Se cliccate invio il programma sceglierà automaticamente quella dalle migliori prestazioni.

Successivamente, vi verrà chiesto di scegliere tra alcune preferenze. Potete tranquillamente cliccare invio a ogni passo (in questo modo verrà impostato il valore predefinito).

Una volta iniziato il training, potrete notare la comparsa di una finestra dove verranno mostrate le anteprime dei progressi fatti nella creazione del vostro deepfake, oltre che al numero di interazioni compiute. Maggiore sarà il numero di interazioni, migliore è il risultato che otterrete.

Solitamente, i primi cambiamenti delle anteprime si iniziano a vedere dopo le prime centomila interazioni. Sono però necessari alcuni giorni prima che il training giunga a una autenticità tale e il video possa essere creato, tramite i file eseguibili di conversione nella cartella di DeepFaceLab.