Riconoscimento facciale – Come taggare le immagini

RIconoscimento facciale

Aggiungiamo al nostro programma di riconoscimento facciale la capacità di riconoscere non solo lil tipo di oggetto (il volto), ma anche il relativo proprietario.

Nello scorso articolo abbiamo analizzato gli strumenti e i moduli necesssari per estrarre le informazioni necessarie al riconoscimento facciale con Python.

Oggi faremo un passo avanti, e impareremo ad usare i metodi per “riconoscere” non solo le forme all’interno delle immagini, ma anche a “taggarle”, qualora tali immagini corrispondano a qualcuno presente nel nostro archivio di riconoscimento.

Il tutto, sempre con una manciata di righe di Python.

Buon divertimento!

Il programma

Per prima cosa occorre lanciare il programma approfondito nel precedente articolo, creare e salvare un paio di volti di riferimento, sui quali eseguire i confronti (per il nostro esempio ne abbiamo salvati quattro).

Apriamo quindi il nostro programma, importiamo i moduli face_recognition, PIL e numpy (per la gestione di array complessi).

Quindi carichiamo le immagini di riferimento (nel nostro caso Picard, Data, Worf e Riker, saalvate in precedenza) in due variabili espressamente create, e codifichiamole in modo che la libreria possa interpretarle correttamente.

Infine creiamo due liste che contengano una le variabili con le codifiche, l’altra i nomi delle persone relative.

Carichiamo quidi l’immagine completa contenente le mappe dei volti da riconoscere e la loro relativa codifica. Inseriamo ciascuna coppia di dati nelle relative variabili (face_locations, come ricorderete, è una lista contenente tante tuple di 4 elementi, le coordinate dei volti quanti sono i volti nelle immagini).

Riconoscimento facciale
La foto di partenza

Convertiamo l’immagine sulla quale effettuare la ricerca in formato PIL, per potervi disegnare i simboli di riconoscimento. Creiamo poi un oggetto tavolozza per poter utilizzare tale immagine.

Iniziamo il loop di ricerca.

Con un loop, estraiamo le quattro coordinate e la codifica di ciascun volto dalla foto di gruppo, utilizzando le variabili face_locations e face_encodings create in precedenza.

Quindi confrontiamo ciascun encoding sui singoli volti con l’encoding estratto dalla foto di gruppo e azzeriamo la variabile name.

L’algoritmo conenuto in face_distance() ci permette di confrontare le similitudini tra due immagini.

Se esso troverà riscontro nella foto di confronto, fornendo true, associerà la variabile del nome a quella della persona o dell’oggetto rintracciato.

A questo punto non ci resta altro da fare che tracciare un segnalino attorno a ciascun elemento verificato, e inserire un tag con scritto il nome della persona o dell’oggetto ricercato, utilizzando l’oggetto (software) draw.

Attenzione: la versione 10 del modulo PIL non funziona con gli esempi riportati nella GIT degli sviluppatori, utilizziamo quest’altra tecnica a riga 69-70 per poter ottenere un risultato

Ed ecco l’effetto finale.

RIconoscimento facciale
La foto dopo la ricerca dei volti

E’ infine possibile salvare su disco l’immagine di riferimento con le tracce dei volti riconosciuti.

Con un archivio di oggetti sufficientemente vasto è possibile applicare questo programma a qualsiasi immagine. E’ altresì possibile utilizzare librerie online contenenti milioni di elementi già categorizzati, ma di questo parleremo un’altra volta.

 

Link utili:

Join our groups on Telegram…

… and don’t forget our social channels!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.