Articoli

OpenCv, un kit libero per la sicurezza biometrica

di Flavio Bernardotti

thumbnail

20

Nov

2007

Le pratiche della computer vision, dall'identificazione di oggetti al riconoscimento delle persone, sono oggi una risorsa a disposizione di chiunque abbia voglia di sperimentare

L’uomo è un meccanismo che basa le sue funzionalità cerebrali su un sistema analogico, il quale lo spinge in molti casi a comportarsi come un animale illogico. Quando la mancanza di logica cresce eccessivamente in complessità, un sistema di trasformazioni cerebrali riduce il sistema fino a renderlo comprensibile e interfacciabile con un sistema informatico. I sistemi algoritmici ne sono un esempio: funzioni definite complesse vengono analizzate e scomposte in sottoproblemi, i quali possedendo un grado di difficoltà minore rispetto al problema fondamentale, possono essere descritti medianti successioni di istruzioni semplici.

L’illogicità umana crea tuttavia dei controsensi. Ciò che l’uomo fa con maggiore difficoltà è quello che riesce a scomporre e a rendere logico con maggiore facilità. Quello che invece fa in modo immediato e con più semplicità è quanto riesce con più fatica a rendere logico. Un esempio? Se dovessimo calcolare la rotta che deve fare una navicella spaziale per entrare in un orbita intorno alla Luna metteremmo insieme le leggi legate alla gravità, quelle legate alle forze di propulsione e altre conoscenze fisiche, e in questo modo potremmo creare un programma per computer che simuli il problema.

Prendiamo invece una funzione che svolgiamo centinaia di volte al giorno come quella di riconoscere il volto di una persona: ogni volta che usciamo di casa incontriamo molte persone e a colpo d’occhio sappiamo dire se si tratta di conoscenti o sconosciuti. Il volto di una persona potrebbe essere stato visto molto tempo prima, con caratteristiche fisiche differenti da quelle attuali (barba, fisionomia eccetera). Tuttavia siamo in grado di dire se abbiamo già visto una determinata persona oppure no. Il nostro cervello riceve dalla retina e attraverso fasci nervosi alcuni impulsi sulla corteccia cerebrale e grazie a questi riesce a fare il riconoscimento.

Ma perché questa serie di esempi? L’informatica ha raggiunto un elevato livello di sviluppo proprio mentre nel mondo reale si moltiplicano i problemi che l’informatica stessa potrebbe aiutare a risolvere. Prendiamo come esempio la sicurezza. La città di Londra, a seguito degli attentati alla metropolitana, ha creato la più grossa rete di telecamere addette alla videosorveglianza esistente al mondo. Il circuito vanta 9.000 telecamere piazzate su tutto il territorio cittadino, posizionate in modo tale che una singola persona potrebbe essere seguita per tutta la città. Il problema è che il controllo delle persone tramite operatore è troppo complicato ed è comunque esposto agli errori dovuti alla disattenzione umana.

La creazione di programmi intelligenti, in grado di svolgere le funzioni svolte dalle persone, sarebbe la soluzione al problema. La soluzione algoritmica è complessa, dal momento che riproduce funzionalità che il nostro cervello svolge in modo analogico. Stiamo parlando di riconoscimento delle persone, di identificazione dei pacchi abbandonati, dell’interpretazione di azioni fino a giungere all’identificazione degli stati emotivi di un individuo. La neurologia ha lavorato in questi anni a passo con la computer vision e ha creato regole per la valutazione, ad esempio, della fisionomica facciale.

Dopo l’11 settembre, la Cia ha istruito il personale al check-in degli aeroporti per individuare le persone sospette. In altre parole erano state individuate alcune procedure utili. Per esempio, i neurologi hanno osservato che una persona sottoposta a un quesito a cui è possibile rispondere in modo affermativo o negativo, manifesta differenti contrazioni dei muscoli facciali a seconda che l’affermazione o la negazione corrispondessero o meno alla verità. Nel caso di un sì convinto il cervello invia un impulso più forte, il quale crea una leggera contrazione della muscolatura a lato dell’occhio, rilevabile solo in seguito ad attenta osservazione. Un sì detto senza questa contrazione implicava una menzogna e quindi la necessità di ulteriori controlli da parte del personale addetto alla sicurezza. Analisi di questo genere potrebbero essere svolte in modo automatico da un sistema informatico adeguatamente programmato, ovvero una sorta di macchina della verità senza tuttavia alcun collegamento con il corpo.

Tutte queste tecnologie fanno parte di quel vasto settore chiamato computer vision, di cui fanno parte l’object recognition, le varie tecniche di riconoscimento (facciale, retinale, dell’iride, delle impronte digitali), la pattern extraction e cosi via. Tutti questi processi possono essere riprodotti grazie a modelli matematici legati a studi condotti da numerosi ricercatori e studiosi del settore. In molti casi si è seguito un semplice ragionamento: se il cervello usa neuroni, sinapsi e altri componenti biologici, perché non creare modelli matematici che li riproducano e poi usare questi per lo svolgimento di determinati compiti?

Da qui tutta la teoria sull’uso delle reti neurali artificiali e le loro applicazioni nel settore biometrico. Le reti neurali semplificano la soluzione di problemi complessi perché non necessitano di un algoritmo già indirizzato a risolverlo, ma lo creano empiricamente a partire da esempi attraverso i quali possono dedurre il modo per svolgere il compito. Ne è un esempio la memoria associativa trattata in Associative Neural Network Library. In altri casi, invece, i modelli matematici sono stati definiti allo scopo di estrarre oggetti da immagini, come ad esempio l’utilizzo delle trasformate di Haar e dei classificatori di Viola e Jonnes. Altri modelli molto diffusi sono i vettori di Eigen usati nei processi di eigenfaces indirizzati alla creazione di sistemi di riconoscimento facciale, oppure gli Hidden Markov Modell usati per il riconoscimento del parlato e degli oggetti.

Ma com’è possible sviluppare software in questo settore senza disporre di un centro di ricerca alle spalle? Intel ha creato una libreria di funzioni matematiche dedicate alla computer vision, grazie alle quali si hanno a disposizione tutti le basi per la creazione di qualsiasi modello utilizzato nei processi biometrici. La libreria è gratuita e si chiama OpenCv. Al suo interno compaiono molti esempi legati all’estrazione di volti da immagini, al riconoscimento di oggetti, all’identificazione di persone, al riconoscimento gestuale, al tracciamento. Molti problemi si affidano naturalmente a reti neurali o probabilistiche: nell’ultima versione di OpenCv, per esempio, è stata inserita la libreria Machine Learning attraverso la quale è possibile creare classificatori e chiaramente reti neurali.

Le librerie sono fornite con sorgenti per la compilazione in vari ambienti Windows e Linux. Pur non essendo propriamente un pacchetto per la gestione della user interface, possiede tuttavia funzionalità che consentono di creare semplici finestre e capture sia da videocamere sia da file in formato Avi. Il sistema lavora su immagini in un formato Intel chiamato IplImage, facilmente convertibile in formati come Bitmap. Questo fa sì che si possano di fatto usare altre librerie per gestire videocamere o elaborazioni grafiche e poi sfruttare OpenCv per le funzionalità legate alla computer vision.

Una semplice applicazione di riconoscimento facciale

Una semplice applicazione di riconoscimento facciale

(Ingrandimento)

Nell’ambito della computer vision spesso si eseguono elaborazioni di immagini di oggetti specifici estratti da immagini complesse. Ad esempio, se si volesse fare un riconoscimento facciale partendo da un immagine panoramica che contiene la persona da riconoscere, il processo sarebbe veramente complesso. In questo caso converrebbe identificare il volto della persona, estrarlo dal contesto della foto panoramica e successivamente applicare l’algoritmo di riconoscimento sull’immagine così ottenuta. La faccia, in questo caso, sarebbe un oggetto da identificare e da estrarre. Il sistema di object recognition di OpenCv è parametrizzabile dall’esterno grazie a funzionalità di training eseguite su una serie di immagini positive, rappresentanti l’oggetto, e immagini negative, non relative all’oggetto. In altre parole è possibile istruire il sistema a fare i riconoscimenti che si desidera al fine di estrarre degli oggetti da contesti complessi. I file così generati dati in pasto ai classificatori in cascata sono definiti con il termine di cascade files. In Rete se ne trovano diversi adatti a identificare pedoni, occhi, vetture e altro ancora. La libreria OpenCv mette inoltre a disposizione innumerevoli wrapper che permettono di lavorare con altrettanti linguaggi e sistemi di sviluppo, compresi alcuni particolari – benché assai diffusi – come Flash.