Tondi, Nicola

` 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