` DEGLI STUDI DI SIENA UNIVERSITA ` DI INGEGNERIA FACOLTA Corso di Laurea in Ingegneria Informatica Tesi di Laurea Specialistica F.O.V.R.A. Face Object Voice Recognition Access Software per l’accesso a sistemi informatici con riconoscimento multimodale Relatore prof. Marco Maggini Correlatore: dott. Francesco Ulivi dott. Cesare Bertoni dott. Carlo Bardi Candidato Nicola Tondi Maggio 2014 Dedicata alla mia famiglia Indice 1 Introduzione 1.1 Metodi di verifica ed identificazione . . . . . . 1.2 Riconoscere un utente . . . . . . . . . . . . . 1.2.1 Riconoscimento biometrico . . . . . . . 1.2.2 Riconoscimento tramite comportamenti 1.2.3 Uno sguardo al futuro . . . . . . . . . 1.2.4 Problemi di privacy? . . . . . . . . . . 1.3 Sicurezza multimodale . . . . . . . . . . . . . 1.4 Obiettivo del lavoro . . . . . . . . . . . . . . . 2 Riconoscimento vocale 2.1 Estrazione features audio . . . . . . 2.1.1 Campionamento e pre-enfasi 2.1.2 Overlap e windowing . . . . 2.1.3 FFT e filtri . . . . . . . . . 2.1.4 Coefficienti mfcc e lifter . . 2.2 Addestramento di un modello . . . 2.2.1 Hidden Markov Model . . . 2.2.2 Algoritmo di Baum-Welch . 2.3 Riconoscimento della classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Riconoscimento visuale 3.1 Estrazione dei contorni di un volto . . . . . . . . . . . 3.1.1 Algoritmo di Viola-Jones . . . . . . . . . . . . . 3.1.2 Pre-processing features viso . . . . . . . . . . . 3.2 Riconoscimento tramite eigenfaces . . . . . . . . . . . . 3.2.1 Fisherfaces . . . . . . . . . . . . . . . . . . . . . 3.3 Riconoscimento di oggetti qualsiasi . . . . . . . . . . . 3.3.1 Speeded up robust feature . . . . . . . . . . . . 3.4 Riconoscimento numeri carta di credito . . . . . . . . . 3.4.1 Informazioni di una tessera da una videocamera v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 2 3 5 5 6 7 7 . . . . . . . . . 11 11 12 14 15 17 19 19 21 23 . . . . . . . . . 27 27 29 31 32 36 39 40 44 45 4 Software FOVRA e Test 4.1 Cosa `e FOVRA . . . . . . . . . . 4.2 Come funziona? . . . . . . . . . . 4.2.1 Registrazione nuovo utente 4.2.2 Verifica . . . . . . . . . . 4.3 Esperimento . . . . . . . . . . . . 4.3.1 Risultati test . . . . . . . 4.4 Conclusioni . . . . . . . . . . . . Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 49 51 52 54 56 57 60 67 vi Capitolo 1 Introduzione L’espansione a livello privato di apparecchi portatili come smartphone e tablet connessi costantemente alla rete, ha reso il sistema informatico sempre pi` u sotto attacco, con violazioni continue ad account email o servizi privati personali (bancari, clouds, siti web, forum, social network,...). Fino ad oggi per connettersi ad un sistema informatico, il metodo sicuramente pi` u utilizzato `e stato quello della password. Purtroppo la voglia di voler accedere per qualsiasi motivo ovunque e velocemente al nostro account, la pigrizia di taluni nel rafforzare password in modo costante o l’utilizzo di parole chiave semplici e correlate in modo ovvio alla nostra vita, ha fatto ` possibile infatti diventare questo metodo superato o quantomeno migliorabile. E affiancare alla password metodi di rinforzo, per creare processi di verifica dell’utente o sostituire di netto password per avere un diretto procedimento di identificazione. Diverse compagnie del settore IT sono dell’avviso che entro il 2016 pi` u del 30% delle organizzazioni utilizzer`a metodi biometrici di qualche tipo. Guardando al futuro ci si interroga di quali possono essere i nuovi metodi che si affacciano in ambito di sicurezza, ponendo come obiettivo ultimo la possibilit`a in un futuro remoto di identificare in modo istantaneo un soggetto tramite DNA. 1 1 – Introduzione 1.1 Metodi di verifica ed identificazione Tra i metodi maggiormente in voga, soprattutto in questo periodo sono senza dubbio quelli biometrici. Si narra che l’uso di tale metodica risalga alla fine dell’ottocento, quando Alphonse Bertillon [1] catalog`o varie caratteristiche fisiche dei detenuti del carcere parigino, creando uno dei primi database di criminali in ambito scientifico forense. Il metodo per`o risult`o troppo impreciso e di difficile applicazione, e venne perci`o sostituito con una delle misurazioni biometriche pi` u usate ai giorni nostri, l’impronta digitale [2]. Oggi questo sistema offre un altissima attendibilit`a, giacch´e compagnie del calibro di Apple e Samsung hanno inserito tale tecnologia nei loro ultimissimi smartphone. Prima di parlare di altri metodi usati e soprattutto di quelli implementati nel corso di questa tesi, voglio distinguere gli usi di questi mezzi: • verifica : quando il sistema preleva l’identit`a di un utente e la confronta con il suo corrispettivo template contenuto in memoria. • identificazione : il sistema in questo caso cattura tutti i dati relativi all’utente richiesti e le confronta con l’intero database di soggetti. Viene da se che la fase di verifica di un sistema dopo per esempio un login garantisce maggiore robustezza al sistema, andando ad ampliare enormemente la sicurezza contro gli accessi non autorizzati, viceversa il sistema risulter`a lento nei casi in cui abbiamo bisogno di accessi frequenti. In questo caso si pu`o adottare un livello che esclude il login classico optando per un accesso identificativo, ma il rischio di accessi non autorizzati `e sempre dietro l’angolo. 1.2 Riconoscere un utente Quando si vuole accedere ad un’area privata o protetta in qualche modo, `e importante che solo chi effettivamente ha diritto a quel servizio o che ne abbia la propriet`a, possa effettivamente usufruirne, non solo quando si prova ad entrare all’interno di un sistema informatico, ma anche solo per aprire una porta con accesso ristretto o aree con livello superiore di attenzione, tipo banche e caveau. Cercheremo in particolare di fare chiarezza sui metodi maggiormente utilizzati per fare recognition 2 1.2 – Riconoscere un utente Figura 1.1: Scheda per catalogare misure fisiche di Alphonse Bertillon 1.2.1 Riconoscimento biometrico Prende spunto da parametri specifici di cui, appunto, ogni persona `e caratterizzata. Il sistema non fa altro che estrarre delle features ossia caratteristiche osservabili in qualche modo da un individuo, per poi andarle a ripescare all’interno di una base di dati nel momento in cui si chiede l’autenticazione. Se i parametri vengono riconosciuti il programma da accesso, altrimenti rifiuta. Naturalmente questi valori devono rispecchiare diversi criteri: universalit`a, ogni soggetto deve possedere tale peculiarit`a; unicit`a, due individui non possono avere lo stesso valore di una certa caratteristica; misurabilit`a, cio`e deve essere come dice la parola stessa misurabile quantitativamente; fissa, non deve cambiare con il tempo. Durante i test di un riconoscimento vengono vagliati due dati in particolare, il FAR (False Acceptance Rate) e il FRR (False Rejection Rate). Il primo rappresenta le persone accettate per errore che non avrebbero le credenziali per l’accesso, il secondo invece, gli utenti che non vengono riconosciuti ma che hanno l’autorizzazione per entrare. L’unione di questi valori stabilisce l’EER (Equal Error Rate) vedi Figura 1.2, valore che ci 3 1 – Introduzione permette di regolare la sensibilit`a del nostro riconoscitore, utile quando `e richiesta maggiore o minore rigidit`a. Figura 1.2: EER, parametro per equilibrare la fase dei falsi rigetti e falsi accessi Tra i modi di identificazione pi` u usati abbiamo: • Riconoscimento del viso • Riconoscimento della voce • Riconoscimento dell’iride • Riconoscimento dell’impronta digitale • Riconoscimento della geometria della mano Esiste comunque un ulteriore suddivisione che deve essere affrontata all’interno di questi metodi largamente conosciuti e di indubbia efficacia, ossia l’uso dei dispositivi che vengono usati per rilevare i dati di input. Dispositivi (risoluzione camera, attenuazione dei rumori del microfono,...) pi` u o meno adeguati possono fare la differenza tra una percentuale di accuratezza ottima ed una mediocre. 4 1.2 – Riconoscere un utente 1.2.2 Riconoscimento tramite comportamenti Oltre a dei parametri biometrici classici possiamo avvalerci di comportamenti ovvero modi di fare che hanno contraddistinto la nostra vita o abilit`a che abbiamo imparato. Sono esempi: • La nostra firma • Movimenti del corpo • Velocit`a con cui scriviamo • Timbro della voce Dobbiamo comunque prestare attenzione perch´e, mentre le caratteristiche biologiche standard cambiano di poco o nulla durante la nostra esistenza, a meno di eventi eccezionali, i comportamenti possono essere influenzati da stati psicologici o di salute, che ci portano per esempio a non poter pi` u scrivere con la stessa velocit`a o pronunciare una parola allo stesso modo. 1.2.3 Uno sguardo al futuro Cosa ci si aspetta in futuro? indubbiamente come abbiamo gi`a detto, tutti questi metodi diventeranno sempre pi` u usati, raggiungendo anche un miglior grado di attendibilit`a. Si stanno comunque sviluppando nuovi strumenti per riconoscere una persona o per far accedere a sistemi in modo pi` u sicuro. In figura 1.3 vengono riassunti alcuni di questi, c’`e Nymi [3] (figura 1.3a), un dispositivo che riconosce il nostro battito cardiaco (si dice che vari da persona a persona, basta vedere il lavoro svolto sulle aritmie [4]), in figura 1.3d mostra come da una semplice camminata, possiamo ricavare informazioni personali come la frequenza dei passi, il baricentro o altro, per accedere a dispositivi mobili e non, in figura 1.3b la conformazione dell’orecchio come feature visto in sistema basato su neural networks [5], forse il pi` u avveniristico e affascinante metodo (firura 1.3e), ossia l’identificazione tramite DNA, nel momento in cui potremo avere accesso, usando solo un dito o addirittura tramite l’aura che 5 1 – Introduzione emaniamo (aura a mio avviso intesa come evaporazione di acqua del nostro corpo che trasporta anche parte del DNA) e rilevarne in tempo reale l’appartenenza, potremmo q quel punto dire di aver trovato il miglior sistema in assoluto, per ultimo il Typing speed (non cosi attendibile figura 1.3c, si pu`o usare su rilevazioni passive dell’utente). Tra le molte socet`a recentemente acquisite da Google vi `e la slicklogin [6], la quale ha sviluppato un sistema in cui basta posizionare gli altoparlanti vicino ad un microfono e tramite una sequenza sonora creata adhoc non udibile all’orecchio umano `e possibile loggarsi in completa sicurezza. (a) “Nymi” (b) “Conformazione (c) “Velocit` a di orecchio” battitura” (d) “Frequenza della camminata” (e) “Riconoscimento del DNA” Figura 1.3: Altri metodi ad accesso biometrico 1.2.4 Problemi di privacy? Non tutto `e rose e fiori come si usa dire, esistono comunque problemi relativi alla memorizzazione di parametri all’interno di database, c’`e sempre il rischio di non sapere di preciso chi e come utilizzer`a i dati. Dal Giappone [7] giungono le prime proteste 6 1.3 – Sicurezza multimodale relative ad una catena di supermercati che ha dotato i propri negozi di riconoscimento facciale, in grado di verificare se un utente in passato si era reso responsabile di taccheggio; inoltre all’interno della stazione di Osaka `e partita la sperimentazione per la creazione di un database in larga scala di volti, la cui applicazione `e chiara visto che conosciamo tutti l’attenzione dei giapponesi per i luoghi affollati soprattutto dopo gli eventi del 1995 [8]. Sicurezza e privacy potrebbero essere un problema da affrontare nei prossimi anni, ma conviene a mio avviso posizionare le due cose sopra ad una bilancia e verificare quale delle due abbia una maggiore importanza (problema relativo ai governi a meno di una direttiva mondiale al riguardo). La privacy comunque esula dai scopi di questa tesi che si occupa solamente della creazione di un software in grado di acquisire parametri utili per accedere in modo alternativo a sistemi informatici. 1.3 Sicurezza multimodale Come discusso pu`o essere di enorme efficacia affiancare in serie metodi che permettono un efficacia di sicurezza maggiore da parte di un sistema che si occupa di accessi per sistemi contenenti dati sensibili. Possiamo osservare come da uno studio [9] (figura 1.4), `e stato rilevato come la somma di pi` u metodi offra una garanzia che cresce molto pi` u che linearmente, riducendo praticamente a zero il numero degli impostori. Data la garanzia di che offrono i modelli multimodali a confronto con quelli unimodali, risulta solo questione di tempo prima che vengano introdotti con una certa frequenza nel modali di tutti i giorni, lo stesso riconoscimento facciale potrebbe a quel punto dividersi in sotto problemi come, il riconoscimento della morfologia dell’orecchio, la scansione dell’iride e timbro vocale. 1.4 Obiettivo del lavoro Dopo questa breve introduzione, entriamo nel dettaglio del lavoro che `e stato intrapreso all’interno di questa tesi. Come mostra la Figura 1.4 il progetto prevede lo sviluppo di un software per accedere ad una qualsiasi area protetta, che va da una 7 1 – Introduzione Figura 1.4: tratto da [9] indica l’aumento con uso di sistemi multimodali semplice porta ad un sistema informatico critico. L’idea quella di dare la possibilit`a all’utente di poter scegliere tra pi` u sistemi di sicurezza, utilizzando un sistema di sicurezza multimodale [9]. Il software `e capace di rilevare l’utente tramite: • Riconoscimento facciale • Riconoscimento sonoro tramite parola d’ordine • Rilevazione di un oggetto particolare usato come chiave di accesso • Accesso tramite numero della propria carta bancomat Come sappiano i sistemi biometrici garantiscono un enorme grado di sicurezza anche contro la contraffazione e il furto di credenziali, nei casi in cui si deve essere estremamente certi che i dati personali o l’accesso ad aree private non vengano violate in nessun modo ed i tradizionali metodi di accesso non bastano. Essi rendono possibile aumentare ancora di pi` u la percentuale che ci garantisce l’ingresso esclusivo, affiancando serialmente n metodi biometrici o altri modi alternativi. Grazie alla collaborazione con il gruppo MPS (Monte dei Paschi di Siena), ho realizzato un applicazione che ho chiamato FOVRA [10] (Face Object Voice Recognition 8 1.4 – Obiettivo del lavoro Figura 1.5: Schema generale del progetto FOVRA Access), con cui, dopo una prima fase di registrazione in cui lutente lascia che lapplicazione rilevi determinati parametri, `e possibile accedere facendosi riconoscere o verificando la propria identit`a o direttamente facendosi identificare dal sistema. 9 Capitolo 2 Riconoscimento vocale Cominciamo con spiegare le varie parti che compongono il software FOVRA partendo dal modulo che si occupa del riconoscimento vocale. Si parte catturando una traccia audio di una lunghezza variabile tramite microfono; il segnale viene elaborato con passaggi che verranno illustrati di seguito, in modo che alla fine venga rappresentato con coefficienti MFCCs [11]; a questo punto le sequenze di vettori ottenuti sono date in ingresso ad un modello di Markov nascosto [12] opportunamente configurato ed addestrato, che in un secondo momento sar`a in grado di riconoscere la parola che `e stata pronunciata. Quindi precisamente questa sezione riguarda il riconoscimento del parlatore tramite una frase o parola chiave. 2.1 Estrazione features audio Come rappresentazione della nostra traccia audio ho deciso di usare la rappresentazione in coefficienti MFCC (Mel-frequency cepstral coefficients). La procedura di elaborazione per giungere a tali valori `e lunga e conta vari passaggi, inoltre non esiste un metodo preciso ma pu`o variare da caso a caso (esistono procedure che riescono a ridurre la computazione totale a scapito di precisione oppure `e possibile aggiungere ` utile registrare in aree non troppo altre elementi che rafforzano l’informazione). E soggette a rumore di fondo e la qualit`a del dispositivo che si occupa della cattura 11 2 – Riconoscimento vocale risulta di grande rilevanza se non vogliamo poi trovarci enormi discrepanze all’inter` logico come il segnale audio trasporti tantissima informazione no dei nostri dati. E al suo interno (come le caratteristiche fisiologiche che determinano ogni individuo utili sopratutto in speaker recognition [13]) ma di solito solo una piccola porzione di questa viene usata per l’analisi. Cercheremo di eliminare l’informazione superflua e di concentrarci essenzialmente su quella che ci interessa. L’intero processo di estrazione `e ricapitolato in figura 2.1. Per chiarire meglio il concetto sar`a effettuato un esempio utilizzando due parole: “pomodoro” e “peperone”. Figura 2.1: Procedura estrazione MFCCs 2.1.1 Campionamento e pre-enfasi Una volta registrata la parola all’interno di una sessione, assumiamo una frequenza di campionamento pari a 8Khz con canale mono, questo vuol dire che ogni secondo avremo 8000 campioni. Dato x(t) il nostro segnale ho x[n] = x(nT c), ottenendo un nel caso di una registrazione lunga 3 secondi esattamente 24000 campioni, ben rappresentati in figura 2.2. Guardando i nostri segnali notiamo che gran parte di essi, sono formati da rumore di fondo o addirittura nessun suono. Quello che faremo sar`a tagliare la parte che non ci serve cio`e lasciare solo la frase o la parola pronunciata. Senza usare sistemi di VAD (Voice activity detection [14]) complicati, ho usato un metodo molto semplice ma efficace per il mio scopo. Si prende il segnale x[n] e si 12 2.1 – Estrazione features audio (a) “Pomodoro” (b) “Peperone” Figura 2.2: segnale audio campionato di due diverse parole applica il valore assoluto in modo da avere tutti campioni positivi |x[n]|; si divide il segnale in frame da 200 campioni, nel nostro esempio avremo 120 frames; a questo punto sommiamo ogni singolo campione per ogni frame e definiamo che se risulta inferiore ad un valore soglia il frame viene escluso, producendo solo i frames che serviranno per l’analisi. 200 X x[i] < valore soglia (2.1) i=1 Una volta estratta la nostro vettore “parola” passiamo alla fase di pre-enfasi che (a) “valore assoluto” (b) “risultato cutting” Figura 2.3: Risultato dell’eliminazione del silenzio e rumore non `e altro che il passaggio dentro un filtro passa alto, consideriamo s(n) l’uscita del nostro filtro avremo s(n) = x(n) − ax(n − 1) 13 (2.2) 2 – Riconoscimento vocale dove x(n) naturalmente `e il nostro vettore parola mentre a rappresenta un valore compreso tra 0.9 e 1.0 (ho usato un valore di 0.97). Questa fase ci permette di compensare la parte di alta frequenza che `e stata soppressa durante il meccanismo di produzione del suono delle corde vocali umane e pu`o amplificare l’importanza di determinate alte frequenze, oltre ad attenuare le distorsioni. 2.1.2 Overlap e windowing Il vettore in questa fase dovr`a essere diviso in frame composti da 200 campioni, perch`e in questo modo avremo una lunghezza di 25ms (tra i 20-30 ms `e un valore per non perdere n`e dare troppa importanza all’informazione racchiusa in un frame). Poi si effettua un overlap del 40%, visto che il passo successivo sar`a quello di passare i campioni in una finestra di Hamming, la quale elimina informazione all’inizio ed alla fine di ogni frame, che in seguito proprio grazie all’overlapping potr`a essere ripristinata. Veniamo adesso alla finestratura, che `e eseguita per evitare discontinuit`a irregolari nel segmento del parlato e avere distorsioni nello spettro. Come detto l’effetto `e quello di attenuare gradualmente l’ampiezza delle due estremit`a evitando bruschi cambiamenti. Inoltre prepara i dati per la convoluzione con la trasformata di Fourier tra la funzione finestra e lo spettro vocale. La funzione finestra pi` u usata in speech recognition `e quella di Hamming (figura 2.3 [15]), perch`e il suo spettro cade abbastanza rapidamente, consentendo un miglior isolamento anche se le sue armoniche superiori rimangono piuttosto piatte e coprono gran parte dello spettro. La funzione `e definita come segue con 1 < n < N N = 200 H(n) = 0.54 − 0.46 cos 2πn N −1 (2.3) Ci troviamo adesso con una matrice 200 righe e colonne (frames) di numero variabile dipendente dalla lunghezza della frase o parola pronunciata (nell’esempio proposto Peperone 200x72, ma se non avessimo applicato l’eliminazione del silenzio sarebbe stata una matrice 200x298). 14 2.1 – Estrazione features audio Figura 2.4: Funzione finestra di Hamming 2.1.3 FFT e filtri Il passo successivo `e quello di applicare la trasformata di Fourier discreta ai nostri dati frammentati, pi` u precisamente applichiamo la versione dell’algoritmo FFT (Fast Fourier transform [16]). Prima di vedere meglio il perch`e conviene usare questa versione, parliamo del motivo di passare in frequenza. L’analisi spettrale ci mostra che ad ogni differente timbro vocale corrisponde una distribuzione differente di energia in frequenza, come abbiamo detto nel paragrafo precedente, per simulare l’uso di un segnale periodico (che non verificato vista la discontinuit`a tra frame e frame) si usa la funzione di Hamming che garantisce armoniche molto pi` u smussate e risposte in frequenza pi` u chiare (quello che ci interessa comunque `e lo sviluppo in frequenza). L’utilizzo di FFT riduce il numero di operazioni aritmetiche da O(N 2 ) a O(N log2 (N )), ci sono poi anche delle versioni pi` u recenti che abbassano ancora di pi` u la complessit`a. In pratica viene usato il metodo del divide et impera, presi N punti di FFT e divisi in 2 x N 2 sotto insiemi. Xk = N −1 X 2π xn e−i N nk n=0 15 (2.4) 2 – Riconoscimento vocale Possiamo riscrivere Xk come: N Xk = −1 2 X |n=0 N −i 2π 2nk N x2n e {z + N = −1 2 X 2π x2n+1 e−i N (2n+1)k |n=0 } P ARI −1 2 X {z } DISP ARI (2.5) N −i 2π N nk x2n e 2 −i 2π k N +e n=0 −1 2 X x2n+1 e −i 2π N nk 2 = n=0 N 2 L’ultimo passaggio oltre che alla periodicit`a della trasformata, `e reso possibile anche = Pk + e −i 2π k N 0≤k≤ Dk al fatto di poter ulteriormente dividere il problema in trasformata discreta del seno e trasformata discreta del coseno, dato che abbiamo a che fare sempre con dati reali (immaginari sempre uguali a 0) possiamo tranquillamente prendere solo met`a dei dati visto che il coseno `e pari (figura 2.5a), vengono usati il modulo del risultato, e la fase non `e stata prese in considerazione. Adesso vengono moltiplicati i moduli (a) “Trasformata di Fourier 28 ” (b) “Filtri triangolari Mel” (c) “spettro della parola Peperone” (d) “spettro della parola Pomodoro” Figura 2.5: Parit`a trasformata coseno, filtro e spettro di due parole della risposta in frequenza per 22 filtri triangolari passa banda (figura 2.5b), opportunamente spaziati tenendo conto della frequenza di Mel [17], che ci permette di creare una maggiore corrispondenza tra l’informazione contenuta nel segnale e come 16 2.1 – Estrazione features audio l’orecchio umano percepisce determinati suoni. Per questo prendiamo in considerazione solo segnali vocale tra 0-4000Hz. La trasformazione si rende possibile tramite la funzione : M elf = 1127 loge f 1+ 700 (2.6) che trasforma la scala di applicazione dei nostri filtri da normale a scala logaritmica Mel. L’uso `e dovuto al fatto che applicando i filtri riesco a ridurre la dimensione delle features, inoltre l’uso garantisce che il sistema che fa uso di riconoscimento vocale si comporter`a all’incirca nello stesso modo quando in ingresso avremo stessi toni ma non timbri differenti. I filtri sono costruiti in questo modo con M numero di filtri utilizzati: Hm (k) = 0 k−f (m−1) f (m)−f (m−1) f (m+1)−k f (m+1)−f (m) se k < f (m − 1) se f (m − 1) ≤ k ≤ f (m) se f (m) ≤ k ≤ f (m + 1) 0 (2.7) se k > f (m + 1) Eravamo rimasti prima della FFT ad una matrice grande 200x72 nel caso della parola peperone usata come esempio, dopo il passaggio in frequenza scendiamo a 128x72 (256 che grazie alla parit`a del coseno diventano 128), per poi con l’uso dei filtri triangolari una matrice 22x72, vediamo infatti in figura 2.5(c e b) degli esempi. Inoltriamoci adesso nei passaggi finali che produrranno i nostri dati che finalmente potremmo usare come features. 2.1.4 Coefficienti mfcc e lifter Dalla matrice ricavata dopo la procedura del filterbank, siamo in grado di ridurre ulteriormente applicando una DCT (discrete cosine transform). Scegliamo innanzitutto di creare 13 MFCCs (matrice 13x72), dalla formula dove N `e il numero dei filtri usati in precedenza ed i il coefficiente Mfcc [18]: 17 2 – Riconoscimento vocale r ci = N 2 X πi (j − 0.5) mj cos N j=1 N (2.8) Nella figura 2.6 si pu`o vedere una rappresentazione della matrice mfcc creata dalla parola “peperone”. La rappresentazione cepstral dello spettro del parlato ci da una buona rappresentazione della locale propriet`a dello spettro del segnale per i frame analizzati. La DCT ci permette di invertire il processo di conversione tornando nel dominio del tempo, con il risultato di avere 13 valori reali che rappresentano una “compressione” dell’informazione di un frame partito dalla dimensione di 200 campioni. Figura 2.6: 13 coefficienti Mel relativi alla parola “Peperone” L’ultimo passaggio che `e stato eseguito riguarda l’uso di coefficienti Mel all’interno del modello di apprendimento usato. In questo caso si sono utilizzati gli HMM (hidden Markov model ). Infatti uno dei vantaggi maggiori dell’uso dei mfcc `e che risultano generalmente decorrelati permettendo l’uso di matrici di covarianza diagonali da utilizzare nei modelli di Markov nascosti. Risulta conveniente riscalare i valori, per non avere problemi di varianza quando si passa da coefficienti piccoli a grandi. Si usa per questo una funzione chiamata lifter, definita in questo modo: 0 cn = L πn 1 + sin 2 L cn (2.9) L nel nostro caso `e uguale a 22 e rappresenta un parametro di configurazione. Oltre che questi 13 coefficienti per ogni frame, `e possibile aumentare l’informazione 18 2.2 – Addestramento di un modello introducendo ulteriori parametri, uno di questi `e il Log-energy [19], l’energia contenuta all’interno di un frame, che oltre ad essere molto indicativa `e semplice da trovare. Ulteriori parametri da aggiungere possono essere i delta cepstrum che possono mostrare velocit`a ed accelerazione, cio`e possono dare informazioni riguardo la dinamicit`a, della traiettoria dei coefficienti mfcc nel tempo PN dt = n(ct+n − ct−n ) P 2 2 N n=1 n n=1 (2.10) La componente delta di accelerazione pu`o essere calcolata direttamente da questa; di solito vengono aggiunti 12, circa, componenti delta ed il valore usato di N `e spesso 2. 2.2 Addestramento di un modello Preparata la nostra matrice di feature, passiamo adesso all’addestramento utilizzando uno dei migliori modelli per quanto riguarda il riconoscimento del parlato, soprattutto in presenza di sequenze variabili in ingresso. Parliamo di Hidden Markov Model, e in questa sezione cercheremo prima di spiegare il funzionamento di tale modello, per poi addentrarci pi` u specificatamente sulla configurazione usata in questo caso specifico. 2.2.1 Hidden Markov Model I modelli nascosti di Markov [20] sono fondamentalmente catene di Markov del primo ordine, con stati temporali discreti o continui ed alcune informazioni nascoste, cio`e gli stati della serie temporale non sono delle informazioni che possono essere osservate ma sono comunque legati con dipendenze alla sequenza di osservazioni. In figura 2.7 abbiamo un semplice esempio, dove S = {S1 , . . . , SN } sono gli stati del sistema, A = [aij ] le probabilit`a di transizione con ai j = P (qt+1 = Sj |qt = Si ) dove qt `e lo stato al tempo t. B = {bi (x)} `e detta probabilit`a di emissione con bi (x) = p(x|Si ) e si assume indipendente dal tempo t; questa `e la parte osservabile del modello. Le probabilit`a di emissione possono anche essere delle PDF (probability 19 2 – Riconoscimento vocale density function) come vedremo per il nostro caso. Quindi definito uno spazio delle features X, un modello nascosto di Markov `e formato dalla combinazione dei parametri (con πi = P (q1 = Si ) probabilit`a iniziale) λ = (π, A, B) (2.11) Figura 2.7: Semplice esempio HMM Pronunciata la nostra parola abbiamo ottenuto una sequenza di vettori anche dette osservazioni, per cui si dice che ot `e l’osservazione al tempo t : O = o1 , o2 , o3 , . . . , oT (2.12) Dato che stiamo cercando di riconoscere singole parole o frasi, ovvero ci troviamo in un contesto isolato, possiamo ridurre il nostro problema a qualcosa del genere: arg max {P (wi |O)} i (2.13) Dove wi rappresenta la classe di appartenenza delle parola. Nel problema preso in considerazione possiamo dire che la classe `e essenzialmente ogni individuo presente all’interno del sistema informatico (se nel sistema sono presenti 50 individui, ognuno sceglier`a una parola per accedere), il sistema quindi garantisce che anche se viene pronunciata da due utenti la stessa parola, questa non venga riconosciuta a meno che non venga detta dall’utente che l’ha immessa. C’`e da prestare attenzione perch`e mentre il numero delle classi `e fisso, la lunghezza delle sequenze di osservazioni pu`o 20 2.2 – Addestramento di un modello variare, ma la supervisione esiste a livello di intera sequenza. Il nostro quindi `e un problema di addestramento del modello, ossia dobbiamo determinare i parametri λ in modo da massimizzare P (O|λ) una volta osservato O. Questo sar`a possibile utilizzando l’algoritmo forward-backward, che tra l’altro fa uso di EM (expectation maximization [21]) un particolare tipo di algoritmo che stima i parametri secondo il criterio generale del maximum likelihood. 2.2.2 Algoritmo di Baum-Welch L’algoritmo di Baum-Welch rappresenta essenzialmente un algoritmo per la stima della massima verosimiglianza per modelli nascosti di Markov. Dobbiamo stimare i parametri del nostro modello λ = (π, A, B) definiamo due termini: F orward z }| { αt (i) = P (O1 , . . . , Ot , qt = Si |λ) (2.14) Backward }| { z βt (j) = P (Ot+1 , . . . , OT |qt = Sj , λ) (2.15) Questi ultimi possono essere calcolati direttamente dal trellis (Algoritmo di Viterbi [22], figura 2.8), che raffigura un i differenti percorsi di un HMM nello spazio di stato. Questo permette di ridurre di molto la complessit`a dei calcoli. Forward fase 1: inizializzazione α1 (i) = πi bi (Oi ) (2.16) fase 2: ricorsione αt+1 (i) = ( N X ) αt (j)aji bi (Ot + 1) (2.17) j=1 fase 3: fine P (O|λ) = N X i=1 21 αT (i) (2.18) 2 – Riconoscimento vocale Figura 2.8: Trellis HMM Backward fase 1: inizializzazione 1≤j≤N βT (j) = 1 (2.19) fase 2: ricorsione βt (j) = N X aji bi (Ot+1 )βt+1 (i) per t = T − 1, T − 2, . . . ,1 e 1 ≤ j ≤ N (2.20) i=1 Dai termini di α e β `e possibile calcolare, utilizzando il passaggio backward sul trellis la quantit`a P (qt = Si |O, λ) rinominata γt (i), la probabilit`a di essere nello stato i al tempo t data la sequenza di osservazioni O con i parametri λ quindi αt (i)βt (i) γt (i) = PN j=1 αt (j)βt (j) (2.21) Infine per ultimo calcoliamo il valore ξt (i, j) = P (qt = Si , qt+1 = Sj |O, λ) ossia la probabilit`a di essere nello stato i e nello stato j rispettivamente al tempo t ed al tempo t + 1 , dopo avere osservato O con i parametri, λ riscritta ho ξt (i, j) = αt (i)aij bj (Ot+1 )βt+1 (j) P (O|λ) fase 3: aggiornamento di λ 22 (2.22) 2.3 – Riconoscimento della classe • Probabilit`a iniziali 0 πi = γ1 (i) (2.23) PT −1 ξt (i, j) aij = Pt=1 t=1 T −1 γt (i) (2.24) • Probabilit`a di transizione 0 • Probabilit`a di emissione 0 PT t=1∧Ot =x γt (i) PT t=1 γt (i) bi = (2.25) Questi passaggi sono ripetuti iterativamente fino al raggiungimento dell’obiettivo di convergenza. Aggiungo che comunque la convergenza dell’algoritmo di Baum-Welch `e abbastanza dipendente dalle condizioni iniziali ed esistono numerosi massimi in cui l’algoritmo pu`o intrappolarsi. 2.3 Riconoscimento della classe Quando finalmente il nostro modello `e addestrato possiamo passare alla fase di riconoscimento. Nel caso specifico viene data in ingresso al modello una matrice test del formato 13 x lunghezzaTestWord, che viene poi verificata e associata tramite la risposta della verosimiglianza ad una delle classi dello spazio. Ci rimane da specificare come viene effettuata questa fase, si utilizza il criterio di Viterbi per risalire al cammino migliore q1 , . . . , qT a massima probabilit`a: max P (Q|O, λ) ⇒ max {P (Q|O, λ)P (O|λ)} ⇒ max P (Q, O|λ) Q Q Q (2.26) definiamo: δt (i) = max P (q1 , . . . , qt = Si , O1 , . . . , Ot |λ) q1 ,...,qt−1 (2.27) Viene inizializzato delta in questo modo: δ1 (i) = πi bi (O1 ) φ1 (i) = 0 1 ≤ i ≤ N 23 (2.28) 2 – Riconoscimento vocale ricorsivamente sul trellis (figura 2.8) con 2 ≤ t ≤ T δt (i) = max {δt−1 (j)aji } bi (Ot ) (2.29) φt (i) = arg max δt−1 (j)aji (2.30) P = max P (Q, O|λ) = max δT (i) (2.31) j j si termina con: 0 Q 1≤i≤N 0 qT = arg max δT (i) (2.32) 1≤i≤N `e possibile ricostruire il cammino ottimo ripercorrendo all’indietro l’algoritmo (backtracking) qui sotto mostrato. 0 0 qt = φt+1 (qt+1 ) con t = T − 1, T − 2, . . . ,1 (2.33) Nello schema di figura 2.9 si riassume il percorso svolto dal segnale audio, che in un primo momento viene trasformato in matrice di features ed inserito nel database, in un secondo step si rinterroga tutta la base dati contenente tutte le matrici precedentemente create, appartenenti sia all’utente corrente che agli altri utenti che fanno uso della piattaforma; le matrici vengono unite tutte insieme, formando una “mega matrice cubica” associata ad un vettore che rappresenta le etichettate con le classe di appartenenza (classe associata ad un utente) di ognuna. Si inizia un addestramento supervisionato con in input i dati sopra descritti, il modello utilizza una distribuzione normale multivariata di dimensione 13 come PDF definita nel seguente modo p(x|µ, Σ) = 1 13 ( 1 e − 12 (x−µ)T Σ−1 (x−µ) (2π) 2 Σ 2 con x, µ ∈ <13 Σ : <13 → <13 (2.34) La fase di verifica viene fatta associando il percorso migliore nel trellis e trovando la classe con maggiore verosimiglianza. Risulta chiaro come nel caso con etichettatura non tutti i cammini tra gli stati sono possibili per la generazione di una data sequenza dell’insieme di addestramento, ma solo quelli compatibili con le classi dell’etichetta a cui `e associata la sequenza, la massimizzazione non `e sempre semplice e come 24 2.3 – Riconoscimento della classe Figura 2.9: Schema riassuntivo del riconoscimento del parlato abbiamo detto possono verificarsi numerosi problemi. Per questo risulta importante prestare la massima attenzione a come vengono prelevati i campioni vocali e regolare in modo appropriato i parametri del modello di addestramento. 25 Capitolo 3 Riconoscimento visuale Cominciamo dicendo che questa parte dedicata al riconoscimento visivo `e un p`o pi` u densa di argomenti, proprio perch`e verranno trattate numerose tecniche implementate all’interno del software FOVRA, in particolare vedremo come riconoscere i contorni del viso per estrarre immagini di volti e di come sia importante la parte dedicata alla segmentazione, il riconoscimento facciale, riconoscere oggetti qualsiasi da poter sfruttare come chiave per l’accesso ed infine estrarre codici numerici da bancomat o carte di credito per accedere a sistemi informatici. Verranno discusse quali siano le difficolt`a nell’affrontare i vari problemi, ragionando su errori e modi per cercare di risolverli. 3.1 Estrazione dei contorni di un volto Esistono numerose tecniche che nel tempo sono state sviluppate per il riconoscimento del volto umano. I primi ad effettuare questo tipo di identificazione sono stati Woody Bledsoe, Helen Chan Wolf, e Charles Bisson nei primi anni 60. Il loro lavoro consisteva nell’estrazione di distanze e misure su di un viso per poi inserire questi dati all’interno di un computer. Oggi esistono sistemi molto accurati in grado di distinguere anche gemelli monozigoti, utilizzando scansioni ad alta definizione che modellano il viso in 3D. Determinati metodi si accontentano di estrarre contorni, feature particolari, controllare che un viso abbia due occhi, un naso, una bocca, la 27 3 – Riconoscimento visuale posizione di quest’ultimi, la loro forma, sopracciglia. Altri, come abbiamo detto, fanno uso di macchinari pi` u moderni ma meno accessibili all’utente normale. Possiamo dunque distinguere principalmente due filoni principali: tecniche che si avvalgono di approcci geometrici e tecniche statistiche che vanno a valutare la varianza tra un immagine di riferimento ed un template. Prima di poter effettuare (a) “Rilevazione viso” (b) “Estrazione contorno con ellissoide, semplice” (c) “Estrazione contorno preciso, difficile” (d) “Ricostruzione 3D del volto” Figura 3.1: Metodi di rilevazione e segmentazione il riconoscimento di un individuo `e indispensabile riuscire ad estrarre elementi utili per la successiva identificazione. Per far questo `e necessario individuare il volto all’interno di un immagine e ritagliarlo. In figura 3.1a abbiamo un esempio di uso dell’algoritmo di Viola-Jones [23] per l’identificazione di volti. 28 3.1 – Estrazione dei contorni di un volto 3.1.1 Algoritmo di Viola-Jones Uno degli algoritmi di rilevazione dei volti pi` u utilizzato risale al 2001. In verit`a non si occupa solo di volti ma di molti oggetti o elementi. Una delle sue caratteristiche risiede anche nella velocit`a, ed `e quindi molto utile in applicazioni real-time. Si inizia utilizzando la wavelet Haar [24] estraendo delle features (3 esattamente [25]) con l’uso di aree rettangolari (figura 3.2a), la prima feature viene calcolata tramite la differenza tra la somma dei pixel tra due regioni rettangolari uguali, la seconda si calcola tra 3 rettangoli, facendo la somma tra due rettangoli esterni sottratti dalla somma di quello interno, l’ultima feature presa tra quattro rettangoli, tramite differenza tra la coppia diagonale e l’altra. L’interpretazione intermedia delle features pu`o essere fatta con l’uso dell’immagine integrale, che possiamo spiegare dicendo che, data un immagine, la posizione (x, y) contiene la somma dei pixel come da figura 3.2b, X Integrale(x, y) = 0 0 0 originale(x , y ) (3.1) 0 x ≤x,y ≤y L’immagine integrale pu`o essere calcolata usando le due formule con s(x, y) somma cumulativa di righe s(x, y) = s(x, y − 1) + originale(x, y) (3.2) integrale(x, y) = originale(x − 1, y) + s(x, y) (3.3) Per calcolare la zona di regione in figura 3.2c, abbiamo bisogno di quattro accessi in memoria e solo tre addizioni, per cui la somma della luminescenza `e data da A − B − C + D. L’uso dell’immagine integrale aumenta le prestazioni, nel caso specifico dovendo sommare due rettangoli vicini servono solo sei punti. Per quanto riguarda l’addestramento e la scelta delle corrette features (con 24x24 pixels si hanno circa 160.000 features, un po’ troppe) viene usata una variante di AdaBoost [26]. Inoltre l’aumento delle prestazioni `e reso possibile dall’uso della cosidetta cascata di classificatori, ovvero classificatori distribuiti in cascata in ordine di complessit`a (figura 3.3a), in modo da addestrare il successivo con campioni selezionati dalla precedente passata, che se non accettati vengono scartati e mai pi` u ripresentati. Come esempio possiamo 29 3 – Riconoscimento visuale (a) “rettangoli per estra- (b) “immagine integrazione features” le” (c) “somma di una regione” Figura 3.2: metodi in algoritmo Viola-Jones vedere in figura 3.3b l’algoritmo dopo alcuni passaggi, bastano pochissimi esempi per cominciare l’addestramento ed avere una rilevazione superiore al 90%; (a) “rilevazioni features approssimata” (b) “schema classificatori in cascata ” Figura 3.3: Classificatori in cascata e risultato 30 3.1 – Estrazione dei contorni di un volto 3.1.2 Pre-processing features viso Una volta riusciti nella rilevazione del viso con l’algoritmo di Viola-Jones purtroppo non siamo ancora pronti per definire pronti i nostri dati, ci manca la fase di pre-processing [27], che riguarda dei metodi di elaborazione delle immagini che garantiscono una migliore efficienza poi nel riconoscimento. conversione colore: chiaramente durante l’elaborazione anche per effettuare calcoli pi` u semplici, non abbiamo bisogno di immagini a colori ma `e sufficiente in scala di grigi, questo perch´e mentre con scala di grigi ho un immagine che corrisponde ad una matrice dove ogni pixel corrisponde al valore della luminanza, in un sistema per esempio a colori RGB (Red, Green, Blue) avrei una matrice di vettori con ogni vettore formato dal valore del Rosso, Verde e Blu con un aumento della computazione. Si effettua per questo una conversione RGB → Grey. aspect ratio immagine: si deve prestare attenzione inoltre a non collezionare dati con videocamere con aspect ratio differente. Questo comporterebbe l’incoerenza tra i dati acquisiti. Per questo `e buona norma ridimensionarli in modo da averli tutti, anche nel caso si utilizzassero diversi dispositivi di acquisizione, di lunghezza e altezza nello stesso rapporto. equalizzazione: la luce `e un fattore importantissimo nelle immagini catturate, dato che basse esposizioni di luce rendono il sistema non affidabile. Si deve perci`o effettuare un equalizzazione per garantire una migliore luminosit`a ed un migliore contrasto. Quello che si fa `e rendere l’istogramma cumulativo lineare. trasformazione geometrica: pu`o capitare che l’immagine prelevata presenti delle parti che non sono perfettamente allineate, infatti risulta importante nel momento del confronto poter comparare stesse porzioni di viso tra immagini. Quindi si inizia tagliando via quello che non ci interessa, sfondo, capelli del soggetto e orecchie. A questo punto prendendo in considerazione la posizione degli occhi ed il loro allineamento, trattiamo l’immagine come una matrice e con rotazioni e traslazioni posizioniamo tutto nella stessa collocazione. 31 3 – Riconoscimento visuale diversa esposizione: in diverse condizioni di luce risulta utile per garantire simmetria, la possibilit`a di equalizzare diverse parti del viso allo stesso modo. Non si riesce completamente ad eliminare gli effetti di luce sul viso ma risulta molto utile ai fine della creazione del nostro dataset. Prendiamo il viso e dividiamolo in tre strisce verticali uguali, nei quali applichiamo nelle strisce esterne una equalizzazione standard, mentre in quella centrale la si applica gradualmente. filtraggio: questo passaggio deve essere effettuato a seconda delle caratteristiche che si vogliono accentuare o eliminare e possono variare da caso a caso. Di solito si applica un filtro bilaterale [28], che garantisce una discreta riduzione di rumore tra pixel preservando i lati. Definita Ifiltrata (x) = 1 X I(xi )Gσr (kI(xi ) − I(x)k)Gσs (kxi − xk) Wp x ∈Ω (3.4) i con Gσ di solito una funzione gaussiana e termine di normalizzazione che preserva l’energia dell’immagine Wp = X Gσr (kI(xi ) − I(x)k)Gσs (kxi − xk) (3.5) xi ∈Ω segmentazione volto: in figura 3.1b si vede l’ultima parte della fase di pre-processing (utilizzata in questo caso). Viene sovrapposto un ellissi per eliminare la maggior parte degli elementi esterni (collo, oggetti vicino al volto, ecc) non appartenenti al volto in s´e. Pi` u accurato risulta inoltre il metodo come quello in figura 3.1c che implementa una reale estrazione dei contorni del viso di una persona, la segmentazione `e naturale e da al riconoscitore la possibilit`a di estrarre anche componenti morfologiche. 3.2 Riconoscimento tramite eigenfaces Pronto il nostro dataset di input, descriviamo il metodo implementato in FOVRA cio`e eigenfaces. Dato un dataset di immagini di training M della dimensione scelta 100x100 pixels, quello che faremo sar`a trovare le principali componenti distribuite 32 3.2 – Riconoscimento tramite eigenfaces in un viso. Ogni immagine viene trattata come un vettore in uno spazio ad alta dimensionalit`a, gli autovettori che visibilmente appaiono come immagini “fantasma”, possiamo pensarli come un set di features che insieme caratterizzano le variazioni tra immagini e che chiameremo eigenface. La matrice immagine pu`o essere considerata anche come un vettore di dimensione 10000, non da poco, quindi prendendo spunto da principal component analysis [30], si cerca di ridurre lo spazio trovando i vettori che meglio raccogliono l’intero spazio dell’immagine. Questi vettori andranno a formare un sottospazio che si chiama face space. Prendiamo le immagini acquisite dagli utenti trasformate in vettori N 2 (NxN dimensione immagine in pixels), con M numero totale immagini, per cui il trainig set `e Γ1 , Γ2 , . . . , ΓM . Calcoliamo la media (average face)di tutte le immagini in questo modo M 1 X Ψ= Γn M n=1 (3.6) dunque ogni faccia dell’insieme differisce dall’average face di un vettore Φi = Γi − Ψ (3.7) Entra in gioco adesso PCA (principal component analysis, l’obiettivo `e quello di ridurre il numero delle variabili) che cerca di trovare un insieme M di vettori ortonormali un che meglio descrivono la distribuzione dei dati. Il k-esimo vettore, uk massimo `e scelto come M 1 X T (uk Φn )2 M n=1 ( 1, se l = k T ul uk = δlk = 0, altrimenti λk = (3.8) si pu`o definire la matrice di covarianza di cui uk e λk sono rispettivamente autovettori e autovalori M 1 X Φn ΦTn = AAT C= M n=1 (3.9) con A = [Φ1 , Φ2 , . . . , ΦM ] che `e l’insieme dei vettori che differiscono dalla media. La dimensione risulta comunque troppo grande per essere trattata, infatti AAT risulta 33 3 – Riconoscimento visuale una matrice N 2 xN 2 , se invece calcoliamo AAT ho una matrice M xM . Visto che entrambe hanno gli stessi autovalori ed autovettori relativi a ui = Avi , ecco risolto il problema. ui = M X vlk Φk l = 1, . . . , M (3.10) k=1 La trasformazione in eigenface con relativa proiezione all’interno del face space si 0 effettua con gli M autovettori pi` u significativi ωk = uTk (Γ − Ψ) k = 1, . . . , M 0 (3.11) L’insieme delle trasformazioni viene racchiuso all’interno di uno spazio vettoriale ΩT = [ω1 , ω2 , . . . , ωM 0 ] (3.12) che descrive il contributo di ogni eigenface per una data immagine di ingresso. Quindi sar`a possibile inserire questo dato all’ingresso di una macchina in grado di riconoscere le varie classi. Uno dei metodi pi` u semplici risulta l’uso dell minimizzazione della distanza Euclidea con Ωk appartenente alla classe k errorek 2 = k(Ω − Ωk )k2 (3.13) Scegliendo una soglia adeguata potremmo concludere che una data immagine apparterr`a ad una data classe se in primo luogo supera la soglia (altrimenti la faccia risulta sconosciuta) e il valore della distanza risulta minima per quella classe. Ricapitoliamo con un piccolo esempio, formato dai sei individui mostrati in figura 3.4. Creiamo il nostro training set, le immagini vengo ridimensionate con i passaggi illustrati nel paragrafo precedente per creare input 100x100. Viene mostrato in figura 3.5 lo spazio delle immagini con M =6, anche se, avendo solo un immagine per ogni classe, questo non ci garantisce apprezzabili risultati ma e solo fatto solo per mostrare il funzionamento semplice del metodo eigenface . Adesso creiamo l’average face che rappresenta la media di tutte sei le nostre immagini(figura 3.6). Utilizzo per questo esempio sei eigenface che vengono mostrate in figura 3.7. Quando 34 3.2 – Riconoscimento tramite eigenfaces (a) “Angelina” (b) “Brad” (c) “Io” (d) “Matteo ” (e) “Bimbo” (f) “Ma ” Figura 3.4: Esempi per face recognizer Figura 3.5: Immagini pre-processate abbiamo creato il nostro image space ed addestrato il modello, scegliendo per pesi ad esempio eigenface + 11.5%(eigenface1) − 47%(eigenface2), . . . , −2.6%(eigenface6) (3.14) in pratica Γ `e la nostra immagine sconosciuta, si Φ = Γ − Ψ , minimizziamo effetua PK l’errore (anche detto distanza dal face space) Φ − i=1 wi ui . Se la faccia raggiunge la soglia `e riconosciuta. Selezioniamo come immagine da riconoscere un altro esempio del campione numero 1 (“angelina”). Viene prima, come si vede dalla figura 35 3 – Riconoscimento visuale Figura 3.6: average face Figura 3.7: eigenfaces 3.8a, ricostruita l’immagine dall’average image, i risultati mostrano che anche se di poco il volto viene riconosciuto ed assegnato alla classe numero 1 che appartiene a “Angelina”. Per terminare diciamo che possiamo sostituire al posto della distanza Euclidea, la distanze di Mahalanobis che si comporta meglio soprattutto quando esiste una variazione lungo tutti gli assi kΩ − Ωk k = 3.2.1 K X 1 (wi − wik )2 λ i=1 i (3.15) Fisherfaces Interessa introdurre anche un altro metodo di riconoscimento che garantisce risultati migliori sopratutto in presenza di variazioni di luce considerevoli, il cosi detto 36 3.2 – Riconoscimento tramite eigenfaces (a) “Ricostruzione immagine test” (b) “Risultati” Figura 3.8: Ricostruzione e risultato Fisherfaces [31][32]. Proprio quando si va a fare classificazione il metodo eigenfaces non offre grandi risultati dal punto di vista della separazione delle classi. Il motivo risiede nel fatto che la divisione dipende anche da elementi interni alla classe. Infatti con diverse illuminazioni o pose facciali varie utilizzando PCA queste caratteristiche vengono conservate e creano a volte disuguaglianze all’interno delle classi stesse e non vengono separate decentemente. Si introduce per questo LDA(linear discriminant analysis), una tecnica di riduzione della dimensionalit`a lineare e anche supervisionata che si occupa principalmente di massimizzare la separabilit`a tra le classi. Si definiscono le matrici Sw e Sb , la prima riguarda la distribuzione dei vettori per ogni classe dal centro, la seconda indica come i centri sono sparpagliati rispetto al centro generale dell’intera distribuzione. Sw = S X mi Ci (3.16) i=1 Sb = S X mi xi − x0 i=1 37 xi − x0 T (3.17) 3 – Riconoscimento visuale T 1 X C = x − x i x − xi i mi x∈P i 1 X x xi = m i x∈Pi S 1 X mi xi x0 = m i=1 (3.18) Dove con classe Pi = {xi ∈ <n |i = 1, . . . , mi } ho un insieme di mi pattern n-dimensionali ed mi cardinalit`a della classe Pi . Esistono numerosi criteri di ottimizzazione che sono stati sviluppati in questi anni (Kernel LDA, Subclass Discriminant Analysis, Two-dimensional LDA), tra i pi` u usati c’`e quello di usare la quantit`a J1 = tr Sw−1 Sb = n X λi (3.19) i=1 con tr traccia della matrice, per la massimizzazione di J1 lo spazio ridotto ideale si ottiene tramite il calcolo degli autovettori relativi ai primi k autovalori della matrice Sw−1 Sb . Ricapitolando, quando ben combinate le eigenfaces e gli autovalori permettono di generare ogni immagine compresa all’interno di un training set ma il metodo pu`o anche essere usato per differenziare alcune delle facce particolari dell’insieme da addestrare; se un individuo in alcune immagini ha gli occhiali ed in altre no, ci dovrebbe essere all’interno delle eigenfaces almeno un elemento che compare con gli occhiali, cos`ı nell’immagine di training la combinazione tra gli egeinfaces con gli occhiali avr`a un alta percentuale mentre quella senza una bassa percentuale. Considerando 3 persone con 10 facce ogni individuo, ci sono 30 eigenfaces e autovalori che possono cos`ı differenziare 30 volti nel training set, queste dovrebbero a loro volta essere ordinate in ordine di importanza, visto che naturalmente le prime avranno la maggior parte delle differenze mentre le ultime a causa dell’elevato rumore non offrono nessun contributo utile. Nel metodo Fisherfaces invece di dover calcolare immagini speciali (eigenface e autovalori) per ogni immagine del training set, si calcola solo uno speciale autovettore e autovalore per ogni classe (immagini di una 38 3.3 – Riconoscimento di oggetti qualsiasi persona). Nello stesso caso precedente con 3 persone avremo solo tre fisherfaces e autovalori. Entrambi i metodi usano una average face per ricostruire l’immagine all’interno del set. In figura 3.9 nel caso di un esempio comprendente 3 individui con 4 immagini ognuno, eigenfaces ha bisogno di dodici autovalori mentre fisherface in questo caso solo due. Figura 3.9: EigenFaces (sinistra) e Fisherface (destra) tratto da [27] 3.3 Riconoscimento di oggetti qualsiasi Un’altra delle caratteristiche implementate in FOVRA, `e la possibilit`a di farsi identificare mediante il riconoscimento di un oggetto qualsiasi preventivamente fatto addestrare al sistema. L’oggetto pu`o essere una cosa qualsiasi, da un tesserino ad un portachiavi o ad una felpa con disegno stampato, di piccole o grandi dimensioni ma che comunque deve essere fatto prima registrare al software. L’utilizzo di questo metodo pu`o rendere l’accesso semplice e rapido per un utente. Il sistema di riconoscimento `e reso possibile grazie all’algoritmo SURF (Speeded Up Robust Feature [33]) ispirato al precedente SIFT (Scale-invariant feature transform [34]) del 1999, anche se in verit`a esiste una versione migliorata uscita nel 2009 ASIFT (Affine-SIFT [35]) che garantisce eccezionali risultati anche in condizioni in cui l’oggetto da identificare risulta soggetto a transizioni tilt (riferito ad angoli di inclinazione elevati). Questi algoritmi si occupano di selezionare all’interno di un 39 3 – Riconoscimento visuale immagine determinate caratteristiche o features, per poi andarle a rilevare all’interno di un’altra immagine (figura 3.10). Cerchiamo di capire un p`o meglio come funziona SURF. (a) “esempio con ASIFT[35]” (b) “esempio con SURF” Figura 3.10: Metodi di estrazione e riconoscimento features 3.3.1 Speeded up robust feature Sviluppato nel 2006 da Herbert Bay [36] rappresenta l’algoritmo implementato in FOVRA. Il metodo in primo luogo deve selezionare dei punti di interesse che all’interno di un’immagine possono essere, angoli, regioni di spazio con rilevanza particolare, giunzioni a T, ecc, una volta trovati questi punti che devono avere la propriet`a di poterli caratterizzare sotto differenti punti di vista e condizioni, definiamo il vettore di features come i punti intorno al punto di interesse. Questo vettore che descrive la feature deve essere caratteristico ma come dice il nome dell’algoritmo deve garantire robustezza al rumore, alla posizione, a cambiamenti geometrici e fotometrici. Il descrittore (descriptor ) deve combaciare all’interno di immagini se presente, prendendo come riferimento la distanza tra vettori (Mahalanobis o Euclidea). Un altro valore importante `e la dimensione di questi descrittori, naturalmente un vettore 40 3.3 – Riconoscimento di oggetti qualsiasi grande riesce a descrivere meglio la feature ma crea dall’altra una lentezza nell’acquisizione. Si passa quindi attraverso tre fasi principali: 1. Rilevazione delle zone di interesse 2. Estrazione di vettori feature che descrivono la zona di interesse 3. Confronto tra immagini per trovare matching La rilevazione dei punti di interesse all’interno di un’immagine fa uso di una approssimazione della matrice Hessiana, che si pu`o calcolare anche in questo caso, come nel caso gi`a visto in precedenza con l’algoritmo di Viola-Jones, dalle immagini integrali, riducendo drasticamente la computazione (che comunque dipende anche dalla dimensione dei filtri). Ricordiamo che calcolare la somma dell’intensit`a all’interno di una regione rettangolare di un immagine delimitata da quattro punti richiede solo tre addizioni. Si cerca di rilevare zone significative (blob structure [36]) in posizioni dove il discriminante della matrice `e massimo, perci`o dato un punto p = (x, y) in un immagine I, la matrice Hessiana H(p,σ) in p alla scala σ (anche la scala in questa implementazione `e legata al determinante) si definisce " # Lxx (p, σ) Lxy (p, σ) H(p, σ) = Lxy (p, σ) Lyy (p, σ) (3.20) dove Lxx (p, σ) `e la convoluzione alle derivate parziali seconde di una gaussiana ∂2 g(σ) ∂x2 con l’immagine I nel punto p. Le gaussiane offrono grande versatilit`a nel caso di scalature nello spazio ma devono essere adattate: si applica una discretizzazione, un taglio e per ultimo si approssimano arrivando al risultato di figura 3.11 (σ = 1.2) con matrici 9x9 denominate Dxx , Dyy e Dxy . Calcolo il determinante dell’hessiana approssimata 0 det(H ) = Dxx Dyy − (wDxy )2 (3.21) inserendo anche un peso w che garantisce la conservazione di energia dovuta all’approssimazione w= |Lxy (σ)|F |Dy y(dimfiltro)|F |Lyy (σ)|F |Dx y(dimfiltro)|F 41 (3.22) 3 – Riconoscimento visuale Figura 3.11: derivate parziali seconde delle gaussiane approssimate con |.|F norma matriciale di Frobenius pari a qP n i,j=1 |aij |2 . In questo caso specifi- co si ha anche σ = 1.2 e dimfiltro = 9. Il determinante approssimato dell’hessiana rappresenta la zona di interesse dell’immagine nella locazione p, tutte le risposte sono salvate in una mappa che le conserva con differenti scalature, questo perch´e capita che le immagini devono essere confrontate tra di loro con scale di appartenenza diversa. Lo spazio delle scale pu`o essere pensata come un’immagine all’interno di una piramide in cui il suo scorrimento dal basso verso l’alto ne determina un rimpicciolimento. Per ovviare al problema della velocit`a sostituiamo l’immagine all’interno della piramide con il filtro 9x9 che viene convertito in risoluzioni maggiori a seconda delle esigenze senza avere impatto sulla computazione. Lo spazio delle scale `e inoltre suddivisa in ottave ed ogni ottava a sua volta `e divisa in livelli, a cui in seguito si applica una interpolazione. I filtri devono sempre garantire un centro per cui l’ingrandimento del filtro deve essere sempre in numero dispari. Si parte con 9x9, poi 15x15, 21x21, aumentando la scala si deve aumentare anche il filtro di partenza quindi la prossima ottava avr`a 15x15, 27x27, 39x39, ci si ferma quando l’immagine originale risulta pi` u piccola dei filtri. Il numero dei punti di interesse scende rapidissimamente durante l’aumento della dimensione dei filtri. Per descrivere la distribuzione di intensit`a vicino ai punti di interesse viene usata la risposta di un Haar wavelet del primo ordine nella direzione x e y di dimensione 64 sempre con uso dell’immagine integrale. Questo ci serve per poter dare un verso alla distribuzione dei nostri punti di interesse, creando un sistema per far ottenere al modello la propriet`a di invarianza alle rotazioni. Una volta ottenuta la risposta della wavelet e pesata con una gaussiana centrata nei punti di interesse, le risposte rappresentano i punti nello spazio e l’orientazione dominante `e data dalla somma di tutte le 42 3.3 – Riconoscimento di oggetti qualsiasi ascisse e la somma di tutte le ordinate calcolate con una finestra scorrevole: i valori massimi definiscono il vettore che d`a l’orientazione al punto di interesse. Quello che Figura 3.12: Orientamento delle zone di interesse si fa `e costruire una regione quadrata (figura 3.12) centrata nel punto di interesse ed orientata lungo la direzione trovata sopra,si ridivide la regione in quadrati 4x4 ad ogni quadrato si calcola la risposta della wavelet Haar nei 5x5 punti campionati, vengono estratte le somme delle risposte dell’orientazione di x e y definite per semP P P P plicit`a dx e dy ed i rispettivi valori assoluti |dx| e |dy|. Possiamo dire che un vettore che descrive una zona di interesse ha dimensione 4x4=16 per un vettore formato da 4 componenti cio`e 64 (SIFT conta un vettore di dimensione 128). Durante la fase del confronto quello che viene fatto `e considerare il segno del Laplaciano ∇f (x) = n X ∂ 2f i=1 ∂x2i (x) (3.23) che `e definito inoltre come la traccia della matrice Hessiana, il quale distingue zone di interesse con intensit`a alta e zone con intensit`a bassa, in pratica solo zone con segno Laplaciano uguale (stessa feature con stesso contrasto ) vengono prese in considerazione per il confronto. 43 3 – Riconoscimento visuale 3.4 Riconoscimento numeri carta di credito Durante l’implementazione del sistema per il riconoscimento di oggetti dentro FOVRA, visto che il progetto era nato in ambito bancario per un accesso sicuro, `e stato proposto di pensare che tra gli oggetti utilizzati tra gli utenti potesse esservi il bancomat o carta di credito. L’approccio di estrarre features con SURF sembrava poco percorribile. Lo schema 3.13 riassume l’idea generale. L’utente in pratica registra i propri dati all’interno di un database, dati che sono Figura 3.13: Schema generala accesso con carta comprensivi del proprio codice bancomat o di carta di credito. Nel momento in cui si cerca di accedere si mostra la tessera alla videocamera (smartphone, pc, postazione apposita) e tramite elaborazione ne viene estratto il codice impresso, tale codice `e confrontato con quello contenuto all’interno del database e se coincide con l’utente registrato l’accesso `e garantito. Risulta ovvio che questo metodo non deve essere pensato come unico modo di accesso, ma deve essere a mio avviso affiancato a qualunque altro sistema di sicurezza, username e password, riconoscimento facciale, riconoscimento vocale o riconoscimento di un oggetto. Le cause per cui da solo non 44 3.4 – Riconoscimento numeri carta di credito risulti troppo attendibile spaziano dalla facilit`a nel reperire informazioni personali ad addirittura errori riconducibili all’estrazione software. 3.4.1 Informazioni di una tessera da una videocamera Partiamo dicendo che l’estrazione di informazioni scritte su di una tessera bancomat o carta di credito risulta un compito abbastanza arduo. Una delle motivazioni principale risiede nella non omogeneit`a delle varie tessere magnetiche, ognuna delle quali possiede caratteristiche di colori o disegni molto diverse tra loro. Risulta quindi necessario estrarre componenti con passi precisi ma che variano da caso a caso, in modo da rendere il compito del rilevatore OCR (optical character recognition [37]) che andremo ad usare, il pi` u semplice possibile. Partiamo con rilevare la carta come mostrato in figura 3.14a. Questo pu`o essere fatto tramite metodi di segmentazione dell’immagine, ossia possiamo cercare di identificare all’interno di un istantanea elementi di forma rettangolare regolari di una certa dimensione in relazione all’acquisizione fatta e che tramite l’applicazione di filtri ritagliarne i bordi. Un altro modo che a mio avviso a molti vantaggi riguarda l’uso dell’algoritmo SURF. Questa metodica necessita oltre che la registrazione del codice numerico all’interno del database, anche un immagine della stessa tessera. Comunque a meno che la tessera non presenti elementi di personalizzazione (penso a carte Postepay in cui `e possibile la personalizzazione tramite fotografia), ogni societ`a possiede al suo interno massimo 8-10 diverse carte, per cui nel momento in cui conosco il tipo di tessera conosco quali sono i colori, gli sfondi, i rilievi, il colore della numerazione incisa e quindi riesco anche ad applicare i filtraggi necessari a ricavarmi le varie informazioni. Fatte le necessarie trasformazioni geometriche per centrare l’immagine, possiamo adesso individuare la striscia di numeri assegnata alla carta. Abbiamo la possibilit`a di scegliere se procedere utilizzando le informazioni acquisite, in questo modo risalendo al tipo di carta conosciamo dove i numeri sono posizionati in modo da tagliarli (figura 3.14b), altrimenti possiamo procedere, dopo l’applicazione di filtri che eliminano immagini e sfondi (questi filtri variano da carta a carta), verificando e studiando la distribuzione della luminanza con istogrammi verticali ed orizzontali 45 3 – Riconoscimento visuale per individuare serie numeriche. Utilizziamo comunque il primo metodo, quindi, una volta individuata la serie numerica (figura 3.14c) si fa un ulteriore passaggio chiamato metodo Otsu [38]. Questo criterio parte dal presupposto che ci troviamo in una situazione nella quale la nostra immagine contiene essenzialmente due classi, lo sfondo ed il testo (o numeri), quindi viene calcolato il threshold [39] ottimo che separa meglio le due classi, minimizzando la varianza all’interno di ogni classe. (a) “Rilevamento carta di credito” (b) “Individuazione numerazione ” (c) “Striscia numerica ” (d) “dopo metodo Otsu ” Figura 3.14: Procedura di individuazione dei numeri tessera Si definisce sogliatura un metodo semplice per segmentare immagini, dove da una scala di grigi si passa ad un immagine binaria. ( 0 se Ioriginale (x) < soglia Ibit (x) = 1 se Ioriginale (x) ≥ soglia (3.24) Per il metodo Otsu si calcola l’istogramma e la probabilit`a della luminanza dell’immagine, partendo da valori 0 per media e probabilit`a e da 1 per il threshold t (viene poi aumentato fino all’ottimo). La varianza totale delle due classi dove ωi definisce la probabilit`a di due classi di essere separate da un valore threshold t e varianza σi2 `e σω2 (t) = ω1 (t)σ12 (t) + ω2 (t)σ22 (t) (3.25) inoltre si dimostra che minimizzare la varianza all’interno di una singola classe equivale a massimizzare la varianza tra due classi, ovvero σb2 (t) = σ 2 − σω2 (t) = ω1 (t)ω2 (t)[µ1 (t) − µ2 (t)]2 46 (3.26) 3.4 – Riconoscimento numeri carta di credito Dopo il filtro di Otsu si arriva all’immagine binaria di figura 3.14d, continuando, quello che viene fatto da questo punto `e dividere ogni cifra usando un algoritmo che individua i contorni [40], ogni cifra `e ritagliata e fatta identificare ad un OCR. Chiaramente non ci riguarda come creare questo OCR ma basti pensare che il meccanismo `e di addestrare una ANN (artificial neaural network [41]) visto che stiamo parlando di sole cifre numeriche, dieci classi (0123456789). Non entriamo nel metodo di come si segmenta un carattere ma essenzialmente `e abbastanza semplice anche se necessita di tempo come sempre per creare il training set con cui addestrare il modello. (a) “Fenestratura su ogni cifra” (b) “lettura con OCR ” Figura 3.15: Segmentazione e risultato Come si pu`o notare il sistema ha identificato il numero, quello che rimane da fare `e verificare tele cifra con quello presente nel database. Siamo partiti con una carta non troppo complicata, costruendo da soli la propria rete neurale si riesce ad avere un grado di accuratezza molto elevato, la maggiore difficolt`a rimane l’isolamento delle cifre da sfondi molto complessi. 47 Capitolo 4 Software FOVRA e Test Tratteremo lo sviluppo del software FOVRA, non in ogni minimo particolare, ma affermando che la piattaforma in questione pu`o rappresentare una solida base su cui implementare nuovi metodi di identificazione e riconoscimento. Il sistema `e in grado di inglobare tecniche moderne e soprattutto rappresenta un tentativo di fondere insieme pi` u modi di accesso, da quelli biometrici con uso di riconoscimento facciale e vocale, a riconoscitori di oggetti personali. Nell’ultima parte verranno mostrati i risultati prendendo come campione 10 individui che effettuano 5 accessi ciascuno. La domanda finale a cui cercher`o di dare una risposta sar`a: su sistemi contenenti dati privati sensibili, possiamo fidarci solo delle tecniche di identificazione diretta o `e necessario usufruirne solo per la verifica? 4.1 Cosa ` e FOVRA Nato dalla collaborazione con il Gruppo Monte dei Paschi di Siena durante un periodo di stage, FOVRA (figura 4.1), `e una acronimo per face object voice recognition access, come si intuisce l’applicazione si interessa di garantire tramite dei metodi specifici l’accesso a sistemi informatici. L’idea `e nata pensando ai metodi attuali per accedere via web da PC, smartphone o tablet, a piattaforme per la gestione dei propri conti, ossia, o usando username e password, o con l’ausilio di chiavi generatrici di codici. Dato che tali metodi devono essere costantemente aggiornati e la pigrizia 49 4 – Software FOVRA e Test a volte ci porta a non effettuare spesso questa procedura, abbiamo provato a creare un software con riconoscimento biometrico che possa rappresentare una base per sviluppi futuri. Sia chiaro, non `e che questo lavoro si voglia porre come esemplare unico, esistono infatti centinaia di software dello stesso tipo, l’idea sembrava interessante e credo che la societ`a sia pronta per affrontare queste nuove metodologie. Ho voluto accettare la sfida, ammetto anche con una certa curiosit`a ed interesse. Figura 4.1: Caricamento schermata FOVRA Il programma si divide in due parti: • Registrazione dell’utente • Accesso al sistema con verifica o identificazione Le metodologie messe a disposizione dal sistema sono varie e ne abbiamo discusso nei capitoli precedenti: 1. username e password 2. riconoscimento facciale 3. parola segreta pronunciata dall’utente 4. un oggetto casuale scelto dall’utente come chiave 5. rilevatore di cifre del proprio bancomat o carta di credito 50 4.2 – Come funziona? Come detto il software rappresenta un inizio di un percorso, anche a causa dell’enorme variet`a di metodiche, che ho fatto fatica a riassumere in una tesi di laurea. Mi scuso infatti se non ho approfondito meglio determinati argomenti ma penso che esulasse dagli scopi principali, cio`e la progettazione di un sistema biometrico multimodale. Risulta comunque aperta la sfida di scrivere la conversione per un sistemi mobile, oltre che all’affinamento delle attuali tecnologie implementate. 4.2 Come funziona? L’applicazione `e stata sviluppata sotto Windows 64bits con l’uso di Visual Studio 2012 utilizzando il linguaggio Visual C#. Per quanto riguarda le librerie usate nel progetto, dato l’uso di C# ho optato per un wrapper di OpenCV (Open Computer Vision [42]) chiamato Emgu CV [43], con aggiunta qua e l`a di ottimizzazioni con CUDA (Compute Unified Device Architecture [44]) capace di aumentare anche di 10 volte l’eleborazione (usata per esempio in SURF per acquisire frame di test in tempo reale). Per la parte audio solo per piccole esigenze ho usato NAudio [45], mentre per lo studio con modelli nascosti di Markov ho scelto Accord.NET [46]. Ricapitolando: • Emgu CV versione 2.9.0.1622 beta: procedure relative alla parte visuale. • NAudio versione 1.7: campionatura e registrazione audio. • Accord.NET versione 2.12 : per uso di modelli di Markov. Visto lo sviluppo sotto Windows sono state usate inoltre la libreria di classi del Framework.NET (versione 4.5), WPF (Windows Presentation Foundation) per la parte riguardante l’interfaccia grafica. Queste classi risultano molto utili e flessibili visto che sfruttano l’accelerazione hardware delle moderne schede grafiche, il linguaggio di programmazione risulta per di pi` u scollegato da quello riguardante la costruzione dell’applicazione, che usa infatti XAML (eXtensible Application Markup Language [47]) basato su XML. I dati sono stati registrati all’interno di un database locale (SQL Server Compact 4.0) per semplicit`a anche se ammetto che tornassi indietro 51 4 – Software FOVRA e Test opterei per un semplice file XML (modificabile in modo semplice senza vari problemi che ho rilevato spostando invece il file SDF del databse Microsoft). Nulla vieta di poter esportare in un database relazionale come MySQL [48]. In aggiunta viene usata per le prove una camera con risoluzione 640x480 pixels. Avviata l’applicazione ci si trova di fronte ad una scelta iniziale (figura 4.2): nel caso l’utente non risulti registrato, si procede con l’inserimento all’interno della base di dati delle informazioni richieste. In ogni modo anche se un utente appare gi`a inserito, `e possibile aggiornare i dati con nuove immagini nel caso di scansioni facciali, sostituire l’oggetto scelto per accedere o aggiungere esempi di “parlato”. Contrariamente se si dispone gi`a di un account si pu`o procedere con la fase di identificazione. Figura 4.2: selezione iniziale FOVRA 4.2.1 Registrazione nuovo utente La fase di registrazione comincia con l’inserimento da parte di un utente della password (figura 4.3a) per l’accesso al sistema. Dopo alcuni controlli di coerenza tra cui anche il fatto di verificare se si `e presenti o no all’interno del database. Nel primo caso i dati vengono aggiornati, nel secondo caso viene avviata la registrazione normale. Il secondo passo ci porta alla fase di acquisizione delle immagini del volto (figura 4.3b). Come scelta di progetto si acquisiscono all’inizio 10 foto del viso per ogni individuo (esiste la possibilit`a di aggiornare il database inserendo 5 immagini 52 4.2 – Come funziona? (a) “Fase 1 scelta password” (b) “Fase 2 acquisizione facce” (c) “Fase 3 acquisizione audio” (d) “option: registra oggetto” Figura 4.3: Registrazione nuovo utente in pi` u a volta). Per ovviare al problema di fornire immagini troppo simili viene calcolata tra un’acquisizione ed un’altra la differenza di luminanza tra pixels con la distanza euclidea, dove x e y singoli pixel delle immagini X e Y rispettivamente v u n uX errore = kx − yk = t (xi − yi )2 i=1 53 (4.1) 4 – Software FOVRA e Test similarit`a = errore Xlarghezza · Xlunghezza (4.2) Se l’immagine risulta sopra la soglia scelta di similarit`a un box verde circonda l’immagine acquisita, altrimenti sar`a rosso (`e solo un controllo per verificare che le 10 immagini acquisite non risultino troppo statiche evitando cos`ı di non acquisire volti che non generalizzino troppo, in parole povere vogliamo che il sistema si comporti bene anche con espressioni diverse del viso). La fase successiva si occupa di memorizzare 5 esempi audio di una frase o una parola da usare come chiave di accesso (figura 4.3c) della lunghezza temporale di 3 secondi. Tra le possibilit`a offerte dal sistema tra le opzioni avanzate, vi sono: una diversa segmentazione del viso pi` u accurata; la registrazione di un oggetto da poter usare come chiave di accesso (figura 4.3d); quest’ultima funziona una volta inquadrato l’oggetto da salvare, si clicca sul box video per creare un istantanea (fermo immagine), con il mouse (o dito nel caso di smartphone o tablet) si evidenziano i contorni dello stesso, l’immagine viene ritagliata e salvata tra le informazioni dell’utente. 4.2.2 Verifica Quando si accede alla fase di verifica l’utente pu`o scegliere se utilizzare il riconoscitore facciale, vocale, tramite oggetto o lettura di una carta personale. In verifica il software si presenta come quello in figura 4.3. Sulla destra esiste una barra di livello che determina il grado di accuratezza del sistema, in questo caso `e posta a 100, cio`e viene chiesto di verificare 100 frames catturati in modo adeguato, quindi, ogni frame viene controllato all’interno dell’intero database, restituendo una previsione che viene mostrata in tempo reale. Nella figura 4.4 i 100 frames sono stati tutti indubbiamente trovati corrispondenti a ”Nicola“, restituendo una percentuale del 100%. Quando viene prelevato il frame e trasformato dal sistema in immagine test prima di effettuare la previsione tra gli individui all’interno del database, si verifica anche che superi un certa soglia, sotto la quale l’applicazione risponde con la parola sconosciuto. Premendo il tasto Verifica Voce si avvia la procedura di analisi della parola d’ordine, nel caso venga associata all’utente visualizzato, `e possibile procedere con l’accesso al sistema informatico. Il riconoscimento di oggetti si attiva 54 4.2 – Come funziona? (a) “verifica del viso” (b) “risultato verifica voce” Figura 4.4: verifica FOVRA inserendo il proprio codice cliente e mostrando l’oggetto relativo utilizzato in fase di registrazione, se risulta corrispondente con quello immesso dal cliente `e possibile ` in via di sperimentazione oltre che l’OCR di bancomat gi`a accedere con sicurezza. E a buon punto, la possibilit`a di inserire codici numerici tramite gli occhi, per ridurre la possibilit`a che un malintenzionato possa utilizzare una semplice fotografia di un utente registrato per entrare all’interno del sistema oltre ad aumentare ancora di pi` u la sicurezza. Definita la dimensione del codice a priori `e possibile creare password come da tabella 4.1. Non risulta possibile definire codici con cifre consecutive, tipo: Occhi entrambi aperti sinistro aperto e destro chiuso destro aperto e sinistro chiuso entrambi chiusi Codice 0 1 2 3 Tabella 4.1: Tabella codici con gli occhi 0023, 3310, 01221, invece sono corrette 0123, 1320, 3212, ecc. 55 4 – Software FOVRA e Test 4.3 Esperimento L’esperimento consiste nella verifica ed identificazione di 10 individui presi all’interno del database The ORL Database of Faces [49] (per i volti), ogni persona ha 10 esempi del volto, 5 esempi audio di una parola chiave scelta a caso ed un oggetto scelto come password visuale (tabella 4.2). TEST 1 • Fase 1 Vengono effettuati 50 accessi prendendo in considerazione solo l’algoritmo di riconoscimento facciale, la scelta di quale utente debba effettuare l’accesso viene fatto in modo random, quindi si calcola la percentuale di identificazioni corrette dei volti. • Fase 2 Allo stesso modo della fase 1, si effettuano 50 identificazioni solo utilizzando la word scelta per l’accesso, si calcola la percentuale di giusta corrispondenza tra la parola test e quella giusta. • Fase 3 La fase 3 si occupa di entrare all’interno del sistema con un oggetto salvato in precedenza da ognuno dei 10 individui. Prima di tutto si inserisce il codice della persona e si mostra alla telecamera l’oggetto da usare come password, anche qui si calcola la percentuale di accessi con esito positivo. Esaurita la fase di ogni singola tecnologia, infine si osserva come il processo di verifica FOVRA si comporti, dichiarando gi`a da adesso che l’unione di pi` u metodi fa diminuire FAR e FRR. TEST 2 • Verifica di 50 accessi, in cui l’utente dichiara la propria identit`a e tramite una soglia si controlla se vera o falsa, la risposta `e una percentuale. In questo test viene eseguita voce e audio, si sommano i due risultati facendo la media. 56 4.3 – Esperimento Codice persona chiave vocale 110 pomodoro 111 banana 112 peperone 113 milano 114 leonardo 115 elefante 116 leone 117 ingegneria 118 accesso 119 password chiave oggetto Tabella 4.2: Esperimento test FOVRA 4.3.1 Risultati test Per quanto riguarda il primo test, la tabella 4.3 va a sintetizzare i risultati della fase 1. Come si osserva, l’identificazione in tempo reale `e un p`o bassina, dovuto in parte alla soglia scelta per definire riconosciuto un individuo presente nel database. La seconda fase che riguarda il riconoscimento audio si dimostra molto pi` u attendibile, ricordando inoltre che si fa uso solo di 13 coefficienti Mel e 5 esempi per parola, il risultato incoraggiante `e venuto fuori grazie al basso numero di parole del vocabolario usate e senza dubbio alla presenza quasi nulla di rumore di fondo. La parte riguardo il riconoscimento di oggetti deve essere trattata con pi` u attenzione, 57 64% CORRETTE ERRATE 16% 20% SCONOSCIUTE % percentuale 4 – Software FOVRA e Test Tabella 4.3: Risultati riconoscimento facciale % percentuale 92% 8% SCONOSCIUTE CORRETTE ERRATE 0% Tabella 4.4: Risultati fase di riconoscimento audio 58 58% 19% NON RILEVATO ERRATE 23% CORRETTE % percentuale 4.3 – Esperimento Tabella 4.5: Tabella risultato riconoscimento oggetto si `e notato che l’algoritmo in questione (SURF) si comporta abbastanza bene nel momento in cui deve riconoscere oggetti la cui dimensione risulta notevole e ben definiti, soprattutto tessere o biglietti da visita, ma con oggetti fini o piccoli trova delle difficolt`a. La mia conclusione per`o trova motivazione nella dimensione in pixel dell’immagine del database, per poter eseguire un identificazione in tempo reale con 24 o pi` u frames al secondo si richiede molta potenza e le immagini catturate devono risultare snelle e ben segmentate, un altro fattore che ho notato risulta nell’uso di oggetti con colori accesi che spesso riflettono la luce eludendo il riconoscitore. Il test 1 viene vinto dal riconoscitore audio, che risulta indubbiamente molto pi` u affidabile sempre con le dovute considerazioni. Il secondo test si svolge ciclando per 4 volte tutte le 50 verifiche, esattamente per le soglie 30%, 50%, 70% e 86%. L’unione dei due grafici sopra danno nel punto di incontro (intersezione) l’equal error rate come circa il 76% il suo ottimo, non che rappresenti un valore elevatissimo ma considerando il numero di esempi usati per l’addestramento e la difficolt`a nell’effettuare i test pu`o andare bene, visto che il sistema FOVRA `e ancora in fase embrionale. 59 4 – Software FOVRA e Test False acceptance rate 40 20 0 0 20 40 60 80 False rejection rate 100 0 20 100 40 20 0 40 60 80 Tabella 4.6: Risultato FAR e FRR 4.4 Conclusioni Il progetto di FOVRA `e risultato molto stimolante ed appagante, mi sono confrontato con molti sistemi di rilevazione che non conoscevo perfettamente ed ho appreso molti spunti anche per continuare lo sviluppo di questo software, che rappresenta ` chiaro come solo l’inizio di un sistema per accedere a banche dati in modi diversi. E la parte meglio riuscita sia, senza dubbio, il lato vocale, con cui mi ero gi`a confrontato in passato durante la fase universitaria (l’esperienza ha giovato). In quel caso 60 4.4 – Conclusioni avevo affrontato il compito in maniera diversa utilizzando una rete neurale. L’uso in questo caso dei modelli di Markov si sono rivelati oltre che pi` u rapidi, molto pi` u adatti ad identificare sequenze di dati. Per quanto riguarda la domanda, e cio`e, se risulta attendibile un sistema di identificazione diretta, la risposta `e s`ı, ma nel caso in cui si predispongano in serie due o tre livelli: facciale, vocale; o facciale, vocale, oggetto; nell’ultimo caso la probabilit`a di falsi accessi si riduce pressoch´e a zero. D’altro canto per`o se il sistema non `e ottimizzato bene e si hanno pochi esempi di addestramento, si possono verificare numerosi rigetti di utenti giustamente autorizzati. 61 Elenco delle figure Elenco delle figure 1.1 Scheda per catalogare misure fisiche di Alphonse Bertillon . . . . . . 3 1.2 EER, parametro per equilibrare la fase dei falsi rigetti e falsi accessi 4 1.3 Altri metodi ad accesso biometrico . . . . . . . . . . . . . . . . . . . 6 1.4 tratto da [9] indica l’aumento con uso di sistemi multimodali . . . . 8 1.5 Schema generale del progetto FOVRA . . . . . . . . . . . . . . . . . 9 2.1 Procedura estrazione MFCCs . . . . . . . . . . . . . . . . . . . . . . 12 2.2 segnale audio campionato di due diverse parole 2.3 Risultato dell’eliminazione del silenzio e rumore . . . . . . . . . . . . 13 2.4 Funzione finestra di Hamming 2.5 Parit`a trasformata coseno, filtro e spettro di due parole 2.6 13 coefficienti Mel relativi alla parola “Peperone” . . . . . . . . . . . 18 2.7 Semplice esempio HMM . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.8 Trellis HMM 2.9 Schema riassuntivo del riconoscimento del parlato . . . . . . . . . . . 25 3.1 Metodi di rilevazione e segmentazione 3.2 metodi in algoritmo Viola-Jones 3.3 Classificatori in cascata e risultato 3.4 Esempi per face recognizer 3.5 Immagini pre-processate . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6 average face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.7 eigenfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.8 Ricostruzione e risultato . . . . . . . . . . . . . . . . . . . . . . . . . 37 . . . . . . . . . . . . 13 . . . . . . . . . . . . . . . . . . . . . 15 . . . . . . . 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 . . . . . . . . . . . . . . . . . 28 . . . . . . . . . . . . . . . . . . . . 30 . . . . . . . . . . . . . . . . . . . 30 . . . . . . . . . . . . . . . . . . . . . . . 35 63 Elenco delle figure 3.9 EigenFaces (sinistra) e Fisherface (destra) tratto da [27] . . . . . . . 39 3.10 Metodi di estrazione e riconoscimento features . . . . . . . . . . . . . 40 3.11 derivate parziali seconde delle gaussiane approssimate 3.12 Orientamento delle zone di interesse 3.13 Schema generala accesso con carta . . . . . . . . . . . . . . . . . . 43 . . . . . . . . . . . . . . . . . . . 44 3.14 Procedura di individuazione dei numeri tessera 3.15 Segmentazione e risultato . . . . . . . . 42 . . . . . . . . . . . . 46 . . . . . . . . . . . . . . . . . . . . . . . . 47 4.1 Caricamento schermata FOVRA 4.2 selezione iniziale FOVRA 4.3 Registrazione nuovo utente 4.4 verifica FOVRA . . . . . . . . . . . . . . . . . . . . 50 . . . . . . . . . . . . . . . . . . . . . . . . 52 . . . . . . . . . . . . . . . . . . . . . . . 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 64 Elenco delle tabelle Elenco delle tabelle 4.1 Tabella codici con gli occhi . . . . . . . . . . . . . . . . . . . . . . . . 55 4.2 Esperimento test FOVRA . . . . . . . . . . . . . . . . . . . . . . . . 57 4.3 Risultati riconoscimento facciale . . . . . . . . . . . . . . . . . . . . . 58 4.4 Risultati fase di riconoscimento audio . . . . . . . . . . . . . . . . . . 58 4.5 Tabella risultato riconoscimento oggetto . . . . . . . . . . . . . . . . 59 4.6 Risultato FAR e FRR . . . . . . . . . . . . . . . . . . . . . . . . . . 60 65 Bibliografia [1] Henry T. F. Rhodes, Alphonse Bertillon: Father of Scientific Detection, George G. Harrap; 1st edition, 1956. [2] Francis Galton, Finger Print, William S Hein e Co, 2002. [3] http://www.getnymi.com, Nymi heartbeat device. [4] Lizette Guti´errez, Patricia Melin, and Miguel L´opez, Modular Neural Network for Human Recognition from Ear Images Using Wavelets, Tijuana Institute of Technology, Tijuana M´exico, Soft Computing for Recognition Based on Biometrics,Springer. [5] Eduardo Ram´ırez, Oscar Castillo, and Jos´e Soria, Hybrid System for Cardiac Arrhythmia Classification with Fuzzy K-Nearest Neighbors and Neural Networks Combined by a Fuzzy Inference System, Tijuana Institute of Technology, Graduate Studies, Tijuana BC. M´exico, Soft Computing for Recognition Based on Biometrics,Springer. [6] http://www.slicklogin.com/, slicklogin. [7] http://www.yomiuri.co.jp, Newspaper of Japan. [8] Stefano Bonino, Il caso Aum Shinrikyo. Societ, religione e terrorismo nel Giappone contemporaneo, Edizioni Solfanelli, 2010. [9] Arun Ross, Anil K. Jain, Multimodal biometrics: an overview, West Virginia University, Michigan State University, 2004. [10] Tondi Nicola, F.O.V.R.A. Face Object Voice Recognition Access Software per l’accesso a sistemi informatici con riconoscimento multimodale, https://drive.google.com/folderview?id=0B-cYgH3n49j4bGFwRnZCOG5QREE, 2014. 67 Bibliografia [11] Dominik Niewiadomy, Adam Pelikant, Digital Speech Signal Parameterization by Mel Frequency Cepstral Coefficients and Word Boundaries, Institute of Mechatronics and Information Systems Technical University of Lodz. [12] Lawrence R. Rabiner, A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition, Proceedings of the IEEE, 1989. [13] Homayoon Beigi, Fundamentals of Speaker Recognition, Springer,2011. [14] Ram´ırez, J.; J. M. G´orriz, J. C. Segura, tion. Fundamentals and Speech Recognition System Robustness, University of Granada, Spain, 2007. [15] Fredric j. Harris, On the use of Windows for Harmonic Analysis with the Discrete Fourier Transform, Proceeding of the IEEE, 1978. [16] Heideman, M. T., D. H. Johnson, and C. S. Burrus, Gauss and the history of the fast Fourier transform, IEEE ASSP Magazine, 1984. [17] Stevens, Stanley Smith, Volkman, John, Newman, Edwin B., A scale for the measurement of the psychological magnitude pitch, Journal of the Acoustical Society of America 8, 1937. [18] Steve Young, Gunnar Evermann, Mark Gales, Thomas Hain, Dan Kershaw, Xunying (Andrew) Liu, Gareth Moore, Julian Odell, Dave Ollason, Dan Povey, Valtcho Valtchev, Phil Woodland The HTK Book , Cambridge University Engineering Department, 2006. [19] Fang Zheng, Guoliang Zhang, Integrating the energy information into mfcc, Department of Computer Science and Technology, Tsinghua University, Beijing, China, 2000. [20] Edmondo Trentin, dispense di Riconoscimento di forme, Dipartimento di ingegneria, Siena, 2007. [21] J. A. Bilmes, A Gentle Tutorial of the EM Algorithm and its Application for Gaussian Mixture and Hidden Markov Models, International Computer Science Institute, 1998. [22] Forney, The Viterbi algorithm, Proceedings of the IEEE, vol.61, 1973. [23] Paul Viola , Michael Jones, Robust Real-time Object Detection, Vancouver, Canada, 2001. [24] Charles K. Chui An Introduction to Wavelets, Academic Press, San Diego, 1992. 68 Bibliografia [25] Constantine P. Papageorgiou, Michael Oren, Tomaso Poggio, A General Framework for Object Detection, Center for Biological and Computational Learning Artificial Intelligence Laboratory MIT, 1998. [26] Yoav Freund, Robert E. Schapire, Experiments with a New Boosting Algorithm, Machine Learning: Proceedings of the Thirteenth International Conference, 1996. [27] Daniel Llis Baggio, Shervin Emami, David Milln Escriv, Khvedchenia Ievgen, Naureen Mahmood, Jason Saragih, Roy Shilkrot, Mastering OpenCV with Practical Computer Vision Projects ,Packt Publishing, 2012. [28] Sylvain Paris, Pierre Kornprobst, Jack Tumblin, Frdo Durand, A Gentle Introduction to Bilateral Filtering and its Applications, SIGGRAPH, 2008. [29] Matthew Turk, Alex Pentland, EigenFaces for Recognition, MIT, 1991. [30] M. Kirby, L. Sirovich, Application of the Karhunen-Lokve Procedure for the Characterization of Human Faces ,IEEE Transactions on pattern analysis and machine intelligence, 1990. [31] Peter N. Belhumeur , Joao P. Hespanha , David J. Kriegman, Eigenfaces vs. Fisherfaces: Recognition Using Class Specific Linear Projection, IEEE Transactions on Pattern Analysis and Machine Intelligence, 1996. [32] Naotoshi Seo, Eigenfaces and Fisherfaces, University of Maryland, 2006. [33] Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool, SURF: Speeded Up Robust Features, Computer Vision and Image Understanding (CVIU), 2006. [34] Lowe, David G. Object recognition from local scale-invariant features, Proceedings of the International Conference on Computer Vision 2, 1999. [35] Jean-Michel Morel, Guoshen Yu ASIFT: A New Framework for Fully Ane Invariant Image Comparison, Siam J. Imaging Sciences, 2009. [36] Pushkar Kolhe, Computer Vision Colors, Blob Detection, Feature Extraction and an introduction to OpenCV , IPR CS 3630, Spring, 2010. [37] Mori, S, Suen, C.Y.,Yamamoto, K Historical review of OCR research and development Proceedings of the IEEE, Volume:80, Issue: 7 ,1992. [38] Nobuyuki Otsu, A threshold selection method from gray-level histograms, IEEE Trans. Sys., Man., Cyber., 1979. 69 Bibliografia [39] Gonzalez, Rafael C., Woods, Richard E., Thresholding. In Digital Image Processing, Pearson Education, 2002. [40] Suzuki S., Abe K., Topological Structural Analysis of Digitized Binary Images Border Following, CVGIP 30 1, 1985. [41] Michael Sabourin, Amar Mitiche, Optical character recognition by a neural network, Neural Networks Volume 5, Issue 5, 1992. [42] OpenCV, http://opencv.org, http://docs.opencv.org. [43] Emgu CV, http://www.emgu.com/wiki/index.php/Main Page. [44] Nvidia, CUDA , https://developer.nvidia.com/cuda-zone. [45] NAudio, http://naudio.codeplex.com. [46] Accord.NET, http://accord-framework.net/. [47] John Sharp, Microsoft Visual C# 2012 Step by Step, Microsoft corporation, OReilly, 2012. [48] MySQL, https://www.mysql.it. [49] The ORL Database of Faces, The database of faces of AT&T laboratories Cambridge, http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html. 70
© Copyright 2024 Paperzz