Sistema ibrido per il riconoscimento di volti

UNIVERSITÀ POLITECNICA DELLE MARCHE
FACOLTÀ DI INGEGNERIA
Corso di Laurea in Ingegneria Informatica e dell’Automazione
Sistema ibrido per il
riconoscimento di volti
Tesi di Laurea di:
Francesco Comignani
Relatore:
Prof. Aldo Franco Dragoni
Correlatore:
Ing. Germano Vallesi
ANNO ACCADEMICO 2009-2010
Indice
Indice...................................................................................................................... III
Introduzione
VI
Struttura tesi .......................................................................................... VIII
1 Sistemi Biometrici
1.1 Biometria ............................................................................................ 1
1.2 Fasi funzionamento di un sistema biometrico .............................. 3
1.3 Categorie di biometrie ...................................................................... 5
1.4 Riconoscimento del volto ................................................................. 6
2 Dimensionality Reduction
2.1 Concetti di dimensionality reduction ............................................ 8
2.2 Campi di applicazione...................................................................... 9
2.3 Tecniche ............................................................................................ 10
2.3.1 PCA .................................................................................... 10
2.3.2 ICA ..................................................................................... 12
III
2.3.3 LDA .................................................................................... 13
3 Reti Neurali Artificiali
3.1 Neurone biologico & artificiale ..................................................... 15
3.2 Architettura della rete .................................................................... 17
3.2.1 Feedforward...................................................................... 17
3.2.2 Feedback ............................................................................ 18
3.3 Apprendimento ................................................................................ 19
3.3.1 Non supervisionato ......................................................... 20
3.3.2 Supervisionato .................................................................. 20
3.3.3 Basato sul rinforzo ........................................................... 20
3.4 Tipi di rete neurale artificiale ......................................................... 21
3.4.1 Percettrone ........................................................................ 21
3.4.2 SOM.................................................................................... 22
3.4.3 GNG ................................................................................... 25
3.4.4 ART .................................................................................... 26
4 Progettazione sistema ibrido di classificazione
4.1 Sistemi ibridi .................................................................................... 28
4.2 Struttura generale del sistema ....................................................... 29
5 Principal Component Analysis
5.1 Concetti di base ............................................................................... 32
5.1.1 Varianza e covarianza ..................................................... 32
5.1.2 Matrice delle covarianze ................................................. 34
5.1.3 Autovalori ed autovettori ............................................... 35
5.2 Librerie utilizzate ............................................................................ 35
5.2.1 EasyBMP............................................................................ 35
5.2.2 Alglib.................................................................................. 36
IV
5.3 Algoritmo ......................................................................................... 37
5.4 Impostazioni della compressione ................................................. 39
6 Classificatore basato su Rete Neurale SOM
6.1 Generalità sui classificatori ............................................................ 45
6.2 SOM di Kohonen non supervisionata .......................................... 46
6.3 Misura d’errore................................................................................ 50
6.3.1 Errore di quantizzazione................................................. 51
6.3.2 Qualità di clusterizzazione ............................................. 51
6.4 Leggi di apprendimento ................................................................ 52
6.4.1 Tasso di apprendimento ................................................. 53
6.4.2 Raggio di apprendimento ............................................... 56
6.5 Algoritmo ......................................................................................... 59
7 Risultati Sperimentali
7.1 Database ........................................................................................... 61
7.1.1 ORL .................................................................................... 61
7.1.2 DIIGA................................................................................. 62
7.2 Analisi dei risultati.......................................................................... 63
Conclusioni e sviluppi futuri ........................................................................... 64
Ringraziamenti .................................................................................................... 67
Bibliografia e sitografia ..................................................................................... 68
V
Introduzione
Introduzione
I sistemi di riconoscimento facciale possono offrire ottime performance nel
riconoscimento dei soggetti attraverso l'analisi di immagini del volto, ma le
loro prestazioni non sono prevedibili se nei soggetti da riconoscere qualche
caratteristica evolve nel tempo. Se il soggetto cambia con regolarità si
arriverà sicuramente ad un punto in cui la conoscenza iniziale non sarà più
sufficiente per completare una corretta identificazione, ed il soggetto verrà
confuso con un altro individuo. Questo comportamento è davvero poco
adatto nel caso in cui il riconoscimento facciale sia usato per l'accesso ad
aree riservate o per consentire l'utilizzo di dati sensibili.
Il sistema biometrico sviluppato in [1] è basato su una serie di reti neurali
specializzate nel riconoscere ognuna una particolare parte del viso. Data
un’immagine di un soggetto in ingresso, verranno estratte le caratteristiche
o features e, successivamente, ogni rete fornirà un risultato. Sulla base di
questo insieme di uscite un condizionatore Bayesiano troverà qual è
VI
Introduzione
l’identità più probabile. Ogni rete vedrà modificata la propria affidabilità a
seconda del risultato. Una rete che sbaglia il riconoscimento di un soggetto
vede la sua affidabilità, e quindi il suo peso nella decisione, decrescere
finché, dopo un certo numero di risposte errate, esso diverrà nullo. A tal
punto, è compito del sistema posto in retroazione, riaddrestrare la rete in
maniera che questa diventi capace di riconoscere correttamente i
cambiamenti che l’hanno portata a sbagliare fino ad allora.
A questo punto vene utilizzato il concetto di finestra temporale, che
permette l’aggiornamento della conoscenza della rete solo nel momento in
cui un cambiamento diventa stabile.
La finestra temporale funge da buffer salvando le immagini di un soggetto
che causano la perdita di affidabilità di una rete. Ciò vuol dire che vi
troveremo volti con dei particolari che la rete non è in grado di riconoscere.
A tal punto sembra inevitabile dover procedere ad un nuovo
addestramento della rete nel momento in cui la finestra temporale è piena.
Ma possiamo lasciare che le immagini non riconosciute vengano usate per
riaddestrare una rete su un soggetto? Occorre usare accortezza nella
selezione delle immagini da utilizzare per il riaddestamento. Tali immagini,
infatti, potrebbero essere state non riconosciute per diversi motivi:
• il soggetto a cambiato parzialmente il suo aspetto;
• l’immagine potrebbe essere di cattiva qualità;
• il soggetto nell’immagine potrebbe essere girato o aver modificato il
suo aspetto finale a causa di un’espressione del volto;
• infine, anche se molto più raramente, la rete potrebbe non essersi
sbagliata, ma potrebbe essere stata la maggioranza delle altre a
commettere lo stesso errore.
VII
Introduzione
E’ quindi necessario porre un filtro tra la finestra temporale e la rete
neurale atta al riaddestramento.
L’obiettivo di questa tesi sarà appunto sviluppare un filtro in grado di
classificare le immagini presenti nella finestra temporale, e restituire gli
insiemi costituiti da elementi simili. Inoltre, per agevolare la fase di
classificazione delle immagini, sarà utilizzata una tecnica di compressione
per trattare gli ingressi prima che questi vengano forniti alla rete neurale,
riducendo notevolmente i dati su cui questa deve operare.
Struttura tesi
Il capitolo 1 introduce il problema della biometria ed, in particolare, il
problema del riconoscimento del volto. I concetti teorici di riduzione delle
dimensioni dei dati sono esposti nel capitolo 2, mentre quelli relativi alle
reti neurali si trovano nel capitolo 3. Il capitolo 4 mostra la struttura del
sistema sviluppato e ne motiva le scelte applicative generali.
Nel capitolo 5 e 6 vengono descritti i dettagli dell’implementazione del
sistema per quanto riguarda il blocco per la riduzione delle dimensioni e,
rispettivamente, il blocco neurale per la classificazione. Infine, il capitolo 7,
mostra le prestazioni dell’intero sistema progettato.
VIII
Capitolo 1 – Sistemi biometrici
Capitolo 1
Sistemi biometrici
1.1
Biometria
La biometria è la scienza che utilizza tecnologie e metodi per identificare
univocamente gli esseri umani attraverso l'uso discriminante delle loro
caratteristiche fisiche e comportamentali.
Essa è per lo più utilizzata per risolvere problemi di controllo degli accessi,
fornendo un’alternativa più sicura ai tradizionali metodi di autenticazione.
La biometria tenta di risolvere i punti deboli degli attuali sistemi di accesso:
•
debolezza delle password: l'utilizzo di password deboli è purtroppo
un problema molto comune, inoltre è spesso poco sentito da parte
degli utenti che tendono a ignorare e sottovalutare il problema.
Queste due caratteristiche rendono tale problema molto delicato ai
1
Capitolo 1 – Sistemi biometrici
fini della sicurezza di un sistema di accesso. L'utilizzo di password
facilmente individuabili può consentire infatti ad una terza persona
di assumere l'identità di un altro soggetto agli occhi del sistema,
permettendo a quest'ultimo di operare con gli stessi privilegi del
soggetto realmente autorizzato. Ciò può implicare rischi per la
sicurezza sia per il sistema informatico in sé, sia per la sicurezza
personale e delle comunicazioni del soggetto originale;
•
credenziali di accesso condivise: questo è un altro caso molto
comune, infatti capita spesso che si possano trovare gruppi di utenti
che condividono credenziali di autenticazione tra di loro;
•
perdita delle credenziali: è sempre possibile perdere le credenziali
se queste sono indipendenti dal soggetto che servono ad autenticare,
siano esse password oppure oggetti come badge e tesserini
magnetici o RFID.
L’idea dell’utilizzo della biometria per l’identificazione è quella di
utilizzare fattori unici associati alla fisicità del soggetto o al suo modo di
esprimersi (come l’impronta della voce, la calligrafia, ecc...).
Per molti aspetti, i dati biometrici possono essere considerati come delle
vere e proprie chiavi; il sistema li considera, infatti, come sequenze
univoche di bit. Ciò è spesso ignorato dai progettisti che affidano la
sicurezza del loro sistema informatico alla biometria. I progettisti possono
essere portati a credere che, essendo difficile da replicare la sorgente della
misura biometrica (l'impronta, la voce ecc...), il sistema risulta essere "più
sicuro". Tale ragionamento è scorretto, in quanto, un sistema biometrico
soffre comunque dei problemi fondamentali di tutti i sistemi informatici.
Se infatti le credenziali vengono salvate sottoforma di bit e questi, se
intercettati e copiati, rendono la biometria debole come qualunque altro
tipo di identificazione.
2
Capitolo 1 – Sistemi biometrici
E’ quindi necessario proteggere l’intero sistema, dai sensori esterni atti al
riconoscimento, alle stringhe identificative salvate sul database poiché la
vulnerabilità di alcuni aspetti non risiede nel metodo di riconoscimento,
ma nella sua implementazione.
1.2
Fasi di funzionamento di un sistema
biometrico
Il funzionamento di un sistema biometrico è strutturato in tre distinte
fasi:
1. enrollment: prima che un utente possa essere identificato da un
sistema biometrico occorre istruire il sistema a riconoscerlo. Il
sistema potrebbe avere bisogno di più misurazioni della stessa
grandezza per avere una buona confidenza rispetto al dato che ha
collezionato e per mantenere traccia anche della varianza tra i
diversi campioni;
2. usage: in questa fase l'utente prova ad accedere al sistema mediante
nuove misurazioni della grandezza che si valuta attraverso il
sistema biometrico. Questo confronta la nuova misura con quelle
che ha memorizzato nella fase precedente per valutare la
somiglianza tra campioni e consentire l'accesso in caso di match
positivo;
3. update: in base al tipo di analisi biometrica il dato cambia con
maggiore o minore velocità e il sistema biometrico potrebbe avere
bisogno di aggiornare la conoscenza accumulata nella fase di
enrollment. Ci sono vari criteri per eseguire l'update ed è compito
3
Capitolo 1 – Sistemi biometrici
del progettista stabilirne uno congruo con l'applicazione per cui è
usato il sistema.
Fig 1.1: Schema di funzionamento di un sistema biometrico.
Un sistema biometrico può essere usato principalmente in due modalità:
autenticazione o identificazione.
L'autenticazione è l'atto di verificare che l'utente è chi dice di essere. Per
questo motivo il nuovo campione biometrico acquisito è confrontato solo
con il campione che in precedenza era stato acquisito per quel determinato
soggetto.
L'atto di riconoscere un soggetto senza che questi abbia asserito la sua
identità è chiamato identificazione e consiste nel confrontare il nuovo
campione biometrico con tutti quelli che il sistema conosce sin dalla fase di
enrollment. Questo secondo caso è ovviamente molto più complicato di
quello precedente. L'asserzione sull'identità che un soggetto afferma di
essere può essere acquisita in un vasto numero di modi, con una smartcard elettronica, con un codice utente o, nel caso specifico del
riconoscimento vocale, dicendo il proprio nome. Queste modalità di
autenticazione sono conosciute per essere multifactor, nel senso che spesso
4
Capitolo 1 – Sistemi biometrici
l'utente deve dimostrare la sua identità o con qualcosa in suo possesso o
con qualcosa che conosce o con qualcosa che è. Nei sistemi biometrici si
utilizza il terzo tipo di fattore, cioè dimostrando attraverso la fisicità o il
comportamento la veridicità dell’autenticazione.
1.3 Categorie biometriche
Sebbene esistano molte tipologie di biometrie esse si distinguono in due
macrocategorie:
•
Fisiologiche
•
Comportamentali
Il tipo di biometria definito fisiologico si basa su misurazioni di parti
corporee o sull'analisi delle sue forme. Come esempi di questo tipo
possiamo riportare: impronte digitali, scansioni delle mani, scansioni delle
vene, scansioni dell'iride oculare, scansioni della retina, riconoscimento
facciale. Queste diverse analisi biometriche hanno in comune che sono
tutte basate su misurazioni "statiche" di specifiche parti del corpo.
Il tipo di biometria comportamentale si concentra maggiormente su
qualcosa che il soggetto deve fare, piuttosto che una semplice misurazione
di una parte del corpo; l'utente è chiamato a verificare la sua identità
replicando una sua azione specifica. Sono di questo tipo i riconoscimenti
della scrittura, del keystroke, il riconoscimento vocale o del modo di
camminare.
5
Capitolo 1 – Sistemi biometrici
Fig1.2: Categorie biometriche.
1.4 Riconoscimento del volto
Il riconoscimento del volto, è la branca della biometria fisiologica, che si
occupa di sviluppare algoritmi e tecniche matematiche per l’autenticazione
o l’identificazione di soggetti attraverso l’estrazione di caratteristiche
fondamentali dei volti.
In genere si può affermare che il riconoscimento biometrico facciale è
basato sul confronto di due immagini del volto. Per realizzare questo
confronto però, non basta analizzare le immagini pixel per pixel, perché le
potrebbero avere inquadrature differenti dei soggetti sia perché i soggetti
potrebbero assumere espressioni del viso differenti nelle immagini. Per tale
motivo sono stati pensati diversi algoritmi per estrarre il contenuto delle
foto e confrontare i volti contenuti.
Ci sono essenzialmente due tipi di approccio ai fini dell'estrazione delle
feature, o caratteristiche, per il riconoscimento facciale: il template
matching olistico, la ricerca locale di feature basata su schemi e variazioni.
Nel tipo olistico l'analisi biometrica viene svolta sull'intera faccia,
direttamente sotto forma di immagine che è poi trasformata in un pattern
6
Capitolo 1 – Sistemi biometrici
di ingresso, o attraverso l'uso di un vettore generato da una qualche fase di
preprocessing a partire dalle immagini dell'intera faccia.
Nell'altro tipo di approccio, quello geometrico, si tenta invece di
individuare le componenti più importanti del volto nell'immagine. A quel
punto, sono computate le distanze relative e le grandezze delle feature.
L'insieme delle misure costituisce il vettore rappresentativo di quella
immagine. Questo tipo di metodo è più adatto a grandi variazioni in scala
delle immagini ed è più robusto, ma è generalmente più complesso, ed ha
bisogno di un numero maggiore di passi per raggiungere il suo scopo.
Esistono inoltre tecniche ibride che usano alcuni concetti dell'una e alcuni
concetti dell'altra, ad esempio possono usare delle funzioni per l'estrazione
delle feature di un volto e poi analizzare singolarmente in modo olistico
quelle parti.
Sulla base di questi bisogni vari studi sono stati svolti per trovare un buon
compromesso sul numero di colori di grigio da usare per la
rappresentazione
delle
immagini.
La
riduzione
della
dimensione
dell'analisi può essere raggiunta anche attraverso l'uso di opportuni
algoritmi di dimensionality reduction.
Il compito del riconoscimento attraverso immagini del volto soffre del
problema della grande variabilità che può aversi all'interno di diverse
immagini dello stesso soggetto. Per risolvere il problema della variabilità
sono possibili vari approcci:
•
per ogni soggetto vengono conservate più template, una per ogni
espressione facciale fondamentale, o orientamento della testa;
•
vengono usate template deformabili in un modello tridimensionale
del volto umano;
•
si considerano tali variazioni nel processo di estrazione delle feature.
7
Capitolo 2 – Dimensionality Reduction
Capitolo 2
Dimensionality Reduction
2.1 Concetti di dimensionality reduction
La dimensionality reduction, o riduzione delle dimensioni, in statistica, è il
processo atto a ridurre il numero di variabili prese in considerazione nella
osservazione di un evento.
Il problema degli insiemi di dati fortemente multidimensionali è che non
tutte le variabili presenti sono necessarie per capire il fenomeno osservato.
Mentre esistono metodi computazionalmente costosi in grado di creare
modelli predittivi per dati multidimensionali, in molti campi rimane la
necessità di ridurre la dimensione dei dati prima del loro utilizzo.
In termini matematici, il problema della riduzione delle dimensioni può
essere espresso come segue:
8
Capitolo 2 – Dimensionality Reduction
data una variabile con p dimensioni
x = ( x1 ,..., x p ) T
una sua rappresentazione k-dimensionale
è necessario trovare
s = ( s1 ,..., sk )T con k ≤ p che
riesca ad esprimere le informazioni originali. Esistono diversi nomi con cui
i vettori p-dimensionali vengono chiamati in accordo con il contesto
d’utilizzo. Nell’apprendimento automatico si è soliti chiamarli attributi
mentre in informatica vengono detti features. In questo documento
verranno utilizzate entrambe le notazioni.
Le tecniche di dimensionality reduction posso essere distinte in due
categorie:
•
feature selection, nel caso in cui la riduzione delle dimensioni viene
svolta cercando un sottoinsieme di variabili nei dati originali in
modo da poter esprimere, con la minor perdita di informazione
possibile, gli stessi dati utilizzando però un minor numero di
features;
•
feature extraction, dove la trasformazione di dati fortemente
multidimensionali in dati con poche dimensioni viene svolta
attraverso un processo di combinazione delle feature presenti nei
dati originali, al fine di formare nuove variabili che, seppur in
numero minore, riescano ad esprimere la stessa quantità di
informazioni delle originali.
Nei paragrafi successivi verranno introdotte applicazioni e tecniche dei
metodi di dimensionality reduction.
2.2 Campi di applicazione
Negli ultimi decenni i progressi svolti in campi come l’archiviazione su
calcolatore o la raccolta dei dati hanno portato ad un aumento
9
Capitolo 2 – Dimensionality Reduction
esponenziale delle informazioni nella maggior parte dei campi di studio. Il
ruolo delle tecniche di dimensionality reduction è divenuto sempre più
importante negli ultimi anni trovando larga applicazione in tutti gli aspetti
della quotidianità.
Importanti applicazioni di tali metodi sono:
•
il trattamento delle immagini per applicazioni di classificazione,
come per esempio l’analisi automatica delle immagini satellitari per
monitorare le condizioni meteorologiche e per i sistemi di
riconoscimento biometrico;
•
per ricavare particolari informazioni da un insieme di dati
eccessivamente esteso, come l’analisi di dati finanziari per predire
gli andamenti del mercato;
•
per ridurre, o eliminare completamente, le componenti di disturbo
presenti all’interno dei dati, utilizzato nel trattamento delle
immagini e nelle telecomunicazioni per eliminare le interferenze tra
segnali.
2.3
Tecniche
Di seguito verranno presentate le più comuni tecniche di dimensionality
reduction.
2.3.1 PCA
Nota con diversi nomi quali PCA, Hotelling Transform o ancora
Karhunan-Loeve transform, l’analisi delle componenti principali è il
metodo più comune per scopi di feature extraction.
10
Capitolo 2 – Dimensionality Reduction
Si tratta di una tecnica statistica per la riduzione delle dimensioni che
estrae le features principali attraverso l’analisi della correlazione dei dati.
L’insieme delle features principali viene trovato attraverso la proiezione
del dataset, cioè l’insieme dei dati, in uno spazio di dimensione minore di
quello in cui è naturalmente definito. Tale spazio viene generato da delle
basi che, altro non sono, che gli autovettori della matrice di covarianza,
dove, gli assi del nuovo spazio, coincideranno con le direzioni di massima
varianza.
La riduzione delle dimensioni avviene mantenendo le features con
varianza superiore ad una certa soglia, stabilita secondo le necessità di
rappresentazione,ed ignorando tutte le restanti. Naturalmente è possibile
mantenere tutte le componenti ma, in tal caso, le dimensioni non vengono
ridotte e, l’unica modifica, è il modo in cui i dati vengono rappresentati.
Attraverso questo metodo, è possibile, mantenere l’insieme di features che
contengono la maggior quantità di informazioni, il cui indicatore è la
varianza, riducendo le dimensioni con la minor perdita di entropia
possibile.
Fig 2.1: Immagini trasformate secondo l’algoritmo PCA.
11
Capitolo 2 – Dimensionality Reduction
2.3.2 ICA
L’Indipendent Component Analysis (ICA) è una tecnica statistica per
l’individuazione
delle
componenti
principali
in
un
segnale
multidimensionale, sotto l’ipotesi di indipendenza statistica dei segnali
sorgente. Quindi, in realtà, essa nasce con lo scopo di trovare all’interno di
un insieme di dati, tipicamente segnali, le singole sorgenti generatrici. La
conoscenza di tali sorgenti ci può comunque fornire importanti
informazioni riguardo il dataset permettendoci, di fatto, di utilizzarla
come tecnica di feature extraction.
L’ICA è un caso particolare di Blind Source Separation (BSS), che descrive
l’analisi dei segnali nei casi in cui non conosciamo quasi nulla delle
sorgenti. Il tipico esempio applicativo del BSS è quello del cocktail party:
dove, all’interno di una stanza, abbiamo N persone che parlano ed
N microfoni ambientali. Lo scopo è trovare le singole voci all’interno
dell’insieme delle registrazioni.
Fig 2.2: Problema del cocktail party.
Per applicare l’ICA è necessario assumere che le componenti che vogliamo
stimare siano statisticamente indipendenti e presentino una distribuzione
non gaussiana, ciò, è giustificato dal fatto che le statistiche di ordine
superiore, di cui fa uso questo metodo, sono nulle per variabili gaussiane.
La tecnica ICA richiede che il dataset da elaborare sia costituito da features
12
Capitolo 2 – Dimensionality Reduction
a varianza unitaria ed incorrelate. Per questo motivo, solitamente, si è soliti
"sbiancare" i dati utilizzando il metodo PCA. Ciò rende più costoso, in
termini di tempi di esecuzione e costi computazionali, l’utilizzo di una
tecnica ICA.
2.3.3 LDA
La Linear Discriminant Analysis (LDA) è basata sulla ricerca dei vettori,
che costituiscono la base dello spazio in cui sono definiti i dati, che hanno
caratteristiche tali da poter discriminare il meglio possibile gli attributi
dell’intero dataset. Queste vengono poi selezionate per descrivere l’intero
insieme di dati, facendo a meno delle features che differenziano poco la
separazione tra classi.
Le tecniche di questo tipo sono spesso messe a confronto con quelle PCA.
Nella LDA, l’insieme di vettori cercati è quello che ci permette di
discriminare al meglio le classi contenute all’interno del dataset mentre,
nella PCA, cerchiamo di trovare le features con più varianza. Le differenze
non si fermano qui, in quanto, con i metodi LDA i dati non vengono
proiettati in un nuovo spazio ma, bensì, vengono create delle "regioni di
decisione", all’interno dello spazio originale, che permettono l’immediato
riconoscimento delle classi nel dataset. Per questo motivo si dice che la
LDA effettua una classificazione dei dati mentre, la PCA, effettua una
classificazione delle features.
La discriminazione viene effettuata considerando lo spettro occupato da
ogni classe e tra ogni classe, costruendo le matrici spettrali intra-classe e
extra-classe. Ciò viene svolto minimizzando il determinante della matrice
intra-classe e massimizzando quello extra-classe in modo che il loro
rapporto sia massimo. Questo particolare ci costringe a conoscere a priori
13
Capitolo 2 – Dimensionality Reduction
l’appartenenza dei dati alle classi ed il numero di quest’ultime, limitando
l’uso di tale metodo.
Fig 2.3: Insieme di variabili (a) insieme di variabili dopo la discriminazione (b).
14
Capitolo 3 – Reti neurali artificiali
Capitolo 3
Reti neurali artificiali
3.1
Neurone biologico ed artificiale
L’intelligenza artificiale è la disciplina che sviluppa tecniche che
permettono ai calcolatori di svolgere funzioni e ragionamenti tipici della
mente umana.
Lo studio delle reti neurali inizia nel 1943 con i lavori di McCulloch e Pitts
che dimostrano che una qualunque funzione logica può essere
implementata con una rete di elementi a soglia con due stati. Ogni
macchina a stati finiti può essere quindi simulata da una rete neurale
artificiale costituita da un insieme di nodi, detti neuroni artificiali.
Il neurone, o cellula nervosa, è l’unità fondamentale del tessuto nervoso
che gode di particolari proprietà che gli permettono di trasmettere,
15
Capitolo 3 – Reti neurali artificiali
ricevere ed integrare impulsi nervosi.
Fig 3.1: Neurone biologico.
La cellula nervosa è costituita da un corpo centrale, detto soma, e da due
tipi di terminazioni, i dentriti e l’assone. I dentriti raccolgono gli impulsi
nervosi trasmessi da altri neuroni, mentre l’assone propaga gli impulsi dal
soma verso gli altri neuroni. La trasmissione degli impulsi è realizzabile
grazie a dei collegamenti, posti tra le terminazioni nervose, detti sinapsi.
Le sinapsi hanno la capacità di "modulare" il valore dei segnali che
trasmettono. Infatti esse possono regolare gli impulsi che propagano
secondo il loro andamento tipico. Quindi, se un collegamento tra due
neuroni viene attraversato da segnali di piccola ampiezza, esso ridurrà il
valore di un impulso più grande avvicinandolo, in parte, a quello
dell’impulso medio
che trasmette solitamente. L’evoluzione della
modulazione sinaptica non cessa mai, infatti questa è capace di mutare le
sue caratteristiche nel tempo, adattandosi di volta in volta all’andamento
degli impulsi nervosi trasmessi.
Proprio questa capacità di adattamento ha stimolato lo sviluppo di un
oggetto che emulasse il comportamento delle cellule neurali, cioè il
neurone artificiale. Questo è un modello matematico molto semplificato
del neurone biologico costituito da una serie di ingressi e da un’uscita.
Emulando il comportamento delle sinapsi, ad ogni ingresso è associato un
16
Capitolo 3 – Reti neurali artificiali
vettore di pesi che modella i valori di input. La somma pesata degli
ingressi viene confrontata con una soglia, che determina l’attivazione, o
meno, del neurone ed il relativo valore fornito in uscita.
Una rete neurale artificiale è costituita da un insieme di neuroni artificiali,
o nodi, interconnessi. Il loro scopo è quello di acquisire informazioni,
accumulando una vera e propria conoscenza, per poi essere capaci di
risolvere efficacemente problemi dinamici nel tempo.
Le reti neurali sono solitamente organizzate in strati, o livelli, costituiti da
neuroni che svolgono tutti il medesimo ruolo. Possiamo definire tre tipi di
strati di neuroni: di ingresso, nascosti e di uscita. Non esistono limitazioni
riguardo il numero di strati da utilizzare o il numero di neuroni per strato,
tuttavia sono presenti degli schemi generali riguardanti le topologie,
quindi le modalità di connessione tra neuroni e tra livelli, e le tecniche di
apprendimento delle reti neurali.
3.2
Architettura della rete
E’ possibile configurare le connessioni tra i neuroni artificiali in vari modi.
Questi condizionano la topologia della rete nonché il suo comportamento.
3.2.1 Feedforward
Le connessioni feedforward permettono unicamente la comunicazione
unidirezionale senza la possibilità di formare cicli. Dato che, come
precedentemente detto, le reti neurali sono solitamente organizzate in
strati, tali connessioni permetteranno la comunicazione solo tra uno strato
ed il successivo, impedendo di effettuare "salti" o connessioni all’interno
17
Capitolo 3 – Reti neurali artificiali
del medesimo strato. Un esempio di rete feedforward è mostrato in figura
3.2. Questa modalità di comunicazione rende le reti che la utilizzano molto
rapide poiché, senza la presenza di cicli o di propagazione orizzontale
(cioè all’interno dello stesso livello), il segnale attraversa la rete
percorrendo la direzione più breve fornendo il risultato dell’elaborazione il
prima possibile.
Fig 3.2: Rete neurale con connessione feedforward.
3.2.2 Feedback
Le reti feedback un neurone può essere connesso a qualunque altro
neurone della rete, sia che si trovi sullo stesso livello, nel caso in cui si
parla di collegamento laterale, sia su un livello precedente o successivo.
Grazie a questo tipo di collegamento le reti feedback sono solitamente
composte da poche unità neurali poiché, grazie alla retroazione, la rete è in
grado di evolvere dinamicamente fino ad uno stato stabile attraverso il
quale viene formulata una risposta. Questo tipo di reti fa uso di molta
memoria a causa del grande numero di interconnessioni presenti, in media
molto maggiori di quelle presenti in reti feedforward.
18
Capitolo 3 – Reti neurali artificiali
Fig 3.3: Rete neurale con connessioni feedback.
3.3
Tipi di apprendimento
Come già detto, l’obiettivo di una rete neurale è quello di acquisire una
propria conoscenza dalle informazioni fornitegli in input per formulare
soluzioni a problemi che evolvono nel tempo. E’ necessario, quindi, che
alle reti venga data la conoscenza necessaria per poter lavorare. Ciò viene
fatto in un processo detto apprendimento, o addestramento, che viene
eseguito sulla rete prima che questa possa iniziare ad essere utilizzata.
Esistono diversi approcci all’addestramento delle reti neurali, questi, si
basano tutti sulla modifica dei vettori dei pesi che costituiscono le
interconnessioni tra neuroni. La modifica di questi valori viene effettuata
attraverso formule matematiche dette leggi di apprendimento. Solitamente,
l’architettura della rete neurale, non vincola l’utilizzo di un particolare
approccio di addestramento, ma è possibile utilizzare qualunque
paradigmi esistente senza avere la necessità di cambiare modello di rete.
19
Capitolo 3 – Reti neurali artificiali
3.3.1 Non supervisionato
La tecnica di apprendimento non supervisionata prevede la modifica dei
pesi attraverso l’uso delle sole variabili di ingresso. In questo modo la rete
autogestisce la sua evoluzione non richiedendo il controllo da parte di
entità esterne. Questo metodo viene solitamente utilizzato per problemi di
data mining, cioè problemi in cui non si hanno informazioni oltre ai dati
d’ingresso. In tali ambiti si richiede alla rete neurale una certa
indipendenza organizzativa, cioè la capacità di estrarre informazioni dai
dati in ingresso e trovare legami che le leghino in modo da poter stabilire
un criterio di discriminazione valido per gli ingressi originali.
3.3.2 Supervisionato
Nel caso in cui si disponga di un set di ingressi correlato dalle uscite
corrispondenti è possibile applicare il paradigma di apprendimento
supervisionato. Attraverso gli esempi ingresso-uscita la rete modifica i
vettori dei pesi in maniera che questi abbiano errore minimo nel calcolare i
risultati relativi agli ingressi esempio. Completata la procedura, la rete è in
grado di stabilire la relazione che lega gli ingressi alle uscite e diventa
utilizzabile con qualunque input. Questo tipo di approccio viene
solitamente utilizzato per problemi di classificazione.
3.3.3 Basato sul rinforzo
L’apprendimento basato sul rinforzo è un ibrido tra i due metodi
presentati
precedentemente.
l’apprendimento
Questa
supervisionato,
tecnica
si
sull’intervento
basa,
come
esterno
per
durante
20
Capitolo 3 – Reti neurali artificiali
l’acquisizione di informazioni. La rete, infatti, riceve un segnale di rinforzo
che premia o penalizza il modo in cui ha calcolato la risposta ad un
determinato ingresso. I pesi vengono modificati in modo da massimizzare
il segnale di rinforzo, cioè in modo che la rete dia dei risultati che vengano
premiati.
3.4
Tipi di rete neurale artificiale
3.4.1 Percettrone
Il percettrone è la rete neurale più semplice nonché la prima forma di rete
mai sviluppata. La struttura del percettrone è quella del neurone artificiale,
mostrata in figura 3.4 (a), cioè un vettore di pesi per ogni ingresso ed una
funzione di attivazione a soglia.
Il percettrone può essere utilizzato singolarmente, potendo implementare
funzioni semplici come quelle booleane NOT, OR ed AND, o come rete
neurale composta da una serie di percettroni connessi con architettura
feedforward, in grado, potenzialmente, di risolvere problemi di qualunque
complessità.
Fig 3.4: (a) Percettrone (b)Rete di percettroni a tre livelli.
21
Capitolo 3 – Reti neurali artificiali
Solitamente la rete di percettroni, o MLP, MultiLayer Perceptron, viene
utilizzata con un paradigma supervisionato, quindi è necessario disporre
di un set di coppie ingresso-uscita desiderata. La fase di apprendimento
deve essere ripetuta diverse volte per permettere alla rete di acquisire
sufficiente conoscenza del legame input-output in modo da commettere il
minimo errore nella stima dei risultati. Definiamo l’unità di tempo
chiamata epoca, come il tempo necessario all’addestramento per
aggiornare i valori di tutti i pesi della rete. Solitamente l’iterazione viene
arrestata nel momento in cui l’errore, calcolato come differenza tra output
fornito
e
quello
auspicato,
non
risulta
nullo.
La
formula
per
l’aggiornamento dei vettori dei pesi è:
w(t + 1) = w(t ) + α ⋅ (g(x) − f (x)) ⋅ x
dove
(3.1)
w(t ) è il vettore dei pesi al passo t-esimo, α è il parametro di
apprendimento, cioè un numero reale positivo,
dalla rete, f (x) è l’output desiderato ed
x
g(x) è l’output fornito
è l’ingresso. Come è possibile
notare dalla formula 3.1, nel momento in cui l’uscita coincide con quella
desiderata i pesi non subiscono ulteriori trasformazioni. Solitamente, per
l’addestramento
di reti
multistrato
MLP
è
utilizzato
l’algoritmo
backpropagation, tuttavia non verrà analizzato in questa sede e, per una
documentazione a riguardo, si rimanda il lettore al testo [14].
3.4.2 SOM
La rete neurale SOM, o Self Organizing Map, è stata ideata e proposta da
Kohonen in [13]. La SOM è, probabilmente, il modello più utilizzato di rete
neurale. Essa è costituita da una mappa di neuroni, cioè un vettore,
solitamente di dimensione uno o due, collegata ad un livello di ingresso. Il
22
Capitolo 3 – Reti neurali artificiali
collegamento è di tipo feedforward ed, ogni neurone di ingresso è
collegato, tramite i vettori di pesi, a tutti i neuroni della mappa, chiamata
livello di categorizzazione o di output. I neuroni del secondo strato sono
connessi tra loro secondo uno schema di pesi chiamato
"cappello
messicano". Tale modello fa sì che se un neurone viene eccitato, allora lo
saranno anche i neuroni vicini, mentre quelli lontani verranno inibiti come
mostrato in figura 3.5. A tal punto possiamo affermare che l’architettura
della SOM è di tipo feedback, a causa delle connessioni laterali presenti nel
livello di uscita.
Fig 3.5: Andamento dei pesi nella connessione a cappello messicano.
Reti di questo tipo vengono solitamente utilizzate con paradigmi di
apprendimento non supervisionati. Il processo di apprendimento è molto
semplice: si fornisce un ingresso alla rete, che trova il neurone dello strato
di categorizzazione con la minima distanza euclidea dall’input, detto
neurone vincitore o BMU, e ne modifica i pesi secondo una formula del
tutto simile alla 3.1, che scritta alla t-esima iterazione sarà:
w(t + 1) = w(t ) + α (t ) ⋅ [input (t ) − w(t )]
(3.2)
dove input (t ) è l’ingresso, w(t ) è il vettore dei pesi associato al neurone
ed α (t ) è la legge di apprendimento, cioè una funzione matematica che
regola l’apprendimento in base al numero di iterazioni. Le reti di Kohonen
prevedono anche una seconda legge che regola l’apprendimento che,
23
Capitolo 3 – Reti neurali artificiali
solitamente, viene utilizzata quando si sceglie di non collegare
lateralmente i nodi nello strato di output. Questa stabilisce il raggio
d’azione della prima legge, α (t ) . Infatti uno schema usuale per le reti
SOM è quello di addestrare, secondo la formula 3.2, non solo la BMU ma
anche i neuroni ad essa vicini. La distanza massima entro cui devono
trovarsi i neuroni viene appunto stabilita dalla seconda legge detta raggio
di apprendimento. In questo contesto, quando parliamo di distanza,
intendiamo la distanza euclidea misurata tra i neuroni nel livello di
categorizzazione.
La durata del procedimento di apprendimento può essere stabilita a priori
o, può essere fissato un criterio di arresto simile a quello utilizzato per
l’addestramento delle reti di percettroni.
Fig 3.6: Rete SOM (a) senza connessioni laterali (b) con connessioni laterali.
24
Capitolo 3 – Reti neurali artificiali
3.4.3 GNG
Le GNG (Growing Neural Gas) sono reti neurali capaci di aumentare il
numero di nodi dinamicamente. Ogni neurone è caratterizzato da un
vettore di pesi ed un valore che rappresenta l’errore locale.
I bordi hanno un’età, in modo tale che, durante l’esecuzione, sia possibile
eliminare i bordi più vecchi per aggiornare la topologia della rete.
L’algoritmo di funzionamento è così strutturato:
1. la rete viene inizializzata con due neuroni;
2. vengono trovati i primi due neuroni vincitori rispetto l’ingresso
considerato. Se i due neuroni non sono già collegati si crea tale
connessione e si imposta la sua età a zero;
3. viene calcolato l’errore locale del vincitore, come quadrato della
distanza euclidea tra il nodo vincitore e l’ingresso;
4. i vettori del nodo vincitore e del suo vicino vengono aggiornati con
una quantità proporzionale all’errore;
5. l’età di tutti i collegamenti che partono dal neurone vincitore viene
incrementata;
6. i collegamenti troppo vecchi vengono eliminati, se dopo tale
processo alcuni neuroni rimangono isolati vengono rimossi;
7. se il numero di input considerati è multiplo intero di un certo valore
λ si aggiunge un nuovo nodo interponendolo tra il neurone con
errore locale più grande ed il vicino con errore locale più grande;
8. il vettore del nuovo nodo viene interpolato tra i valori dei due nodi
precedentemente considerati;
9. si elimina il collegamento che lega il nodo con massimo errore ed il
vicino considerato e si connettono tali nodi al nuovo neurone
inserito;
25
Capitolo 3 – Reti neurali artificiali
10. diminuiamo il valore dell’errore dei due nodi con errori massimi, e
di tutti i nodi presenti nella rete. Inoltre calcoliamo l’errore del
nuovo neurone inserito;
11. verifichiamo se il criterio di arresto è soddisfatto. Solitamente viene
richiesto un numero massimo di neuroni o che l’errore locale
massimo sia sotto una certa soglia prefissata.
Fig 3.7: Evoluzione temporale di una rete GNG. In verde sono evidenziati i
nodi aggiunti, in giallo i nodi vincitori.
3.4.4 ART
Le reti ART (Adaptive Resonance Theory) sono state sviluppate per
permettere di regolare il livello di omogeneità dei cluster all’interno di un
problema di classificazione. Tale problema è di tipo non supervisionato, se
non si conosce a priori il numero di cluster, per cui la rete viene utilizzata
per lo più con tale paradigma di apprendimento. In particolare, le reti ART,
non distinguono la fase di addestramento da quella di utilizzo, cioè, sono
in grado di apprendere durante il normale impiego.
26
Capitolo 3 – Reti neurali artificiali
Questo modello di rete prevede due strati: uno detto strato di
riconoscimento e l’altro detto strato di comparazione. Questi sono collegati
attraverso due serie di vettori di pesi, una con propagazione feedforward e
l’altra con propagazione feedback.
Durante il processo di classificazione, l’ART è capace di autoregolare il
numero di cluster in base a diversi parametri precedentemente impostati.
Il funzionamento è schematizzabile in cinque diverse fasi:
1. inizializzazione dei pesi e disabilitazione dei neuroni dello strato di
riconoscimento;
2. identificazione dell’input presentato attraverso la comunicazione
dei risultati da parte del livello di riconoscimento a quello di
comparazione e viceversa utilizzando le connessioni feedforward e
feedback;
3. confronto dei risultati ottenuti dai diversi strati;
4. ricerca della somiglianza tra i cluster già identificati e l’input preso
in considerazione, attraverso l’utilizzo di un parametro-soglia ρ ,
detto parametro di vigilanza, definito nella progettazione. La fase di
ricerca può invocare più volte le fasi 2 e 3 finché non giunge ad una
conclusione (generazione di un nuovo cluster o appartenenza ad
uno già esistente);
5. aggiornamento dei pesi, sia feedforward che feedback, del neurone
vincitore con la possibilità di utilizzare le leggi di apprendimento
analoghe a quelle delle reti SOM che estendono la conoscenza ai
vicini del vincitore.
27
Capitolo 4 – Progettazione di un sistema ibrido di classificazione
Capitolo 4
Progettazione di un sistema
ibrido di classificazione
4.1
Sistemi ibridi
Un sistema ibrido è una particolare forma di sistema dinamico che include
stati a tempo continuo ed a tempo discreto.
Più in generale, un sistema si dice ibrido quando è in grado di combinare
due o più tecniche per raggiungere un determinato scopo. I sistemi ibridi
sono particolarmente efficaci nei casi in cui il problema da risolvere è
particolarmente complicato o copre diversi campi d'applicazione.
Ciò che ha spinto e tuttora spinge all'utilizzo di questo tipo di sistemi sono
le proprietà di modularità e di robustezza. Con robustezza si intende la
28
Capitolo 4 – Progettazione di un sistema ibrido di classificazione
capacità del sistema di essere quanto più generale possibile, fornendo
risultati validi anche nel caso di ingressi meno comuni o di forti disturbi
esterni. Tale proprietà è spesso legata alla modularità, che rappresenta il
grado di indipendenza dei blocchi funzionali presenti all'interno del
sistema. Infatti, un sistema così definito, è divisibile in moduli, ognuno dei
quali svolge un preciso compito, utile nell'ambito del problema generale.
Tale livello di autonomia viene fissato durante la fase di sviluppo. Se i
sottosistemi sono completamente indipendenti permettono uno fase di
sviluppo e di testing più rapida e semplice, ma richiede anche un fase di
coordinamento dei blocchi per permettere al sistema complessivo di
funzionare mentre dei blocchi funzionali quasi dipendenti rendono più
complessa la fase di individuazione degli errori ma non richiedono passi
aggiuntivi affinché il sistema finale funzioni correttamente.
4.2
Struttura generale del sistema
In seguito ad un’attenta analisi delle più recenti pubblicazioni riguardanti
il riconoscimento dei volti attraverso reti neurali e la classificazione di
immagini, si è strutturato il sistema ibrido qui proposto.
Come è possibile notare in [4] l’utilizzo di un metodo di feature extraction
per l’estrazione delle informazioni fondamentali di un volto apporta un
notevole miglioramento delle prestazioni. I risultati in [11] confermano
quelli precedentemente analizzati. Qui infatti un sistema di riconoscimento
basato su PCA raggiunge prestazioni migliori di un classificatore statistico
fuzzy su due diversi database.
In [3] un sistema basato su feature extraction (PCA) e rete neurale ottiene
prestazioni superiori al 97% su database ORL.
29
Capitolo 4 – Progettazione di un sistema ibrido di classificazione
A questo punto diventa chiaro che il contributo di una tecnica di estrazione
delle feature, oltre ad essere una soluzione spesso adottata, aumenta
notevolmente le prestazioni e, di conseguenza, semplifica la struttura della
rete neurale posta successivamente. Tali tecniche rendono, infatti,
insensibile il sistema al mal condizionamento delle immagini, problema
sentito nel nostro caso, in quanto andremo a trattare i volti che non sono
stati riconosciuti per vari motivi, tra i quali, cattiva risoluzione, espressioni
facciali e piccoli cambiamenti nel volto. Il nostro obiettivo però è
selezionare un set di immagini qualitativamente buone ai fini del
riconoscimento. Quindi un’eccessiva robustezza alle espressioni facciali o
alle rotazioni potrebbe non essere la soluzione migliore. In conclusione
dovremo trovare un buon compromesso tra resistenza e selezione
lavorando sui parametri della PCA.
I risultati riguardanti le reti neurali non ci permettono di effettuare una
scelta con la stessa sicurezza con cui l’abbiamo effettuata precedentemente.
Questo perché il nostro problema, almeno nel campo del riconoscimento
dei volti, è poco comune. Infatti i problemi di classificazione di immagini
sono più adatti a contesti quali la medicina e le immagini satellitari.
Comunque possiamo restringere le nostre scelte alle sole reti non
supervisionate, in quanto la classificazione, è un problema di questo tipo.
In particolare, da [2] e [15] i possibili schemi di rete neurale sono ristretti
alle reti SOM, che rappresentano il classico schema non supervisionato, e le
reti ART, più complesse e performanti. In conclusione la scelta è ricaduta
sul modello Self Organizing Map. Questo perché il contributo della tecnica
PCA semplifica il compito della rete neurale che, in questa maniera, può
assumere una forma relativamente semplice, rispetto al modello ART,
senza perdite eccessive in termini di prestazioni. Le reti auto organizzanti
di Kohonen (paragrafo 3.4.2), infatti, sono la scelta migliore se si ragiona in
30
Capitolo 4 – Progettazione di un sistema ibrido di classificazione
termini di efficienza in quanto sono ben documentate, godono di buone
prestazioni e la loro complessità non è elevata.
In conclusione il sistema ibrido sviluppato sarà costituito dal blocco PCA
per la compressione delle immagini seguito dalla rete neurale SOM che ne
effettuerà la classificazione.
Fig 4.1: Schema generale del sistema.
31
Capitolo 5 – Principal Component Analysis
Capitolo 5
Principal Component Analysis
5.1 Concetti di base
Come esposto nel paragrafo 2.3.1 l’analisi delle componenti principali
(PCA) è una tecnica di dimensionality reduction.
La riduzione delle dimensioni viene effettuata trovando la correlazione tra
le variabili, o feature, ed esprimendo le informazioni solo come
combinazione di quelle non correlate. Il particolare algoritmo che andremo
a descrivere farà uso di concetti quali la deviazione standard, la varianza,
autovettori ed autovalori.
5.1.1 Varianza e covarianza
La varianza di una variabile X è un numero, indicato con var( X ) , che
32
Capitolo 5 – Principal Component Analysis
fornisce una misura di quanto siano vari i valori assunti dalla variabile,
ovvero di quanto si discostino dalla media X . Date n istanze della feature
X calcoliamo la varianza come:
n
∑(Xi − X )
var(X) =
2
i =1
(5.1)
( n − 1)
in altri termini è possibile definirla come il quadrato della deviazione
standard s :
n
s=
var(X) =
2
∑(Xi − X )
i =1
(5.2)
( n − 1)
La deviazione standard e la varianza sono definite su dataset
monodimensionali, avendo usato un vettore di dimensione n . La
covarianza è, invece, definita su insiemi di dati multidimensionali
definendo, di fatto, una misura analoga a quella della deviazione standard
e della varianza ma su una base di dati multidimensionale. Ciò è
fondamentale ai fini di trovare un legame tra diverse dimensioni, in
maniera da poter esprimere l’intero insieme di dati come combinazione
delle sole variabili indipendenti. Attraverso il calcolo della covarianza
possiamo infatti trovare quanto, una dimensione, si scosti dalla media di
un’altra dimensione. Per rendere più immediata l’espressione della
covarianza, riscriviamo la varianza di un vettore X di dimensione n
come:
n
∑ ( X i − X )( X i − X )
var(X) =
i =1
(5.3)
( n − 1)
Dato un dataset composto da due dimensioni X e
Y
entrambe di n
componenti la covarianza è data da:
33
Capitolo 5 – Principal Component Analysis
n
∑ ( X i − X )(Yi − Y )
cov(X) =
Dove
Y
i =1
(5.4)
( n − 1)
è la media aritmetica del vettore
Y . E’ immediato verificare che
cov(X, X ) = var(X) e che cov(X,Y) = cov(Y, X) .
5.1.2 Matrice delle covarianze
Nel caso in cui il dataset si estenda per più di due dimensioni possiamo
calcolare più di una covarianza. Per questo motivo è conveniente
rappresentare tali informazioni in forma matriciale, cioè attraverso la
2
2
matrice delle covarianze. Tale struttura ha dimensione n × n , dove n è il
numero di dimensioni presenti. Le dimensioni sono giustificate dal fatto
che la matrice debba contenere tutte le disposizioni con ripetizione di n
elementi presi due a due, quindi la dimensione della matrice sarà:
D n ,k = n
k
(5.5)
Con k = 2 poiché la covarianza richiede due variabili come argomento.
Inoltre per la simmetria degli argomenti della covarianza la matrice è
simmetrica con la diagonale costituita dalle n varianze delle singole
dimensioni.
 var(X 1 )

⋮
C=
 cov(X , X )

1
n
2
⋯
⋱
⋯
cov(X 1 , X n2 ) 


var(X n ) 
⋮
(5.6)
2
34
Capitolo 5 – Principal Component Analysis
5.1.3 Autovalori ed autovettori
Data la matrice A, quadrata di dimensione n, le soluzioni dell’equazione:
Det(A - λ ⋅ I) = 0
2
(5.7)
2
con I matrice identità n × n , sono detti autovalori della matrice. I vettori
soluzione del sistema di equazioni:
Det(A - λ i ⋅ I) = 0
con
(5.8)
λi , con i = 1,..., n , autovalore della matrice A , sono detti autovettori.
In particolare, il vettore xi soluzione dell’i-esima equazione è detto
autovettore associato all’i-esimo autovalore.
5.2
Librerie
Per lo sviluppo dell’algoritmo sono state utilizzate delle librerie esterne per
la semplificazione di due particolari aspetti, quali l’interfaccia con le
immagini e il calcolo degli autovalori ed autovettori.
5.2.1 EasyBMP
Durante le prime fasi di sviluppo del codice è stato necessario scegliere un
formato di immagine da utilizzare come input. La scelta è ricaduta sul
formato bitmap in quanto più semplice da gestire. La libreria EasyBMP [17]
fornisce diversi strumenti per la manipolazione dei file bitmap. In
particolar modo sono state utilizzate funzioni e strutture dati per
l’acquisizione ed il salvataggio delle informazioni contenute nei file bmp.
35
Capitolo 5 – Principal Component Analysis
Il codice utilizzato per l’acquisizione delle immagini è:
BMP immagine;
string path;
immagine.ReadFromFile(percorso);
//vettore contenente le immagini
//percorso delle immagini
//lettura immagini da file
In cui BMP è la classe implementata dalla libreria e ReadFromFile(string) è
il metodo per la lettura.
Il codice per il salvataggio dell’immagine come valore numerico, preso
all’interno di tre cicli i cui indici sono i,j ed n, è:
RGBApixel temp;
temp=immagine.GetPixel(i,j);
pixel[i][j][k]= (int) temp.Blue;
//salvataggio valore pixel i,j
dove RGBApixel è una struttura dati atta a contenere i valori di un pixel
RGB con trasparenza (Alpha), GetPixel(int,int) è un metodo per
prendere il valore del pixel posto in posizione i,j, infine viene effettuato un
cast sul valore di RGBApixel per poterlo salvare come intero, all’interno di
una matrice 3D di interi qual è pixel[int][int][int] che contiene nei
primi due indici le coordinate dei pixel, mentre nell’ultimo pixel il numero
dell’immagine. Si può notare che viene preso il solo valore blu del pixel,
questo viene fatto perché in un’immagine in scala di grigio tutti e tre i
valori RGB sono identici, quindi la scelta è indifferente.
5.2.2 Alglib
Il calcolo degli autovalori e degli autovettori è un problema non semplice
dal punto di vista della complessità computazionale. L’approccio
tradizionale, infatti, prevede prima l’utilizzo di algoritmi numerici di
decomposizione, per poi risolvere un problema equivalente ma in forma
più semplice. Sulla rete sono disponibili numerose librerie per il calcolo
numerico. Tuttavia molte sono implementate in linguaggi non compatibili
36
Capitolo 5 – Principal Component Analysis
con il c++ da noi utilizzato. Per la semplicità di utilizzo, documentazione
disponibile e per il supporto fornito dagli sviluppatori è stata scelta la
libreria Alglib [18]. Tale libreria, nel nostro problema, viene unicamente
utilizzata per il calcolo degli autovalori e per le strutture dati necessarie
per tale elaborazione. Il codice per il calcolo degli autovalori, che utilizza le
funzionalità offerte dalla libreria è:
const char *c= s.c_str();
alglib::real_2d_array cov(c);
alglib::real_1d_array autovalRe;
alglib::real_2d_array autovettDx;
//procedura per il calcolo degli autovettori e degli autovalori di una
matrice simmetrica
smatrixevd(cov,n*n,1,false,autovalRe,autovettDx);
la variabile c contiene gli elementi della matrice di covarianza, poi definita
secondo le strutture di Alglib, cov(const char), autovalRe ed autovettDx
sono le variabili che contengono la matrice di covarianza, gli autovalori e
gli autovettori ed infine smatrixed è la procedura per il calcolo degli
autovettori ed autovalori.
5.3
Algoritmo
L’algoritmo implementato è quello standard dell’analisi delle componenti
principali ed è composto da cinque passi fondamentali:
0. I dati sono costituiti da un set di immagini. Poniamo che tale
insieme
abbia
dimensione k .
Ogni
immagine,
che
deve
obbligatoriamente essere in formato bmp, verrà trattata in maniera
da rispettare degli standard imposti dalle fasi successive. In
particolare:
•
l’immagine deve essere in scala di grigio;
•
le dimensioni devono essere pari a l × l .
37
Capitolo 5 – Principal Component Analysis
Dopo questo breve preprocessing ogni immagine viene acquisita ed
inserita all’interno di una matrice reale quadrata di dimensione dim.
Queste k matrici sono tutte inserite all’interno di un array 3D di
dimensioni l × l × k . Ogni elemento (i,j) delle matrici rappresenterà
il valore
del pixel posto
in posizione
(i,j) nell’immagine
corrispondente.
1. I dati devono essere normalizzati. Considerando un immagine come
un insieme di dati in l
2
dimensioni dove, quindi, ogni pixel
corrisponde ad una dimensione, calcoliamo la media aritmetica di
ogni pixel (i,j) sommando i diversi valori che esso assume nelle k
immagini e, dividendo proprio per k . I risultati ottenuti
costituiranno una matrice reale quadrata di dimensione l × l .
Normalizziamo l’insieme di dati sottraendo ad ogni matriceimmagine la matrice media.
2. Calcoliamo la matrice di covarianza. Questa sarà una matrice
2
quadrata di dimensione l . Date le formule precedentemente
descritte calcoliamo la matrice degli scarti, cioè la differenza tra le
matrici immagine e la matrice media. Continuando il procedimento
troviamo la matrice di covarianza come la matrice che contiene le l
4
disposizioni con ripetizione degli scarti quadratici medi.
3. Troviamo gli autovalori e gli autovettori della matrice di covarianza.
Data la complessità computazionale dell’operazione, ci affideremo
totalmente a delle librerie appositamente sviluppate e di libero
utilizzo poiché sotto licenza GPL.
4. Selezioniamo le componenti principali, come visto nel paragrafo
precedente è conveniente selezionare le z componenti con
autovalori più grandi.
38
Capitolo 5 – Principal Component Analysis
5. Costruiamo la matrice delle features attraverso gli autovettori
associati agli autovalori selezionati nel punto precedente. Otteniamo
la compressione dei dati moltiplicando la matrice delle features
trasposta per le singole matrici dei dati normalizzati, ottenendo una
2
nuova matrice di dimensioni z × l .
5.4
Impostazioni della compressione
Il dimensionamento dell’intero blocco funzionale PCA è stato effettuato
attraverso una serie di prove sperimentali. Le scelte finali sono state fatte in
funzione della massima efficienza.
Innanzitutto occorre definire la dimensione ottimale delle immagini ed il
loro numero. Questo è un punto fondamentale che stabilirà la rapidità con
cui verrà eseguito il codice e la quantità di memoria occupata. Per il
numero di immagini da utilizzare dobbiamo considerare che, il sistema
nella sua interezza, dovrà essere inserito all’interno di un altro sistema più
grande, come esposto nell’introduzione. Perciò non possiamo stabilire
sperimentalmente il numero ottimo di immagini, ma fisseremo comunque
un valore per cui la computazione risulta efficiente, utilizzandolo
nell’implementazione reale.
Nelle figure seguenti, sull’asse delle ordinate sarà presente la dicitura
Prestazioni. Questa sta indicare il connubio tempo di esecuzione-memoria
occupata. La bontà dei risultati sarà valutata in base alla media aritmetica
di questi due valori.
39
Capitolo 5 – Principal Component Analysis
Fig 5.1: Tempi di elaborazione al crescere delle dimensioni dell’immagine e del
loro numero.
Fig 5.2: Tempi di elaborazione al crescere del numero di immagini con dimensione
30 × 30 .
La scelta è ricaduta su un insieme di cardinalità 40 che, ricordiamo, potrà
eventualmente assumere dimensioni differenti nel momento in cui il
sistema verrà integrato in uno più grande. La dimensione delle immagini
40
Capitolo 5 – Principal Component Analysis
ottimale si è invece attestata su 30 × 30 pixel, per mantenere i tempi e
l’uso di memoria al minimo, ottenendo comunque una buona quantità di
informazione.
Per quanto riguarda il livello di riduzione dell’informazione, ossia il
numero di feature selezionate, nelle prove sperimentali sono stati utilizzati,
come dimensione dell’insieme e dimensione delle immagini, i valori
precedentemente ricavati. A differenza delle prove precedenti sono stati
utilizzati differenti dataset presi all’interno di due diversi database con
variabilità dei contenuti differenti, in particolare sono stati utilizzati:
•
40 immagini prelevate dal database DIIGA relative ad un solo
soggetto
dove
circa
una
foto
su
cinque
è
fortemente
malcondizionata;
•
40 immagini prelevate dal database ORL [20] relative a 4 soggetti,
con dieci foto per ognuno, dove circa due foto su dieci sono
malcondizionate;
Le prove sono state effettuate incrementando progressivamente il numero
di immagini presenti nei database e registrando, per ogni prova, il più
piccolo numero M di autovalori rilevanti, cioè tali che:
M
λi
∑
i =1
TOT
λk
∑
k =1
gli autovalori corrispondano
≈ 100%
all’intero spettro
(5.9)
della matrice
con
−4
un’approssimazione dell’ordine di 10 .
41
Capitolo 5 – Principal Component Analysis
Fig 5.3: Andamento degli autovalori al crescere del numero delle immagini
utilizzate con database DIIGA.
Fig5.4: Andamento degli autovalori al crescere del numero delle immagini
utilizzate con database ORL.
Un’ulteriore prova è stata effettuata utilizzando il dataset DIIGA costituito
42
Capitolo 5 – Principal Component Analysis
da poche foto ma ripetute diverse volte:
Fig5.5: Andamento degli autovalori al crescere delle immagini utilizzate con
database DIIGA ridondante.
Dai risultati ottenuti possiamo fare diverse affermazioni. Innanzitutto, la
tecnica PCA risulta più efficace nel rappresentare l’insieme di immagini se,
all’interno di questo sono presenti ridondanze (vedi figura 5.5). Ciò perché
un’immagine ripetuta non apporta nessuna informazione aggiuntiva e da
un contributo nullo in termini di componenti.
In situazioni di normale utilizzo, quale la prova di figura 5.3, per esprimere
efficientemente un insieme di quaranta immagini, bastano poco meno di
quaranta features. Questo è dovuto al fatto che, se ogni immagine è
abbastanza differente da tutte le altre, ognuna di esse descrive una
componente principale all’interno del database.
Il caso estremo parallelo a quello del database DIIGA ridondante è
mostrato in figura 5.4. Si tratta del database ORL, dove ogni singola
immagine è differente da tutte le altre. E’ da notare il fatto che in quaranta
43
Capitolo 5 – Principal Component Analysis
foto siano presenti quattro soggetti distinti. Per questo motivo gli
autovalori significativi sono proprio tanti quanti le immagini prese in
considerazione.
Perciò si è scelto di selezionare cento features, riducendo ogni immagine di
circa 89% . Tale scelta è stata fatta per permette alla compressione di
fornire sufficienti informazioni qualunque sia il database utilizzato,
fornendo buoni margini di stabilità.
44
Capitolo 6 – Classificatore basato su rete neurale SOM
Capitolo 6
Classificatore basato su rete
neurale SOM
6.1
Generalità sui classificatori
In matematica un classificatore è una qualsiasi funzione:
F : ℝn → Ω
che mappa uno spazio di feature
(6.1)
ℝ n ad uno spazio di etichette Ω .
Un’etichetta, o classe, è un insieme che contiene oggetti tra loro simili.
Assumeremo che vi siano c classi nel problema,
un insieme
Ω
ω1 , ω2 ,..., ωc contenute in
e che un oggetto possa appartenere ad una sola classe. Tali
oggetti, chiamati più genericamente pattern, vengono descritti attraverso
loro caratteristiche, dette features. I valori di tali feature possono essere
45
Capitolo 6 – Classificatore basato su rete neurale SOM
considerati come un vettore n-dimensionale
ℝn
x = [x1 , x2 ,..., xn ]T . Lo spazio
è detto spazio delle features, dove ogni asse corrisponde ad una
caratteristica fisica del pattern.
Il compito svolto da un classificatore è, quindi, quello di riconoscere
l’appartenenza di un dato insieme di oggetti ad un gruppo di categorie.
La classificazione di oggetti, o pattern recognition, è parte integrante di
quasi la totalità dei sistemi ad intelligenza artificiale.
6.2
SOM di Kohonen non supervisionata
Abbiamo già visto, nel capitolo 3 la struttura generica di una rete neurale
SOM. Ora andremo ad analizzare i dettagli dell’implementazione non
supervisionata.
Il modello di self organizing map basata sull’apprendimento automatico
utilizzato non sfrutta le connessioni laterali nel livello di categorizzazione.
In [8] si è dimostrato come le connessioni laterali nel livello di output
migliorino la definizione dei cluster. Durante il processo di apprendimento
infatti,
i collegamenti tra due neuroni correlati tendono a rafforzarsi.
Tenendo conto della connessione laterale a "cappello messicano", dove i
neuroni vicini sono eccitati e quelli lontani inibiti, si vengono quindi a
formare veri e propri gruppi di neuroni correlati, al punto che, conoscendo
la risposta di uno solo di essi, si può facilmente, ed efficacemente, stimare
la risposta di tutti gli altri. Per tale motivo, per ottenere una
rappresentazione efficiente e non ridondante, è opportuno filtrare i
neuroni per mantenere solo quelli indipendenti.
In seguito a questi effetti collaterali e al fatto che, nel nostro ambito
applicativo, il classificatore neurale dovrà gestire un insieme di dati
46
Capitolo 6 – Classificatore basato su rete neurale SOM
piuttosto omogeneo, in quanto, gli ingressi, sono costituiti da un insieme di
foto che ritraggono lo stesso soggetto, si è optato per uno schema
completamente privo di connessioni laterali tra neuroni.
Come già anticipato nel capitolo 3 l’architettura di una rete SOM è di tipo
feedforward con due livelli di neuroni: uno di ingresso ed uno di uscita o
di categorizzazione. Le connessioni vanno da ogni neurone dello strato di
input a tutti i neuroni del secondo strato. Il numero di unità di input deve
uguagliare le dimensioni degli ingressi che dovrà poi ricevere. In questo
modo ogni neurone artificiale dello strato di output sarà connesso al livello
sottostante attraverso un vettore di pesi pari proprio alla dimensione di un
ingresso che, come visto nel capitolo 5, è un vettore di dimensione 100.
Il dimensionamento del secondo strato è meno soggetto a restrizioni in
quanto strettamente dipendente dagli altri parametri caratteristici della
rete. Esiste comunque una linea guida per il numero di dimensioni da
utilizzare in tale livello del tutto simile a quella utilizzata per stabilire la
grandezza del livello di input. Infatti lo strato di categorizzazione deve
avere tante dimensioni quante ne ha il tipo di ingresso che gestisce, ad
esempio, se gli input sono delle parole, quindi rappresentabili come dei
vettori monodimensionali, allora il livello di output sarà anch’esso un
vettore monodimensionale, se invece, gli ingressi sono delle immagini,
quindi delle matrici in due dimensioni, avremo un livello bidimensionale e
così via. La nostra applicazione tratta immagini quindi lo strato di output
sarà una matrice di neuroni in due dimensioni. In generale, tale matrice
può avere diverse forme, date dal modo in cui vengono collegati
lateralmente i neuroni, come ad esempio esagonale, rettangolare o casuale.
La rete progettata è priva di tale caratteristica quindi, essendo comunque il
livello di output bidimensionale, cioè un piano, distingueremo le unità
neurali attraverso due coordinate, costruendo, di fatto, una matrice
47
Capitolo 6 – Classificatore basato su rete neurale SOM
quadrata. La dimensione dei lati della matrice è stata stabilita attraverso
delle prove sperimentali e sulla base di reti già progettate e funzionanti.
Fig 6.1: Geometria del livello di categorizzazione. (a) Esagonale (b) Rettangolare
(c) Casuale.
Come è possibile notare dalla figura 6.2, le prove si sono concentrate su un
range di valori scelto attraverso lo studio di applicazioni già esistenti, come
quella presente in [15]. I parametri sono stati fissati empiricamente mentre
per la valutazione della clusterizzazione sono stati valutati diversi aspetti
quali la qualità dei risultati e la definizione dei cluster. In ogni caso questa
prova sperimentale non sarà l’unico fattore decisionale per stabilire le
dimensioni della rete, in quanto, ci baseremo anche sulle dimensioni di
altre reti già implementate e su una valutazione di efficienza del rapporto
consumi/prestazioni.
48
Capitolo 6 – Classificatore basato su rete neurale SOM
Fig 6.2: Andamento della clusterizzazione al variare della dimensione del livello di
output.
La dimensione del livello di output selezionata per ottenere la massima
efficienza è 10 , ottenendo un livello di output pari a 10 × 10 .
Riguardo la parte strettamente applicativa, la rete neurale può essere
schematizzata come una matrice 3D di numeri reali. Le prime due
dimensioni rappresenteranno i due lati dello strato di categorizzazione,
mentre la restante dimensione indicherà le componenti del vettore dei pesi
associato al neurone individuato dalle due coordinate. Questo perché,
livello implementativo, il neurone ed il vettore dei pesi ad esso associato
sono equivalenti. Chiamiamo tale matrice som[x][y][z]. Identificheremo un
neurone, o il vettore dei pesi associato, con la dicitura som[x][y] con x ed y
coordinate del livello di output. La restante coordinata, z, ci permetterà di
accedere alle singole componenti del neurone, ossia i singoli valori che
costituiscono il vettore dei pesi. Com’è possibile notare, nell’applicazione,
non trova spazio il livello di input, che resta pertanto unicamente un
49
Capitolo 6 – Classificatore basato su rete neurale SOM
modello teorico. Nel modello astratto il livello di ingresso permette
l’accesso allo strato di categorizzazione attraverso i pesi, che fungono da
collegamento. In particolare, l’i-esimo nodo di ingresso, è direttamente
connesso, attraverso l’i-esima componente di tutti i vettori dei pesi, a tutti i
nodi del secondo livello. A questo punto è evidente che, il primo livello
risulta superfluo, in quanto nell’implementazione, possiamo direttamente
accedere al vettore dei pesi senza alcun bisogno di strumenti aggiuntivi.
Fig 6.3: Struttura della rete implementata.
6.3
Misura d’errore
Dato un classificatore, occorre stabilire un metro di misura numerico da
considerare oltre la semplice analisi soggettiva degli elementi dei cluster,
per valutare la bontà dei risultati. Di seguito vengono definiti i due
parametri utilizzati nell’implementazione.
50
Capitolo 6 – Classificatore basato su rete neurale SOM
6.3.1 Errore di quantizzazione
L’errore di quantizzazione, o errore di quantizzazione globale, è un
parametro che stima l’errore come somma del quadrato delle distanze
euclidee tra i vettori appartenenti ad un cluster ed i prototipi dei cluster
stessi. Un prototipo è un vettore "rappresentativo" del cluster utilizzato
come riferimento per la clusterizzazione, in altri termini, può essere
considerato il vettore tipo del cluster.
Definiamo l’errore di quantizzazione globale EQ come:
N n( j )
EQ =
i
∑ ∑ v ( j ) − p( j )
( )
2
j =1 i =1
[9](6.8)
Indicando con N il numero totale di cluster, con n(j) il numero di vettori
appartenenti al j-esimo cluster, con p(j) il prototipo di quest’ultimo, con
(i )
v ( j ) l’i-esimo vettore appartenente al j-esimo cluster e con
la norma
euclidea.
Il valore di EQ diminuisce durante la fase di apprendimento, a meno di
situazioni anomale, ed il suo valore può essere utilizzato come criterio di
arresto. Non ci sono valori tipici da utilizzare come riferimento per
valutare la qualità dell’errore, ma i risultati rimangono comunque molto
utili per lo sviluppo della rete.
6.3.2 Qualità di clusterizzazione
Il valore della qualità di clusterizzazione determina la compattezza dei
cluster ed il livello di definizione dei bordi. Tale parametro verifica se, tra
ogni coppia di cluster, la distanza tra i prototipi sia maggiore della somma
dei raggi. Se ciò è verificato, allora siamo in grado di distinguere facilmente
i due insiemi. Il raggio di un cluster è definito come la massima distanza
51
Capitolo 6 – Classificatore basato su rete neurale SOM
euclidea tra i singoli vettori che appartengono al cluster ed il prototipo di
quest’ultimo. Chiamiamo il massimo raggio tra tutti i cluster
R max .
Ora
troviamo la minima distanza tra tutte le coppie di prototipi e la
identifichiamo con
d min . La qualità di clusterizzazione G è definita come:
G=
d min
R max
[9](6.9)
Se G > 1, i cluster saranno compatti e distinguibili, in tal caso la
clusterizzazione è di elevata qualità poiché la distanza tra i prototipi sarà
sempre minore del raggio dei cluster. Nel caso contrario, cioè G < 1, è
necessario risalire al motivo per cui la procedura ha portato a risultati di
pessima qualità.
6.4
Leggi di apprendimento
L’obiettivo di una rete neurale è quello di acquisire conoscenza per potere
dare soluzioni dinamiche nel tempo.
Tale conoscenza è regolata da due equazioni che stabiliscono "l’elasticità"
della memoria di un neurone ed il numero di neuroni che vengono eccitati
per ogni singolo input. Entrambe le equazioni sono in funzione del numero
di iterazioni, poiché, come già visto nel capitolo 3, l’apprendimento di una
rete neurale di tipo SOM si basa su una stessa procedura ripetuta diverse
volte. In particolare, le leggi decrescono al crescere delle iterazioni. Ciò
emula il comportamento di una rete neurale biologica in cui le prime
informazioni sono apprese quasi per intero, mentre al crescere delle
ripetizioni, si attua un processo di raffinamento della conoscenza
acquisendone via via sempre meno.
52
Capitolo 6 – Classificatore basato su rete neurale SOM
Il ruolo svolto da queste due leggi diventerà molto più chiaro una volta
analizzato l’algoritmo di funzionamento della rete neurale.
6.4.1 Tasso di apprendimento
Il tasso di apprendimento, o legge di apprendimento, è l’equazione che
caratterizza la quantità di conoscenza acquisita dai singoli neuroni per
ogni iterazione. Precedentemente è stata definita in altri termini, ossia,
come la "l’elasticità" della memoria dei neuroni.
Determinato il neurone vincitore, o BMU (best matching unit), per un dato
ingresso, aggiorniamo la sua conoscenza modificando il vettore dei pesi in
funzione della legge di apprendimento. In questa maniera il neurone,
attraverso i pesi associati, riconosce più efficacemente l’ingresso, cioè, ha
acquisito più informazioni che lo riguardano.
I modelli più comuni per la legge di apprendimento sono:
α(t ) = η⋅ t −1/β
(6.2)
α(t ) = η⋅ e −β⋅t
(6.3)
α(t ) = η / (1 + β ⋅ t )
(6.4)
Il fattore η è una costante che determina la rapidità con cui i neuroni
apprendono nuove informazioni. Il secondo parametro, β , è legato in
maniera biunivoca con il numero di epoche di apprendimento.
Il range dei valori del parametro η nelle equazioni 6.3 e 6.4 è 0.1 - 0.25,
mentre il valore di β oscilla intorno a 0.001.
La scelta della legge di apprendimento nell’applicazione è ricaduta sulle
formule 6.3 e 6.4 in quanto consigliate per la loro efficienza in [9]. Per
fissare il valore ottimo del parametro η sono state effettuate delle prove di
classificazione valutando la bontà dei risultati in base a diversi parametri
53
Capitolo 6 – Classificatore basato su rete neurale SOM
sia numerici, definiti nel paragrafo precedente, che di natura empirica, cioè
basati su una valutazione personale sulla omogeneità degli elementi
presenti nei cluster. Per quanto riguarda β gli è stato fissato a priori il
valore 0.001, poi è stato regolato il numero di epoche di apprendimento.
Di seguito sono riportate tali prove ed una tabella che riporta la modalità
di valutazione dei risultati.
Azione
Valutazione empirica sull’omogeneità delle
immagini all’interno di ogni cluster
Valutazione empirica del numero di cluster
individuati
Valutazione numerica errore di quantizzazione
Valutazione numerica qualità di
clusterizzazione
Punteggio
- 0.05 per immagine
eterogenea
+ 0.1 per cluster omogeneo
± 0.1
÷
0.3
± 0.1 ÷ 0.25
+ 0.1 ÷ 0.3 (se maggiore di 1)
- 0.1 ÷ - 0.3 (se inferiore ad 1)
Tabella 6.1: Modalità di valutazione della qualità di classificazione.
Il punteggio finale viene riportato nell’intervallo 0 ÷ 1 ed i punteggi
relativi alle valutazioni numeriche vengono assegnati in modo da coprire
l’intero intervallo per ogni set di prove.
Fig 6.4: Andamento della clusterizzazione al variare di η nella formula 6.3.
54
Capitolo 6 – Classificatore basato su rete neurale SOM
Fig 6.5: Andamento della clusterizzazione al variare di η nella formula 6.4.
Fig 6.6: Andamento della clusterizzazione e delle prestazioni al variare del
numero di epoche di apprendimento.
Come è possibile notare, i risultati migliori sono stati riscontrati con
l’utilizzo della formula 6.3 con η ≈ 0.18 ed un numero di epoche di
apprendimento pari a circa 200, mantenendo un buon livello delle
prestazioni sia per quanto riguarda la classificazione sia per i tempi di
esecuzione.
55
Capitolo 6 – Classificatore basato su rete neurale SOM
6.4.2 Raggio di apprendimento
Il raggio di apprendimento determina l’ampiezza dell’area, centrata sul
neurone vincitore, entro cui ha effetto la legge d’apprendimento. Ciò
determina delle vere e proprie regioni di conoscenza all’interno del livello
di output della rete. Tale fenomeno permette di avvicinare i neuroni con
"conoscenze simili" andando a creare cluster di neuroni in grado di
attivarsi attraverso input affini. Questo tipo di comportamento simula la
presenza di connessioni laterali nel livello di output, senza però incorrere
in ridondanze in quanto l’apprendimento decresce all’aumentare della
distanza dal neurone vincitore.
Fig 6.7: Applicazione della legge del raggio d’apprendimento con raggio della
bolla pari ad 1 .
Gli schemi più utilizzati per il raggio di apprendimento sono:
R(t ) = Bolla ⋅ t −1/b
(6.5)
R(t ) = Bolla ⋅ e− b⋅t
(6.6)
R(t ) = Bolla / (1 + b ⋅ t )
(6.7)
56
Capitolo 6 – Classificatore basato su rete neurale SOM
Il fattore Bolla delle leggi di apprendimento rappresenta il raggio del
cerchio all’interno del quale sono presenti i neuroni che aumenteranno la
loro conoscenza. Tanto più il raggio è corto, tanti meno neuroni
apprenderanno. Il caso limite si ha per Bolla = 0, in cui, l’unico neurone ad
acquisire informazioni è il neurone vincitore. Questo schema è detto WTA
(Winner Takes All).
Il valore di b all’interno dell’equazione determina la rapidità con cui il
raggio decresce al crescere del numero di iterazioni. Solitamente tale
fattore viene determinato, alla stregua dell’alter ego β , dopo aver stabilito
il numero epoche di apprendimento.
Il parametro Bolla può assumere valori interi positivi come 0, 1, 2, 3 ecc,
mentre il valore di b si aggira intorno a 0.001.
La scelta della legge del raggio di apprendimento nell’applicazione è
ricaduta sulle formule 6.6 e 6.7 in quanto consigliate in [9]. Per fissare i
valori ottimali del raggio della bolla sono state effettuate diverse prove
sperimentali, mentre, per quanto riguarda il parametro b, è stato fissato a
priori al valore di β , in quanto svolge il suo stesso ruolo e non vi è la
necessità di effettuare ulteriori prove sperimentali. La valutazione della
qualità di classificazione è stata effettuata in modo del tutto analogo a
quella già svolta nel paragrafo precedente, perciò, per le spiegazioni
riguardo la valutazione dei risultati si rimanda il lettore alla tabella 6.1.
57
Capitolo 6 – Classificatore basato su rete neurale SOM
Fig 6.8: Andamento della clusterizzazione al variare di Bolla nella formula 6.6.
Fig 6.9: Andamento della clusterizzazione al variare di Bolla nella formula 6.7.
Come è possibile notare dalle figure 6.8 e 6.9 la formula 6.6 con il valore di
Bolla unitario restituisce i risultati migliori.
58
Capitolo 6 – Classificatore basato su rete neurale SOM
6.5
Algoritmo
Ora verranno descritti i passi dell’algoritmo di funzionamento della rete. I
passaggi fondamentali eseguiti nello schema di apprendimento non
supervisionato sono sei:
1. Inizializzazione: la rete viene creata ed i vettori dei pesi vengono
inizializzati con dei valori casuali in maniera tale che ogni vettore
sia, in norma euclidea, unitario.
2. Selezione vincitore: prendiamo il k-esimo ingresso e cerchiamo il
vettore dei pesi la cui distanza euclidea con l’ingresso considerato è
minima. Il neurone associato a questo vettore di pesi è il neurone
vincitore.
3. Aggiornamento: selezioniamo il BMU ed i vicini posti a distanza
tale da soddisfare il raggio della bolla d’apprendimento, che è stato
fissato ad 1, ed applichiamo la legge α (t ) . Lo schema generale,
indipendente dai modelli di apprendimento scelti e già espresso nel
paragrafo 3.4.2, al passo t-esimo è:
w i , j (t + 1) = w i , j (t ) + α(t ) ⋅ [input k (t ) − w i , j (t )]
(3.2)
dove input (t ) è il vettore d’ingresso e w i , j (t ) è il vettore dei pesi
associato al neurone di coordinate i,j. In questo modo avviciniamo i
vettori w i , j al valore del vettore d’ingresso input k (t ) . Nel nostro
caso, la formula implementata al passo t-esimo è:
som[i][j][d]+=(eta*exp(-beta*t))*(-(som[i][j][d]input[d]));//funzione di apprendimento
59
Capitolo 6 – Classificatore basato su rete neurale SOM
Dove la matrice tridimensionale som[i][j][d] rappresenta la
matrice dei neuroni, input[d] il vettore d’ingresso ed eta*exp(beta*t) la legge di apprendimento
α (t ) .
4. Normalizzazione: si normalizzano i vettori dei pesi, in modo tale
che abbiano tutti norma euclidea unitaria, affinché non si creino
ambiguità nella ricerca del vincitore per gli ingressi successivi.
5. Iterazione: si ripete la procedura dal passo due al passo quattro
finché non si raggiunge un prefissato numero di iterazioni, nel
nostro caso 200, o la misura d’errore scende sotto una soglia
prefissata.
6. Classificazione: la rete ha la conoscenza necessaria per determinare i
cluster di appartenenza degli input. Troviamo tutti i neuroni
vincenti, cioè uno per ogni ingresso a disposizione. I BMU che si
trovano a distanza minore di un certo raggio, che noi abbiamo
uguagliato al parametro Bolla, sono considerati appartenenti allo
medesimo cluster. Attraverso la corrispondenza neurone vincente –
ingresso possiamo facilmente assegnare ad ogni input il suo cluster.
Fig6.10: Raggruppamento in cluster dei BMU.
60
Capitolo 7 - Risultati sperimentali
Capitolo 7
Risultati sperimentali
7.1
Database
Per le prove sperimentali sono stati utilizzati due dataset differenti, uno
piuttosto rinomato ed ormai divenuto lo standard dei database per il
riconoscimento dei volti, quale il database ORL [20], mentre l’altro
sviluppato in una tesi [21] svolta presso il dipartimento del DIIGA.
7.1.1 ORL
Il database ORL è stato sviluppato presso l’Olivetti Research Laboratory ed
è costituito da dieci foto per ogni soggetto, per quaranta soggetti totali. Le
immagini sono tutte frontali in scala di grigio ma i soggetti sono ritratti con
diversi angoli frontali e diverse espressioni del volto. In alcuni casi vi sono
61
Capitolo 7 - Risultati sperimentali
anche cambiamenti delle caratteristiche (come la presenza di occhiali o
meno).
I test per la classificazione sono stati effettuati utilizzando prima venti foto
di un unico soggetto, scelto casualmente, e venti foto scelte anch’esse
casualmente all’interno dell’intero dataset, poi, quaranta foto prese
casualmente all’interno dell’intero database, senza limitazioni riguardo il
numero di soggetti ritratti.
Fig 7.1: Esempio di immagini presenti all’interno del database ORL.
7.1.2 DIIGA
Il database sviluppato all’interno del dipartimento DIIGA contiene dodici
soggetti con sessanta foto per ogni soggetto. Le foto ritraggono ogni
soggetto in diverse condizioni. Queste sono in maggioranza foto frontali
ma sono presenti anche foto di profilo. In particolare, ogni soggetto è
ritratto con diversi cambiamenti più o meno sensibili, come è possibile
notare dalla figura 7.2. Tutte le immagini hanno 48bit di profondità di
colore e sono ad alta risoluzione. Tuttavia, per il nostro scopo, verranno
tutte ridimensionate e portate in scala di grigio.
Due prove finali sfruttano le immagini fornite da questo database: una, in
cui vengono prelevate quaranta foto di un soggetto e, l’altra, in cui
62
Capitolo 7 - Risultati sperimentali
vengono prelevate solo venticinque foto diverse mentre le restanti sono
delle copie delle prime, creando una ridondanza delle informazioni.
Fig 7.2: Esempio di immagini presenti all’interno del database DIIGA.
Questo database è stato sviluppato per sopperire alla mancanza di un
database di volti che preveda una evoluzione temporale delle features.
Infatti, in tutti i database di volti più comuni, compreso l’ORL
precedentemente
descritto,
non
è
mai
presente
nessun
fattore
potenzialmente mutevole nel tempo o, al massimo, tali fattori vengono
ristretti ad un semplice paio di occhiali. Ciò è dovuto al fatto che i sistemi
per il riconoscimento dei volti sono, nella quasi totalità dei casi, dipendenti
da un amministratore che deve, periodicamente, provvedere ad aggiornare
manualmente i dataset di foto riconosciute come valide.
7.2
Analisi dei risultati
Il sistema ibrido qui presentato è stato testato sui database sopra citati al
fine di misurarne le prestazioni in normali condizioni d’utilizzo. La
modalità di valutazione dei risultati rimane la stessa descritta dalla tabella
6.1 nel capitolo 6.
63
Capitolo 7 - Risultati sperimentali
Database
DIIGA
DIIGA ridondante
ORL un soggetto
ORL standard
Risultati
classificazione
0.9
0.96
0.65
0.2
Numero
cluster
5
4
10
19
Qualità
Clusterizzazione
1.43
2.24
1.07
1.13
Tabella 7.1: Riepilogo dei risultati ottenuti.
In particolare tutti i risultati nella prima colonna sono compresi
nell’intervallo 0 ÷ 1 e rappresentano il punteggio (vedi tabella 6.1) ottenuto
dal sistema ibrido nel classificare i volti. La seconda colonna presenta il
numero medio di cluster individuati dal sistema durante le diverse prove
sui database, mentre la terza ed ultima colonna, cioè qualità di
clusterizzazione, rappresenta il valore numerico, introdotto nel capito 6
paragrafo 3.2, che determina il livello di definizione dei bordi dei cluster,
cioè quanto questi sono distinguibili tra loro.
Come è possibile notare dalla precedente tabella il sistema trova difficoltà
in alcuni casi. In particolar modo possiamo notare il sensibile calo di
prestazioni se il database utilizzato è l’ORL. Questo perché l’ORL è un
database sviluppato per il riconoscimento dei volti e non per la loro
classificazione. Il sistema soffre la troppa variabilità dell’informazione,
finendo per associare poche immagini ad una classe, creando un’elevata
frammentarietà
dei
risultati.
Il
motivo
della
diminuzione
delle
performance è principalmente imputabile alla parte PCA, il cui livello di
compressione è statico e, in casi particolari come questo, non fornisce
sufficienti informazioni alla rete neurale. Un’altro fattore di riduzione delle
prestazioni è la dimensione del livello di categorizzazione della rete
neurale. Infatti, nel caso in cui in un dataset di immagini forniti alla rete vi
siano molti soggetti, a causa delle dimensioni della rete, pensate per
64
Capitolo 7 - Risultati sperimentali
dataset contenenti un soggetto, potrebbero non essere disponibili neuroni a
sufficienza nella fase di apprendimento, rendendo inconsistente l’intera
applicazione.
Ciò non accade con l’utilizzo del database DIIGA, che risulta molto più
adatto agli scopi del sistema. Tale affermazione è inequivocabile se si
controllano i punteggi ottenuti nella fase di testing, in cui, nel migliore dei
casi, troviamo una valutazione per la classificazione pari a 0.96 su un
massimo di 1. Forti di questo risultato possiamo affermare che il sistema,
anche se non ancora nel pieno delle sue potenzialità, offre prestazioni
notevoli a patto che il database utilizzato abbia determinate caratteristiche.
Infatti, il divario di performance riscontrato è imputabile per lo più al
valore dei parametri, fissati per condizioni di variabilità non eccessiva e
per un numero di soggetti limitato. Il database DIIGA fornisce un numero
ristretto di soggetti ma con un alto numero di foto per soggetto. Ciò ci ha
permesso di costruire dataset ridondanti e non che hanno evidenziato nei
test le vere capacità del sistema. Tuttavia, la differenza di prestazioni, tra il
database DIIGA standard e la sua versione ridondante non sono marcate
quanto la loro reale differenza in termini di informazioni.
65
Conclusioni
Conclusioni e sviluppi futuri
In questo lavoro di tesi è stato sviluppato un classificatore di immagini
ibrido che utilizza tecniche di riduzione delle dimensioni e di reti neurali.
Questo lavoro è stato progettato per essere integrato in un contesto più
ampio, cioè un sistema di riconoscimento biometrico dei volti basato su reti
neurali ([1]) capace di aumentare la propria conoscenza nel tempo
seguendo i cambiamenti dell’aspetto dei soggetti. Ciò è possibile attraverso
l’uso di una finestra temporale, cioè un buffer, in cui vengono raccolte tutte
le immagini che causano errori di riconoscimento. Nel momento in cui
queste arrivano a riempire la finestra, sono stati generati abbastanza
conflitti tali da rendere le capacità d’identificazione del sistema
insufficienti. Per ovviare a tale problema è possibile sfruttare le immagini
che hanno causato conflitti per aggiornare la conoscenza del sistema. In
ogni caso, non è sicuro utilizzare tutte le immagini presenti per aggiornare
la conoscenza. A questo punto entra in gioco il sistema ibrido qui
66
Conclusioni
sviluppato in grado di identificare immagini simili e raccoglierle in insiemi.
Tale sistema è stato strutturato in due parti principali: la prima, relativa al
trattamento delle immagini, che utilizza la tecnica dell’analisi delle
componenti principali e, la seconda parte, costituita dal classificatore
basato su reti neurali auto-organizzanti SOM.
Dato un insieme di immagini di ingresso, la parte di dimensionality
reduction, attraverso il concetto di covarianza, trova l’insieme di
componenti fondamentali attraverso cui descrivere la totalità delle
immagini. Con questo approccio le informazioni a disposizione vengono
filtrate eliminando parti ridondanti o di poco interesse, disturbi compresi.
Trasformati gli ingressi grazie alla tecnica PCA, la rete neurale SOM
procede,
attraverso
un
particolare
algoritmo
di
apprendimento,
all’acquisizione delle informazioni costruendo una propria conoscenza.
Grazie alla particolare struttura di questo tipo di reti, si viene a creare una
vera e propria mappa organizzata in cui ingressi simili eccitano neuroni
vicini, come in una rete neurale biologica. Al termine della fase di
apprendimento, vengono forniti in ingresso alla rete le immagini e,
attraverso la posizione dei neuroni eccitati, sono identificati i cluster.
Come è stato già analizzato nel capitolo 7, il sistema ha buone prestazioni
ma le sue potenzialità non sono ancora state sfruttate appieno. Infatti, il
sistema restituisce risultati non costanti secondo la variabilità dell’insieme
di immagini d’ingresso. Ciò è dovuto al livello di compressione utilizzato,
selezionato per funzionare nella maggioranza delle situazioni di normale
utilizzo ma non adatto a casi estremi. Inoltre risultati troppo ambigui nella
fase di apprendimento possono causare false categorizzazioni durante la
fase di raggruppamento dei neuroni eccitati dagli ingressi. In tale senso le
prestazioni sarebbero più stabili se si migliorasse l’algoritmo di
67
Conclusioni
clusterizzazione, ossia il criterio che stabilisce quando due o più neuroni
appartengono alla stessa classe.
Un accorgimento semplice, ma che porterebbe buoni miglioramenti,
sarebbe l’impostazione automatica dei parametri della rete neurale. Ciò
dovrebbe essere svolto dalla componente PCA sulla base della varianza dei
dati d’ingresso. Infatti, come mostrato dai risultati, la rete può adattarsi
bene a diverse distribuzioni di informazioni semplicemente attraverso il
cambiamento dei valori dei parametri.
68
Ringraziamenti
Ringraziamenti
Al termine di questo lavoro di tesi mi sento in obbligo di ringraziare tutti
coloro che mi hanno permesso di arrivare fin qui.
Innanzitutto, ringrazio il Prof. Dragoni e l’Ing. Vallesi per la loro infinita
disponibilità mostrata più volte durante questi mesi e per avermi permesso
di concludere magnificamente questi tre anni.
Ringrazio i miei genitori, mio fratello e mia sorella, perché grazie al loro
affetto e spirito di sacrificio ho potuto portare a termine gli studi con
infinita serenità.
Un grandissimo grazie ad Ermana, l’unica persona che ha saputo credere
più di me in quest’impresa. Restandomi vicina negli ultimi due anni, e
sopportando i miei comportamenti, mi ha dato la forza di riuscire a
superare i miei limiti.
Grazie anche alla mia migliore amica, rimasta tale nonostante i tanti fine
settimana passati a studiare lontano da casa ed al mio ex compagno di
stanza, che mi ha insegnato a prendere con più calma i miei doveri.
Infine un ultimo grazie a tutti gli amici del gruppo A, a tutti i coinquilini
(di sempre, nuovi ed acquisiti) ed ai compagni di corso.
69
Bibliografia
Bibliografia e sitografia
[1] P. Sconciafurno. Sistema Ibrido per l'apprendimento continuo di reti
neurali, 2010
[2]M. P. Mahyabadi, H. Soltanizadeh, Sh. B. Shokouhi. Facial Detection
based on PCA and Adaptive Resonance Theory 2A Neural, 2007.
[3] M. Agarwal, N. Jain, Mr. M. Kumar and H. Agrawal. Face Recognition
Using Eigen Faces and Artificial Neural Network, 2010
[4] M. Oravec, J. Pavlovičová. Face Recognition Methods Based on
Feedforward Neural Networks, SOM and PCA, 2007.
[5] X. Zhang, Y. Gao. Face recognition across pose a review, 2009.
[6] D. Zhang, X. Jing, J. Yang. Biometric Image Discrimination
Technologies, 2006.
[7] L. I. Smith. A tutorial on Principal Components Analysis, 2002.
[8] J. Sirosh, R. Miikkulainen. Self-Organization and Functional Role of
Lateral Connections and Multisize Receptive Fields in the Primary Visual
Cortex, 1995.
[9] E. Pessa. Statistica con le reti neurali, 2004.
70
Bibliografia
[10] J. Nagi, S. Khaleel Ahmed, F. Nagi. A MATLAB based Face
Recognition System using Image Processing and Neural Networks, 2008.
[11] M. I. Chacon, P. Rivas, G. A. Ramirez. A Fuzzy Clustering Approach
for Face Recognition Based on Face Feature Lines and Eigenvectors, 2007.
[12] D. Zhang, Z. Zhou. (2D)^2 PCA 2-Directional 2-Dimensional PCA for
Efficient Face Representation and Recognition, 2005.
[13] T. Kohonen. Self Organizing Map, 2001.
[14] S. Russell, P. Norvig. Articial Intelligence: A Modern Approach, 2003.
[15] AiSomPic. www.mperfect.net/aiSomPic/
[16] Wikipedia, l’enciclopedia libera. www.wikipedia.org.
[17] EasyBMP. easybmp.sourceforge.net.
[18] AlgLIB. www.alglib.net.
[19]Azienda Ospedaliera "Saverio de Bellis". www.irccsdebellis.it.
[20] AT&T Laboratories Cambridge and Olivetti Research Laboratory
database.
[21] M. Favi. Utilizzo di reti neurali per il riconoscimento di volti da foto,
2010.
71