11 KiB
I fattori più importanti di un sistema biometrico sono l’accettabilità, l’affidabilità e l’accuratezza. l DNA, ad esempio, fornisce un’alta accuratezza e affidabilità ma una bassa accettabilità, in quanto il metodo di prelievo è sicuramente intrusivo. Le impronte digitali, invece, forniscono anch'esse buone prestazioni, ma possono spesso presentarsi in modo “parziale” e inoltre sono spesso associate ai ”criminali”. Il riconoscimento facciale invece è altamente accettato, in quanto siamo abituati a farci foto e a pubblicarle, ma l’accuratezza può diminuire drasticamente in casi non controllati. Possibili problemi relativi a essa sono:
- Variazioni intrapersonali
- Similarità interpersonali
- PIE e A-PIE: posa, illuminazione ed espressione + invecchiamento
- Facilmente camuffabile: makeup, chirurgia plastica, occhiali, etc..
Steps:
- capture
- localizzazione
- cropping dei ROIs (regioni di interesse)
- normalizzazione
- feature extraction
- costruzione del template
Localizzazione della faccia
- Problema: data un'immagine o un video, rilevare la presenza di una o più facce e localizzarle nell'immagine
- Requisiti: deve funzionare indipendentemente da posizione, orientamento, dimensione, espressione, soggetti nell'immagine, illuminazione e sfondo.
Ci si può nascondere?
Secondo Adam Harvey, il punto chiave che i computer rilevano è il "nose bridge", o l'area tra gli occhi. Se si nascondono si può far credere al computer che non ci sia una faccia.
Approcci di diversa natura:
- Basati su feature: si individuano le feature principali di una faccia (ad esempio posizione occhi, posizione naso, etc..) e poi si possono verificare diverse proprietà di queste (es.: colore della pelle corretto o distanza tra naso e occhi entro una certa soglia)
- Basati su immagine: solitamente vengono utilizzati dei modelli di machine learning che imparano da immagini esemplificative.
[!PDF|yellow] LEZIONE5_NEW_More about face localization, p.4
pixels with the top 5 percent
white compensation using Luma
Algoritmo A (Hsu):
-
per prima cosa viene eseguita una "illumination compensation" per compensare il bilanciamento del bianco. Si prendono il 5% dei pixel più luminosi, e li si considera come bianco (255, 255, 255) trasformando gli altri pixel a sua volta. Questo è cruciale perché la tonalità della pelle dipende dall'illuminazione della scena!
-
poi viene convertito lo spazio da RGB a YCbCr
-
localizzazione della faccia basata sullo skin model (modello della pelle)
-
due alternative:
-
variance based segmentation
-
il metodo più semplice è il thresholding method
- si considera il livello di grigio di ogni pixel, e sulla base della threshold si classificano con in due classi i pixel superiori e inferiori alla th
-
La chiave è selezionare la threshold migliore
- può essere fatto con il maximum entropy method, il metodo di Otsu (massima varianza) o il clustering k-means
- Trovare la miglior Otsu method:
- si considera la th che minimizza la within class variance
-
-
connected components
- con un modello di colore della pelle si identificano i pixel che corrispondono appunto a una gamma di colori della pelle. Questo modello quindi banalmente definisce un intervallo di colori tipicamente appartenenti alla pelle
- questi pixel vengono segmentati usando la varianza del colore locale
- si trovano le componenti connesse e si uniscono
- l'area risultante è dove si trova probabilmente la faccia (face candidate)
-
Eye localization
-
l'algoritmo cerca di localizzare gli occhi definendo due mappe:
- Chrominance map: si basa sull'idea che l'area attorno agli occhi ha dei valori alti della componente Cb e bassi della componente Cr:
EyeMapC = \frac{1}{3}[(C_B^2)+(C_R^2)+(\frac{C_b}{C_r})]
- Luminance map: gli occhi contengono sia zone chiare che zone scure. Usando operatori morfologici come dilation e erosion si possono evidenziare.!
(nella formula il + indica dilation e il - erosion)
- Chrominance map: si basa sull'idea che l'area attorno agli occhi ha dei valori alti della componente Cb e bassi della componente Cr:
-
chroma map is enhanced by histogram equalization
-
le due mappe sono combinate insieme con un operatore AND, risultato:!
-
-
-
Mouth localization
-
Face contour:
- ora che abbiamo identificato occhi e bocca, l'algoritmo considera tutti i triangoli candidati che si formano tra i due occhi e la bocca. Ogni triangolo viene verificato controllando:
- variazioni della luminanza e media del gradiente dell'orientamento delle aree di occhi e bocca
- geometria e orientamento del triangolo
- presenza di un contorno del viso attorno al triangolo
- viene assegnato uno score ad ogni triangolo e scelto quello con lo score maggiore
- ora che abbiamo identificato occhi e bocca, l'algoritmo considera tutti i triangoli candidati che si formano tra i due occhi e la bocca. Ogni triangolo viene verificato controllando:
Algoritmo B (Viola - Jones)
Viola Jones rappresenta una vera e propria innovazione per quanta riguarda la localizzazione di una faccia all'interno di un’immagine. Essendo l’algoritmo basato su machine learning, il training di questo è avvenuto utilizzando un dataset personalizzato nel quale vengono etichettate immagini come positive nel caso in cui ci sia una faccia e come negative nel caso in cui non ve ne sia alcuna.
L'agoritmo image based usa un classifier inizialmente trainato con varie istanze delle classi da identificare (esempi positivi) e classi di immagini che non contengono nessun oggetto della classe (esempi negativi).
L'obiettivo del training è estrarre features dagli esempi e selezionare quelle più discriminative. Il modello costruito in modo incrementale e contiene le features.
L'algoritmo fa uso di:
- Ada-Boosting per la selezione di feature: vengono creati diversi weak classifier, uno per feature, e tramite adaptive boosting riusciamo a creare uno strong classifier composto da un subset di weak-classifier.!
AdaBoost è una tecnica di addestramento che ha lo scopo di apprendere la sequenza ottimale di classificatori deboli e i corrispondenti pesi. Richiede un insieme di pattern di training {(x1,y1),(x2,y2),...,(xN,yN)}, dove yi ∈{-1,+1} è l’etichetta della classe associata al pattern. Inoltre durante l’apprendimento è calcolata e aggiornata una distribuzione di pesi [w1,w2,...,wN] associati ai pattern di training, wi è associato al pattern (xi, yi). Dopo l’iterazione m, è assegnato ai pattern più difficili da classificare un peso w1(m) superiore, cosicché alla successiva iterazione m+1 tali pattern riceveranno un’attenzione maggiore.
un weak classifier è spesso un classifier lineare. Può essere comparato a una linea dritta.
!
in questo caso non va bene perché non tutti i rossi stanno dallo stesso lato. Nell'esempio è impossibile separare le due classi usando linee dritte.
p.s. non è un classifier a caso, è quello che in questo round ha il numero di errori minore.
!
Per trovare una classificazione che separa i sample problematici, incrementiamo i pesi.
!
questo classificatore separa correttamente i sample problematici
!
!
!
Classifying faces with AdaBoost
Estraiamo feature rettangolari dalle immagini: le Haar features.
!
Quello che fa è calcolare: somma dell'intensità dei pixel che si trovano nell'area bianca) - somma dell'intensità dei pixel nell'area nera. Se il risultato dell’operazione è un numero grande allora vuol dire che con alta probabilità in quella porzione di immagine è presente la features identificata dal filtro (il filtro è uno dei quadrati sopra), dove ad esempio nel caso del B (nell'immagine sopra) sono angoli.
Per un immagine 24x24px, il numero di possibili rettangoli di features è 160'000! Come si calcolano le Haar features? Possiamo usare AdaBoost per scegliere quali usare.
Per ogni round di adaboost:
- proviamo ogni filtro rettangolare su ogni esempio
- scegliamo la threshold migliore per ogni filtro
- scegliamo la miglior combo filtro/threshold
- ricalcoliamo i pesi Complessità computazionale: O(MNT)
- M filters
- N examples
- T thresholds
Le rectangular features possono essere valutate attraverso immagini integral il quale nome viene dato, in ambito computer vision, ad un algoritmo con annessa struttura dati chiamata Summed-Area table, la quale ci consente di calcolare l’area di una sottomatrice in tempo costante. L'immagine integrale in posizione (x,y) è la somma del valore dei pixel sopra e a sinistra di (x,y):
II(x,y)=\sum_{x'<=x,y'<=y}I(x',y')
Usando integral image è possibile calcolare la somma dei valori dei pixel in ogni rettangolo:
!
Il singolo weak classifier dipende dai parametri z_k
(feature) e t_k
(threshold):
- per ogni feature scegliamo un valore di threshold che minimizza l'errore di classificazione
- si sceglie poi la feature con meno errore
Un solo classificatore robusto, per quanto elimini una grande porzione di sottofinestre che non contengono facce, non soddisfa i requisiti di applicazioni. Una possibile soluzione consiste nell'impiego di classificatori in cascata (cascade classifier), via via più complessi:
!
un classificatore per 1 sola feature riesce a passare al secondo stadio la quasi totalità dei volti esistenti (circa 100%) mentre scarta al contempo il 50% dei falsi volti. Un classificatore per 5 feature raggiunge quasi il 100% di detection rate e il 40% di false positive rate (20% cumulativo) usando i dati dello stadio precedente. Un classificatore per 20 feature raggiunge quasi il 100% di detection rate con 10% di false positive rate (2% cumulativo).
La localizzazione dei volti avviene analizzando sottofinestre consecutive (sovrapposte)
dell’immagine in input e valutando per ciascuna se appartiene alla classe dei volti:
!
Valutazione della localizzazione
- Falsi positivi: percentuale di finestre classificate come volto che in realtà non lo contengono
- Facce non localizzate: percentuale di volti che non sono stati individuati
- C-ERROR o Errore di localizzazione: distanza euclidea tra il reale centro della faccia e quello ipotizzato dal sistema, normalizzato rispetto alla somma degli assi dell’ellisse contenente il volto.