F.O.V.R.A. Face Object Voice Recognition Access

Pagina creata da Erica Perna
 
CONTINUA A LEGGERE
F.O.V.R.A. Face Object Voice Recognition Access
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
F.O.V.R.A. Face Object Voice Recognition Access
F.O.V.R.A. Face Object Voice Recognition Access
Dedicata alla mia
famiglia
F.O.V.R.A. Face Object Voice Recognition Access
F.O.V.R.A. Face Object Voice Recognition Access
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
F.O.V.R.A. Face Object Voice Recognition Access
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
F.O.V.R.A. Face Object Voice Recognition Access
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
F.O.V.R.A. Face Object Voice Recognition Access
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
F.O.V.R.A. Face Object Voice Recognition Access
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
F.O.V.R.A. Face Object Voice Recognition Access
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