Litterae.eu
Humanities & IT


Riconoscimento facciale con Ubuntu

Da qualche tempo ormai l’intelligenza artificiale applicata al riconoscimento facciale è prassi comune, non solo delle forze di polizia e sicurezza, ma anche di numerosi sviluppatori di app e siti internet.
Impieghi che, se da un lato coinvolgono anche il cittadino comune come oggetto di potenziale riconoscimento, dall’altro gli sono estranei come obiettivi propri. Ma ciò non toglie che il riconoscimento facciale possa avere anche una buona utilità più casalinga.

Da quando la fotografia digitale (macchinette digitali prima e smart phone poi) hanno sostituito rullini e diapositive, ciascuno di noi scatta infatti un numero di foto esponenzialmente superiore ad ogni occasione; è facile ad esempio, in una settimana di vacanza, scattare oggi anche un migliaio di foto, contro i massimo due rullini da 36 dei tempi dell'analogico. Tutte queste foto finiscono, nei casi più virtuosi, stipate su qualche hard disk, dove in breve si possono accumulare anche a decine di migliaia. E si sa che poi non ci sarà mai una cernita per stampare le migliori e che, forse a parte nei primi giorni dal rientro dalle vacanze, non le si guarderà nemmeno più. Perché? Semplicemente perché sono troppe.
E poi ancora, chi si metterà dopo 3, 5, 10 anni a rovistare tra quei giga e giga di immagini per trovare la foto di quella ragazza conosciuta in spiaggia o del nipotino sugli sci? Peccato, mi ricordo ch’era una foto così simpatica…

Ebbene, proprio questo è un caso innocuo in cui un software di riconoscimento facciale potrebbe venire in comodo soccorso. Vediamo allora come fare, avendo Ubuntu come sistema operativo sul proprio PC.
Ubuntu offre al momento due alternative basate su Dlib e Tensorflow. Ma vedremo tra un attimo che si possono far lavorare in modo complementare.

La prima è Facedetect, sviluppata da Yuri d’Elia. Come afferma lo sviluppatore, Facedetect fa solo due cose: riconosce se in una foto c’è un viso di persona e, interagendo con la libreria imagemagick, è in grado di estrarre il solo viso salvandolo in un nuovo file immagine. Una funzione estremamente utile, come vedremo poco oltre. Il limite del software è che, in caso di volto in primo piano che sborda oltre i limiti dell’immagine, esso non viene riconosciuto come tale.

La seconda alternativa è Face_recognition, sviluppata da Adam Geitgey. Questa seconda fa esattamente e con grande precisione ciò che ci si attende: date una o alcune immagini di controllo che contengono il volto di una persona nota, cerca in una o più foto se vi appare la persona in questione e, in caso affermativo, indica in quali. La cosa strabiliante è che, uso dopo uso, l’algoritmo richiamato da Face_recognition aumenta la propria capacità di riconoscimento; è sufficiente aggiungere alle immagini di controllo i primi piani della persona riconosciuta in un precedente passaggio (e qui l’uso della funzione estrattiva di Facedetect è estremamente utile) per vedere crescere esponenzialmente la già elevata precisione del software. Secondo lo sviluppatore, dopo un po’ di addestramento, il modello raggiunge una precisione del 99,38%.
Dopo un po’ di sperimentazione posso confermare che i risultati sono strepitosi; e dopo qualche passaggio Face_recognition è persino in grado di superare il limite, condiviso inizialmente con Facedetect, di non riconoscere come faccia un volto che sborda oltre i limiti dell’immagine.

Provata l’efficacia dei due software usati in tandem, non serviva altro che scrivere un piccolo lanciatore bash per farli lavorare automaticamente in successione e passare i risultati a PHP, al quale ho affidato il compito di organizzare tutte le informazioni fornite dai due rilevatori in un database che raccolga via via le varie tag relative a ciclopici archivi fotografici digitali rimasti muti ed anonimi sino a poco prima.

Chi volesse fare qualche prova con i due software trova Facedetect e Face_recognition sulle pagine dei rispettivi sviluppatori.


Vedi aggiornamento.


Site designed by litterae.eu. © 2004-2024. All rights reserved.
Info GDPR EU 2016/679: no cookies used, no personal data collected.