Il software sviluppato dai team di ricerca implementa le API di riconoscimento facciale, il cui sviluppo è stato realizzato mediante il linguaggio di programmazione Python, particolarmente adatto a compiti di Machine Learning, e in questo caso particolare di Deep Learning. Per questo modulo, è stato seguito l’approccio proposto in un articolo scientifico di Hoang et al.2 basato su tecniche di Deep Learning1. In particolare, il compito di riconoscere un volto richiede due fasi:

  • una fase di registrazione, in cui un’immagine del viso dell’utente, elaborata con il rilevatore facciale della libreria Dlib, viene convertita in 68 coordinate di punti di riferimento facciali e 128 valori che indicano le distanze caratteristiche tra di essi, venendo poi memorizzati sul database del software per essere utilizzati come riferimento;
  • una fase di riconoscimento, in cui il sistema attiva la procedura di riconoscimento facciale diverse volte di seguito. Ogni volta, trova le distanze caratteristiche del viso e le confronta con quelle memorizzate nel database. La soglia di tolleranza agli errori è fissata al 60%, e nel caso in cui venga superata, il riconoscimento del volto fallirà. Per rendere il sistema più rigoroso, è possibile ridurre la soglia, ma l’algoritmo diventerebbe computazionalmente più pesante.

Il sistema è anche in grado di rilevare il liveness.

Ci sono più fattori coinvolti in questo controllo e per lo sviluppo del software in questione il principale seguito è quello di trovare i 68 punti di riferimento del viso Dlib e sfruttarne ogni movimento per provare la liveness del viso dell’utente. In particolare, l’algoritmo salva ogni 3 secondi le coordinate x e y di tutti i punti di riferimento. Poiché il volto potrebbe muoversi e le sue dimensioni potrebbero cambiare, le coordinate sono normalizzate secondo la larghezza e l’altezza del volto. In questo modo, il sistema può confrontare l’output attuale con quello registrato 3 secondi prima, rilevare i movimenti e di conseguenza la liveness. Come mostra la figura sotto, ogni punto di riferimento (in verde) è confrontato con quello rispettivo di 3 secondi prima (in rosso)

Infine, un altro controllo aggiunto è quello del monitoraggio del battito delle ciglia. In particolare, l’algoritmo trova i punti di riferimento del viso e controlla se il rapporto tra l’altezza e la larghezza dell’occhio cambia.

Pertanto, l’algoritmo controlla se ci sono stati battiti di ciglia negli ultimi 3 secondi, e se ciò è avvenuto, viene rilevata la liveness