vault backup: 2024-11-21 08:23:48
125
.obsidian/workspace.json
vendored
|
@ -6,60 +6,37 @@
|
||||||
{
|
{
|
||||||
"id": "d43d10180ff70873",
|
"id": "d43d10180ff70873",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"dimension": 47.536496350364956,
|
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "86cc34a714fe2576",
|
"id": "d0c4b502891dff1f",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "image",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Biometric Systems/images/Pasted image 20241107104144.png"
|
"file": "Biometric Systems/notes/9. Ear recognition.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-image",
|
"icon": "lucide-file",
|
||||||
"title": "Pasted image 20241107104144"
|
"title": "9. Ear recognition"
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ddd22570aec87d07",
|
|
||||||
"type": "tabs",
|
|
||||||
"dimension": 52.463503649635044,
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"id": "49892e00594998ab",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "pdf",
|
|
||||||
"state": {
|
|
||||||
"file": "Biometric Systems/slides/LEZIONE8_Face antispoofing.pdf",
|
|
||||||
"page": 30,
|
|
||||||
"left": -51,
|
|
||||||
"top": 86,
|
|
||||||
"zoom": 0.3104166666666667
|
|
||||||
},
|
|
||||||
"icon": "lucide-file-text",
|
|
||||||
"title": "LEZIONE8_Face antispoofing"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "939013fa26b445e1",
|
"id": "6505b4c292260ca3",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "pdf",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Biometric Systems/slides/Biometric_System___Notes.pdf",
|
"file": "Biometric Systems/notes/11. Fingerprints.md",
|
||||||
"page": 20,
|
"mode": "source",
|
||||||
"left": 71,
|
"source": false
|
||||||
"top": 432,
|
|
||||||
"zoom": 0.9
|
|
||||||
},
|
},
|
||||||
"icon": "lucide-file-text",
|
"icon": "lucide-file",
|
||||||
"title": "Biometric_System___Notes"
|
"title": "11. Fingerprints"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"currentTab": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
|
@ -229,54 +206,54 @@
|
||||||
"companion:Toggle completion": false
|
"companion:Toggle completion": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "2b2245f56092006e",
|
"active": "6505b4c292260ca3",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"Biometric Systems/images/Pasted image 20241107092327.png",
|
"Biometric Systems/notes/9. Ear recognition.md",
|
||||||
"Biometric Systems/images/Pasted image 20241107090827.png",
|
"Biometric Systems/notes/11. Fingerprints.md",
|
||||||
"Biometric Systems/images/Pasted image 20241107090826.png",
|
"Biometric Systems/notes/dati da considerare.md",
|
||||||
"Biometric Systems/notes/8 Face anti spoofing.md",
|
"Biometric Systems/images/Pasted image 20241121024108.png",
|
||||||
"conflict-files-obsidian-git.md",
|
"Biometric Systems/images/Pasted image 20241121023854.png",
|
||||||
"Biometric Systems/images/Pasted image 20241107104144.png",
|
"Biometric Systems/images/Pasted image 20241121015024.png",
|
||||||
"Biometric Systems/images/Pasted image 20241107102503.png",
|
"Biometric Systems/images/Pasted image 20241120134522.png",
|
||||||
"Biometric Systems/images/Pasted image 20241107102227.png",
|
"Biometric Systems/slides/LEZIONE11_Fingerprints.pdf",
|
||||||
"Biometric Systems/images/Pasted image 20241107101136.png",
|
"Biometric Systems/slides/LEZIONE8_Face antispoofing 1.pdf",
|
||||||
"Biometric Systems/images/Pasted image 20241107093316.png",
|
"Biometric Systems/slides/LEZIONE9_Ear recognition.pptx.pdf",
|
||||||
"Biometric Systems/images/Pasted image 20241107093019.png",
|
"Biometric Systems/images/Pasted image 20241121024042.png",
|
||||||
"Biometric Systems/images/Pasted image 20241107091228.png",
|
"Biometric Systems/images/Pasted image 20241121020116.png",
|
||||||
"Biometric Systems/images/Pasted image 20241107091114.png",
|
|
||||||
"Foundation of data science/slides/FDS_backprop_new.pdf",
|
|
||||||
"Foundation of data science/notes/5 Neural Networks.md",
|
|
||||||
"Biometric Systems/notes/7. Face recognition 3D.md",
|
|
||||||
"master-degree-notes",
|
|
||||||
"Biometric Systems/slides/LEZIONE8_Face antispoofing.pdf",
|
|
||||||
"Biometric Systems/slides/Biometric_System___Notes.pdf",
|
"Biometric Systems/slides/Biometric_System___Notes.pdf",
|
||||||
|
"Biometric Systems/images/Pasted image 20241120144654.png",
|
||||||
|
"Biometric Systems/images/Pasted image 20241120143424.png",
|
||||||
|
"Biometric Systems/images/Pasted image 20241120140235.png",
|
||||||
|
"Biometric Systems/notes/8 Face anti spoofing.md",
|
||||||
|
"Foundation of data science/notes/5 Neural Networks.md",
|
||||||
|
"Biometric Systems/slides/LEZIONE8_Face antispoofing.pdf",
|
||||||
|
"Biometric Systems/slides/LEZIONE7_Face recognition3D.pdf",
|
||||||
|
"Biometric Systems/notes/7. Face recognition 3D.md",
|
||||||
|
"Foundation of data science/slides/more on nn.pdf",
|
||||||
|
"Foundation of data science/slides/IP CV Basics.pdf",
|
||||||
|
"Autonomous Networking/slides/5 Drones.pdf",
|
||||||
|
"Autonomous Networking/notes/4 WSN Routing.md",
|
||||||
|
"Autonomous Networking/notes/5 Drones.md",
|
||||||
|
"Biometric Systems/notes/2. Performance indexes.md",
|
||||||
|
"Biometric Systems/notes/1. Introduction.md",
|
||||||
|
"Biometric Systems/notes/3. Recognition Reliability.md",
|
||||||
|
"Foundation of data science/notes/convnet.md",
|
||||||
|
"Foundation of data science/slides/FDS_convnet_primer_new.pdf",
|
||||||
|
"Foundation of data science/slides/Untitled.md",
|
||||||
|
"Biometric Systems/images/Pasted image 20241114084019.png",
|
||||||
|
"Foundation of data science/slides/Untitled 1.md",
|
||||||
"Biometric Systems/notes/6. Face recognition 2D.md",
|
"Biometric Systems/notes/6. Face recognition 2D.md",
|
||||||
"Autonomous Networking/slides/AutonomousNet-Class13-2122-Optimal_policy_and_Qlearning.pdf",
|
"conflict-files-obsidian-git.md",
|
||||||
"Autonomous Networking/notes/10 Q-Learning.md",
|
"Autonomous Networking/notes/10 Q-Learning.md",
|
||||||
"Autonomous Networking/notes/q&a.md",
|
"Autonomous Networking/notes/q&a.md",
|
||||||
"Autonomous Networking/notes/7.2 10 arm testbed - optimism in face of uncertainty.md",
|
"Autonomous Networking/notes/7.2 10 arm testbed - optimism in face of uncertainty.md",
|
||||||
"Autonomous Networking/notes/9 Markov processes.md",
|
"Autonomous Networking/notes/9 Markov processes.md",
|
||||||
"Biometric Systems/slides/LEZIONE7_Face recognition3D.pdf",
|
|
||||||
"Autonomous Networking/notes/2 RFID.md",
|
"Autonomous Networking/notes/2 RFID.md",
|
||||||
"Autonomous Networking/notes/6 Internet of Things.md",
|
"Autonomous Networking/notes/6 Internet of Things.md",
|
||||||
"Autonomous Networking/notes/5 Drones.md",
|
|
||||||
"Biometric Systems/notes/4. Face detection.md",
|
"Biometric Systems/notes/4. Face detection.md",
|
||||||
"Biometric Systems/notes/3. Recognition Reliability.md",
|
|
||||||
"Biometric Systems/notes/2. Performance indexes.md",
|
|
||||||
"Biometric Systems/notes/1. Introduction.md",
|
|
||||||
"Autonomous Networking/notes/4 WSN Routing.md",
|
|
||||||
"Foundation of data science/notes/4 L1 and L2 normalization.md",
|
"Foundation of data science/notes/4 L1 and L2 normalization.md",
|
||||||
"Autonomous Networking/notes/7.1 K-Armed bandit problem.md",
|
"Autonomous Networking/notes/7.1 K-Armed bandit problem.md",
|
||||||
"Autonomous Networking/notes/7 RL.md",
|
"Autonomous Networking/notes/7 RL.md",
|
||||||
"Autonomous Networking/slides/7 RL1.pdf",
|
|
||||||
"Autonomous Networking/slides/9markovprocess.pdf",
|
|
||||||
"Autonomous Networking/slides/AutonomousNet-Class11-2122-Performance_of_action_selection_methods_UCB.pdf",
|
|
||||||
"Autonomous Networking/slides/6 IoT.pdf",
|
|
||||||
"Foundation of data science/notes/2 Logistic Regression.md",
|
|
||||||
"Foundation of data science/notes/3 Multi Class Binary Classification.md",
|
|
||||||
"Chats/New Chat.md",
|
|
||||||
"Foundation of data science/slides/Untitled.md",
|
|
||||||
"Senza nome.md",
|
|
||||||
"Senza nome.canvas"
|
"Senza nome.canvas"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -1,56 +0,0 @@
|
||||||
Challenges
|
|
||||||
- Atomicity
|
|
||||||
- you write to the queue first
|
|
||||||
- you write to the db first
|
|
||||||
- we need a transaction!
|
|
||||||
- Idempotence
|
|
||||||
- we need locking mechanism on the queue, to avoid multiple process to process the same element
|
|
||||||
- solution: replay protection (lastUpdate in the db), but still I have the problem of multiple process reading the same element
|
|
||||||
|
|
||||||
## Data replication
|
|
||||||
- Waiting for all replicas
|
|
||||||
- definitely slower
|
|
||||||
- safer for the data
|
|
||||||
- Waiting only for the primary replica
|
|
||||||
- faster but...
|
|
||||||
- replica may fail
|
|
||||||
- not getting always the same value
|
|
||||||
- ok for maybe Instagram feed, but not for e-mails
|
|
||||||
|
|
||||||
## Paxos
|
|
||||||
Paxos overview:
|
|
||||||
- partecipnats are: Writers & Replicas
|
|
||||||
- 2 phase protocol:
|
|
||||||
- **prepare** reserves right to supply value, and robs other
|
|
||||||
- **accepts** supplies the value **v**
|
|
||||||
- replicas are stateful
|
|
||||||
- communication is ordered by "proposal number" **n**
|
|
||||||
- uses "viral propagation"
|
|
||||||
|
|
||||||
#### Algorithm
|
|
||||||
- Prepare phase
|
|
||||||
- Success if replica hasn't prepared a higher proposal
|
|
||||||
- Fail otherwise
|
|
||||||
- Success with value if we have accepted another value (viral property)
|
|
||||||
|
|
||||||
Majority succeded -> Go to Accept Phase
|
|
||||||
|
|
||||||
- Accept phase
|
|
||||||
- Success only if replica hasn't Prepared a higher proposal (same is ok)
|
|
||||||
|
|
||||||
### Mesh
|
|
||||||
- full mesh
|
|
||||||
- subsetting: not every node connected to every other node: in case of a query of death, only connected nodes will fail
|
|
||||||
- proxying: adding a layer of proxies (load balancers), that use a lookup service to route the request
|
|
||||||
|
|
||||||
### Strong stickiness
|
|
||||||
Some applications like chat, online game servers, video calls ecc. need a very strong stickiness.
|
|
||||||
In these cases, we may not want to use consistent hashing. Maybe we can use it to pick a server and then stick with it.
|
|
||||||
|
|
||||||
Also, it can happen that some users are not able to reach a specific server, but other does.
|
|
||||||
Using leases might be a solution.
|
|
||||||
|
|
||||||
- Request from Alice
|
|
||||||
- lookup server response is cached
|
|
||||||
- we have a failure
|
|
||||||
- we call Set to change the server, but the call stalls until the lease expires. Also, the lookup server might be able to still reach the server and renew the lease
|
|
BIN
Biometric Systems/images/Pasted image 20241114084019.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
Biometric Systems/images/Pasted image 20241114084037.png
Normal file
After Width: | Height: | Size: 194 KiB |
BIN
Biometric Systems/images/Pasted image 20241114090438.png
Normal file
After Width: | Height: | Size: 370 KiB |
BIN
Biometric Systems/images/Pasted image 20241114092243.png
Normal file
After Width: | Height: | Size: 172 KiB |
BIN
Biometric Systems/images/Pasted image 20241114100609.png
Normal file
After Width: | Height: | Size: 171 KiB |
BIN
Biometric Systems/images/Pasted image 20241114101025.png
Normal file
After Width: | Height: | Size: 206 KiB |
BIN
Biometric Systems/images/Pasted image 20241114102929.png
Normal file
After Width: | Height: | Size: 504 KiB |
BIN
Biometric Systems/images/Pasted image 20241114160530.png
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
Biometric Systems/images/Pasted image 20241120134522.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
Biometric Systems/images/Pasted image 20241120140235.png
Normal file
After Width: | Height: | Size: 224 KiB |
BIN
Biometric Systems/images/Pasted image 20241120143424.png
Normal file
After Width: | Height: | Size: 241 KiB |
BIN
Biometric Systems/images/Pasted image 20241120144654.png
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
Biometric Systems/images/Pasted image 20241121015024.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
Biometric Systems/images/Pasted image 20241121020116.png
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
Biometric Systems/images/Pasted image 20241121023854.png
Normal file
After Width: | Height: | Size: 329 KiB |
BIN
Biometric Systems/images/Pasted image 20241121024042.png
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
Biometric Systems/images/Pasted image 20241121024108.png
Normal file
After Width: | Height: | Size: 83 KiB |
0
Biometric Systems/notes/11. Fingerprints.md
Normal file
|
@ -13,29 +13,39 @@ si classificano in attacchi di spoofing 2D e 3D
|
||||||
- **Video attack:** (o replay attack) viene presentato un video. Anche qui viene usato LBP nel tentativo di prevenire l'attacco
|
- **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)
|
- **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)
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
### Face antispoofing - Liveness Detection
|
### Face antispoofing - Liveness Detection
|
||||||
![[Pasted image 20241113140703.png]]
|
![[Pasted image 20241113140703.png]]
|
||||||
|
|
||||||
#### Liveness detection
|
### 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).
|
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.
|
Si potrebbe anche provare a riconoscere le texture della carta.
|
||||||
|
|
||||||
Un altro 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.
|
Vediamo un pochino più nel dettaglio alcuni approcci:
|
||||||
> [!PDF|yellow] [[LEZIONE8_Face antispoofing.pdf#page=27&selection=2,0,3,1&color=yellow|LEZIONE8_Face antispoofing, p.27]]
|
|
||||||
> > The work by Pan et al. models
|
|
||||||
>
|
|
||||||
> modello Pan et al.
|
|
||||||
|
|
||||||
|
#### modello di Pan - Eye Blink
|
||||||
|
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.
|
||||||
|
|
||||||
![[Pasted image 20241113143053.png]]
|
![[Pasted image 20241113143053.png]]
|
||||||
Hidden Markov model, modella la sequenza di stati di un occhio. (aggiungere altro)
|
|
||||||
|
|
||||||
//
|
#### Määttä - Micro-texture
|
||||||
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.
|
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
|
- la faccia e le stampe riflettono la luce in modo diverso
|
||||||
- le proprietà della superficie di una faccia e di una stampa sono diverse
|
- 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.
|
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]]
|
![[Pasted image 20241113144129.png]]
|
||||||
|
@ -43,5 +53,157 @@ vera foto vs stampa e rispettive immagini LBP.
|
||||||
|
|
||||||
Prima di applicare LBP la faccia viene riconosciuta, croppata e normalizzata come immagine 64x64.
|
Prima di applicare LBP la faccia viene riconosciuta, croppata e normalizzata come immagine 64x64.
|
||||||
![[Pasted image 20241113144743.png]]
|
![[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")
|
||||||
|
|
||||||
LBP viene applicato
|
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}}_{8,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)*.
|
||||||
|
|
||||||
|
![[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 MLBT 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.
|
105
Biometric Systems/notes/9. Ear recognition.md
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
Tratto biometrico composto da una struttura ben definita:
|
||||||
|
- **Helix:** bordo esterno
|
||||||
|
- **Anti-Helix:** i bordi interni
|
||||||
|
- **Lobo**
|
||||||
|
- **Tacca intratragica:** è il punto tra il lobo e il foro dell’orecchio
|
||||||
|
![[Pasted image 20241120134522.png]]
|
||||||
|
|
||||||
|
##### Aspetti positivi:
|
||||||
|
È un tratto passivo, non varia con gli anni, solitamente non è coperto, non sono richieste alte risoluzioni, non è affetto da variazioni dell'espressione.
|
||||||
|
##### Aspetti negativi:
|
||||||
|
Sensibili a variazioni di posa e illuminazione.
|
||||||
|
|
||||||
|
Una prima prova dell’universalità e unicità di questo tratto è quella di Iannarelli nel 1989, purtroppo però l’indagine è stata effettuata campionando pochissimi esempi.
|
||||||
|
Vengono misurate 12 distanze tra dei punti dell'orecchio.
|
||||||
|
Iannarelli ha poi classificato le orecchie in 4 possibili forme esterne: triangolari, circolari, rettangolari e ovali.
|
||||||
|
![[Pasted image 20241120140235.png]]
|
||||||
|
|
||||||
|
### Localizzazione dell'orecchio
|
||||||
|
3 approcci diversi:
|
||||||
|
- **Individuazione di punti di interesse:** diversi possibili approcci, uno di questi è usare le reti neurali. Si possono trainare su immagini a bassa risoluzione perché ci interessa solo estrarre punti, in questa fase non siamo interessati ai dettagli. Individuati questi possiamo costruire il rettangolo che conterrà l'orecchio, eventualmente si può normalizzare la dimensione dell'orecchio
|
||||||
|
- **Object detection:** esistono classificatori in grado di riconoscere le orecchie. Si possono usare object detector come Viola-Jones / AdaBoost.
|
||||||
|
- **Tecniche di localizzazione 3D:** si basano su una valutazione della profondità e della curvatura delle regioni dell'orecchio. Training offline: partendo da un modello 3D del profilo del soggetto, vengono identificati i punti massimi di curvatura. Viene creata un'immagine binaria (0 nero 1 bianco) e la regione corrispondente all'orecchio viene estratta manualmente. Le regioni estratte vengono fuse insieme per formare un modello di riferimento. Il test viene eseguito online. L'immagine binaria viene calcolata per il nuovo modello, vengono identificati i punti di curvatura massima e minima e vengono ricercate le regioni corrispondenti al modello.
|
||||||
|
|
||||||
|
### Riconoscimento dell'orecchio
|
||||||
|
#### 2D
|
||||||
|
- **Approccio di Iannarelli:** viene identificato il punto di origine dell'helix (crus of helix) e viene usato come punto di partenza di 4 segmenti su cui effettuare 12 misurazioni. Il vettore di feature contiene informazioni come il gender, l'etnicità e le 12 misurazioni. Problema: se il punto di origine è errrato, tutta la misurazione è errata (vedi immagine sopra). Problema 2: sensibile all'illuminazione.
|
||||||
|
- **Voronoi:** Approccio presentato da Burge e Burger per risolvere il problema dell'approccio di Iannarelli. Questo approccio usa i diagrammi di Voronoi e la distanza dei grafi. Prevede canny edge per trovare gli edge, edge relaxation per unire i segmenti di bordi vicini, formando curve più ampie. Le relazioni tra le curve non vengono rappresentate in modo assoluto, ma attraverso una struttura *invariante rispetto alle trasformazioni affini (es. rotazione, scalatura, traslazione) e cambiamenti minimi di forma*: si usa il **neighborhood Voronoi graph**:
|
||||||
|
- Diagramma di Voronoi: viene partizionato in regioni sulla base della vicinezza dei *seed points* in un sottoinsieme del piano
|
||||||
|
![[Pasted image 20241121015024.png]]
|
||||||
|
- **neighborhood Voronoi graph**: grafo dei punti centrali di ogni regione
|
||||||
|
- Il matching avviene cercando gli isomorfismi di sottografo. Metodo mai sperimentato, in ogni caso la segmentazione dell'orecchio è molto sensibile alle variazioni di posa e illuminazione.
|
||||||
|
- **Campi di forza:** basati su proprietà fisiche. Ogni pixel viene considerato come un "attrattore", come una sorta di particella carica. Ogni pixel attrae i suoi vicini proporzionalmente all'intensità del pixel (0: carica neutra, 255: carica massima) e inversamente proporzionalmente alla quadrato della distanza.
|
||||||
|
- Per ogni pixel si calcola la forza che gli altri pixel attuano su questo (modulo, direzione e verso)
|
||||||
|
- si fissano una serie di punti su un'ellisse attorno all'orecchio
|
||||||
|
- a partire da ciascun punto si segue l'attrazione del campo di forza
|
||||||
|
- le linee di campo convergono in punti detti pozzi (sink). L'orecchio è rappresentato tramite la mappa di convergenza
|
||||||
|
![[Pasted image 20241120143424.png]]![[Pasted image 20241121020116.png]]
|
||||||
|
Metodo robusto per quanto riguarda punti iniziali, risoluzione e rumore.
|
||||||
|
- **Jets:** si applicano una serie di Gabor filter (che ricordiamo, sono convoluzioni di kernel), producendo dei feature vector chiamati Gabor Jets.
|
||||||
|
- Si costruisce un grafo (ear graph) in cui:
|
||||||
|
- i nodi corrispondono a punti rilevanti dell'orecchio (anthielix, superior anthihelix crus, inferior anthihelix crus)
|
||||||
|
- i nodi sono etichettati con i rispettivi Gabor Jets
|
||||||
|
- Si applica PCA per ridurre la dimensionalità dei jet, ottenendo un **eigenear graph**: rappresentazione più compatta e generalizzata degli ear graph.
|
||||||
|
- Il matching è per similarità dei jets.
|
||||||
|
|
||||||
|
- **Angle vector
|
||||||
|
- si fa edge detection e si considerano gli angoli (ora vediamo come si calcolano sti angoli)
|
||||||
|
- gli angoli vengono divisi in due vettori:
|
||||||
|
- 1. contiene angoli derivati dai bordi esterni dell’orecchio (outer edge)
|
||||||
|
- 2. contiene angoli derivati da tutti gli altri bordi interni o vicini, esclusi quelli già usati per il primo vettore
|
||||||
|
- Si considerano la max-line (linea più lunga che ci sia con entrambi gli estremi sui bordi dell'orecchio) e le normal-lines (segmenti perpendicolari alla max-line, se sono n dividono la max-line in n+1 parti uguali)
|
||||||
|
- **Vettore 1:**
|
||||||
|
- Per ogni punto di intersezione tra i bordi esterni e le normal lines, si forma un angolo tra il segmento che collega il punto di intersezione con il centro della maxline, e il segmento che collega l'estremità superiore della maxline con il centro.
|
||||||
|
- **Vettore 2:**
|
||||||
|
- Costruito allo stesso modo ma si utilizzano tutti i punti di intersezione delle normal lines con i bordi interni.
|
||||||
|
- **Matching:** avviene calcolando
|
||||||
|
- somma delle differenze assolute tra gli elementi corrispondenti dei vettori
|
||||||
|
- numero dei valori simili nei vettori (che rientrano in una certa threshold)
|
||||||
|
|
||||||
|
- **Alignment (usando Active Shape Model or Scale Invariant Feature Transform):**
|
||||||
|
- il modello ASM è un modello statistico che si deforma iterativamente per adattarsi a una nuova immagine
|
||||||
|
- **SIFT:** per trovare i punti più rappresentativi di un'immagine, ovvero i punti che sono invarianti per traslazioni, rotazioni e scaling. Parzialmente invarianti a cambi di illuminazione e distorsioni geometriche.
|
||||||
|
- Si fanno vari gaussian smoothing e resampling dell'immagine
|
||||||
|
- Si applica DoG (difference of gaussian) tra le immagini derivate. Si considerano i punti di massimo e di minimo (maxima and minima) del risultato della DoG.
|
||||||
|
|
||||||
|
#### 3D
|
||||||
|
Si valutano curvature e profondità delle regioni rilevanti dell'orecchio. Il matching avviene tra regioni corrispondenti chiamate patch.
|
||||||
|
|
||||||
|
#### Termogrammi
|
||||||
|
##### Pro:
|
||||||
|
- orecchio facilmente localizzabile
|
||||||
|
- robust to hair occlusion
|
||||||
|
- different color facilitate segmentation
|
||||||
|
##### Contro
|
||||||
|
- Sensibile al movimento
|
||||||
|
- Bassa risoluzione
|
||||||
|
- Costo
|
||||||
|
|
||||||
|
#### Combinazione 2D/3D
|
||||||
|
Si combinano le informazioni 2D e 3D per migliorare le performance di riconoscimento. Il problema è trovare la migliore strategia di fusione.
|
||||||
|
|
||||||
|
Combinazione faccia/orecchio
|
||||||
|
Approccio di Victor, Bowyer e Sarkar.
|
||||||
|
|
||||||
|
- Preprocessing ridimensionando le immagini in 400x500
|
||||||
|
- Normalizzazione dati due punti di riferimento sia per faccia che per orecchio
|
||||||
|
- Mascheramento delle regioni non appartenenti all'orecchio
|
||||||
|
- Viene usato PCA per ridurre la dimensionalità generando un'immagine 400x500
|
||||||
|
- ![[Pasted image 20241120144654.png]]
|
||||||
|
|
||||||
|
Risultati ottenuti:
|
||||||
|
- La faccia fornisce sempre risultati migliori dell'orecchio in tutti i casi
|
||||||
|
|
||||||
|
Considerando variazioni di:
|
||||||
|
- Illuminazione
|
||||||
|
- Posa
|
||||||
|
- Giorno in cui viene scattata l; immagine
|
||||||
|
I risultati sono abbastanza diversi:
|
||||||
|
![[Pasted image 20241121023854.png]]
|
||||||
|
|
||||||
|
|
||||||
|
Vari modi per combinare faccia e orecchio:
|
||||||
|
![[Pasted image 20241121024042.png]]
|
||||||
|
![[Pasted image 20241121024108.png]]
|
||||||
|
Testando con tanti soggetti, vediamo come la miglior casistica è Face+Ear (combinazione in parallelo di faccia e orecchio)
|
4
Biometric Systems/notes/dati da considerare.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
- numero di dataset usati
|
||||||
|
- dimensione immagini
|
||||||
|
- dimensione probe/gallery
|
||||||
|
- numero e livello di variazioni tollerate
|
BIN
Biometric Systems/slides/LEZIONE11_Fingerprints.pdf
Normal file
BIN
Biometric Systems/slides/LEZIONE8_Face antispoofing 1.pdf
Normal file
BIN
Biometric Systems/slides/LEZIONE9_Ear recognition.pptx.pdf
Normal file
|
@ -1,40 +0,0 @@
|
||||||
Assistant
|
|
||||||
Hello, I am your assistant. How can I help you?
|
|
||||||
- - - - -
|
|
||||||
User
|
|
||||||
Bias vs variance
|
|
||||||
- - - - -
|
|
||||||
Assistant
|
|
||||||
**Bias vs Variance**
|
|
||||||
=====================
|
|
||||||
|
|
||||||
The bias-variance tradeoff is a fundamental concept in machine learning that refers to the balance between two types of errors: **bias** and **variance**.
|
|
||||||
|
|
||||||
### Bias
|
|
||||||
|
|
||||||
* The error caused by **bias** measures how far off the predictions of a model are from the true value. It represents the difference between the predicted mean of the model and the correct value.
|
|
||||||
* A high bias indicates that the model is underfitting, meaning it's too simple to capture the underlying patterns in the data.
|
|
||||||
|
|
||||||
### Variance
|
|
||||||
|
|
||||||
* The error due to **variance** measures how much the predictions of a model vary for a given point. It reflects the impact of randomness in the data on the prediction results.
|
|
||||||
* A high variance indicates that the model is overfitting, meaning it's too complex and fits the noise in the training data.
|
|
||||||
|
|
||||||
### Diagrammatic Representation
|
|
||||||
|
|
||||||
The bias-variance tradeoff can be visualized using a **target diagram**, where the center represents a perfect model that predicts the true values.
|
|
||||||
|
|
||||||
### Mathematical Definition
|
|
||||||
|
|
||||||
The prediction error at point x can be decomposed into bias, variance, and irreducible error:
|
|
||||||
|
|
||||||
$$\text{Err}(x) = \left(E[\hat{f}(x)] - f(x)\right)^2 + E\left[(\hat{f}(x) - E[\hat{f}(x)])^2\right] + \sigma^2_\epsilon$$
|
|
||||||
|
|
||||||
### Related Concepts
|
|
||||||
|
|
||||||
* **Optimism in the Face of Uncertainty - Upper Confidence Bound (UCB)**: Discusses balancing exploration and exploitation in a multi-armed bandit setting, related to bias-variance tradeoff.
|
|
||||||
* **Gaussian Filtering**: Describes linear filtering using a Gaussian kernel, which can smooth out noise and reduce variance.
|
|
||||||
* **Logistic Regression**: Introduces maximum likelihood estimation (MLE) for logistic regression, related to bias-variance tradeoff in model selection.
|
|
||||||
|
|
||||||
These concepts can be used to discuss the bias-variance tradeoff in more detail.
|
|
||||||
- - - - -
|
|