F.O.V.R.A. Face Object Voice Recognition Access
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
UNIVERSITÀ DEGLI STUDI DI SIENA FACOLTÀ DI INGEGNERIA 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
Indice 1 Introduzione 1 1.1 Metodi di verifica ed identificazione . . . . . . . . . . . . . . . . . . . 2 1.2 Riconoscere un utente . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 Riconoscimento biometrico . . . . . . . . . . . . . . . . . . . . 3 1.2.2 Riconoscimento tramite comportamenti . . . . . . . . . . . . . 5 1.2.3 Uno sguardo al futuro . . . . . . . . . . . . . . . . . . . . . . 5 1.2.4 Problemi di privacy? . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Sicurezza multimodale . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 Obiettivo del lavoro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2 Riconoscimento vocale 11 2.1 Estrazione features audio . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1 Campionamento e pre-enfasi . . . . . . . . . . . . . . . . . . . 12 2.1.2 Overlap e windowing . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.3 FFT e filtri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.4 Coefficienti mfcc e lifter . . . . . . . . . . . . . . . . . . . . . 17 2.2 Addestramento di un modello . . . . . . . . . . . . . . . . . . . . . . 19 2.2.1 Hidden Markov Model . . . . . . . . . . . . . . . . . . . . . . 19 2.2.2 Algoritmo di Baum-Welch . . . . . . . . . . . . . . . . . . . . 21 2.3 Riconoscimento della classe . . . . . . . . . . . . . . . . . . . . . . . 23 3 Riconoscimento visuale 27 3.1 Estrazione dei contorni di un volto . . . . . . . . . . . . . . . . . . . 27 3.1.1 Algoritmo di Viola-Jones . . . . . . . . . . . . . . . . . . . . . 29 3.1.2 Pre-processing features viso . . . . . . . . . . . . . . . . . . . 31 3.2 Riconoscimento tramite eigenfaces . . . . . . . . . . . . . . . . . . . . 32 3.2.1 Fisherfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3 Riconoscimento di oggetti qualsiasi . . . . . . . . . . . . . . . . . . . 39 3.3.1 Speeded up robust feature . . . . . . . . . . . . . . . . . . . . 40 3.4 Riconoscimento numeri carta di credito . . . . . . . . . . . . . . . . . 44 3.4.1 Informazioni di una tessera da una videocamera . . . . . . . . 45 v
4 Software FOVRA e Test 49 4.1 Cosa è FOVRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2 Come funziona? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2.1 Registrazione nuovo utente . . . . . . . . . . . . . . . . . . . . 52 4.2.2 Verifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.3 Esperimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3.1 Risultati test . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.4 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Bibliografia 67 vi
Capitolo 1 Introduzione L’espansione a livello privato di apparecchi portatili come smartphone e tablet con- nessi costantemente alla rete, ha reso il sistema informatico sempre più 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ù utilizzato è stato quello della password. Pur- troppo 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’u- tilizzo di parole chiave semplici e correlate in modo ovvio alla nostra vita, ha fatto diventare questo metodo superato o quantomeno migliorabile. È possibile infatti 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ù del 30% delle organizzazioni utilizzerà 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à 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ò varie caratteristiche fisiche dei detenuti del carcere parigino, creando uno dei primi database di criminali in ambito scientifico forense. Il metodo però risultò troppo impreciso e di difficile applicazione, e venne perciò sostituito con una delle misurazioni biometriche più usate ai giorni nostri, l’impronta digitale [2]. Oggi questo sistema offre un altissima attendibilità, giacché 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à 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à lento nei casi in cui abbiamo bisogno di accessi frequenti. In questo caso si può adottare un livello che esclude il login classico optando per un accesso identificativo, ma il rischio di accessi non autorizzati è sempre dietro l’angolo. 1.2 Riconoscere un utente Quando si vuole accedere ad un’area privata o protetta in qualche modo, è impor- tante che solo chi effettivamente ha diritto a quel servizio o che ne abbia la proprietà, 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 è 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à, ogni soggetto deve possedere tale peculiarità; unicità, due individui non possono avere lo stesso valore di una certa caratteristica; misurabilità, cioè 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à del nostro riconoscitore, utile quando è richiesta maggiore o minore rigidità. Figura 1.2: EER, parametro per equilibrare la fase dei falsi rigetti e falsi accessi Tra i modi di identificazione più 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, atte- nuazione dei rumori del microfono,...) più 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à che abbiamo imparato. Sono esempi: • La nostra firma • Movimenti del corpo • Velocità con cui scriviamo • Timbro della voce Dobbiamo comunque prestare attenzione perché, mentre le caratteristiche biologi- che 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 sa- lute, che ci portano per esempio a non poter più scrivere con la stessa velocità o pronunciare una parola allo stesso modo. 1.2.3 Uno sguardo al futuro Cosa ci si aspetta in futuro? indubbiamente come abbiamo già detto, tutti questi metodi diventeranno sempre più usati, raggiungendo anche un miglior grado di at- tendibilità. Si stanno comunque sviluppando nuovi strumenti per riconoscere una persona o per far accedere a sistemi in modo più sicuro. In figura 1.3 vengono riassunti alcuni di questi, c’è 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 ri- cavare 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 co- me feature visto in sistema basato su neural networks [5], forse il più 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, po- tremmo 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ò usare su rilevazioni passive dell’utente). Tra le molte socetà recentemente acquisite da Google vi è 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 è possibile loggarsi in completa sicurezza. (a) “Nymi” (b) “Conformazione (c) “Velocità di orecchio” battitura” (d) “Frequenza della (e) “Riconoscimento camminata” del DNA” Figura 1.3: Altri metodi ad accesso biometrico 1.2.4 Problemi di privacy? Non tutto è rose e fiori come si usa dire, esistono comunque problemi relativi alla me- morizzazione di parametri all’interno di database, c’è sempre il rischio di non sapere di preciso chi e come utilizzerà 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 riconosci- mento facciale, in grado di verificare se un utente in passato si era reso responsabile di taccheggio; inoltre all’interno della stazione di Osaka è partita la sperimentazione per la creazione di un database in larga scala di volti, la cui applicazione è chiara vi- sto 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 (proble- ma 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ò essere di enorme efficacia affiancare in serie metodi che per- mettono 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), è stato rilevato come la somma di più metodi offra una garanzia che cresce molto più che linearmente, riducendo praticamente a zero il numero degli im- postori. 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 potreb- be 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 è stato intra- preso 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à all’utente di poter scegliere tra più sistemi di sicurezza, utilizzando un sistema di sicurezza multimodale [9]. Il software è 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 vio- late in nessun modo ed i tradizionali metodi di accesso non bastano. Essi rendono possibile aumentare ancora di più la percentuale che ci garantisce l’ingresso esclusi- vo, affiancando serialmente n metodi biometrici o altri modi alternativi. Grazie alla collaborazione con il gruppo MPS (Monte dei Paschi di Siena), ho realiz- zato 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 lap- plicazione rilevi determinati parametri, è possibile accedere facendosi riconoscere o verificando la propria identità 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à in grado di riconoscere la parola che è 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 rappresen- tazione in coefficienti MFCC (Mel-frequency cepstral coefficients). La procedura di elaborazione per giungere a tali valori è lunga e conta vari passaggi, inoltre non esiste un metodo preciso ma può variare da caso a caso (esistono procedure che riescono a ridurre la computazione totale a scapito di precisione oppure è possibile aggiungere altre elementi che rafforzano l’informazione). È utile registrare in aree non troppo soggette a rumore di fondo e la qualità del dispositivo che si occupa della cattura 11
2 – Riconoscimento vocale risulta di grande rilevanza se non vogliamo poi trovarci enormi discrepanze all’inter- no dei nostri dati. È logico come il segnale audio trasporti tantissima informazione 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 estra- zione è ricapitolato in figura 2.1. Per chiarire meglio il concetto sarà 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à tagliare la parte che non ci serve cioè 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 è 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) (2.2) 13
2 – Riconoscimento vocale dove x(n) naturalmente è 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 è stata soppressa durante il meccanismo di produzione del suono delle corde vocali umane e può amplificare l’importanza di determinate alte frequenze, oltre ad attenuare le distorsioni. 2.1.2 Overlap e windowing Il vettore in questa fase dovrà essere diviso in frame composti da 200 campioni, perchè in questo modo avremo una lunghezza di 25ms (tra i 20-30 ms è un valore per non perdere nè dare troppa importanza all’informazione racchiusa in un frame). Poi si effettua un overlap del 40%, visto che il passo successivo sarà 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à essere ri- pristinata. Veniamo adesso alla finestratura, che è eseguita per evitare discontinuità irregolari nel segmento del parlato e avere distorsioni nello spettro. Come detto l’effetto è quello di attenuare gradualmente l’ampiezza delle due estremità 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ù usata in speech recognition è quella di Hamming (figura 2.3 [15]), perchè 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 è definita come segue con 1 < n < N N = 200 2πn H(n) = 0.54 − 0.46 cos (2.3) N −1 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 è quello di applicare la trasformata di Fourier discreta ai nostri dati frammentati, più precisamente applichiamo la versione dell’algoritmo FFT (Fa- st Fourier transform [16]). Prima di vedere meglio il perchè 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 ener- gia in frequenza, come abbiamo detto nel paragrafo precedente, per simulare l’uso di un segnale periodico (che non verificato vista la discontinuità tra frame e frame) si usa la funzione di Hamming che garantisce armoniche molto più smussate e risposte in frequenza più chiare (quello che ci interessa comunque è 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ù recenti che abbassano ancora di più la comples- sità. In pratica viene usato il metodo del divide et impera, presi N punti di FFT e N divisi in 2 x 2 sotto insiemi. N −1 2π X Xk = xn e−i N nk (2.4) n=0 15
2 – Riconoscimento vocale Possiamo riscrivere Xk come: N N 2 −1 2 −1 −i 2π 2π X X Xk = x2n e N 2nk + x2n+1 e−i N (2n+1)k |n=0 {z } |n=0 {z } P ARI DISP ARI N 2 −1 N 2 −1 (2.5) −i 2π N nk −i 2π N nk −i 2π X X k = x2n e 2 +e N x2n+1 e 2 = n=0 n=0 −i 2π k N = Pk + e N Dk 0≤k≤ 2 L’ultimo passaggio oltre che alla periodicità della trasformata, è reso possibile anche 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à dei dati visto che il coseno è pari (figura 2.5a), vengono usati il modulo del risultato, e la fase non è 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à trasformata coseno, filtro e spettro di due parole della risposta in frequenza per 22 filtri triangolari passa banda (figura 2.5b), oppor- tunamente 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 considera- zione solo segnali vocale tra 0-4000Hz. La trasformazione si rende possibile tramite la funzione : f M elf = 1127 loge 1+ (2.6) 700 che trasforma la scala di applicazione dei nostri filtri da normale a scala logaritmica Mel. L’uso è 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à 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: 0 se k < f (m − 1) k−f (m−1) se f (m − 1) ≤ k ≤ f (m) f (m)−f (m−1) Hm (k) = f (m+1)−k (2.7) f (m+1)−f (m) se f (m) ≤ k ≤ f (m + 1) 0 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à 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 innanzi- tutto di creare 13 MFCCs (matrice 13x72), dalla formula dove N è il numero dei filtri usati in precedenza ed i il coefficiente Mfcc [18]: 17
2 – Riconoscimento vocale r N 2 X πi ci = mj cos (j − 0.5) (2.8) N j=1 N Nella figura 2.6 si può 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à 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 è stato eseguito riguarda l’uso di coefficienti Mel all’in- terno 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 è che risultano generalmente decorrelati permettendo l’uso di matrici di covarianza dia- gonali 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 L πn cn = 1 + sin cn (2.9) 2 L L nel nostro caso è uguale a 22 e rappresenta un parametro di configurazione. Ol- tre che questi 13 coefficienti per ogni frame, è possibile aumentare l’informazione 18
2.2 – Addestramento di un modello introducendo ulteriori parametri, uno di questi è il Log-energy [19], l’energia con- tenuta all’interno di un frame, che oltre ad essere molto indicativa è semplice da trovare. Ulteriori parametri da aggiungere possono essere i delta cepstrum che pos- sono mostrare velocità ed accelerazione, cioè possono dare informazioni riguardo la dinamicità, della traiettoria dei coefficienti mfcc nel tempo PN n=1 n(ct+n − ct−n ) dt = (2.10) 2 N P 2 n=1 n La componente delta di accelerazione può essere calcolata direttamente da questa; di solito vengono aggiunti 12, circa, componenti delta ed il valore usato di N è spesso 2. 2.2 Addestramento di un modello Preparata la nostra matrice di feature, passiamo adesso all’addestramento utiliz- zando uno dei migliori modelli per quanto riguarda il riconoscimento del parlato, soprattutto in presenza di sequenze variabili in ingresso. Parliamo di Hidden Mar- kov Model, e in questa sezione cercheremo prima di spiegare il funzionamento di tale modello, per poi addentrarci più 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è 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à di transizione con ai j = P (qt+1 = Sj |qt = Si ) dove qt è lo stato al tempo t. B = {bi (x)} è detta probabilità di emissione con bi (x) = p(x|Si ) e si assume indipendente dal tempo t; questa è la parte osservabile del modello. Le probabilità 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 è formato dalla combinazione dei parametri (con πi = P (q1 = Si ) probabilità 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 è 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)} (2.13) i Dove wi rappresenta la classe di appartenenza delle parola. Nel problema preso in considerazione possiamo dire che la classe è essenzialmente ogni individuo presente all’interno del sistema informatico (se nel sistema sono presenti 50 individui, ognuno sceglierà 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’è da prestare attenzione perchè mentre il numero delle classi è fisso, la lunghezza delle sequenze di osservazioni può 20
2.2 – Addestramento di un modello variare, ma la supervisione esiste a livello di intera sequenza. Il nostro quindi è un problema di addestramento del modello, ossia dobbiamo determinare i parametri λ in modo da massimizzare P (O|λ) una volta osservato O. Questo sarà 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à dei calcoli. Forward fase 1: inizializzazione α1 (i) = πi bi (Oi ) (2.16) fase 2: ricorsione ( N ) X αt+1 (i) = αt (j)aji bi (Ot + 1) (2.17) j=1 fase 3: fine N X P (O|λ) = αT (i) (2.18) i=1 21
2 – Riconoscimento vocale Figura 2.8: Trellis HMM Backward fase 1: inizializzazione βT (j) = 1 1≤j≤N (2.19) fase 2: ricorsione N X βt (j) = 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 β è possibile calcolare, utilizzando il passaggio backward sul trellis la quantità P (qt = Si |O, λ) rinominata γt (i), la probabilità 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 (2.21) j=1 αt (j)βt (j) Infine per ultimo calcoliamo il valore ξt (i, j) = P (qt = Si , qt+1 = Sj |O, λ) ossia la probabilità 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)aij bj (Ot+1 )βt+1 (j) ξt (i, j) = (2.22) P (O|λ) fase 3: aggiornamento di λ 22
2.3 – Riconoscimento della classe • Probabilità iniziali 0 πi = γ1 (i) (2.23) • Probabilità di transizione PT −1 0 ξt (i, j) aij = Pt=1 t=1 (2.24) T −1 γt (i) • Probabilità di emissione PT 0 t=1∧Ot =x γt (i) bi = PT (2.25) t=1 γt (i) Questi passaggi sono ripetuti iterativamente fino al raggiungimento dell’obiettivo di convergenza. Aggiungo che comunque la convergenza dell’algoritmo di Baum-Welch è abbastanza dipendente dalle condizioni iniziali ed esistono numerosi massimi in cui l’algoritmo può intrappolarsi. 2.3 Riconoscimento della classe Quando finalmente il nostro modello è 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à: max P (Q|O, λ) ⇒ max {P (Q|O, λ)P (O|λ)} ⇒ max P (Q, O|λ) (2.26) Q Q Q definiamo: δt (i) = max P (q1 , . . . , qt = Si , O1 , . . . , Ot |λ) (2.27) q1 ,...,qt−1 Viene inizializzato delta in questo modo: δ1 (i) = πi bi (O1 ) φ1 (i) = 0 1 ≤ i ≤ N (2.28) 23
2 – Riconoscimento vocale ricorsivamente sul trellis (figura 2.8) con 2 ≤ t ≤ T δt (i) = max {δt−1 (j)aji } bi (Ot ) (2.29) j φt (i) = arg max δt−1 (j)aji (2.30) j si termina con: 0 P = max P (Q, O|λ) = max δT (i) (2.31) Q 1≤i≤N 0 qT = arg max δT (i) (2.32) 1≤i≤N è possibile ricostruire il cammino ottimo ripercorrendo all’indietro l’algoritmo (back- tracking) 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 databa- se, 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 utiliz- za una distribuzione normale multivariata di dimensione 13 come PDF definita nel seguente modo ( 1 − 12 (x−µ)T Σ−1 (x−µ) x, µ ∈
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 è un pò più densa di argomenti, proprio perchè verranno trattate numerose tecniche imple- mentate 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à 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 riconoscimen- to 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ù 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 va- rianza tra un immagine di riferimento ed un template. Prima di poter effettuare (a) “Rilevazione viso” (b) “Estrazione contorno con ellissoide, semplice” (c) “Estrazione contorno (d) “Ricostruzione 3D del preciso, difficile” volto” Figura 3.1: Metodi di rilevazione e segmentazione il riconoscimento di un individuo è indispensabile riuscire ad estrarre elementi uti- li per la successiva identificazione. Per far questo è 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ù utilizzato risale al 2001. In verità non si occupa solo di volti ma di molti oggetti o elementi. Una delle sue caratteristiche risiede anche nella velocità, ed è 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ò 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, 0 0 X Integrale(x, y) = originale(x , y ) (3.1) 0 0 x ≤x,y ≤y L’immagine integrale può 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 è 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’adde- stramento 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’aumen- to delle prestazioni è reso possibile dall’uso della cosidetta cascata di classificatori, ovvero classificatori distribuiti in cascata in ordine di complessità (figura 3.3a), in modo da addestrare il successivo con campioni selezionati dalla precedente passata, che se non accettati vengono scartati e mai più ripresentati. Come esempio possiamo 29
3 – Riconoscimento visuale (a) “rettangoli per estra- (b) “immagine integra- zione 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 (b) “schema classificatori approssimata” 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 purtrop- po 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 cal- coli più semplici, non abbiamo bisogno di immagini a colori ma è sufficiente in scala di grigi, questo perché mentre con scala di grigi ho un immagine che corrisponde ad una matrice dove ogni pixel corrisponde al valore della lumi- nanza, 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 da- ti con videocamere con aspect ratio differente. Questo comporterebbe l’incoe- renza tra i dati acquisiti. Per questo è 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 è un fattore importantissimo nelle immagini catturate, dato che basse esposizioni di luce rendono il sistema non affidabile. Si deve perciò effettuare un equalizzazione per garantire una migliore luminosità ed un migliore contrasto. Quello che si fa è rendere l’istogramma cumulativo lineare. trasformazione geometrica: può capitare che l’immagine prelevata presenti del- le 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 sim- metria, la possibilità 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 1 X Ifiltrata (x) = I(xi )Gσr (kI(xi ) − I(x)k)Gσs (kxi − xk) (3.4) Wp x ∈Ω i con Gσ di solito una funzione gaussiana e termine di normalizzazione che preserva l’energia dell’immagine X Wp = 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 mag- gior parte degli elementi esterni (collo, oggetti vicino al volto, ecc) non ap- partenenti al volto in sé. Più 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 è naturale e da al riconoscitore la possibilità di estrarre anche componenti morfologiche. 3.2 Riconoscimento tramite eigenfaces Pronto il nostro dataset di input, descriviamo il metodo implementato in FOVRA cioè eigenfaces. Dato un dataset di immagini di training M della dimensione scelta 100x100 pixels, quello che faremo sarà 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 di- mensionalità, 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ò 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 di- mensione immagine in pixels), con M numero totale immagini, per cui il trainig set è Γ1 , Γ2 , . . . , ΓM . Calcoliamo la media (average face)di tutte le immagini in questo modo M 1 X Ψ= Γn (3.6) M n=1 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 è quello di ridurre il numero delle variabili) che cerca di trovare un insieme M di vettori orto- normali un che meglio descrivono la distribuzione dei dati. Il k-esimo vettore, uk massimo è scelto come M 1 X T λk = (uk Φn )2 M n=1 ( (3.8) T 1, se l = k ul uk = δlk = 0, altrimenti si può definire la matrice di covarianza di cui uk e λk sono rispettivamente autovettori e autovalori M 1 X C= Φn ΦTn = AAT (3.9) M n=1 con A = [Φ1 , Φ2 , . . . , ΦM ] che è 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. M X ui = 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ù significativi 0 ωk = uTk (Γ − Ψ) k = 1, . . . , M (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. Quin- di sarà possibile inserire questo dato all’ingresso di una macchina in grado di rico- noscere le varie classi. Uno dei metodi più 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 ap- parterrà 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 fi- gura 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 imma- gini(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 Γ è la nostra immagine sconosciuta, si effetua Φ = Γ − Ψ , minimizziamo l’errore (anche detto distanza dal face space) Φ − K P i=1 wi ui . Se la faccia rag- giunge la soglia è 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 X 1 kΩ − Ωk k = (wi − wik )2 (3.15) λ i=1 i 3.2.1 Fisherfaces Interessa introdurre anche un altro metodo di riconoscimento che garantisce risul- tati 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 moti- vo risiede nel fatto che la divisione dipende anche da elementi interni alla classe. Infatti con diverse illuminazioni o pose facciali varie utilizzando PCA queste carat- teristiche 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à lineare e anche supervisionata che si occupa principalmente di massimizzare la separabilità 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. S X Sw = mi Ci (3.16) i=1 S X T Sb = mi xi − x0 xi − x0 (3.17) i=1 37
3 – Riconoscimento visuale 1 X T C i = x − x i x − xi mi x∈P i 1 X xi = x (3.18) m i x∈Pi S 1 X x0 = m mi xi i=1 Dove con classe Pi = {xi ∈
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, è la possibilità di farsi iden- tificare mediante il riconoscimento di un oggetto qualsiasi preventivamente fatto addestrare al sistema. L’oggetto può 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ò rendere l’accesso semplice e rapido per un utente. Il sistema di riconoscimento è reso possibile grazie all’algoritmo SURF (Speeded Up Robust Feature [33]) ispirato al precedente SIFT (Scale-invariant feature tran- sform [34]) del 1999, anche se in verità 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’in- terno di un’altra immagine (figura 3.10). Cerchiamo di capire un pò 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’in- terno di un’immagine possono essere, angoli, regioni di spazio con rilevanza partico- lare, giunzioni a T, ecc, una volta trovati questi punti che devono avere la proprietà di poterli caratterizzare sotto differenti punti di vista e condizioni, definiamo il vetto- re 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 garan- tire robustezza al rumore, alla posizione, a cambiamenti geometrici e fotometrici. Il descrittore (descriptor ) deve combaciare all’interno di immagini se presente, pren- dendo come riferimento la distanza tra vettori (Mahalanobis o Euclidea). Un altro valore importante è 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’ac- quisizione. 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 appros- simazione della matrice Hessiana, che si può calcolare anche in questo caso, come nel caso già visto in precedenza con l’algoritmo di Viola-Jones, dalle immagini inte- grali, riducendo drasticamente la computazione (che comunque dipende anche dalla dimensione dei filtri). Ricordiamo che calcolare la somma dell’intensità 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 è massimo, perciò 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 è legata al determinante) si definisce " # Lxx (p, σ) Lxy (p, σ) H(p, σ) = (3.20) Lxy (p, σ) Lyy (p, σ) dove Lxx (p, σ) è la convoluzione alle derivate parziali seconde di una gaussiana ∂2 ∂x2 g(σ) con l’immagine I nel punto p. Le gaussiane offrono grande versatilità nel caso di scalature nello spazio ma devono essere adattate: si applica una discretiz- zazione, 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’ap- prossimazione |Lxy (σ)|F |Dy y(dimfiltro)|F w= (3.22) |Lyy (σ)|F |Dx y(dimfiltro)|F 41
Puoi anche leggere