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