Tesina del corso di Visione e Percezione
Progetto Parte I: Riconoscimento di Facce
Prof.ssa Fiora Pirri
Tutor Stefano Marra, Matia Pizzoli
Anno Accademico 2007/2008
Obiettivo: data un’immagine con diverse persone presenti,
riconoscere i volti delle persone.
Studenti: Ilaria Fedeli
Francesco Rulli
Federico Tozzi
Il Metodo di Viola-Jones
Features di Haar
Classificatore AdaBoost
Immagine Integrale
Cascata di Classificatori
Architettura dell’Applicazione (1)
SKIN
DETECTION
IMAGE
FIRST DETECTION
CLEANING
FILTER
SECOND DETECTION
FACES SECOND
EXTRACTION
FACES FIRST
EXTRACTION
ADABOOST
Architettura dell’Applicazione (2)
1.
L’immagine viene introdotta in un modulo di skin-detection. Il risultato è
l’immagine segmentata in due cluster, in cui i pixel considerati come pelle
sono lasciati al loro valore originale mentre i pixel considerati come altro da
pelle sono posti a zero.
2.
L’immagine clusterizzata entra nel modulo First Detection. Dapprima viene
eseguito il cleaning filter sull’immagine ed in seguito viene effettuata una
suddivisione dell’immagine in diverse regioni in cui vi sono le possibili
facce.
3.
Le regioni in uscita dal modulo First Detection vengono immesse nel
modulo Second Detection. A questo punto il classificatore AdaBoost viene
applicato ad esse per individuare le facce. Infine avviene l’ultima e
definitiva estrazione di facce con l’eliminazione dei rilevamenti multipli.
Scelte Implementative (1)
La prima scelta implementativa è stata quella di introdurre il modulo First
Detection all’uscita del modulo Skin-Detection. Questo perché la SkinDetection lascia inalterati eventuali effetti di occlusione sull’immagine.
L’elaborazione dell’immagine è stata effettuata con l’ausilio del modulo
cleaning filter costituito dalla seguente cascata di filtri:
• rgb2gray
• imfill
• strel
• medfilt2
• imdilate
• imopen
• im2bw
• bwlabel
Scelte Implementative (2)
output skin-detection
output medfilt2
output imfill
output imdilate
Scelte Implementative (3)
output imopen
output bwlabel
output im2bw
output first detection
Scelte Implementative (4)
Se avessimo applicato l’estrazione delle regioni, su cui poi
effettuare la Second Detection, direttamente sull’immagine
della Skin-Detection avremmo avuto questo risultato, a cui
non si sarebbe potuto applicare AdaBoost:
Scelte Implementative (5)
Altre scelte implementative sono state:
1.
L’estrazione delle features è stata suddivisa in due modalità: quella riguardante
la fase di training e quella relativa alla vera e propria detection. Infatti nella fase
di training abbiamo avuto bisogno di calcolare tutti e quattro i possibili tipi di
features mentre nella fase di detection è sufficiente estrarre solo le features che
compongono il classificatore forte.
2.
Il nostro classificatore forte è stato rappresentato con una struttura denominata
adaboost_train. Essa contiene tre campi: weak_learners; acc; alphas.
3.
Abbiamo implementato il generico weak learner come un percettrone e abbiamo
calcolato la soglia  come risultato dell’algoritmo di apprendimento del
percettrone di Rosenblatt.
4.
All’interno di una regione, per individuare le possibili facce presenti, effettuiamo
uno scanning della regione stessa mediante una finestrella di scala e posizione
differenti fino a coprire l’intera regione.
Implementazione del sistema
Software matlab
Albero delle chiamate
Face_Detection.m
A - GUI DI AVVIO
Detections.m
skin_detection.m
B – SKIN DETECTION
faces_firstExtraction.m
faces_secondExtraction.m
C – FIRST DETECTION
for i=1:regioni trovate
D – SECOND DETECTION
find_faces.m
delete_multiple_detections.m
Integrazione della Detenzione Multipla
• Inizialmente dato che attraverso la Skin-Detection riuscivamo ad isolare le
persone
abbiamo scelto una tecnica di integrazione dei rilevamenti multipli
elementare: veniva selezionato il riquadro più grande. Tale metodo risulta essere
affetto da due criticità: non riesce a considerare più facce all’interno di una
regione e non elimina i falsi positivi.
• Per ovviare a ciò abbiamo scelto la seguente tecnica di integrazione dei
rilevamenti multipli: tutti i riquadri all’interno di una regione sono stati
clusterizzati. La clusterizzazione è stata effettuata mediante una misura di
distanza. Due riquadri sono accorpati nello stesso cluster se la distanza tra i due
punti, appartenenti ai due riquadri, in alto a sinistra è minore di una certa soglia.
In seguito per ciascun cluster viene selezionato il riquadro più grande. Inoltre se
un cluster è formato da un solo elemento, ovvero riquadro, questo viene
considerato come un falso positivo e quindi scartato.
I passaggi del nostro sistema
Risultati (1)
Durante lo sviluppo del progetto sono stati addestrati diversi classificatori
forti, ognuno caratterizzato da un certo numero di features, weak learner e
immagini test. Per valutare le perfomance dei nostri classificatori abbiamo
adottato, come misura d’errore, l’accuratezza di seguito così definita:
N

 1 
accuracy    N   H xi   yi 
 N 
i 1

dove N è il numero di esempi positivi e negativi, xi è l’i-esimo esempio, yi
è l’etichetta dell’i-esimo esempio, H è il risultato del classificatore forte.
Risultati (2)
Di seguito le curve test dell’accuracy e dei quattro classificatori addestrati:
strong classifier con 10 iterazioni, weak learners,
9000 features e 200 immagini
strong classifier con 40 iterazioni, weak learners,
9000 features e 600 immagini
strong classifier con 60 iterazioni, weak learners,
9000 features e 2000 immagini
strong classifier con 80 iterazioni, weak learners,
9000 features e 3000 immagini
Risultati (3)
Di seguito il grafico dei parametri alpha in funzione delle features selezionate ad
ogni passo, e il grafico dell’errore di classificazione di ciascuna features:
Risultati Positivi (1)
Risultati Positivi (2)
Risultati positivi (3)
Risultati positivi (4)
Risultati negativi (1)
Risultati negativi (2)
Riferimenti
[1] Paul Viola e Michael J. Jones, Robust Real-Time Face Detection.
[2] per adaboost sono state riprese e modificate le funzioni sul sito
http://www.ics.uci.edu/~smyth/courses/cs175/projectcode/
[3] per la skin detection è stata ripresa l’implementazione sul sito
http://www.dis.uniroma1.it/~visiope/Tesine2005.htm
Maurizio Conventi, Mauro Manzo, Simone Antonio Gaetani.
[4] per la costruzione del cleaning filter ci siamo ispirati al sito
http://webeng.cs.ait.ac.th/cvwiki/matlab:tutorial:detectface
e a Roberto Aloi, Face Detection Techniques based on k-means
clustering and image filtering.
[5] Julien Meynet, Fast Face Detection Using AdaBoost.
Scarica

Studenti: Ilaria Fedeli Francesco Rulli Federico Tozzi Tesina del