...

x,y - AIRT Lab - Università Politecnica delle Marche

by user

on
Category: Documents
15

views

Report

Comments

Transcript

x,y - AIRT Lab - Università Politecnica delle Marche
Università Politecnica delle Marche
Facoltà di Ingegneria
Corso di laurea triennale in Ingegneria
Informatica e dell'Automazione
REALIZZAZIONE E ANALISI
COMPARATIVA DI ALGORITMI PER IL
FACE-RECOGNITION
Relatore:
Candidato:
Prof. Aldo Franco Dragoni
Matteo Marinelli
Correlatore:
Ing. Gianluca Dolcini
Anno Accademico 2011/2012
Indice generale
Indice generale...................................................................................................I
Indice figure.......................................................................................................II
1 - Introduzione.................................................................................................1
1.1 - Scenario................................................................................................................... 1
1.2 - Obiettivo.................................................................................................................. 2
1.3 - Risultati................................................................................................................... 2
1.4 - Descrizione lavoro.................................................................................................. 3
2 - Stato dell'arte..............................................................................................4
2.1 - Eigenfaces (PCA).................................................................................................... 4
2.2 - Scale Invariant Feature Transform (SIFT)............................................................7
2.3 - Support Vector Machine (SVM)..........................................................................11
3 - Descrizione Algoritmi..............................................................................15
3.1 - 2DPCA................................................................................................................... 15
3.2 - Fisherfaces (FLD - LDA)....................................................................................... 17
3.3 - Speeded Up Robust Feature (SURF)...................................................................20
3.4 - Multi Layer Perceptron (MLP).............................................................................26
4 - Sviluppo e test...........................................................................................33
4.1 - Sviluppo................................................................................................................. 33
4.2 - Test......................................................................................................................... 35
5 - Conclusioni e sviluppi futuri...................................................................51
5.1 - Conclusioni............................................................................................................ 51
5.2 - Sviluppi futuri....................................................................................................... 54
6 - Bibliografia.................................................................................................56
I
Indice delle illustrazioni
Fig. 2.1.1 - Esempio di database di volti (a) e delle relative eigenfaces (b)..............5
Fig. 2.2.1 - Rappresentazione del calcolo della Difference-of-Gaussian...................8
Fig. 2.2.2 - Rappresentazione dei punti considerati nel processo di estrazione dei
keypoints.............................................................................................................................. 9
Fig. 2.2.3 - Esempio di immagine (a) dalla quale vengono mostrati tutti i possibili
keypoints estraibili (b) e quelli mantenuti perchè considerati più stabili (c).........10
Fig. 2.3.1 - Esempi di iperpiani di decisione per dati linearmente separabili con
differenti valori del margine di separazione...............................................................12
Fig. 2.3.2 - Esempio di dati non linearmente separabili.............................................13
Fig. 2.3.3 - Esempio di dati non linearmente separabili e che richiedono l'utilizzo
di una funzione di mapping.............................................................................................14
Fig. 3.2.1 - Confronto di principal component analysis (PCA) and fisher's linear
discriminant (FLD) per un problema a due classi........................................................19
Fig. 3.3.1 - Rappresentazione del concetto di integral images.................................21
Fig. 3.3.2 - Rappresentazione dell'approssimazione apportata dal filtro box 9 x 9:
le regioni in grigio sono uguali a zero...........................................................................22
Fig. 3.3.3 - Rappresentazione della piramide di scalatura (sinistra) con riduzione
dell'immagine e con up-scaling del filtro di convoluzione (destra).........................23
Fig. 3.3.4 - Rappresentazione dei pixel coinvolti durante la localizzazione dei
punti d'interesse............................................................................................................... 23
Fig. 3.3.5 - Rappresentazione del calcolo dell'orientamento dei keypoitns SURF 24
Fig. 3.3.6 - Risposta delle haar wavelet per una regione omogenea (sinistra), una
regione con frequenze lungo x (centro) e una regione la cui intensità decresce
gradualmente (destra)..................................................................................................... 25
Fig. 3.3.7 - Confronto fra SIFT keypoints (sinistra) e SURF keypoints (destra).......25
Fig. 3.4.1 - Schema di un neurone biologico.................................................................26
Fig. 3.4.2 - Schema di rete neurale 128x40x40 utilizzabile con descrittori SIFT e 40
diversi soggetti nel training set..................................................................................... 28
Fig. 3.4.3 - Rappresentazione grafica della funzione sigmoid simmetrica.............30
Fig. 3.4.4 - Rappresentazione dell'istogramma generato nella fase di
II
identificazione................................................................................................................... 31
Fig. 4.2.1 - Tempo di estrazione e descrizione dei keypoints per il database ORL.
............................................................................................................................................. 36
Fig. 4.2.2 - Tempi di apprendimento SVM e MLP su database ORL.........................37
Fig. 4.2.3 - Tempi di predizione SVM e MLP nel database ORL.................................39
Fig. 4.2.4 - Percentuali di riconoscimento SIFT e SURF con classificatore MLP –
ORL...................................................................................................................................... 39
Fig. 4.2.5 - Percentuali di riconoscimento SIFT e SURF con classificatore SVM –
ORL...................................................................................................................................... 40
Fig. 4.2.6 - Percentuali di riconoscimento complessive di SIFT e SURF con SVM e
MLP sul database ORL..................................................................................................... 40
Fig. 4.2.7 - Tempo di creazione del modello per algoritmi PCA, 2DPCA, LDA –
ORL...................................................................................................................................... 42
Fig. 4.2.8 - Tempo di predizione degli algoritmi PCA, 2DPCA, LDA – ORL..............42
Fig. 4.2.9 - Percentuali di riconoscimento di PCA, 2DPCA, LDA sul database ORL.
............................................................................................................................................. 43
Fig. 4.2.10 - Percentuali di riconoscimento di tutti le tecniche sul database ORL.
............................................................................................................................................. 43
Fig. 4.2.11 - Numero medio di keypoints estratti con SIFT e SURF su database
Faces.................................................................................................................................... 44
Fig. 4.2.12 - Tempi di estrazione e descrizione di keypoints SIFT e SURF – Faces. 45
Fig. 4.2.13 - Tempi di apprendimento SVM e MLP su database Faces.....................46
Fig. 4.2.14 - Tempi di predizione per classificatori SVM e MLP su database Faces.
............................................................................................................................................. 47
Fig. 4.2.15 - Precisione di predizione del classificatore SVM su database Faces.. .48
Fig. 4.2.16 - Tempo di creazione del modello per PCA, 2DPCA e LDA - Faces........49
Fig. 4.2.17 - Tempo di predizione per PCA, 2DPCA e LDA su database Faces........49
Fig. 4.2.18 - Tempi di predizioni generali sul database Faces...................................50
III
Introduzione
1 - Introduzione
1.1 - Scenario
Questo lavoro si colloca nell'ambito della computer vision (anche detta visione
artificiale) la quale si compone di processi che mirano alla creazione di un
modello approssimato del mondo reale 3D a partire da immagini 2D ottenute
tramite strumenti ottici quali fotocamere o videocamere.
L'obiettivo principale della computer vision è quello di riprodurre la vista umana
e la capacità di interpretare i contenuti osservati.
Nel caso queste tecniche vengano applicate su frame raffiguranti volti umani la
visione artificiale può essere suddivisa in due aspetti fondamentali:
•
Face-detection: verifica della presenza ed estrazione di volti da immagini.
•
Face-recognition: confronto ed identificazione di un volto presente in
un'immagine con altri volti contenuti in un database e utilizzati come set
di apprendimento.
In questo lavoro è stato preso in considerazione esclusivamente l'aspetto di
face-recognition.
I contesti in cui è possibile applicare queste tecniche sono vari:
•
Sicurezza: in generale in ambiti di video sorveglianza, in particolare nel
monitoraggio
di
accessi
e
nella
concessione
di
accessi
previa
identificazione.
•
Media: catalogazione di contenuti multimediali verificando e catalogando
la presenza di specifici individui.
•
Sistemi intelligenti: realizzare sistemi in grado di adattare il proprio
comportamento basandosi sulla presenza di soggetti in un determinato
spazio.
1
Introduzione
1.2 - Obiettivo
L'obiettivo prefissato per questo lavoro era quello di analizzare varie tecniche
per il riconoscimento e l'identificazione di volti partendo dal presupposto che i
frame analizzati contenessero sicuramente uno e un solo volto.
Il motivo di questa analisi è quello di capire quale sia la tecnica ottimale da
utilizzare a seconda del contesto in cui questa andrà applicata.
I parametri fondamentali da considerare sono:
•
Percentuale di corretta identificazione
•
Percentuale di errata identificazione
•
Tempo di predizione: indica il tempo impiegato da un algoritmo per
determinare la classe di appartenenza del volto analizzato nell'immagine.
•
Tempo di apprendimento: indica il tempo impiegato dalla tecnica di
riconoscimento analizzata per apprendere il set di frame utilizzato come
database o per creare il modello matematico corrispondente.
Quelli sopra elencati sono i parametri comuni che caratterizzano ogni algoritmo
o tecnica di face-recognition, in aggiunta a questi sarà interessante verificare
anche altri parametri valutabili solo per alcuni algoritmi e che in seguito saranno
introdotti.
1.3 - Risultati
I parametri analizzati per ogni algoritmo sono stati ottenuti utilizzando due
diversi database di soggetti:
•
ORL Database: database con un limitato numero di soggetti e un limitato
numero di frame per ogni soggetto i quali però sono abbastanza differenti
tra loro, questo rende i risultati qui ottenuti molto validi per valutare le
percentuali di corretta ed errata identificazione.
•
Faces94 Database: questo database ha un elevato numero di soggetti e di
frame per soggetto i quali però sono abbastanza simili tra loro, questo
2
Introduzione
rende superflua la verifica delle percentuali di identificazione ma
permette di avere un'analisi molto valida sui tempi di predizione e di
apprendimento al crescere delle dimensione del database di soggetti.
Questi test hanno mostrato che le tecniche di riconoscimento che si appoggiano
ad algoritmi di machine learning non sono adatte ad ambiti real-time, ma
possono garantire tassi di riconoscimento molto elevati.
1.4 - Descrizione lavoro
Dopo questa breve introduzione alle tematiche trattate, la tesi prosegue nel
seguente modo:
•
Stato dell'arte: verranno presentate le due “famiglie” di tecniche
analizzate e le loro differenze per poi passare alla descrizione
dell'algoritmo principale di ognuna delle due famiglie.
•
Descrizione algoritmi: verranno presentati e descritti tutti gli algoritmi
implementati ed analizzati spiegandone il funzionamento.
•
Sviluppo e test: verranno descritti la tecnologia, l'ambiente, l'architettura
e i database con i quali tutti i test sono stati realizzati, in seguito verranno
presentati in modo dettagliato i risultati ottenuti ed il loro confronto.
•
Conclusioni e sviluppi futuri: dopo aver fatto il punto sui risultati,
verranno indicati alcuni possibili sviluppi futuri ed approfondimenti
interessanti che sono emersi duranti la realizzazione di questo progetto.
3
Stato dell'arte
2 - Stato dell'arte
Le tecniche di riconoscimento implementate possono essere suddivise in due
gruppi a seconda di come elaborano le immagini:
•
Globali: rientrano in questa categoria gli algoritmi PCA (Principal
Component Analysis, noto principalmente come Eigenfaces), 2DPCA (2
Dimensional Principal Component Analysis) e LDA (Linear Discriminant
Analysis, noto principalmente come Fisherfaces) i quali sfruttano i frame
interamente per le loro elaborazioni, inoltre questi algoritmi non
sfruttano algoritmi di machine learning ma si creano un loro modello
matematico per rappresentare l'intero set di apprendimento.
•
Locali: gli algoritmi che rientrano in questa categoria sono SIFT (Scale
Invariante Feature Transform) e SURF (Speeded Up Robust Feature) i quali
poi vanno ad utilizzare come algoritmi di apprendimento e classificazione
il SVM (Support Vector Machine) ed il MLP (Multi Layer Perceptron), in
queste tecniche dai frame vengono estratti dei keypoint ai quali verrà
associato un descrittore che sarà poi utilizzato come input per gli
algoritmi di classificazione e apprendimento.
2.1 - Eigenfaces (PCA)
Il metodo che verrà ora introdotto è stato presentato nel 1991, le sue
caratteristiche principali sono: velocità, semplicità ed accuratezza.
Questo metodo si basa sull'analisi delle componenti principali, presentata nel
1901 da Karl Pearson, la quale consiste in una procedura matematica che
attraverso una trasformazione ortogonale converte un insieme di variabili
correlate in un insieme ridotto di variabili non correlate, dette componenti
principali.
L'applicazione diretta del PCA in ambito di face recognition prende il nome di
4
Stato dell'arte
Eigenfaces [1][2].
L'obiettivo di questa metodologia è quello di trovare un set di immagini, le
eigenfaces, in grado di rappresentare tutto il database di volti, ed è qui che
l'analisi PCA viene utilizzata, infatti viene essa viene sfruttata con l'obiettivo di
trovare gli autovettori dominanti, cioè quelli relativi ad autovalori maggiori e che
garantiscono la massima robustezza di rappresentazione dell'intero set di volti.
Queste eigenfaces saranno poi utilizzati per rappresentare in maniera
approssimata, tramite combinazione lineare, tutti i volti del database, ai quali
sarà associato un vettore dei pesi, corrispondente ai pesi della combinazione
lineare.
Quando ci sarà la necessità di verificare un nuovo volto, questo verrà proiettato
nello spazio dei volti ottenuto come span delle eigenfaces, ricavandone il
corrispondente vettore dei pesi che sarà poi utilizzato per identificare il
soggetto.
L'identificazione può essere effettuata attraverso il calcolo della distanza
geometrica.
Fig. 2.1.1 - Esempio di database di volti (a) e delle relative eigenfaces (b)
5
Stato dell'arte
Ricapitolando:
•
Individuazione delle eigenfaces rappresentanti l'intero database.
•
Proiezione del nuovo volto nello spazio dei volti per ricavare il vettore dei
pesi.
•
Verifica tramite il vettore dei pesi dell'appartenenza del soggetto al
database e della sua identità.
Considerando ora un'immagine di N*M pixels vediamo come avviene il calcolo
delle eigenfaces.
Come prima cosa è necessario calcolare il volto medio fra quelli del training set
Γ1, . . . , Γm e le relative distanze dal volto medio Φ1, . . . , Φm
m
1
Ψ= ∑ Γ i
m i=1
A questo punto, definendo A =
Φ i=Ψ−Γ i
[ Φ1 … Φm ] sarà possibile calcolare la matrice
di covarianza C:
m
1
T
T
C= ∑ Φi Φi = AA
m i=1
Dalla matrice di covarianza è possibile calcolare gli autovettori
uj (eigenvectors)
utilizzando il metodo Jacobiano[8]
m
1
T
λ j= ∑ u j Φi
m i=1
A questo punto selezionando un sottoinsieme di autovettori, k < m, si avrà una
riduzione della complessità del problema a spese di una approssimazione dello
stesso.
Ora che le eigenfaces sono state calcolate è possibile sfruttarle per classificare
un nuovo volto, come già detto occorre proiettarlo nello spazio dei volti in modo
da ricavare il vettore dei pesi.
Definendo il vettore dei pesi Ω
= [ ω1 . . . ωk ] si avrà per il singolo peso:
6
Stato dell'arte
ω j=u j (Γ−Ψ)
j=1,... , k
Ottenuto il vettore dei pesi del nuovo volto lo si confronterà con i vettori dei pesi
relativi a tutti i volti del training set calcolandone la distanza euclidea.
La distanza minore corrisponde alla classe di appartenenza del nuovo volto.
2
2
ϵ j=∥Ω−Ω j∥
j=1,... , k
2.2 - Scale Invariant Feature Transform (SIFT)
Proposto da D. Lowe [14] questo algoritmo si prefigge l'obiettivo di estrarre da
un'immagine delle features che sono invarianti rispetto la rotazione, la scalatura
e parzialmente invarianti rispetto al cambio di illuminazione.
Per ricavare queste features occorre per prima cosa estrarre dei keypoints
dall'immagine, successivamente ad ogni punto estratto verrà associato un
descrittore: l'insieme di questi descrittori rappresenterà il volto da cui sono stati
calcolati, cioè la classe di appartenenza.
Successivamente si dovrà utilizzare un metodo di classificazione per poter
distinguere i soggetti tra di loro, per questo scopo può essere utilizzata la
distanza geometrica o metodi più complessi come l'AdaBoost [12], il support
vector machine [13] o il multi layer perceptron [11].
L'estrazione delle features può essere decomposta in 4 fasi principali:
•
Keypoint localization in scale-space
•
Elimination of weak keypoints
•
Assigning rotation
•
Construction of descriptor
La prima fase ha come obiettivo quello di identificare tutti i punti dell'immagine
che risultano invarianti al cambiamento di scala, questo lo si può ottenere
determinando lo scale-space:
7
Stato dell'arte
L( x , y , σ)=G ( x , y ,σ)∗I ( x , y ) con G ( x , y , σ)=
1
e
2
2πσ
−( x 2+ y2 )
2 σ2
dove I(x,y) rappresenta l'immagine e * l'operatore di convoluzione.
Per
la
selezione
dei
punti
nello
scale-space
si
utilizza
la
funzione
Diffrence-of-Gaussian (DoG), ottenuta come differenza tra due scale vicine
separate da un fattore moltiplicativo k:
DoG ( x , y , σ)=L( x , y , k σ)−L ( x , y ,σ)
Una volta ottenuta la prima ottava, la DoG viene applicate alle immagini
gaussiane (L(x,y,σ)) scalate di un fattore 2.
Nella Fig. 2.2.1 viene data una rappresentazione grafica di questa operazione.
A questo punto per localizzare i keypoints effettivi ogni punto di una DoG viene
confrontato con gli 8 punti a lui vicini nella stessa scala e con i 9 punti a lui vicini
nella scala precedente e successiva.
Fig. 2.2.1 - Rappresentazione del calcolo della Difference-of-Gaussian
8
Stato dell'arte
I punti che sono maggiori o minori di tutti i suoi vicini sono candidati a diventare
keypoints, di questi vanno scartati quelli posizionati sui bordi e quelli con uno
scarso contrasto, in modo da ottenere un insieme di punti che sono il più
possibile stabili.
Nella Fig. 2.2.2 vengono mostrati i punti considerati nel'estazione dei keypoints,
mentre nella Fig. 2.2.3 vengono mostrati i keypoints estratti da un'immagine.
Fig. 2.2.2 - Rappresentazione dei punti considerati
nel processo di estrazione dei keypoints
La fase successiva serve ad assegnare ad ogni punto estratto un valore di
modulo ed uno di orientamento, a questo scopo viene creato un istogramma
formato dall'orientamento dei gradienti della regione attorno al keypoint.
L'istogramma è formato da 36 valori, così da coprire tutti i 360° attorno al punto:
il picco massimo sull'istogramma degli orientamenti corrisponde alla direzione
dominante e viene utilizzato come orientamento del keypoint.
Per ogni altra orientazione con valore maggiore dell'80% del picco massimo,
viene creato un nuovo keypoint.
Infine il punto viene ruotato nella direzione di orientamento e normalizzato:
9
Stato dell'arte
m( x , y )=√ ( L ( x+1, y)−L ( x−1, y))2 +( L( x , y +1)−L ( x , y−1))2
−1 L ( x+1, y)−L ( x−1, y)
Θ( x , y)=tan
L ( x , y+1)−L( x , y−1)
Fig. 2.2.3 - Esempio di immagine (a) dalla quale vengono mostrati tutti i possibili
keypoints estraibili (b) e quelli mantenuti perchè considerati più stabili (c).
L'ultimo passo dell'algoritmo SIFT consiste nella creazione del descrittore: l'area
attorno al keypoint viene suddivisa in 4 * 4 sottoregioni, per ognuna delle quali
viene creato un istogramma di orientamento formato da 8 valori.
Concatenando gli istogrammi si avrà quindi per ogni keypoint un vettore di 128
elementi (4 * 4 * 8) che sarà opportunamente ruotato secondo il valore di
orientamento del keypoint, determinato nella fase precedente, al fine di rendere
i descrittori comparabili tra loro.
10
Stato dell'arte
2.3 - Support Vector Machine (SVM)
Come anticipato, per poter utilizzare i descrittori calcolati con l'algoritmo SIFT o
SURF si ha la necessità di utilizzare degli algoritmi d classificazione.
Il termina classificare indica lo scopo di determinare la classe di appartenenza di
un determinato oggetto, farlo tramite algoritmo aggiunge che questo
procedimento deve essere realizzato in modo automatico.
Per poter distinguere diversi oggetti tra loro, questi algoritmi necessitano di una
fase di apprendimento nella quale vengono forniti dei campioni di oggetti
appartenenti ad ogni classe: questo approccio viene detto supervisionato.
L'algoritmo Support Vector, alla base delle SVM [3][4], fa parte della statistical
learning theory, o teoria di Vapnik – Chervonenkis, la teoria VC caratterizza le
proprietà degli algoritmi di apprendimento che permettono loro di “estendere la
conoscenza” a dati nuovi, in base ad elementi appresi in precedenza.
Una SVM è un classificatore binario che apprende il confine fra esempi
appartenenti a classi diverse, per fare questo proietta gli elementi del training
set in uno spazio multidimensionale e poi trova un iperpiano di separazione
(detto anche di decisione) in questo spazio.
Fra i vari iperpiani di decisione va scelto quello ottimo (si faccia riferimento alla
Fig. 2.3.1 per una rappresentazione grafica), ovvero occorre selezionare quello
che massimizza la sua distanza (margine) dagli esempi di training più vicini:
questo è importante perché massimizzando il margine si riduce la possibilità di
overfitting, cioè in altri termini si aumenta la capacità di generalizzazione.
Inoltre nell'apprendimento della SVM la regione più importante nello spazio dei
dati di training è quella attorno all'iperpiano di decisione perché è proprio in
quella zona che è più più frequente riscontrare degli errori.
11
Stato dell'arte
Fig. 2.3.1 - Esempi di iperpiani di decisione per dati linearmente separabili con
differenti valori del margine di separazione.
Occorre ora specificare che i dati del training set possono essere di due tipi:
•
Linearmente separabili.
•
Non linearmente separabili.
Il caso di dati linearmente separabili è ovviamente il più semplice, trovare
l'iperpiano non crea problemi e l'unico obiettivo è quello di ottimizzare la scelta.
Nel secondo caso invece siamo in presenza di punti in posizione anomala rispetto
agli altri della stessa classe: questo provoca l'aggiunta di una costante di scarto
(si veda la Fig. 2.3.2) proporzionale alla anomalia e introduce una certa
tolleranza agli errori che permette l'utilizzo dello stesso classificatore lineare del
caso precedente:
f ( x)=sign( ∑ y i λi ( x∗xi )+bi )
i ∈S
I punti
xi
corrispondenti a moltiplicatori
λi
strettamente maggiori di zero
vengono detti support vector e rappresentano i punti critici del training set
essendo quelli più vicini all'iperpiano di separazione.
Resta da considerare il caso in cui non esiste la possibilità di separare i dati con
un classificatore lineare ed occorre introdurre una funzione di mapping Ф per
passare da una condizione di non separabilità ad una condizione di separabilità
12
Stato dell'arte
lineare attraverso la mappatura dei dati originari in un altro spazio.
Le funzioni di mapping però possono far insorgere problemi di calcolo in quanto
la separazione dei dati porta ad un aumento della dimensione dello spazio.
Per limitare questo inconveniente si introducono delle funzioni di kernel:
K ( x i , x j )=Φ(x i )∗Φ( x j )
le quali possono avere diverse formulazioni e a seconda del problema da
affrontare sarà necessario scegliere la più opportuna, in generale le funzioni di
kernel utilizzabili sono tutte quelle che soddisfano il teorema di Mercer [9].
In questo caso si è utilizzata una funzione Radial Basis:
−γ∥xi −x j∥2
K ( x i , x j )=e
Con l'aggiunta della funzione di kernel, il classificatore diventa:
f ( x)= sign( ∑ y i λi Φ( xi )∗Φ( x j )+bi )=sign (∑ yi λ i K ( xi , x j )+bi )
i ∈S
i∈S
Fig. 2.3.2 - Esempio di dati non linearmente separabili.
13
Stato dell'arte
Fig. 2.3.3 - Esempio di dati non linearmente separabili e che richiedono l'utilizzo di una
funzione di mapping.
14
Descrizione Algoritmi
3 - Descrizione Algoritmi
Nel precedente capitolo sono stati introdotti alcuni degli algoritmi utilizzati, in
questo capitolo verranno invece descritte le restanti metodologie di
riconoscimento adottate.
Nell'insieme gli algoritmi implementati per effettuare i test sono stati i seguenti:
•
Eigenfaces (PCA)
•
2DPCA
•
Fisherfaces (LDA)
•
SIFT con SVM
•
SIFT con MLP
•
SURF con SVM
•
SURF con MLP
Elaborazione dell'immagine globale
Elaborazione dell'immagine locale
3.1 - 2DPCA
Dopo aver visto la tecnica PCA [1][2], passiamo ad analizzare una sua variante: la
Two-Dimensional Principal Component Analysis.
L'idea su cui si basa la 2DPCA [5] è le stessa che abbiamo visto in precedenza per
la PCA ma con l'introduzione di una variazione fondamentale: le elaborazioni
sono effettuate su matrici 2D anziché su vettori 1D.
Quanto detto mette subito in evidenza alcuni miglioramenti:
•
l'immagine sotto forma di matrice non necessita di essere trasformata in
un vettore;
•
la matrice di covarianza può essere direttamente determinata usando le
immagini di partenza e la sua dimensione è molto ridotta, rendendo
inoltre la sua valutazione molto più semplice;
•
il tempo necessario al calcolo degli autovettori è molto inferiore.
15
Descrizione Algoritmi
L'idea è dunque quella di proiettare una immagine A, rappresentata come
matrice m x n, su un vettore x di dimensioni n x 1, utilizzando la seguente
trasformazione lineare:
Y = AX
così da ottenere un vettore y di dimensioni m x 1, detto vettore di proiezione
delle feature.
Vediamo come procedere: come primo passo è necessario calcolare il volto
medio, quindi considerando M frame nel training set, si avrà:
M
̃ = 1 ∑ Aj
A
M j =1
A questo punto è possibile calcolare la matrice di covarianza (o matrice di
diffusione), la quale avrà dimensioni n x n:
M
1
̃ )T ( A j − A
̃)
Gt = ∑ ( A j − A
M j =1
Per misurare il potere discriminante del vettore di proiezione (x) possiamo
verificare la dispersione totale del vettore proiettato (y).
Così introducendo il criterio generalizzato di dispersione totale
t
J ( x)= X G t X
possiamo trovare il vettore che massimizza la dispersione.
Questo ci consente di determinare l'asse ottimo di proiezione, che corrisponde
all'autovettore relativo al più grande autovalore della matrice di covarianza.
In generale un solo asse di proiezione non è sufficiente, quindi selezioneremo d
assi di proiezione che soddisfano la condizione:
{ X 1 ,... , X d }=arg max J ( X )
T
X i X j =0 , i≠ j , i , j=1,... , d
Gli assi ottimi di proiezione risultano essere gli autovettori ortonormali relativi
agli d autovalori maggiori.
16
Descrizione Algoritmi
I vettori di proiezione appena determinati sono utilizzati per il calcolo dei vettori
delle feature, detti componenti principali dell'immagine, i quali ci permettono di
determinare la matrice B, di dimensioni m x d, delle features:
Y i =AX i , i=1,... , d
B=[Y 1 ⋯Y d ]
Confrontando la matrice delle features appena ricavata con quelle dei volti
presenti nel training set possiamo classificare il soggetto presente nel frame, per
questo scopo si utilizza un classificatore nearest neighbor e la classe di
appartenenza del soggetto sarà determinata dalla distanza minima calcolata.
d
( j)
d ( B , B J )= ∑ ∥Y k −Y K ∥2
j=1,... , M
k=1
3.2 - Fisherfaces (FLD - LDA)
Abbiamo visto con la tecnica PCA un metodo che ha come obiettivo la ricerca di
quei vettori che offrono la migliore rappresentazione dei dati di input.
La tecnica che verrà ora descritta, Linear Discriminant Analysis [6], ha invece come
obiettivo la ricerca di quei vettori che discriminano al meglio fra le differenti
classi; in altre parole, dato un certo numero di caratteristiche indipendenti
rispetto alle quali i dati vengono descritti, la LDA crea una combinazione lineare
di queste caratteristiche che produce le maggiori differenze medie tra le classi
analizzate.
Nella Fig. 3.2.1 viene mostrata la differenza fra PCA e LDA, in particolare FLD.
Ogni componente facciale (feature) offre un diverso potere discriminante al fine
di identificare una persona, il suo sesso, la sua etnia o la sua età.
La LDA ha avuto diversi sviluppi, in questo caso prenderemo in considerazione la
Fisher's Linear Discriminant, sviluppata da Robert Fisher nel 1936 [5].
L'implementazione di questa analisi viene effettuata tramite l'utilizzo delle
matrici di diffusione, in particolare si calcolano la matrice di diffusione di una
17
Descrizione Algoritmi
classe SW e la matrice di diffusione fra le diverse classi SB, quindi considerando N
immagini {x1, . . . , x N} con valori in uno spazio n-dimensionale e c classi di
appartenenza {X1, . . . , Xc}, si possono ricavare le matrici tramite:
c
T
S B =∑ N i (ui−u)(ui−u)
i=1
c
S W =∑
∑
i =1 x k ∈X i
T
(x k −ui )( xk −ui )
dove ui rappresenta l'immagine media della classe X i mentre Ni è il numero di
immagini nel training set per la classe Xi.
L'estrazione delle features tramite trasformazione lineare che ci porta da uno
spazio n-dimensionale ad uno spazio m-dimensionale, con m < n è del tipo:
T
yk =W x k ,
k =1,…, N
dove W è una matrice n x m di colonne ortonormali.
Se la matrice Sw non è singolare, la proiezione ottima Wopt può essere scelta nel
seguente modo:
T
W opt =arg max
W
∥W S B W ∥
T
∥W S W W∥
=[w 1 ⋯w m ]
dove {wi | i=1,...,m} è l'insieme di autovettori di S B e SW corrispondenti agli m
maggiori autovalori {λi | i=1,...,m}:
S B w i=λ i S W w i ,
i=1,… , m
Nei problemi di face-recognition però si ha l'inconveniente che la matrice S W è
sempre singolare, per ovviare a questo problema si proietta il set di immagini in
uno spazio a dimensione ridotta così da avere la matrice non singolare.
Come intuibile questo può essere fatto applicando prima la tecnica delle PCA,
così da ridurre la dimensione dello spazio delle feature, così che poi si potrà
applicare la FLD senza problemi.
Dopo queste considerazioni avremo per Wopt:
18
Descrizione Algoritmi
T
T
T
W opt =W fld W pca
T
W pca =arg max∣W S T W∣
W
W fld =arg max
W
T
T
T
T
∣W W pca S B W pca W∣
∣W W pca S W W pca W ∣
Per la classificazione si utilizza come nel metodo PCA la distanza euclidea
minima.
Fig. 3.2.1 - Confronto di principal component analysis (PCA) and fisher's linear
discriminant (FLD) per un problema a due classi.
19
Descrizione Algoritmi
3.3 - Speeded Up Robust Feature (SURF)
L'algoritmo SURF è stato presentato nel 2006 da Herbert Bay, Tinne Tuytelaars,
e Luc Van Gool [9][10], il loro obiettivo era quello di fornire un meccanismo per la
ricerca e la descrizione di punti d'interesse in un'immagine.
Questa metodologia nell'ambito del face recognition rientra nelle tecniche che
utilizzano l'immagine in modo locale al fine di permettere la classificazione di un
volto presente nell'immagine.
In altre parole viene analizzata l'immagine alla ricerca di features locali, dette
keypoints, alle quali verrà associato un descrittore.
Questi descrittori, e quindi i punti localizzati, devono essere il più possibile
robusti, cioè non devono soffrire quando l'immagine subisce alcune variazioni, in
particolare la descrizione dei punti fornita dall'algoritmo SURF deve garantire:
•
invarianza rispetto alla rotazione dell'immagine;
•
invarianza rispetto al cambiamento di scala nell'immagine;
•
invarianza rispetto a variazioni dell'illuminazione;
•
invarianza rispetto a piccole variazioni nel punto di vista dell'immagine.
Queste caratteristiche sono garantite anche dall'algoritmo SIFT, che pur essendo
molto valido ha la caratteristica di essere lento, quindi con questo nuovo
algoritmo si vuole sopperire a questa carenza.
Le fasi principali di cui si compone l'algoritmo SURF sono:
•
rilevamento feature;
•
assegnamento orientazione;
•
creazione descrittore;
Iniziamo col descrivere la fase di rilevamento feature.
Il SURF detector si basa sull'utilizzo della Matrice Hessiana [15][16], la quale viene
approssimata mediante l'utilizzo delle immagini integrali [17], le quali
permettono un'implementazione veloce del filtro box di convoluzione.
Il detector così modificato prende il nome di Fast-Hessian.
Nella Fig. 3.3.1 viene rappresentato il concetto di integral images.
20
Descrizione Algoritmi
Fig. 3.3.1 - Rappresentazione del concetto di integral images.
i ≤x j ≤ y
I Σ ( x , y)=∑ ∑ I (i , j)
i=0 j=0
Il miglioramento apportato alla velocità sta nel fatto che avendo determinato I Σ,
il calcolo dell'intensità di un'area rettangolare S, richiede quattro somme:
S =A+ B+C + D
Data un'immagine I, la matrice Hessiana alla scala σ, viene definita come:
H ( x , y , σ)=
[
L xx ( x , y , σ) L xx ( x , y , σ)
L xx ( x , y , σ) L xx ( x , y , σ)
]
2
L xx ( x , y , σ)= ∂ 2 G ( x , y , σ)∗I ( x , y ,σ )
∂x
Dove le funzioni Lxy, Lyx, Lyy, sono definite in maniera analoga a L xx ed è proprio nel
calcolo di queste funzioni che l'approssimazione con il filtro box della derivata
21
Descrizione Algoritmi
del secondo ordine tramite integral images viene sfruttata (la Fig. 3.3.2 mostra il
risultato dell'approssimazione).
Fig. 3.3.2 - Rappresentazione dell'approssimazione apportata dal filtro
box 9 x 9: le regioni in grigio sono uguali a zero.
L'analisi dello spazio di scalatura invece che attraverso consecutive riduzioni della
dimensione dell'immagine viene realizzata tramite un up-scaling del filtro box: 9
x 9, 15 x 15, 21 x 21, 25 x 25, inoltre per ogni ottava l'incremento del filtro viene
raddoppiato: 6, 12, 24. Nella Fig. 3.3.3 viene mostrata questa differenza.
22
Descrizione Algoritmi
Fig. 3.3.3 - Rappresentazione della piramide di scalatura (sinistra) con riduzione
dell'immagine e con up-scaling del filtro di convoluzione (destra).
Come mostrato nella Fig. 3.3.4, per localizzare i punti d'interesse dell'immagine
attraverso le varie scale si utilizza la non-maximum suppression considerando una
vicinanza 3 x 3 x 3: in questo modo scansionando lungo la direzione del gradiente
dell'immagine vengono messi a zero i pixel che non corrispondono a massimi
locali.
Fig. 3.3.4 - Rappresentazione dei pixel coinvolti
durante la localizzazione dei punti d'interesse.
Ora che i punti d'interesse sono stati rilevati si può procedere con la fase di
23
Descrizione Algoritmi
descrizione dei keypoints.
Per determinare l'orientazione delle feature rilevate, si calcolano la risposte
delle haar wavelet [18][19] di dimensione 4σ nella direzione x ed y per l'insieme
di punti compresi in una circonferenza di raggio 6σ, attorno al punto in analisi.
Con σ si fa riferimento alla scala in cui il keypoint è stato rilevato.
6σ
4σ
Fig. 3.3.5 - Rappresentazione del calcolo dell'orientamento dei keypoitns
SURF
Il risultato così ottenuto viene rappresentato tramite vettore, la risposta
orizzontale ci da l'ascissa mentre la risposta verticale ci da l'ordinata, sommando
questi due contributi otteniamo un vettore locale di orientamento.
L'orientazione dominante viene stimata calcolando il vettore locale attraverso
una finestra scorrevole di apertura π/3: il vettore più lungo determina
l'orientamento del punto, si veda la Fig. 3.3.5.
Per la creazione del descrittore viene presa in considerazione una regione
quadrata di dimensione 20σ centrata sul keypoint, la regione viene a sua volta
divisa in 4 x 4 sotto-regioni, per ogni sotto-regione viene calcolata la haar
wavelets di dimensione 2σ per 5 x 5 punti.
Con questa suddivisione ogni sotto-regione contribuisce con quattro valori:
v= [ ∑ d x , ∑ d y , ∑ ∣d x∣, ∑ ∣d y∣]
24
Descrizione Algoritmi
Concatenando i valori ottenuti da tutte le sotto-regioni si ottiene come
descrittore un vettore 4 x 4 x 4 (64 valori contro i 128 del SIFT): il descrittore così
ottenuto è invariante rispetto alla rotazione e alla luminosità, normalizzandolo si
ottiene l'invarianza anche rispetto al fattore di scala.
Nella Fig. 3.3.6 viene mostrato il comportamento delle haar wavelet per alcune
immagini di esempio; nella Fig. 3.3.7 vengono invece mostrati i punti estratti
tramite SIFT e SURF per un volto di esempio.
Fig. 3.3.6 - Risposta delle haar wavelet per una regione omogenea (sinistra), una
regione con frequenze lungo x (centro) e una regione la cui intensità decresce
gradualmente (destra).
Fig. 3.3.7 - Confronto fra SIFT keypoints (sinistra) e SURF keypoints (destra).
25
Descrizione Algoritmi
3.4 - Multi Layer Perceptron (MLP)
Gli algoritmi di estrazione delle features, come è stato già ribadito più volte,
richiedono delle tecniche di classificazione per poterne identificare la classe di
appartenenza, finora sono stati trattati già due metodi per ottenere questa
classificazione:
•
il calcolo della distanza minima (detto anche classificatore nearest
neighbor);
•
le support vector machine.
In questo lavoro è stata presa in considerazione un'ulteriore tecnica di machine
learning: la rete neurale Multi Layer Perceptron.
L'intento di una rete neurale è quello di emulare il funzionamento della mente
umana, la quale è composta da un'inseme di neuroni tra loro collegati.
I neuroni sono le cellule che costituiscono la nostra mente e che trasmettono i
segnali nervosi (sia tra loro che verso altre parti del corpo), questi neuroni sono
variamente collegati tra loro attraverso una struttura che prende il nome di
sinapsi.
Ogni neurone possiede un lungo prolungamento chiamato assono e diverse
ramificazioni più piccole che prendono il nome di dendriti (Fig. 3.4.1).
Attraverso i dendriti, che sono collegati agli assoni di altri neuroni, la cellula
riceve i segnali che gli vengono inviati, mentre attraverso l'assone viene mandato
un nuovo segnale.
Fig. 3.4.1 - Schema di un neurone biologico.
26
Descrizione Algoritmi
In generale, quando un neurone riceve un segnale, se esso supero una certa
soglia (detta soglia di attivazione), il neurone lo propaga attraverso il suo assone
agli altri neuroni, altrimenti resta inattivo.
Un neurone artificiale tenta di emulare il comportamento di quello biologico,
anche se in maniera molto semplificata, vediamo come.
Ogni neurone ha una serie di collegamenti pesati in ingresso e fornisce un
output in base agli input ricevuti dai collegamenti.
Per collegamento pesato si intende un collegamento al quale è anche associato
un peso, che rappresenta la forza del collegamento e quindi come esso dovrà
influenzare l'output del neurone.
L'informazione trasportata dal collegamento viene moltiplicata per il peso, che
solitamente ha un valore compreso fra [0,1] o [-1,+1].
Sarà proprio il valore dei pesi a determinare l'esattezza dei risultati prodotti, ed
è appunto variando i pesi tramite opportuni algoritmi che si tenta di raggiungere
una configurazione ottimale della rete.
Il neurone, dopo aver ricevuto gli input pesati da tutti i collegamenti (dendriti) li
somma, la sommatoria ottenuta viene poi passata ad una funzione di chiamata
funzione di attivazione che fa propagare il segnale.
Una rete neurale è formata da un certo numero di neuroni, i quali sono
organizzati in diversi livelli, ognuno dei quali ha un preciso compito.
Il primo strato è quello di input: contiene i neuroni che ricevono l'input e non
hanno collegamenti pesati, infatti i dati che ricevono non sono provenienti da
altri neuroni e il loro compito è semplicemente quello di immagazzinare l'input e
trasmetterlo al livello successivo.
Lo strato di input può essere collegato direttamente a quello output oppure tra
di essi si può trovare un certo numero di livelli nascosti (hidden layers).
Nella Fig. 3.4.2 viene rappresenta una rete neurale con un solo livello nascosto.
Dobbiamo ora mostrare come la rete possa apprendere, esistono due tipi di
apprendimento:
•
supervisionato;
27
Descrizione Algoritmi
•
non supervisionato.
Fig. 3.4.2 - Schema di rete neurale 128x40x40 utilizzabile con descrittori
SIFT e 40 diversi soggetti nel training set.
Con l'apprendimento supervisionato la rete necessita di una prima fase di
addestramento durante la quale le vengono forniti alcuni esempi comprendenti
sia l'input che l'output desiderato, nel caso del face recognition vanno forniti i
descrittori dei keypoint estratti e la relativa classe di appartenenza.
La rete viene eseguita con questi input di cui si conosce già in precedenza il
risultato e tramite alcuni algoritmi vengono modificati i pesi della rete per
fornire risultati sempre più accurati.
Quando la fase di addestramento è completata, cioè si è raggiunta una soglia
minima di errore prestabilita, la rete è in grado di fornire un risultato esatto sia
nel caso gli vengano forniti come input i dati del training set che nel caso
vengano forniti dati di input che la rete non ha mai visto.
Più è vasto il training set maggiore sarà la capacità di generalizzazione della rete,
cioè di fornire risultati corretti con dati di input non appartenenti al training set.
Dalla descrizione fatta fino a questo momento è evidente che la parte più
importante per l'apprendimento della rete neurale è la fase di modifica dei pesi
fra le connessioni dei neuroni: l'algoritmo più famoso è quello di retro
propagazione dell'errore (error backpropagation).
28
Descrizione Algoritmi
L'idea di base dell'algoritmo di apprendimento backpropagation è quella di
modificare i pesi delle connessioni in modo tale che si minimizzi una certa
funzione di errore:
N
1
h
h 2
E= ∑ ∑ ( s k − yk )
2 h=1 k
dove N indica il numero di elementi nel training set e l'indice k il valore relativo al
k-esimo neurone di output di ciò che la rete restituisce s e ciò che dovrebbe
restituire y.
La funzione di errore in generale dipenderà dai pesi E(w), per minimizzarla
possiamo applicare il metodo della discesa del gradiente, il quale, se preso col
segno negativo ci da la direzione di massimo decremento:
∂ E ∂ E ∂ si ∂ net i
=
∂ w ij ∂ si ∂ net i ∂ w ij
dove wij è il peso dal neurone j al neurone i e net i è la somma degli input del
neurone i.
Applicando il metodo della discesa del gradiente avremo:
w ij (t +1)=w ij (t)−ϵ
∂E
(t)
w ij
La scelta del fattore di scala per il gradiente (ε) ha una notevole importanza in
quanto influenza Il tempo impiegato dalla rete per raggiungere la convergenza.
Se questo valore fosse troppo piccolo sarebbero necessari troppi passi par
giungere alla soluzione, mentre se fosse troppo grande potrebbe generare
un'oscillazione che impedirebbe all'errore di scendere sotto il valore di soglia
stabilito, impedendo il raggiungimento della convergenza.
Questo problema è in parte risolvibile con l'introduzione del termine di
momento, il quale fornisce una certa inerzia alle fluttuazioni sopra citate,
smorzando l'influenza del passo precedente su quello corrente:
29
Descrizione Algoritmi
Δ w ij (t+1)=−ϵ
∂E
(t)+μ Δ w ij (t −1)
w ij
Tuttavia anche il fattore di scala del momento è affetto dallo stesso problema
del fattore di scala del gradiente, quindi il miglioramento che introduce è
limitato.
In precedenza abbiamo accennato alla funzione di attivazione del neurone, per la
rete MLP con backpropagation la funzione solitamente utilizzata è la sigmoid
simmetrica (la Fig. 3.4.3 ne fornisce una rappresentazione grafica):
−α x
1−e
f ( x)=β
−α x
1+e
Fig. 3.4.3 - Rappresentazione grafica della funzione sigmoid simmetrica.
Ricapitolando l'algoritmo di backpropagation può essere diviso in due passi:
•
forward step: l'input della rete viene propagato a tutti i livelli,
permettendo il calcolo di E(w);
•
backward step: l'errore fatto dalla rete viene propagato all'indietro e i pesi
sono opportunamente aggiornati.
30
Descrizione Algoritmi
A questo punto ricavare la classe di appartenenza dell'input testato è banale:
•
la classe di appartenenza del keypoint testato dovrebbe avere il
corrispondente valore del neurone di output prossimo a +1;
•
tutti i neuroni di output non corrispondenti alla classe di appartenenza
della feature testata dovrebbero avere un valore prossimo a -1.
Per il processo di identificazione di un volto, avendo estratto n keypoints dalla
relativa immagine, non resta altro che testare sulla rete già addestrata le n
features e raccogliere in un istogramma la classe di appartenenza assegnata
dalla rete ad ogni keypoint.
Come mostrato nella Fig. 3.4.4 nell'istogramma ci sarà una classe con un valore
maggiore rispetto alle altre, ed è questo che determina la classe del soggetto.
Fig. 3.4.4 - Rappresentazione dell'istogramma generato nella fase di
identificazione.
Citiamo infine un ulteriore miglioramento applicabile che in questo lavoro non è
stato preso in considerazione: nel machine learning vi è la possibilità applicare
una tecnica detta di bootstrapping [8], la quale iterativamente allena e valuta il
31
Descrizione Algoritmi
classificatore al fine migliorarne la performance.
Questa idea può essere applicata per selezionare in modo più intelligente il
training patterns da utilizzare [11] per la fase di allenamento, infatti una classe di
volti può necessitare di meno immagini di apprendimento rispetto ad altre.
32
Sviluppo e test
4 - Sviluppo e test
4.1 - Sviluppo
L'obiettivo di questo lavoro era quello di confrontare diverse metodologie di face
recognition al fine di capire in base al contesto l'algoritmo migliore da utilizzare.
Il primo passo è stato quindi quello dell'implementazione degli algoritmi: si è
scelto di utilizzare il linguaggio c++ in quanto offre ottime capacità
computazionali rispetto ad altri linguaggi come ad esempio il Java.
Inoltre utilizzando il linguaggio c++ è stato possibile usufruire delle librerie
OpenCV [20], le quali mettono a disposizione molte funzioni per l'elaborazione
delle immagini, diversi algoritmi per il machine learning e molte altre funzioni
matematiche di supporto, come ad esempio il calcolo di trasposte.
Lo sviluppo del software, e anche i successivi test, sono stati effettuati in
ambiente linux, utilizzando la distribuzione Ubuntu 12.04 LTS 64-bit [21]; in
questo ambiente ci sono diverse alternative per la scelta dell'editor, ma vista la
sua completezza, come IDE è stato utilizzato QT Creator, il quale si integra
perfettamente anche con le librerie OpenCV.
I software implementati sono due, in base al loro scopo:
•
training: questo programma permette di effettuare gli apprendimenti per
le metodologie che richiedono un algoritmo di machine learning, quindi
dopo aver estratto e descritto tutte le features, associando per ognuna la
classe di appartenenza, il programma procede nel realizzare gli
apprendimenti; le metodologie interessate da questo programma sono:
◦ SIFT con SVM;
◦ SIFT con MLP;
◦ SURF con SVM;
◦ SURF con MLP;
•
testing: questo software effettua tutti i test dei vari algoritmi, nel caso di
33
Sviluppo e test
test sugli algoritmi che richiedono una fase di training, il relativo file di
apprendimento, precedentemente realizzato, sarà caricato, nel caso
invece degli altri algoritmi prima della fase di test verrà anche creato il
modello del training set; in entrambi i casi sarà comunque necessaria una
fase in cui siano estratte le features dai volti da testare.
Per effettuare i test e gli apprendimenti è stato necessario l'utilizzo di una
workstation portatile Dell Precision, con un processore i7-vPro, 16 GB di ram e
un hard-disk con caching SSD da 32 GB, in quanto con un “normale” PC il tempo
necessario per la realizzazione degli apprendimenti sarebbe stato estremamente
elevato. Inoltre va aggiunto che non è stato possibile installare il sistema
operativo direttamente su hard disk ed è stato necessario ricorrere all'utilizzo di
una macchina virtuale, per la quale sono stati impiegati 12 GB di ram anziché 16.
Le prestazioni su macchina virtuale sono state ridotte solo in parte perché il
processore i7-vPro sfrutta una tecnologia che punta proprio a migliore le sue
performance in contesti di virtualizzazione.
Inoltre volendo stimare le performance degli algoritmi, è stato scelto di non
realizzare un'interfaccia grafica per i software implementati, che sono utilizzabili
da riga di comando, così da avere la potenza della CPU tutta a disposizione degli
algoritmi da testare.
I parametri da valutare sono già stati anticipati nell'introduzione, fra questi ci
sono diversi tempi, per la loro misura sono state sfruttate due funzioni delle
librerie OpenCV:
•
una che restituisce il numero di tick a partire da un certo evento
(accensione macchina);
•
una che restituisce la frequenza dei tick, ovvero quanti tick al secondo
sono eseguiti;
In questo modo calcolando la differenza di tick fra due momenti e dividendola
per la frequenza (il cui valore restituito dalla funzione è 1 GHz) è possibile
ottenere un tempo in secondi.
34
Sviluppo e test
4.2 - Test
Ora che è stato introdotto l'hardware e il sistema utilizzato per eseguire i test
possiamo passare all'analisi dei risultati e al loro confronto, come già detto in
precedenza sono stati sfruttati due diversi database di immagini, uno più adatto
per verificare le percentuali di identificazione e l'altro più utile per la stima dei
tempi di predizione ed apprendimento con molti soggetti nel training set.
Partiamo con il primo, il database ORL, il quale è formato da 40 soggetti, per
ognuno dei quali ci sono 10 diverse immagini.
I test sono stati effettuati utilizzando da 1 a 5 immagini di apprendimento per
ogni soggetto (nei grafici questo sarà indicato con FPS), individuando 5 gruppi,
per ogni gruppo sono state selezionate 10 diverse sequenze di immagini da
introdurre nel training set; in questo modo si sono ottenuti per ogni parametro,
10 valori utilizzando una sola immagine di apprendimento, 10 utilizzando 2
immagini di apprendimento e così via, il valore preso come stima del parametro
in ogni gruppo, sarà dato dalla media dei valori ottenuti con le singole sequenze.
Questo scelta porta a due benefici:
•
la minimizzazione dell'influenza dello stato momentaneo del calcolatore
sul valore del singolo risultato temporale;
•
la possibilità di selezionare in modo casuale tutte le possibili immagini di
ogni soggetto.
Valutiamo per primi gli algoritmi di estrazione features SIFT e SURF, in
precedenza è stato spiegato per entrambi come vengano estratti i keypoint e
come vengano ricavati i relativi descrittori.
L'obiettivo del SURF rispetto al SIFT era proprio quello di ridurre il tempo di
estrazione e descrizione dei keypoint, questo viene evidenziato dalla Fig. 4.2.1,
nella quale viene riportato il tempo di estrazione sommato a quello di
descrizione totale per ogni gruppo.
Una delle principali differenze evidenziate dalla descrizione dei due algoritmi di
estrazione features è relativa alla dimensione stessa del descrittore ricavato.
I descrittori vengono rappresentati come dei vettori di:
35
Sviluppo e test
•
128 elementi per l'algoritmo SIFT;
•
64 elementi per l'algoritmo SURF.
Come algoritmi di classificazione sono stati scelti SVM e MLP, gli elementi che
vengono passati come input a questi classificatori sono i descrittori dei keypoints
estratti e le relative classi di appartenenza.
Per entrambi gli algoritmi è stato scelto come criterio di arresto che l'errore
commesso sia inferiore a 1e-05 (cioè 0.00001), inoltre per la rete MLP sono stati
scelti come valori per il fattore di scala del gradiente e per il termine di momento
rispettivamente: 0.001 e 0.005.
La rete neurale utilizzata ha la seguente struttura:
•
SIFT: 128 – 80 – 40;
•
SURF: 64 – 80 – 40;
dove ovviamente il livello di input corrisponde alla dimensione del descrittore e il
livello di output corrisponde al numero di soggetti presenti nel training set, la
dimensione del livello nascosto è invece dovuta ad alcune prove pratiche.
SEC
Tempo di estrazione e descrizione keypoints - ORL
4,500
4,000
3,500
3,000
2,500
2,000
1,500
1,000
0,500
0,000
SIFT
SURF
1
2
3
4
5
FPS
Fig. 4.2.1 - Tempo di estrazione e descrizione dei keypoints per il database ORL.
36
Sviluppo e test
Vista la differenza di dimensione tra il descrittore SIFT e quello SURF è logico
aspettarsi un tempo di apprendimento, sia per SVM che per MLP, maggiore nel
caso di descrittori SIFT.
Nella Fig. 4.2.2 vengono mostrati proprio i tempi per la fase di allenamento dei
classificatori, le previsioni fatte sono state rispettate ed inoltre è anche possibile
notare l'enorme differenza tra i due diversi approcci usati nei classificatori:
infatti l'algoritmo SVM richiede una struttura matematica molto più complessa,
mentre la rete MLP corrisponde ad una “propagazione di segnali”.
Il tempo indicato nella figura si riferisce, come al solito, alla media dei tempi
impiegati dalle singole sequenze per ogni gruppo, da notare che le SVM con
descrittori SIFT richiedono un tempo, con 5 immagini di apprendimento, di circa
11500 secondi, ovvero più di 3 ore.
Tempo di apprendimento - ORL
12000,000
11000,000
10000,000
9000,000
8000,000
SIFT – MLP
SURF – MLP
SIFT – SVM
SURF – SVM
SEC
7000,000
6000,000
5000,000
4000,000
3000,000
2000,000
1000,000
0,000
1
2
3
4
5
FPS
Fig. 4.2.2 - Tempi di apprendimento SVM e MLP su database ORL
37
Sviluppo e test
Nella Fig. 4.2.3 vengono mostrati i tempi di predizione, da questo grafico è
possibile ricavare diverse informazioni:
•
il tempo di predizione della rete neurale MLP non dipende dal numero di
frame utilizzati per ogni soggetto nel training set e quindi dal numero di
descrittori utilizzati come input, questo è facilmente spiegabile perché
indipendentemente dal numero di frame, la struttura della rete (ciò che
influisce sul tempo), resta invariata;
•
il tempo di predizione delle SVM invece, cresce all'aumentare del numero
di frame per soggetto, questo è spiegabile considerando il fatto che
aumentando i frame, aumentano i keypoints, di conseguenza gli iperspazi
di separazione sono calcolati fra più punti e questo porta ad un aumento
di complessità delle SVM ;
•
un'ulteriore considerazione va fatta sul confronto generale dei tempi,
infatti anche nella predizione del soggetto la rete neurale mostra dei
tempi incredibilmente ridotti, in particolare rispetto alle SVM.
Analizzando i risultati mostrati fino a questo momento, possiamo notare la netta
superiorità della rete neurale MLP per quanto riguarda il tempo impiegato per
apprendimenti e predizioni, inoltre anche la differenza tra descrittori SIFT e
SURF non appare così evidente come nel caso della SVM.
Questa superiorità però svanisce confrontando le percentuali di riconoscimento,
infatti dopo aver allenato i classificatori con il training set, le restanti immagini
sono state utilizzate per testare la capacità di generalizzazione del classificatore.
Va segnalato che con il classificatore SVM c'è anche la possibilità che il soggetto
in test sia identificato contemporaneamente come appartenente a due diverse
classi, questo viene detto riconoscimento multiplo.
Di seguito saranno riportate le percentuali di riconoscimento:
•
Fig. 4.2.4 – riconoscimento corretto e incorretto di SIFT e SURF con MLP;
•
Fig. 4.2.5 – riconoscimento corretto, incorretto e multiplo si SIFT e SURF
con SVM;
•
Fig. 4.2.6 – confronto fra corretto riconoscimento di SIFT e SURF con SVM
e MLP.
38
Sviluppo e test
Tempo di predizione - ORL
160,000
140,000
120,000
MSEC
100,000
SIFT – MLP
SURF – MLP
SIFT – SVM
SURF – SVM
80,000
60,000
40,000
20,000
0,000
1
2
3
4
5
FPS
Fig. 4.2.3 - Tempi di predizione SVM e MLP nel database ORL.
Percentuali di riconoscimento - ORL MLP
100,00%
90,00%
80,00%
70,00%
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
SIFT – CORRECT
SURF – CORRECT
SIFT – WRONG
SURF – WRONG
1
2
3
4
5
FPS
Fig. 4.2.4 - Percentuali di riconoscimento SIFT e SURF con classificatore MLP – ORL.
39
Sviluppo e test
Percentuali di riconoscimento - ORL SVM
100,00%
90,00%
80,00%
SIFT – CORRECT
SURF – CORRECT
SIFT – WRONG
SURF – WRONG
SIFT – MULTI
SURF – MULTI
70,00%
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
1
2
3
4
5
FPS
Fig. 4.2.5 - Percentuali di riconoscimento SIFT e SURF con classificatore SVM – ORL.
Percentuali di riconoscimento - ORL
100,00%
90,00%
80,00%
70,00%
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
SIFT MLP
SIFT SVM
SURF MLP
SURF SVM
1
2
3
4
5
FPS
Fig. 4.2.6 - Percentuali di riconoscimento complessive di SIFT e SURF con SVM e MLP
sul database ORL.
40
Sviluppo e test
Passiamo ora all'analisi dei risultati ottenuti con i metodi di face recognition
Eigenfaces, Fisherfaces e 2DPCA sul database ORL, anche in questo caso si sono
individuati 5 gruppi, corrispondenti al numero di frame per soggetto inseriti nel
training set, inoltre per rendere i risultati omogenei, sono state utilizzate le
stesse sequenze per selezionare i frame che sono state usate per SIFT e SURF.
La fase di apprendimento che è stata individuata con l'utilizzo degli algoritmi di
classificazione, nelle tecniche che verranno ora esaminate corrisponde alla
creazione del modello, ovvero alla determinazione delle features rappresentanti
lo spazio dei volti e alla successiva proiezione di ogni frame del training set sullo
spazio individuato dalle features; la fase di predizione invece corrisponde al
calcolo della distanza minima tra la proiezione del volto testato e le proiezioni
precedentemente ricavate.
Come ultima osservazione va detto che è stato scartato il gruppo di sequenze
con un solo frame per soggetto, vista l'impossibilità di applicarci il metodo LDA.
Nelle seguenti figure vengono mostrati i risultati ricavati:
•
Fig. 4.2.7 – tempo di creazione del modello;
•
Fig. 4.2.8 – tempo di predizione;
•
Fig. 4.2.9 – percentuali di corretto e incorretto riconoscimento;
I valori ottenuti confermano che la tecnica 2DPCA necessita di un tempo minore
per l'estrazione delle features e per la ricerca degli autovalori e autovettori,
dovuto in parte al fatto che la matrice di covarianza ha dimensione ridotta
rispetto al caso PCA da cui deriva.
Per quanto riguarda le percentuali di riconoscimento, possiamo notare che la
differenza tra i valori di ogni algoritmo è minima: la tecnica PCA è quella che
offre un migliore riconoscimento, mentre la LDA il peggiore.
Nella Fig. 4.2.10 invece viene mostrato il riepilogo delle percentuali di corretto
riconoscimento ottenute con tutti gli algoritmi sul database ORL.
Il confronto fra i tempi di creazione del modello e i tempi di apprendimento non
viene riportato in quanto essendo già su due scale di misura diverse, non
necessita di ulteriori approfondimenti.
41
Sviluppo e test
Tempo di creazione modello - ORL
1400,000
1200,000
MSEC
1000,000
PCA
2DPCA
LDA
800,000
600,000
400,000
200,000
0,000
2
3
4
5
FPS
Fig. 4.2.7 - Tempo di creazione del modello per algoritmi PCA, 2DPCA, LDA – ORL.
Tempo di predizione - ORL
0,800
0,700
0,600
MSEC
0,500
PCA
2DPCA
LDA
0,400
0,300
0,200
0,100
0,000
2
3
4
5
FPS
Fig. 4.2.8 - Tempo di predizione degli algoritmi PCA, 2DPCA, LDA – ORL.
42
Sviluppo e test
Percentuali di riconoscimento - ORL
100,00%
90,00%
80,00%
PCA – CORRECT
2DPCA – CORRECT
LDA – CORRECT
PCA – WRONG
2DPCA – WRONG
LDA – WRONG
70,00%
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
2
3
4
5
FPS
Fig. 4.2.9 - Percentuali di riconoscimento di PCA, 2DPCA, LDA sul database ORL.
Percentuali di riconoscimento - ORL
100,00%
90,00%
80,00%
SIFT MLP
SIFT SVM
SURF MLP
SURF SVM
PCA
2DPCA
LDA
70,00%
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
2
3
4
5
FPS
Fig. 4.2.10 - Percentuali di riconoscimento di tutti le tecniche sul database ORL.
43
Sviluppo e test
Dai risultati ottenuti con il database ORL possiamo vedere come la tecnica che
combina l'utilizzo dei descrittori SIFT con il classificatore SVM abbia la migliore
percentuale di riconoscimento, anche sfruttando pochi frame per ogni soggetto.
L'utilizzo della rete neurale come classificatore invece porta ad un livello di
corretto riconoscimento che è il peggiore fra tutti quelli osservati, sia utilizzando
descrittori SIFT che SURF.
Il classificatore SVM ha si fornito la migliore capacità di generalizzazione, ma
d'altro canto ha anche richiesto un maggior tempo sia per la fase di
apprendimento che per la fase di predizione del risultato.
Per quanto riguarda il database Faces, questo è composto da 150 soggetti, per
ognuno dei quali sono presenti 20 frame, di dimensione maggiore di quelli
presenti nel database ORL.
Questo ha dato la possibilità di verificare anche la differenza di keypoints estratti
con gli algoritmi SIFT e SURF al variare della dimensione dell'immagine, infatti
sono stati calcolati prima con la dimensione maggiore (180 x 200) e poi con la
dimensione ridotta (92 x 118), la Fig. 4.2.11 mostra questa differenza: i valori
riportati sono ottenuti come media su 150 soggetti e 15 frame per soggetto.
Numero di keypoints medi estratti - Faces
275
250
225
keypoints
200
SIFT 118 x 92
SIFT 200 x 180
SURF 118 x 92
SURF 200 x 180
175
150
125
100
75
50
25
0
Fig. 4.2.11 - Numero medio di keypoints estratti con SIFT e SURF su database Faces.
44
Sviluppo e test
I risultati che verranno mostrati per le tecniche che sfruttano SIFT e SURF sono
stati ricavati considerando 5 frame per ogni soggetto ( con dimensione 92 x 118),
una sola sequenza scelta in modo casuale di frame da inserire nel training set, e
gruppi di 40, 50, 100 e 150 soggetti; va aggiunto che nel caso di intero database
non è stato possibile completare l'apprendimento del classificatore SVM.
E' logico aspettarsi dei risultati in linea con quelli ottenuti per il database ORL,
cioè che i tempi di estrazione e descrizione dei keypoints, di apprendimento e di
predizione necessari al classificatore SVM siano superiori agli altri, in particolare
con l'utilizzo di descrittori SIFT.
I valori ottenuti dai test sono riportati in seguito:
•
Fig. 4.2.12 – tempi di estrazione e descrizione keypoints;
•
Fig. 4.2.13 – tempi di apprendimento;
•
Fig. 4.2.14 – tempi di predizione;
Tempo di estrazione e descrizione keypoints - Faces
25,000
20,000
SEC
15,000
SURF
SIFT
10,000
5,000
0,000
40
50
100
150
SOGGETTI
Fig. 4.2.12 - Tempi di estrazione e descrizione di keypoints SIFT e SURF – Faces.
Va detto che per quanto riguarda la rete neurale MLP, al crescere del numero di
soggetti considerati per il training set, è stato necessario apportare alcune
modifiche, sia nella struttura della rete che nei parametri per l'apprendimento, i
45
Sviluppo e test
valori utilizzati (ricavati tramite tentativi) sono riportati nella seguente tabella.
MLP
ε
μ
Input layer
Hidden layer
Output layer
40
0,001
0,005
128/64
80
40
50
0,001
0,005
128/64
80
50
100
0,001
0,005
128/64
160
100
150
0,005
0,005
128/64
160
150
SEC
Tempo di apprendimento - Faces
125000,000
120000,000
115000,000
110000,000
105000,000
100000,000
95000,000
90000,000
85000,000
80000,000
75000,000
70000,000
65000,000
60000,000
55000,000
50000,000
45000,000
40000,000
35000,000
30000,000
25000,000
20000,000
15000,000
10000,000
5000,000
0,000
SURF – MLP
SURF – SVM
SIFT – MLP
SIFT – SVM
40
50
100
150
SOGGETTI
Fig. 4.2.13 - Tempi di apprendimento SVM e MLP su database Faces.
46
Sviluppo e test
Tempo di predizione - Faces
550,000
500,000
450,000
400,000
MSEC
350,000
SURF – MLP
SURF – SVM
SIFT – MLP
SIFT – SVM
300,000
250,000
200,000
150,000
100,000
50,000
0,000
40
50
100
150
SOGGETTI
Fig. 4.2.14 - Tempi di predizione per classificatori SVM e MLP su database Faces.
Come ulteriore analisi, per il classificatore SVM, è stato verificato con quanta
precisione viene fatta la predizione della classe di appartenenza del soggetto in
analisi, cioè considerando che per un frame siano stati trovati n keypoints e m
siano stati assegnati alla classe predetta, con m <= n,
è stato calcolato il
rapporto m/n.
Esprimendo questo rapporto in termini di percentuale, è possibile determinare
con quanta certezza il soggetto è stato classificato in una determinata classe,
nella Fig. 4.2.15 vengono mostrati questi valori sia per l'algoritmo di estrazione
features SIFT che per quello SURF.
Dal grafico si vede che con i descrittori SURF si ha una precisione della predizione
maggiore che nel caso di descrittori SIFT, inoltre come andamento generale si ha
un comportamento facilmente prevedibile: l'accuratezza della predizione
diminuisce all'aumentare del numero di soggetti presenti nel training set.
47
Sviluppo e test
Precisione di predizione SVM - Faces
100,00%
90,00%
80,00%
70,00%
60,00%
SURF
SIFT
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
40
50
100
SOGGETTI
Fig. 4.2.15 - Precisione di predizione del classificatore SVM su database Faces.
A questo punto è possibile passare alle tecniche Eigenfaces, Fisherfaces e
2DPCA, il database ORL aveva mostrato che sia per quanto riguarda i tempi che
per le percentuali di riconoscimento, tutte e tre le metodologie, si comportano in
modo molto efficiente.
Per questo motivo è stato scelto un approccio di analisi simile a quello utilizzato
con il database precedente: si sono considerati da 5 a 10 frame di ogni soggetto
per la creazione del training set, individuando 5 gruppi, per ogni gruppo sono
state utilizzate 10 diverse sequenze per poi calcolare le medie e usarle come
stime dei parametri da valutare.
Nella Fig. 4.2.16 e Fig. 4.2.17 sono mostrati rispettivamente i tempi di creazione
del modello e di predizione, anche in questo caso il 2DPCA si dimostra superiore
nella creazione del modello ma contrariamente a quello che succedeva con il
database ORL il tempo di predizione è il peggiore.
48
Sviluppo e test
MSEC
Tempo di crezione del modello - Faces
600000,000
560000,000
520000,000
480000,000
440000,000
400000,000
360000,000
320000,000
280000,000
240000,000
200000,000
160000,000
120000,000
80000,000
40000,000
0,000
PCA
2DPCA
LDA
5
6
7
8
9
10
FPS
Fig. 4.2.16 - Tempo di creazione del modello per PCA, 2DPCA e LDA - Faces.
Tempo di predizione - Faces
3,000
2,500
MSEC
2,000
PCA
2DPCA
LDA
1,500
1,000
0,500
0,000
5
6
7
8
9
10
FPS
Fig. 4.2.17 - Tempo di predizione per PCA, 2DPCA e LDA su database Faces.
49
Sviluppo e test
Nella Fig. 4.2.18 viene mostrato il confronto fra i tempi di predizione con tutti i
soggetti presenti nel training set, questo serve a mostrare la velocità del
classificatore MLP, la quale è paragonabile a quella ottenuta con il calcolo della
distanza minima utilizzata nelle tecniche PCA, 2DPCA e LDA.
Tempo di predizione - Faces
3,000
2,500
SURF – MLP
SIFT – MLP
PCA
2DPCA
LDA
MSEC
2,000
1,500
1,000
0,500
0,000
150
SOGGETTI
Fig. 4.2.18 - Tempi di predizioni generali sul database Faces.
50
Conclusioni e sviluppi futuri
5 - Conclusioni e sviluppi futuri
In questo capitolo finale saranno spiegate le conclusioni tratte dai test
effettuati, considerando i vari scenari in cui il sistema di riconoscimento volti
andrà applicato e i requisiti fondamentali da soddisfare in ogni ambito.
Successivamente verranno introdotti alcuni possibili sviluppi e approfondimenti
che sono emersi durante la realizzazione di questo lavoro e durante l'analisi dei
risultati ottenuti: questi riguardano sia ulteriori tecniche di estrazione features
che l'implementazione delle metodologie di riconoscimento in altre architetture.
5.1 - Conclusioni
Nel capitolo 4 abbiamo analizzato le performance, sia temporali che di
riconoscimento, delle tecniche di face-recognition implementate, l'obiettivo di
questa analisi era quello di capire quale metodologia fosse più indicata, in base al
contesto in cui il riconoscimento di volti va applicato.
Ricordiamo le tecniche prese in considerazione in questa analisi:
•
Eigenfaces (PCA)
•
2DPCA
•
Fisherfaces (LDA)
•
SIFT con SVM
•
SIFT con MLP
•
SURF con SVM
•
SURF con MLP
Ovviamente la caratteristica che ogni sistema di riconoscimento deve soddisfare
è quella di avere una buona capacità di riconoscere, cioè di classificare il
soggetto che gli viene posto in analisi, in modo corretto.
In questo, la tecnica che combina l'utilizzo dell'algoritmo SIFT per l'estrazione
delle features con le support vector machine come metodo di classificazione, è
risultata in assoluto la migliore, arrivando con appena 3 immagini per ogni
51
Conclusioni e sviluppi futuri
soggetto
presente nel
training
set,
ad
una
percentuale di corretto
riconoscimento di circa il 92%, arrivando al 97% con 5 frame per soggetto.
Questo risultato va attribuito sia alla robustezza dei descrittori SIFT che
all'ottima capacità di classificazione fornita dalle SVM, di conseguenza quando il
requisito fondamentale del sistema di riconoscimento è la capacità di corretta
rilevazione delle classi di appartenenza, la coppia SIFT e SVM è indiscutibilmente
la scelta più opportuna.
Di contro va detto che l'utilizzo dei descrittori SIFT con le SVM è anche la tecnica
che richiede i tempi maggiori, in ogni fase, rendendola in alcune situazioni
inutilizzabile, infatti quando è necessario, con una frequenza alta, eseguire nuovi
apprendimenti per il classificatore, questa tecnica diventa difficilmente
sostenibile, in particolare se il training set contiene molti soggetti.
Un leggero miglioramento, sempre considerando la corretta identificazione
come principale requisito, può essere portato dall'utilizzo dei descrittori SURF
insieme alle SVM, questa combinazione permette di avere percentuali di
riconoscimento simili a quelle fornite dai descrittori SIFT, ma con tempi che sono
quasi dimezzati, pur rimanendo molto elevati in confronto a quelli ottenibili con
le altre tecniche.
L'utilizzo delle reti neurali come metodo di classificazione è risultato molto
valido se consideriamo il tempo richiesto per determinare la classe di
appartenenza del soggetto in esame, tuttavia la correttezza raggiunta da questa
tecnica nella classificazione, con pochi frame per ogni soggetto presenti nel
training set, è la peggiore fra tutte quelle ottenute, va detto però che
aumentando il numero di immagini per ogni individuo nel training set, la capacità
di classificazione è molto vicina a quella ottenibile con le SVM, pur mantenendo
invariato il tempo di predizione e molto basso il tempo di apprendimento.
Questo rende consigliabile l'utilizzo della rete MLP solo quando si dispone di un
elevate numero di immagini per ogni soggetto.
Le tecniche Eigenfaces, Fisherfaces e 2DPCA, si sono rivelate come il miglior
compromesso fra corretta identificazione e tempi necessari in ogni fase, infatti
non essendoci una vera e propria fase di apprendimento, il tempo necessario per
52
Conclusioni e sviluppi futuri
ricavare il modello che rappresenta il training set è praticamente istantaneo, in
particolare la tecnica del 2DPCA è risultata la più veloce e la più interessante,
infatti con il database da 150 soggetti, per la creazione del modello 2DPCA sono
stati necessari meno di 10 minuti, mentre per l'apprendimento del classificatore
SVM con 100 soggetti sono state necessarie più di 34 ore.
Inoltre le percentuali di riconoscimento sono molto vicine a quelle ottenute dal
classificatore SVM e questo rende le tre tecniche molto valide, soprattutto nei
casi in cui il tempo per determinare l'identità del volto è fondamentale e nei casi
in cui sono necessari continui aggiornamenti del training set.
Pensando all'utilizzo dei sistemi di face recognition negli smartphone o in robot
con processori simili a quelli degli smartphone, sarebbe impensabile effettuare
l'apprendimento di un classificatore, questo ci permette di dire che su questi
dispositivi vadano prese altre strade:
•
l'utilizzo di tecniche come il 2DPCA, in questo caso però può esistere il
problema che le CPU agenti sugli smartphone non siano molto ottimizzate
per effettuare calcoli su matrici e vettori e quindi le prestazioni
potrebbero essere meno sbalorditive di quelle qui verificate;
•
l'utilizzo di un altro sistema esterno, più potente, per realizzare gli
apprendimenti del classificatore SVM, lasciando al dispositivo mobile il
solo compito di estrazione, descrizione e classificazione dei keypoints SIFT
o SURF;
•
l'utilizzo dei descrittori SIFT o SURF con sistemi di classificazione più
semplici, come ad esempio il calcolo della distanza minima;
•
l'utilizzo di altri metodi per estrarre e descrivere i keypoints, come ad
esempio l'algoritmo ORB [22], ed una tecnica di classificazione che può
essere la SVM o il calcolo della distanza minima.
In ogni caso utilizzando un dispositivo mobile, sia che si tratti di uno smartphone
o che si tratti di un robot, è possibile identificare come parametro più
importante il tempo necessario per la fase di classificazione, infatti utilizzando
questi dispositivi ci si trova quasi certamente in un contesto real-time.
Questo implica la necessità di rispettare delle scadenze temporali inderogabili e
53
Conclusioni e sviluppi futuri
quindi la scelta del sistema di riconoscimento da utilizzare va fatta proprio
focalizzandosi sul rispetto di tali vincoli temporali.
Di conseguenza le possibili alternative sopra citate, potrebbero non essere tutte
utilizzabili, infatti la sola classificazione tramite SVM dei keypoints SIFT,
potrebbe facilmente richiedere, soprattutto in presenza di un training set ampio,
un tempo di classificazione che pur essendo dell'ordine dei millisecondi sia
troppo elevato rispetto ai vincoli temporali stabiliti dal problema real-time.
5.2 - Sviluppi futuri
In questo lavoro è stata realizzata l'implementazione delle tecniche di face
recognition in modo che siano eseguibili sulla CPU, durante la scrittura del codice
è emerso, come principale sviluppo futuro di questo lavoro, l'interesse di
implementare e analizzare il comportamento di queste tecniche sfruttando per
alcune parti la potenza di calcolo messa a disposizione dalle GPU.
Questo potrebbe portare ad un enorme miglioramento delle performance
temporali, in quanto le tecniche di face recognition fanno largo uso di matrici e
vettori con elementi di tipo float, cioè proprio le strutture dati con cui la GPU
eccelle e per cui è possibile ottenere un maggiore incremento prestazionale.
Attualmente per l'utilizzo della GPU in ambito general purpose (GPGPU) ci sono
sostanzialmente due possibilità:
•
la tecnologia CUDA [23] messa a disposizione dalla casa produttrice di
schede video nVidia, queste librerie sono proprietarie ed utilizzabili solo
con schede nVidia, tuttavia le ultime versioni delle librerie OpenCV hanno
già dei moduli che sfruttano le loro potenzialità;
•
la libreria OpenCL [24], questa libreria di tipo open sta recentemente
prendendo campo in quanto permette di sfruttare qualunque dispositivo
in grado di effettuare calcoli; di conseguenza è possibile utilizzare un
maggior numero di GPU, sia che siano prodotte da ATI, da nVidia o da
Intel;
54
Conclusioni e sviluppi futuri
Effettuando alcuni test con le librerie OpenCL è stato visto che dopo una fase di
settaggio del dispositivo e del programma (i codici sorgenti da eseguire sulla
GPU sono generalmente compilati a run-time), le prestazioni ottenute sono
incredibili, infatti per eseguire la moltiplicazione fra due matrici 2048 x 2048 il
tempo impiegato con una GPU è inferiore di sei ordini di grandezza rispetto a
quello ottenuto con la CPU.
Quindi pensando di utilizzare una o più GPU per realizzare questo tipo di calcoli
sarebbe interessante vedere il comportamento delle tecniche di riconoscimento
volti, in particolare del classificatore SVM che è risultato il migliore in termini di
corretto riconoscimento ma il peggiore in termini di tempi registrati, sia per la
fase di classificazione che per quella di apprendimento.
Va comunque detto che per realizzare algoritmi efficienti di GPGPU è necessario
conoscere l'architettura con cui la GPU è realizzata, in particolare per ottimizzare
l'uso della memoria fra le varie “celle” di calcolo, infatti considerando un
problema semplice come la trasposizione di una matrice, è possibile arrivare a
diverse soluzioni, tra cui la più efficiente, che è anche la più complessa da
implementare, arriva ad essere dieci volte più veloce delle altre.
Un ulteriore sviluppo sorto da questa analisi è quello di verificare il
comportamento di altri metodi, più recenti, per l'estrazione e la descrizione delle
features, come ad esempio l'algoritmo ORB [22], il quale risulta essere molto
veloce nell'estrazione dei keypoints e dotato di un descrittore di dimensioni
ridotte.
Infine visto il grande sviluppo avuto dagli smartphone e dai dispositivi mobile in
generale, che in questi anni li ha portati ad avere prestazioni sempre più elevate,
sarebbe interessante vedere effettivamente come questi si comportino con le
tecniche di face recognition, così da capire in maniera certa quale sia l'influenza
che l'hardware di questi dispositivi possa introdurre sulle prestazioni dei metodi
qui descritti.
55
Bibliografia
6 - Bibliografia
[1] Kshirsagar, V.P.; Baviskar, M.R.; Gaikwad, M.E.; , “Face recognition using
Eigenfaces” Computer Research and Development (ICCRD), 2011 3rd International
Conference on , vol.2, no., pp.302-306, 11-13 March 2011.
[2] Turk, M.A.; Pentland, A.P.; , “Face recognition using eigenfaces” Computer
Vision and Pattern Recognition, 1991. Proceedings CVPR '91., IEEE Computer
Society Conference on , vol., no., pp.586-591, 3-6 Jun 1991.
[3] Steve R. Gunn, “Support Vector Machine for Classification and Regression”,
1998.
[4] Shigeo Abe, “Support Vector Machines for Pattern Classification”, Springer,
2005.
[5] Jian Yang; Zhang, D.; Frangi, A.F.; Jing-yu Yang “Two-dimensional PCA: A new
approach to appearance-based face representation and recognition”, Pattern
Analysis and Machine Intelligence, IEEE Transactions on Vol. 26, pages 131 – 137,
Jan. 2004.
[6] Belhumeur, P.N.; Hespanha, J.P.; Kriegman, D.J.; , “Eigenfaces vs. Fisherfaces:
recognition using class specific linear projection” Pattern Analysis and Machine
Intelligence, IEEE Transactions on , vol.19, no.7, pp.711-720, Jul 1997.
[7] K. Etemad and R. Chellappa, “Discriminant analysis for recognition of human
face images”, J. Opt. Soc. Am. A / Vol. 14, No. 8 / August 1997.
[8] B. Efron and R. J. Tibshirani, “An Introduction to the Bootstrap”, New York:
Chapman and Hall, 1993.
56
Bibliografia
[9] Bay H, Tuytelaars T, van Gool L J, “SURF: Speeded Up Robust Features[C]”,
European Conference on Computer Vision, 2006, I: 404-417.
[10] Bay H, Tuytelaars and Luc VanGool, “Speeded-Up Robust Features (SURF) [J]”,
Computer Vision and Image Understanding 110(2008) 346-359.
[11] Tong Liu, Sung-Hoon Kim, Hyon-Soo Lee, Hyung-Ho Kim, “Face Recognition
base on a New Design of Classifier with SIFT keypoint”, Intelligent Computing and
Intelligent Systems, 2009. ICIS 2009. IEEE International Conference on , pp 366 370 ,Nov. 2009.
[12] Han Yanbin; Yin Jianqin; Li Jinping; , “Human Face Feature Extraction and
Recognition Base on SIFT” Computer Science and Computational Technology,
2008. ISCSCT '08. International Symposium on , vol.1, no., pp.719-722, 20-22 Dec.
2008
[13] Lichun Zhang; Junwei Chen; Yue Lu; Wang, P.; , “Face Recognition Using Scale
Invariant Feature Transform and Support Vector Machine” Young Computer
Scientists, 2008. ICYCS 2008. The 9th International Conference for , vol., no.,
pp.1766-1770, 18- 21 Nov. 2008.
[14] D. Lowe, “Distinctive Image Features from Scale-Ivariant Keypoint”
International Journal of Computer Vision, vol. 60(2), pp 91 – 110, 2004.
[15] Lindeberg, T., “Feature detection with automatic scale selection.” IJCV 30(2)
(1998) 79 – 116.
[16] Mikolajczyk, K., Schmid, C. “Indexing based on scale invariant interest points.”
In: ICCV. Volume 1. (2001) 525 – 531.
57
Bibliografia
[17] Viola, P., Jones, M. “Rapid object detection using a boosted cascade of simple
features.” In: CVPR (1). (2001) 511 – 518.
[18] Constantine Papageorgiou, Tomaso Poggio, “A Trainable System for Object
Detection”, International Journal of Computer Vision 38(1), pp.15–33, 2000.
[19] Lienhart R., Maydt J., “An extended set of Haar-like features for rapid object
detection”, Image Processing. 2002. Proceedings. 2002 International Conference
on vol.1, pp. I-900- I-903, 2002.
[20] http://opencv.org/
[21] http://www.ubuntu-it.org/
[22] Rublee, E.; Rabaud, V.; Konolige, K.; Bradski, G., “ORB: An efficient alternative
to SIFT or SURF”, Computer Vision (ICCV), 2011 IEEE International Conference
Publication Year: 2011 , Page(s): 2564 - 2571
[23] http://www.nvidia.it/object/cuda_home_new_it.html
[24] http://www.khronos.org/opencl/
58
Fly UP