master-degree-notes/Biometric Systems/notes/8 Face anti spoofing.md

13 KiB
Raw Blame History

Lo spoofing consiste nell'ingannare un sistema biometrico assumendo un'identità che non ci appartiene. La differenza con il camouflage (camuffamento) è data dal fatto che nel primo l'obiettivo è essere riconosciuti con un'altra identità, nel secondo invece si tenta di non far riconoscere la propria identità.

L'attacco di spoofing può essere:

  • Diretto (1): avviene al momento dell'acquisizione (attacchi di presentazione)
  • Indiretto (2-8): avviene nelle fasi successive della pipeline !Pasted image 20241113134358.png

f### Face spoofing si classificano in attacchi di spoofing 2D e 3D

  • Print/photo attack: viene presentata un'immagine del soggetto da identificare. Questo attacco può essere facilmente identificato (cambia il modo in cui riflette la luce ecc., LBP viene d'aiuto), oppure possiamo rilevare cose tipo il battito delle ciglia...
  • Video attack: (o replay attack) viene presentato un video. Anche qui viene usato LBP nel tentativo di prevenire l'attacco
  • Maschera facciale: viene prodotta una maschera 3D. Un modo per prevenirlo è vedere come la luce riflette sulla pelle (la plastica della maschera rifletterà in modo un po' diverso)

Face antispoofing - Liveness Detection

!Pasted image 20241113140703.png

Liveness detection

La differenza essenziale tra una faccia vera e una foto è che la faccia è un oggetto tridimensionale, il movimento della faccia può aiutare a distinguere una persona vera da una foto (optical flow). Stimare la profondità da delle immagini 2D è difficile però, e la stima è molto sensibile al rumore e all'illuminazione. Inoltre, è vulnerabile al movimento della foto o la deformazione (bending) di questa (se curvo il foglio con la foto stampata tipo). Si potrebbe anche provare a riconoscere le texture della carta.

Vediamo un pochino più nel dettaglio alcuni approcci:

Un modo è riconoscere il battito di ciglia, considerando che un battito dura circa 250ms e avviene tra i 2 e i 4 secondi, ci bastano circa 15 fps. Però è spoofabile perché si potrebbero ad es. fare dei buchi per gli occhi a una maschera.

  • Undirected Conditional Random Field (CRF) framework

L'attività di un occhio può essere rappresentata da una sequenza di T immagini S=\{I_{i},i=1,…,T\}.

Un battito di ciglia può essere descritto con una sequenza di stati. Definiamo l'insieme di stati Q come: Q=\{\alpha: open, \gamma: close, \beta: ambiguous\}, lo stato \beta viene usato quando l'occhio è in movimento, per cui un battito di ciglia può essere descritto con la sequenza: \alpha \to \gamma \to \beta.

Definiamo ora il modello CRF, che data una sequenza di osservazioni (di immagini o comunque feature estratte da queste) S, predirà lo stato dell'occhio per ogni immagine: - S è una variabile aleatoria che rappresenta la sequenza di immagini osservate - Y rappresenta le label corrispondenti da predire. Si ha y_{i} \in Q - Il CRF è rappresentato da un grafo G=(V, E) dove Y è indicizzato dai vertici (nodi) di G. - Il modello assume che, condizionato a S, le variabili Y e S rispettino la proprietà di Markov rispetto alla struttura del grafo. Questa proprietà è espressa come: p(y_v | S, y_u, u = v) = p(y_v | S, y_u, u \sim v) , dove ~ è la relazione di vicinanza di due nodi nel grafo.

L'idea è che il modello si può basare sul frame precedente e quello successivo per assegnare la label al frame corrente. Questo lo aiuta a riconoscere meglio i battiti di ciglia, ad esempio se nel frame corrente c'è molto rumore.

Si usa AdaBoost per riconoscere lo stato di chiusura dell'occhio.

!Pasted image 20241113143053.png

Määttä - Micro-texture

Fa uso dell'LBP per riconoscere difetti di stampa analizzando le micro-texture della carta. Si basa sul fatto che nessuna stampante è perfetta, ogni foto ha dei "difetti" di stampa che possono essere riconosciuti con un po' di feature extraction.

  • la faccia e le stampe riflettono la luce in modo diverso
  • le proprietà della superficie (texture) di una faccia e di una stampa sono diverse Le feature possono essere estrratte usando multi-scale local binary patterns (LBP), si possono poi usare per trainare una SVM, che poi determinerà se le feature estratte caratterizzano una persona o una stampa.

!Pasted image 20241113144129.png vera foto vs stampa e rispettive immagini LBP.

Prima di applicare LBP la faccia viene riconosciuta, croppata e normalizzata come immagine 64x64. !Pasted image 20241113144743.png Viene poi applicato LBP^{u_{2}}_{8,1} sulla faccia normalizzata e la risultante faccia LBP viene divisa in regioni 3x3 sovrapposte per produrre l'istogramma. (si legge come "LBP con raggio 1 e 8 vicini, considerando solo pattern uniformi con al massimo 2 transizioni 0->1 o 1-> 0")

Vengono raccolti insieme gli istogrammi locali da 59 bin per ogni regione e viene prodotto l'istogramma finale, da 531 bin.

Viene fatta la stessa cosa con LBP^{u_{2}}_{8,2} e LBP^{u_{3}}_{16,2} e gli istogrammi vengono aggiunti all'istogramma finale da 531 bin. Infine l'istogramma viene dato in input alla SVM per la classificazione.

Kose, Dugelay - Captured-Recaptured

basato su Rotation invariant LBP (LBPV) e DoG:

L'immagine passa due volte davanti la fotocamera, in modo da avere la faccia vera e la faccia stampata. In questo modo possiamo comprendere i pattern della fotocamera e della stampa.

Preprocessing con filtro DoG (difference of gaussians), l'output ci permette di discriminare tra una foto vere e la foto di una stampa. Una "foto di una foto" avrà una qualità inferiore, siccome avrà meno informazioni ad alta frequenza (sarà più sfocata). Questo è osservabile con una trasformata di Fourier 2D.

Viene usato LBPV per aggiungere informazioni sul contrasto all'istogramma LBP (per i curiosi le formule stanno negli screenshot di seguito). Si comparano poi le distanze tra gli istogrammi (distanza chi-square) del modello genuino, del modello fake e della probe. In questo modo si classifica se la probe è fake o real (4real bro).

Matching per chi-squared distance tra istogrammi: si compara la probe con il modello genuino e il modello recaptured.

!Pasted image 20241114084019.png !Pasted image 20241114084037.png

Ali - Gaze Stability

Si basano sull'assunzione che la coordinazione spaziale e temporale dei movimenti degli occhi, testa e (possibilmente) mano che seguono uno stimolo visivo sono molto diversi nel caso di genuine attempt o tentativo di spoofing.

Il sistema richiede all'utente di fissare un punto (stimolo) sullo schermo per provare a capire se si tratta di un utente reale o fake.

Feature di collinearità:

Si calcola il Mean Squared Error (MSE) tra le posizioni attese dei landmark e quelle rilevate. Siccome i landmark sono più di uno, si costruisce un vettore con tutti i valori MSE che poi verrà usato per la liveness detection.

Feature di collocazione:

Si tiene in considerazione la differenza nella posizione dei landmark quando lo stimolo è presentato nella stessa posizione sullo schermo. L'obiettivo è capire se, quando lo stimolo si ripresenta nella stessa posizione, c'è qualche piccola differenza nella posizione dei landmark (es. occhi) che è naturale di un essere umano.

Optical Flow

Basato sulla correlazione tra il movimento della testa dell'utente e lo sfondo: faccia e sfondo non si dovrebbero muovere insieme!

In sostanza, tale metodo si concentra sul calcolo della velocità apparente (o "flusso") dei pattern di illuminazione dell'immagine, permettendo di determinare i vettori di movimento a ogni posizione del pixel tra frame consecutivi. Analizzando questi campi di flusso, è possibile dedurre il movimento degli oggetti all'interno della sequenza video e capire se sono naturali o meno.

Funziona con le stampe ma non con le maschere, nemmeno maschere 2D.


Image Distortion Analisys

Wen presenta un insieme di feature per lo spoofing detection:

  1. riflessioni speculari dal foglio o dallo schermo LCD (si può usare anche uno schermo con la foto per il tentativo di spoofing chiaramente)
  2. sfocatura a causa della messa a fuoco della fotocamera
  3. distorsione di contrasto e cromaticità
  4. distorsione dei colori tra una foto/schermo e la faccia reale

!Pasted image 20241114090438.png

La riflettanza (capacità di riflettere la luce) di un oggetto in una posizione x può essere decomposta in riflessione diffusa (Id) e riflessione speculare (Is)

I(x) = Id + Is = wd(x)S(x)E(x) + ws(x)E(x)

!Pasted image 20241114160530.png

dove:

  • E(x) è l'intensità di incidenza della luce
  • wd(x) e ws(x) sono i fattori geometrici per i riflessi diffusi e speculari
  • S(x) è il rapporto di riflessione diffusa locale

Per le facce 2D contraffatte ricavate da immagini originali genuine, l'intensità della immagine contraffatta I'(x) può essere modellata come:

I'(x) = I'd + I's = F(I(x)) + ws'(x)E'(x)

In questa seconda equazione F(I(x)) è una funzione di distorsione, che dipende dal mezzo usato per lo spoofing.

Questa modellizzazione spiega come le caratteristiche della riflettanza cambiano quando un'immagine facciale originale viene trasformata in una versione 2D contraffatta. La distorsione introduce alterazioni sia nella componente diffusa che speculare, modificando così l'apparenza del contraffatto rispetto all'originale.

Detection di attacchi video

Replay video attack

Si cerca di individuare i moiré pattern: quel pattern che appare spesso quando inquadriamo uno schermo con una fotocamera: !Pasted image 20241114092243.png

Possiamo comparare quindi un video reale, dove appaiono solo i pattern della fotocamera che usiamo per acquisire la probe, con il video spoofato dove invece appaiono i moiré pattern.

I frame del video vengono processati utilizzando MLBP e SIFT, si può fare sia in modo indipendente che combinato.

Dato un frame, viene diviso in patch di dimensione 32x32 con 16 pixel di overlap tra le patch.

MLBP è una "standardizzazione" di LBP: viene applicato LBP con:

  • raggio 1 e 8 neighbor
  • raggio 3 e 24 neighbor
  • raggio 5 e 40 neigbor

Vengono calcolate poi le feature DSIFT per ogni patch usando 8 orientation bin e 16 segmenti.

I moiré pattern vengono calcolati per ogni canale dell'immagine, perché possono essere più evidenti in un canale rispetto agli altri.

Detection di attacchi con la maschera

si può lavorare sulle differenze nella riflessione della luce, i materiali della maschera riflettono diversamente dalla pelle umana.

Un altro approccio è analizzare le micro-texture (le maschere non hanno la stessa struttura porosa della pelle) -> approcci basati su LBP.

Fotopletismogramma

analizzare il battito cardiaco tramite un fotopletismogramma (PPG): rilevazione della variazione di volume in un tessuto. Esempio: un pulsossimetro rileva il battito cardiaco poggiando un dito su un sensore ottico.

Ma si può fare in modo meno invasivo? Sì!

FaceReader di Noldus:

con una fotocamera ad alta risoluzione, rileva il battito cardiaco dalla pelle. Il sistema può essere trainato con i pattern tipici degli esseri umani, e sarà efficiente nel riconoscere qualsiasi tipo di maschera!

Antispoofing systems evaluation

Se, in fase di valutazione, prendiamo in considerazione anche gli attacchi di spoofing, dobbiamo utilizzare una metrica diversa dal classico FAR, ovvero lo Spoofing-FAR, che prende quindi in considerazione anche i casi in cui gli impostori vengono accettati grazie allo spoofing.

!Pasted image 20241114100609.png

In uno scenario di spoofing invece di considerare genuine users e impostori, consideriamo utenti fake e utenti real.

  • il FRR quindi sarà il tasso di rejection di probe considerate fake quando in realtà erano vere
  • il SFAR è il tasso di acceptance di probe fake che però il sistema ha riconosciuto come vere

Possiamo avere 3 casi:

  • sistema biometrico unico in grado di riconoscere lo spoofing
  • sistema composto da un sistema biometrico e un sistema anti spoofing
  • due sistemi separati
    • è il peggiore dei 3

!Pasted image 20241114101025.png

Performance evaluation di un sistema antispoofing:

  • False Living Rate (FLR): % di attacchi spoofing classificati come veri
  • False Fake Rate (FFR): % di utenti reali classificati come fake come sempre si può fare la curva ROC

misure standard da ISO/IEC 30197-3:

  • Attack Presentation Classification Error Rate (APBCER)
    • APCER = FP/(TN + FP)
  • Bona Fide Presentation Classification Rate (BPCER)
    • BPCER = FN/(FN + TP)
  • Average Classification Error Rate (ACER)
    • ACER = (APCER + NPCER) / 2
  • False Positive Rate (FPR)
    • FPR = FP / (FP + TN)
  • True Positive Rate (TPR)
    • TPR = TP / (TP + FN) sono sempre le stesse misure di sempre ma applicate a questo specifico problema (p.s. Bona Fide sta per buona fede)

Face antispoofing at BIPlab

The most robust face spoofing detection systems rely on:

  • verifica della tridimensionalità della faccia
    • richiede tecniche sofisticate
  • interazione con l'utente
    • richiede nella maggior parte dei casi hardware aggiuntivo

integra con slide

!Pasted image 20241114102929.png notice how schiacchato is the second one cit.

FATCHA: Face cAPTCHA

prendere due piccioni con una fava (altra grande cit.)

  • riduce il ruolo attivo dell'utente a una sola azione: un gesto (tipo: mostra oggetto x alla camera)
  • non richiede task percettivi o cognitivi
  • chiede all'utente di "produrre" piuttosto che analizzare qualcosa

Resta da risolvere il problema dell'accessibilità (se uno è disabile). In realtà l'unico problema è per i ciechi che non vedono.