master-degree-notes/Biometric Systems/notes/4. Face detection.md

11 KiB
Raw Blame History

I fattori più importanti di un sistema biometrico sono laccettabilità, laffidabilità e laccuratezza. l DNA, ad esempio, fornisce unalta 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 laccuratezza 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

    • RGB non è percettivamente uniforme: colori RGB vicini tra loro potrebbero non essere percepiti come simili ! (darker region may have dominant blue component, light region red).
  • 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)
      • chroma map is enhanced by histogram equalization

      • le due mappe sono combinate insieme con un operatore AND, risultato:!

  • Mouth localization

    • Le componenti Cr sono più presenti delle Cb. La risposta a \frac{Cr}{Cb} è bassa, mentre la risposta a Cr^2 è alta, come in immagine:!
  • 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

Algoritmo B (Viola - Jones)

Viola Jones rappresenta una vera e propria innovazione per quanta riguarda la localizzazione di una faccia all'interno di unimmagine. Essendo lalgoritmo 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} è letichetta della classe associata al pattern. Inoltre durante lapprendimento è calcolata e aggiornata una distribuzione di pesi [w1,w2,...,wN] associati ai pattern di training, wi è associato al pattern (xi, yi). Dopo literazione m, è assegnato ai pattern più difficili da classificare un peso w1(m) superiore, cosicché alla successiva iterazione m+1 tali pattern riceveranno unattenzione 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 delloperazione è 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.

! esempio molto stupido

! esempio un po' meno stupido

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 larea 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) dellimmagine 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 dellellisse contenente il volto.