vault backup: 2024-11-14 07:10:41

This commit is contained in:
Marco Realacci 2024-11-14 07:10:41 +01:00
parent f3a917b8b7
commit 2967d23246
15 changed files with 178 additions and 88 deletions

View file

@ -4,77 +4,21 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "92983280ad25c0d4", "id": "d2b4e8ce2e5572a1",
"type": "tabs", "type": "tabs",
"dimension": 49.832214765100666,
"children": [ "children": [
{ {
"id": "42dc8aa905e2dc18", "id": "579822ce920333ff",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "Foundation of data science/notes/2 Logistic Regression.md", "file": "Biometric Systems/notes/6. Face recognition 2D.md",
"mode": "source", "mode": "source",
"source": false "source": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "2 Logistic Regression" "title": "6. Face recognition 2D"
}
}
]
},
{
"id": "40447d7392f56019",
"type": "tabs",
"dimension": 50.167785234899334,
"children": [
{
"id": "bbfe351da740d810",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/LEZIONE6_Face recognition2D.pdf",
"page": 86,
"left": -36,
"top": 444,
"zoom": 0.4125
},
"icon": "lucide-file-text",
"title": "LEZIONE6_Face recognition2D"
}
},
{
"id": "4718a8ffaa0b0a64",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/Biometric_System___Notes.pdf",
"page": 22,
"left": 82,
"top": 743,
"zoom": 1.3
},
"icon": "lucide-file-text",
"title": "Biometric_System___Notes"
}
},
{
"id": "41e920fc09f821d7",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/LEZIONE7_Face recognition3D.pdf",
"page": 1,
"left": -16,
"top": 760,
"zoom": 0.9166666666666666
},
"icon": "lucide-file-text",
"title": "LEZIONE7_Face recognition3D"
} }
} }
] ]
@ -108,7 +52,7 @@
"state": { "state": {
"type": "search", "type": "search",
"state": { "state": {
"query": "", "query": "frontalizz",
"matchingCase": false, "matchingCase": false,
"explainSearch": false, "explainSearch": false,
"collapseAll": false, "collapseAll": false,
@ -129,11 +73,12 @@
"title": "Bookmarks" "title": "Bookmarks"
} }
} }
] ],
"currentTab": 1
} }
], ],
"direction": "horizontal", "direction": "horizontal",
"width": 300 "width": 434.5
}, },
"right": { "right": {
"id": "11560c155f3d8f6e", "id": "11560c155f3d8f6e",
@ -235,32 +180,38 @@
"obsidian-git:Open Git source control": false "obsidian-git:Open Git source control": false
} }
}, },
"active": "b5d8a3515919e28a", "active": "579822ce920333ff",
"lastOpenFiles": [ "lastOpenFiles": [
"Biometric Systems/notes/4. Face detection.md",
"Biometric Systems/notes/6. Face recognition 2D.md",
"Biometric Systems/notes/7. Face recognition 3D.md",
"Foundation of data science/notes/5 Neural Networks.md",
"Biometric Systems/slides/LEZIONE5_NEW_More about face localization.pdf",
"Biometric Systems/slides/LEZIONE6_Face recognition2D.pdf",
"Foundation of data science/slides/FDS_backprop_new.pdf",
"Foundation of data science/notes/4 L1 and L2 normalization.md",
"Autonomous Networking/slides/5 Drones.pdf",
"Autonomous Networking/notes/5 Drones.md",
"Autonomous Networking/notes/q&a.md",
"Autonomous Networking/notes/9 Markov processes.md",
"Biometric Systems/slides/LEZIONE7_Face recognition3D.pdf",
"Pasted image 20241107104144.png",
"Biometric Systems/slides/Biometric_System___Notes.pdf",
"Pasted image 20241107102503.png",
"Pasted image 20241107102227.png",
"Pasted image 20241107101136.png",
"Pasted image 20241107093316.png",
"Pasted image 20241107093019.png",
"Pasted image 20241107092327.png",
"Pasted image 20241107091228.png",
"Pasted image 20241107091114.png",
"Pasted image 20241107090827.png",
"Foundation of data science/notes/2 Logistic Regression.md", "Foundation of data science/notes/2 Logistic Regression.md",
"conflict-files-obsidian-git.md", "conflict-files-obsidian-git.md",
"Biometric Systems/notes/6. Face recognition 2D.md",
"Biometric Systems/images/Pasted image 20241106144314.png",
"Senza nome.md", "Senza nome.md",
"Biometric Systems/images/Pasted image 20241106133935.png",
"Biometric Systems/images/Pasted image 20241106133301.png",
"Biometric Systems/slides/LEZIONE6_Face recognition2D.pdf",
"Biometric Systems/images/Pasted image 20241106143837.png",
"Biometric Systems/images/Pasted image 20241106142610.png",
"Biometric Systems/images/Pasted image 20241106142539.png",
"Biometric Systems/images/Pasted image 20241106142538.png",
"Biometric Systems/images/Pasted image 20241106142523.png",
"Biometric Systems/images/Pasted image 20241106142503.png",
"Biometric Systems/slides/Biometric_System___Notes.pdf",
"Biometric Systems/images/Pasted image 20241106140241.png",
"Biometric Systems/slides/LEZIONE7_Face recognition3D.pdf",
"Autonomous Networking/notes/q&a.md",
"Foundation of data science/notes/4 L1 and L2 normalization.md",
"Autonomous Networking/notes/7 RL.md", "Autonomous Networking/notes/7 RL.md",
"Foundation of data science/slides/Untitled.md", "Foundation of data science/slides/Untitled.md",
"Untitled.md",
"Foundation of data science/notes/3 Multi Class Binary Classification.md", "Foundation of data science/notes/3 Multi Class Binary Classification.md",
"Autonomous Networking/notes/9 Markov processes.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.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/2 RFID.md", "Autonomous Networking/notes/2 RFID.md",
@ -269,19 +220,13 @@
"Autonomous Networking/slides/AutonomousNet-Class11-2122-Performance_of_action_selection_methods_UCB.pdf", "Autonomous Networking/slides/AutonomousNet-Class11-2122-Performance_of_action_selection_methods_UCB.pdf",
"Autonomous Networking/slides/AutonomousNet-Class10-2122-Multiarmed_bandit.pdf", "Autonomous Networking/slides/AutonomousNet-Class10-2122-Multiarmed_bandit.pdf",
"K-Armed bandit problem.md", "K-Armed bandit problem.md",
"Autonomous Networking/slides/7 RL1.pdf",
"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",
"Autonomous Networking/slides/AutonomousNet-Class13-2122-Optimal_policy_and_Qlearning.pdf",
"Biometric Systems/slides/LEZIONE5_NEW_More about face localization.pdf",
"Autonomous Networking/notes/3 WSN MAC.md", "Autonomous Networking/notes/3 WSN MAC.md",
"Chats/New Chat.md", "Chats/New Chat.md",
"Autonomous Networking/notes/4 WSN Routing.md", "Autonomous Networking/notes/4 WSN Routing.md",
"Foundation of data science/notes/Logistic Regression for C > 1.md", "Foundation of data science/notes/Logistic Regression for C > 1.md",
"Foundation of data science/notes/Logistic Regression.md", "Foundation of data science/notes/Logistic Regression.md",
"Foundation of data science/notes/1 CV Basics.md", "Foundation of data science/notes/1 CV Basics.md",
"Biometric Systems/notes/2. Performance indexes.md",
"Untitled.canvas" "Untitled.canvas"
] ]
} }

View file

@ -0,0 +1,145 @@
I problemi che occorrono nel riconoscimento 2D sono dovuti soprattutto a variazioni A-PIE (PIE + Ageing) e a possibili travestimenti da parte di impostori.
Questi problemi possono essere risolti con il riconoscimento 3D, introducendo però chiaramente altre complicanze (maggiore complessità di acquisizione e maggiore complessità nel gestire i dati acquisiti).
| Variazione | 2D | 3D |
| ---------------------- | --- | --- |
| Posa | X | V |
| Illuminazione | X | V |
| Espressione | X | X |
| Invecchiamento | X | X |
| Makeup | X | V |
| Chirurgia plastica | X | V |
| Occhiali, sciarpe ecc. | X | X |
(X = la variazione è un problema, V = la variazione non causa problemi)
###### Possibili implementazioni:
- **2D:**
- **Intensity image:** la classica "foto" ad es. in RGB
- **Immagini da altri sensori:** fotocamere termiche o near-infrared (infrarossi)
- **Immagini processate:** immagine processata con filtri (tipo wavelets o LBP)
- **2.5D:**
- **Range image:** immagini 2D che oltre al colore mantengono una quarta informazione, la distanza dal sensore
- **3D:**
- **Shared model:** serie di punti connessi tra loro (solitamente tramite triangolazione) formano un "mesh" 3D. Vari metodi di acquisizione, ognuno ha i suoi pro e contro.
###### Tipologie di scanner 3D:
- **Fotocamere stereoscopiche:** con due sensori. Si scattano foto con diversi punti di vista
- **Structured light scanner:**
- un pattern di luce viene proiettato su una superficie (faccia)
- il pattern viene deformato dalla faccia
- catturando diversi punti di vista si può ottenere un modello 3D completo
- costo medio-alto, accuratezza medio-alta, robustezza all'illuminazione medio-alta, dai 3 agli 8 secondi per una scansione
- funziona in modo simile al Kinect![[Pasted image 20241107090827.png]]\
- **Laser scanner:**
- way more accurate
- un fascio laser viene proiettato sulla faccia
- il fascio viene deformato dalla struttura 3D della faccia
- la cattura va ripetuta da diversi punti di vista
- è il metodo più costoso, ma ha un'ottima accuratezza, ottima robustezza all'illuminazione, 6-30 secondi per una scansione. Ma **è pericoloso per gli occhi**. ![[Pasted image 20241107091228.png]]
I dati acquisiti possono presentare alcuni problemi:
- presenza di spike o rumore
- presenza di "buchi" nel mesh 3D
- decentramento
Per questo sono necessarie diverse tecniche per la rimozione del rumore: filtri o operazioni manuali; per riempire i "buchi" devo aggiungere informazioni non presenti nel segnale: smoothing gaussiano, interpolazione lineare (collego due punti con una linea), interpolazione simmetrica, operazioni morfologiche.
#### $2D \to 3D$
Un modello 3D si può produrre integrando diverse scansioni 2.5D da diversi punti di vista.
- Per ogni immagine 2.5D viene prodotta una "nuvola" di punti 3D
- i punti vengono triangolarizzati (viene derivata una mesh di triangoli adiacenti) ![[Pasted image 20241107092327.png]]
- maggiore è il numero di triangoli, maggiore sarà il costo computazionale per generare il mesh ma maggiori saranno i dettagli
#### Modello 3D
- un poligono è una sequenza di punti complanari connessi da segmenti
- la complanarità è ciò che causa l'approssimazione quando rappresentiamo una superficie tramite un mesh di poligoni
- un lato (side) è un segmento che connette due vertici
- un poligono è composto quindi da un insieme di lati (il primo vertice del primo lato corrisponde al secondo vertice dell'ultimo lato)
- ogni vertice nel mesh è adiacente almeno a due lati
- ogni lato appartiene ad almeno un poligono
- per determinare l'orientamento di una superficie nello spazio 3D utilizziamo i normali ai vertici o ai poligoni![[Pasted image 20241107093019.png]]
Dopo aver costruito la mesh dobbiamo assegnare colori ai vertici e/o poligoni
- si può assegnare un colore a un vertice
- si può assegnare un colore a un poligono sulla base del colore dei suoi vertici
Texture map: per calcolare la posizione e l'orientamento di una texture su una superficie. Dobbiamo mappare i pixel della texture sulla superficie, possiamo farlo utilizzando diversi tipi di proiezioni:![[Pasted image 20241107093316.png]]
#### Shape from shading
Sfruttando le proprietà di shading (come la luce riflette su una superficie) è possibile stimare informazioni come la profondità e ricavare così un mesh 3D a partire da immagini 2D (più di una ovviamente).
Possiamo farlo usando le leggi di Lambertian:
- Lambertian reflectance è la proprietà che definisce la superficie opaca o riflettente ideale, la luminosità è la stessa indipendentemente dall'angolo di vista dell'osservatore
- Lambertś cosine law:
> [!PDF|yellow] [[LEZIONE7_Face recognition3D.pdf#page=9&selection=69,0,72,0&color=yellow|LEZIONE7_Face recognition3D, p.9]]
> > Lambert's cosine law
>
> approfondisci
> [!PDF|red] [[LEZIONE7_Face recognition3D.pdf#page=9&selection=96,0,107,7&color=red|LEZIONE7_Face recognition3D, p.9]]
> > From 2D representation to 3D model: shape from shading
>
> shading più nel dettaglio
#### Shape from morphing
Un'altra tecnica è il **morphing**, dove viene creata una faccia 3D di riferimento e viene poi modellata per ottenere un risultato congruo a un'immagine di una persona. Questo ci permette di poter cambiare alcune caratteristiche del modello 3D così da poter stimare un modello sotto variazioni di espressione o età ad esempio.
La geometria di una faccia è rappresentata come un vettore S della forma (shape) composto da coordinate X, Y e Z degli n vertici 3D. Un vettore simile invece rappresenta la texture della faccia tramite valori RGB.
Una faccia viene costruita utilizzando un dataset di m esemplari, ognuno rappresentato dai suoi vettori Si e Ti. Le nuove forma e texture possono essere ottenute tramite una combinazione lineare di forme e texture degli m esemplari.
![[Pasted image 20241107101136.png]]
Possibili configurazioni. Non è necessario che sia gallery che probe siano entrambi 3D o entrambi 2D! Da un modello 3D si possono aggiustare la posa e calcolare la normal map, per confrontarla con altre normal map.
#### 3D allignment
##### Coarse
si possono usare i landmark
1. trovando un numero finito di punti caratteristici (bordi degli occhi, punta del naso...)
2. allineando facce minimizzando la distanza tra punti corrispondenti
##### Fine
Algoritmo ICP
Date due superfici 3D
1. trova un iniziale match tra le due (mapping di punti/superfici/linee/curve)
2. calcola la distanza tra le superfici con il metodo least squares
3. calcola la trasformazione che minimizza la distanza
4. eseguila e reitera la procedura finché la distanza non è inferiore a una threshold
##### Con normal maps
1. acquisizione e generazione della faccia
2. proiezione della geometria 3D su uno spazio 2D
3. generazione della mappa normale
![[Pasted image 20241107102227.png]]
Le mappe normali sono comunemente memorizzate come immagini RGB dove i componenti RGB corrispondono alle coordinate XYZ della superficie normale.
La lunghezza del vettore è rappresentata dall'intensità del colore.![[Pasted image 20241107102503.png]]
Usiamo le mappe normali perché processare un'immagine 2D è molto più veloce di processare un modello 3D. E se riusciamo a rappresentare un modello 3D in un'immagine 2D... Why not!
Tornando al face recognition, calcolando la differenza tra le due mappe ottengo la difference map, in cui ogni pixel rappresenta la distanza angolare tra le due mappe normali in quel punto.
Un tool per generare il modello 3D di una faccia usando il morphing è
> [!PDF|yellow] [[LEZIONE7_Face recognition3D.pdf#page=17&selection=81,0,81,7&color=yellow|LEZIONE7_Face recognition3D, p.17]]
> > FaceGen
>
> approfondisci facegen
#### iso-Geodesic Stripes
i modelli facciali 3D non sono sensibili all'illuminazione e alla posa, ma sono molto sensibili alle espressioni facciali (più delle immagini 2D). Per cui espressioni diverse possono causare grosse variazioni.
La distanza geodetica è il percorso più breve tra due punti.
- le distanze geodetiche non sono molto affette dalle variazioni dell'espressione
- la geometria delle regioni convesse della faccia sono poco affette dalle variazioni dell'espressione, rispetto alle regioni concave.
- Degli studi hanno dimostrato che le distanze euclidee e geodetiche e l'angolo tra 47 fiducial points sono sufficienti per catturare tutte le informazioni rilevanti. Il problema è riconoscere e estrarre questi punti.
In questo approccio tutti i punti della faccia sono presi in considerazione, le informazioni rilevanti sono codificate in un grafo, riducendo così il problema del face recognition al matching di grafi. Ogni nodo nel grafo rappresenta iso-geodesic facial stripes di uguale o crescente distanza dalla punta del naso.
Gli archi tra le coppie di nodi sono annotati con descrittori noti come 3D Weighted Walkthroughs (3DWWs) che catturano the mutual spatial displacement between all the pairs of points of the corresponding stripes and show smooth changes of their values as the positions of face points change. his representation has the great advantage of a very efficient computation of face descriptors and a very efficient matching operation for face recognition.
![[Pasted image 20241107104144.png]]
strisce iso-geodetiche
> [!PDF|red] [[LEZIONE7_Face recognition3D.pdf#page=21&selection=32,22,47,7&color=red|LEZIONE7_Face recognition3D, p.21]]
> > n be directly derived from the weights of the 3DWW matrix. Iso-geodesic stripes
>
> integrare questo

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB