Un uomo riesce a riconosce la stessa persona in due foto differenti con una precisione del 97,53%. Un nuovo algoritmo sviluppato dal Facebook Lab è capace di farlo con una precisione del 97,25% senza preoccuparsi di illuminazioni o inquadrature differenti. Questo algoritmo è stato chiamato DeepFace.

Poster dedicato a Facebook

Il team di sviluppo, capitanato da Yaniv Taigman e composto da Ming Yang, Marc’Aurelio Ranzato e Lior Wolf, hanno realizzato un sistema che si basa sulla creazione di un modello 3D del volto a partire da una semplice foto bidimensionale del volto.

È stato usato il più grande database di immagini per realizzarlo, composto da 4,4 milioni di immagini di 4.030 diverse persone. Ma non sarà messo subito in funzione sul Social Network. Infatti è per ora solo un progetto di ricerca e sarà presentato a giugno alla IEEE Conference on Computer Vision and Pattern Recognition di Columbus, in Ohio, dove sarà sottoposto a un duro riscontro da parti di grandi esperti del settore.
Anche se è ancora un progetto, DeepFace è già considerato una grande minaccia per la privacy per gli oltre 1,25 milioni di iscritti di Facebook. Si vedrà presto come la compagnia di Zuckerberg decide muoversi.

Diamo un’occhiata alla procedura

La procedura di riconoscimento del volto prevede i 4 passi fondamentali:

  1. Rilevamento: viene individuato il volto nella scena;
  2. Allineamento: la foto del volto viene portata in posizione frontale all’obiettivo;
  3. Rappresentazione: l’immagine del volto viene descritta attraverso determianti parametri.
  4. Classificazione: la descrizione della foto viene confrontata con altre descrizioni di volti per individuare a quale volto è simile.
Procedura dell'algoritmo DeepFace per il riconoscimento del volto
DeepFace – Allineamento

Il team del Facebook Lab fanno lavorato principalmente sulla fase di allineamento e rappresentazione. L’allineamento prevede che le seguenti fasi:

  1. Il volto viene individuato (face detection) e vengono anche individuati anche 6 punti iniziali (2 per gli occhi, 1 per il naso e 3 per la bocca). Questi punti permettono di identificare la scala e la rotazione della testa.
  2. Con i 6 punti si riesce ad ottenere una immagine 2D del solo volto in modo tale che esso sia centrato e normalizzato rispetto un modello standard.
  3. Sono individuati 67 punti sull’immagine del volto allineata e questi sono usati per effettuare la triangolazione di Delaunay, cioè presi tre punti questi sono collegati fra loro per identificare un triangolo e si esegue questa operazione finchè tutti i punti sono legati in questo modo.
  4. Dai 67 punti si ottiene il modello 3D del volto. Ogni triangolo 2D corrisponde ad una superficie 3D del modello. Poi è possibile ottenere da una superficie 3D con poligoni triangolari una curva 3D che modella in ogni minimo dettaglio il volto.
  5. Il modello 3D è ruotato affinché il volto sia in posizione frontale e si attua una procedura inversa che permette di ottenere l’immagine del volto come se guardasse verso l’obiettivo.

La rappresentazione di un volto allineato avviene grazie ad una rete neurale con nove livelli di profondità considerando 120 milioni di parametri di confronto usanti in fase di classificazione.

Riferimenti

Paper: https://www.facebook.com/publications/546316888800776/
News del MIT Technology Review: http://www.technologyreview.com/news/525586/facebook-creates-software-that-matches-faces-almost-as-well-as-you-do/