Come viene utilizzato il machine learning nella produzione di video 'deepfake'?
Io stesso non lavoro specificamente sulla Computer Vision per i volti e la modellazione 3D, quindi potrei perdermi le questioni più sottili, ma i principi di base sono abbastanza semplici. Di solito è una pipeline piuttosto lunga che coinvolge un paio di cose,
Face Detection & Tracking: Il computer deve sapere dove si trova il volto e disegnare una scatola intorno ad esso, data un'immagine. Questo può essere fatto addestrando una rete di rilevamento degli oggetti (come Faster R-CNN) o usando metodi tradizionali come ViolaJones Face Detector [1, 2].
Rilevazione dei punti di riferimento del volto: Il passo successivo è quello di rilevare i punti di riferimento del volto dai volti rilevati (sia nell'immagine sorgente che in quella ricevente). I punti di riferimento del viso sono punti chiave che ci dicono dove si trovano importanti caratteristiche facciali come il naso, il mento ecc. Questi punti chiave possono essere estratti usando OpenCV/dlib ecc. Inoltre, possiamo concentrarci solo sul volto e segmentare lo sfondo, i capelli che non fanno parte del volto ecc. Questo si chiama segmentazione del viso e la maschera segmentata determina se un pixel deve essere trasformato o meno.
Allineamento del viso: Di solito impariamo un modello 3D del volto ricevente che verrà trasformato usando i punti di riferimento del volto e i pixel del volto di origine. Il modo tradizionale per fare questo è quello di adattare il modello 3D sul volto del destinatario e imparare una trasformazione che può essenzialmente cambiare ogni pixel nel volto destinatario per assomigliare al volto di origine utilizzando una combinazione di obiettivi (per esempio, la trasformazione deve garantire che i punti di riferimento si allineino il più possibile, l'illuminazione del volto deve rimanere costante, ecc.) Questo è di solito un processo computazionalmente intenso.
Recentemente questa trasformazione e questo allineamento sono stati appresi direttamente usando le CNN (un tipo di rete neurale). Lo fanno formulando il problema come un problema di trasferimento di stile (considerando la posa e l'espressione del viso del destinatario come il contenuto e l'identità della fonte come lo stile). Questo è simile al lavoro che rende le vostre immagini simili a un dipinto di "Van Gogh" (come con l'app Prisma). Non c'è nessuna modellazione 3D esplicita che sia coinvolta [3]. Questo metodo dovrebbe essere simile a quello che utilizza l'app DeepFakes. La rete neurale prende sia l'immagine di partenza che quella di arrivo come input e minimizza due obiettivi simultaneamente per imparare la trasformazione,
(a) Perdita di contenuto: Minimizzare la differenza nelle rappresentazioni neurali di entrambe le immagini ottenute ad ogni strato della rete. La rappresentazione neurale è essenzialmente l'output della rete neurale ottenuta ad un singolo strato.
(b) Perdita di stile: L'informazione locale deve essere preservata il più possibile durante la trasformazione del volto dalla fonte al destinatario. Per prima cosa estrarre piccole patch da entrambe le immagini. Per ogni patch estratta dalla fonte, troviamo la migliore patch corrispondente tra le patch estratte dal destinatario e minimizziamo la distanza tra di esse.
Ora, questo specifico documento vuole anche preservare l'illuminazione e aggiunge un altro termine di perdita chiamato perdita di luce per rendere le cose più belle. Altre cose che possono far sembrare migliore lo swapping è non trattare ogni fotogramma in modo indipendente e usare alcuni vincoli per rendere la trasformazione più liscia quando viene eseguita su tutti, l'attuale applicazione DeepFakes non sembra farlo (non sono sicuro).
Ci sono un sacco di persone che hanno perseguito questo stile di lavoro sulla modellazione dei volti per la Computer Vision. Ricordo in particolare Ira Kemelmacher-Shlizerman. Va notato che non sto approvando questo uso della tecnologia face-swap.
[1] The Inner Workings Of Snapchat's Faceswap Technology
[2] How Snapchat's filters work
[3] Fast Face-swap Using Convolutional Neural Networks, ICCV, 2017 (Le immagini sono prese in prestito da lì.)
Articoli simili
- Quanto petrolio viene utilizzato nella produzione di pannelli solari?
- Come ottenere un lavoro a Google come sviluppatore di machine learning/AI
- Come applicare il machine learning alla realtà virtuale/aumentata
- Quali sono le migliori domande di colloquio per valutare un ricercatore di machine learning?