- Prerequisiti
- Come funziona il riconoscimento facciale con OpenCV
- Rilevamento dei volti utilizzando classificatori a cascata in OpenCV
Il riconoscimento facciale sta diventando sempre più popolare e la maggior parte di noi lo sta già utilizzando senza nemmeno rendersene conto. Che si tratti di un semplice suggerimento di tag di Facebook o di un filtro Snapchat o di una sorveglianza avanzata di sicurezza aeroportuale, Face Recognition ha già fatto la sua magia. La Cina ha iniziato a utilizzare Face Recognition nelle scuole per monitorare la frequenza e i comportamenti degli studenti. I negozi al dettaglio hanno iniziato a utilizzare il riconoscimento facciale per classificare i propri clienti e isolare le persone con precedenti di frode. Con molti più cambiamenti in corso, non c'è dubbio che questa tecnologia sarà vista ovunque nel prossimo futuro.
In questo tutorial impareremo come costruire il nostro sistema di riconoscimento facciale utilizzando la libreria OpenCV su Raspberry Pi. Il vantaggio di installare questo sistema su un Raspberry Pi portatile è che puoi installarlo ovunque per funzionare come sistema di sorveglianza. Come tutti i sistemi di riconoscimento facciale, il tutorial coinvolgerà due script python, uno è un programma Trainer che analizzerà una serie di foto di una determinata persona e creerà un set di dati (file YML). Il secondo programma è il programma Recognizerche rileva un volto e quindi utilizza questo file YML per riconoscere il volto e menzionare il nome della persona. Entrambi i programmi di cui parleremo qui sono per Raspberry Pi (Linux), ma funzioneranno anche su computer Windows con lievi modifiche. Abbiamo già una serie di tutorial per principianti per iniziare con OpenCV, puoi controllare tutti i tutorial OpenCV qui.
Prerequisiti
Come detto in precedenza, utilizzeremo la libreria OpenCV per rilevare e riconoscere i volti. Quindi assicurati di installare OpenCV Library su Pi prima di procedere con questo tutorial. Alimenta anche il tuo Pi con un adattatore 2A e collegalo a un monitor tramite cavo HDMI poiché non saremo in grado di ottenere l'uscita video tramite SSH.
Inoltre non ho intenzione di spiegare come funziona esattamente OpenCV, se sei interessato ad imparare l'elaborazione delle immagini, dai un'occhiata a queste basi di OpenCV e ai tutorial avanzati sull'elaborazione delle immagini. Puoi anche conoscere i contorni, il rilevamento dei blob ecc. In questo tutorial sulla segmentazione delle immagini.
Come funziona il riconoscimento facciale con OpenCV
Prima di iniziare, è importante capire che Face Detection e Face Recognition sono due cose diverse. In Face Detection viene rilevato solo il volto di una persona, il software non avrà idea di chi sia quella persona. In Face Recognition il software non solo rileverà il viso, ma riconoscerà anche la persona. Ora, dovrebbe essere chiaro che dobbiamo eseguire Face Detection prima di eseguire Face Recognition. Non sarebbe possibile per me spiegare come esattamente OpenCV rileva un viso o qualsiasi altro oggetto per quella materia. Quindi, se sei curioso di sapere che puoi seguire questo tutorial sul rilevamento di oggetti.
Un feed video da una webcam non è altro che una lunga sequenza di immagini fisse aggiornate una dopo l'altra. E ciascuna di queste immagini è solo una raccolta di pixel di valori diversi messi insieme nella rispettiva posizione. Quindi come può un programma rilevare un volto da questi pixel e riconoscere ulteriormente la persona in esso? Ci sono molti algoritmi dietro e cercare di spiegarli va oltre lo scopo di questo articolo, ma poiché stiamo usando la libreria OpenCV è molto semplice eseguire il riconoscimento facciale senza approfondire i concetti
Rilevamento dei volti utilizzando classificatori a cascata in OpenCV
Solo se siamo in grado di rilevare un volto saremo in grado di riconoscerlo o ricordarlo. Per rilevare un oggetto come il viso, OpenCV utilizza qualcosa chiamato Classificatori. Questi classificatori sono set di dati pre-addestrati (file XML) che possono essere utilizzati per rilevare un particolare oggetto nel nostro caso un volto. Puoi saperne di più sui classificatori di rilevamento dei volti qui. Oltre a rilevare il viso, i classificatori possono rilevare altri oggetti come naso, occhi, targa del veicolo, sorriso ecc. L'elenco dei classificatori di casi può essere scaricato dal file ZIP sottostante
Classificatori per il rilevamento di oggetti in Python
In alternativa, OpenCV consente anche di creare il proprio classificatore che può essere utilizzato per rilevare qualsiasi altro oggetto in un'immagine addestrando il classificatore a cascata. In questo tutorial useremo un classificatore chiamato "haarcascade_frontalface_default.xml" che rileverà il viso dalla posizione frontale. Vedremo