IA Riconoscimento facciale: una guida introduttiva
Rilevamento di volti con classificatore Haar Cascade
Vi siete mai chiesti come Facebook tagga automaticamente le immagini con i volti dei vostri amici? O come le fotocamere high-tech trovano e si focalizzano automaticamente sul volto di una determinata persona? Applicazioni come queste dipendono fortemente dal compito di apprendimento automatico noto come face detection, il quale compito è di trovare automaticamente i volti nelle immagini contenenti persone.
Di base il riconoscimento del volto è un problema di classificazione, cioè, un problema di distinzione tra classi diverse, nel caso del riconoscimento del volto, queste classi sono distinte in: 1) immagini di volti umani e 2) tutto il resto.
Da notare che Il classificatore Haar Cascade può anche essere utilizzato per rilevare altri dettagli come ad esempio gli occhi, la bocca, il naso.
OpenCV è una libreria open source per Python e C ++ con supporto per la manipolazione di immagini e algoritmi di machine learning.
Suggeriamo di usare l'implementazione OpenCV del classificatore Haar cascade per rilevare i volti umani nelle immagini, OpenCV fornisce molti rilevatori di volti già preparati, archiviati come file XML su GitHub in modo che sia possibile scegliere quello preferito in base ai vincoli del caso ed eventuali limiti di hardware.
Attenzione, l’impostazione predefinita di OpenCV presuppone che l'ordinamento dei canali di colore dell'immagine sia Blu, poi Verde, poi Rosso (BGR) e non il classico RGB a cui siamo abituati.
Questa tecnica utilizza modelli basati sull’informazioni dell’intensità di un'immagine per rilevare in modo ormai affidabile i volti anche in condizioni di luce variabile. Quindi, per utilizzare al meglio questo classificatore è meglio convertire prima l'immagine da colori a scala di grigi.
Si noti che anche se l'immagine è in bianco e nero, i dati potrebbero avere informazioni sul colore, quindi sarà necessario convertirle comunque in formato scala di grigi per eseguire il rilevamento dei volti in modo più accurato.
Crea un rilevatore di Keypoint del viso
I punti chiave del viso (chiamati Keypoint) contrassegnano le aree importanti del viso: gli occhi, gli angoli della bocca, il naso, ecc.
I keypoints facciali possono essere utilizzati in una varietà di applicazioni, dal riconoscimento facciale ed emotivo fino alla creazione di applicazioni commerciali come Apple Face ID o i filtri di immagine resi noti da Snapchat.
come potreste creare un rilevatore di punti chiave del viso? Ad alto livello, si noti che il rilevamento dei keypoint facciali fa parte della famiglia dei problemi di regressione. Ad esempio, una singola faccia potrebbe corrispondere a un insieme di 15 keypoint facciali (un insieme di 15 corrispondenti coordinate (x, y) (x, y) cioè un risultato di output).
Poiché i nostri dati di input sono immagini, possiamo utilizzare una rete neurale convoluzionale (CNN) per riconoscere dei pattern nelle immagini e imparare autonomamente come identificare questi dati numerici contrassegnati dai keypoint.
Conclusioni
I keypoints facciali sono il punto di partenza per la creazione di un algoritmo per la codifica facciale, in grado di creare una rappresentazione delle caratteristiche uniche di un volto, e che una volta codificato può essere utilizzato con altre tecniche di machien learning per identificare corrispondenze con immagini campione, ad esempio, la soluzione più semplice utilizza le distanze euclidee tra le codifiche delle immagini confrontandole con una tolleranza stabilita arbitrariamente per considerare valido o meno un match.