vault backup: 2024-11-06 22:01:51
This commit is contained in:
parent
11262c71ec
commit
cdc10ed7be
21 changed files with 207 additions and 24 deletions
|
@ -157,3 +157,76 @@ Questo metodo fa uso di grafi, nello specifico abbiamo per ogni soggetto una col
|
|||
![[Pasted image 20241031104526.png]]
|
||||
|
||||
oggi non lo usa nessuno.
|
||||
|
||||
#### LBP Local Binary Pattern
|
||||
Lavora sempre su un kernel, ma il kernel è "trasparente". Lavora pixel epr pixel e ci aiuta ad estrarre informazioni riguardo le texture all'interno di un'immagine (utile anche per antispoofing). Nella sua prima versione va a considerare una griglia 3x3 dove a ognuno dei quali viene assegnato un valore binario: se il suo valore era maggiore del pixel centrale viene assegnato 1, altrimenti 0. Effettuando questa operazione con un ordine di processo dei vicini (parto dal vicino in alto a sinistra ad es.) si ottiene una stringa binaria, il cui valore convertito in decimale viene assegnato al pixel centrale. Sarà il valore del pixel nella nuova immagine.
|
||||
È tipo una convoluzione ma molto più semplice.
|
||||
|
||||
![[Pasted image 20241106133301.png]]
|
||||
|
||||
Possiamo ottenere l'istogramma di questi valori e considerarlo come una feature.
|
||||
Inoltre possiamo ottenere una misura di contrasto: (media valori dei pixel con valore maggiore del centrale) - (media valori dei pixel con valore minore del centrale)
|
||||
|
||||
![[Pasted image 20241106133935.png]]
|
||||
Ottengo un'immagine LBP (grayscale) e un istogramma LBP.
|
||||
L'immagine può banalmente poi essere usata come input di una deep network.
|
||||
Si può estendere per RGB? Beh sì basta che ripeto il processo per ogni immagine e faccio la media dei 3 risultati, ma ci sono strategie migliori.
|
||||
###### Versione migliorata
|
||||
In questa versione scelgo io il numero di pixel vicini (P) e il loro raggio di distanza (R), il valore di un pixel $p_{c}$ si calcolerà quindi come:
|
||||
$$LBP_{R,P}=\sum_{i=0}^{P-1}sign(p_{i}-p_{c})2^P$$
|
||||
sign torna 1 se >= 0, altrimenti 0.
|
||||
|
||||
![[Pasted image 20241106134544.png]]
|
||||
p.s. la rappresentazione come immagine LBP è possibile solo se P=8.
|
||||
|
||||
Un pattern viene detto **uniforme** se nella stringa binaria contiene al massimo due transizioni $0 \to 1$, $1 \to 0$. Questi rappresentano le informazioni essenziali e ci consentono di ridurre notevolmente il numero di punti da considerare riducendo la dimensionalità, dato che sono solo $P(P-1)+2$ su un totale di $P^2$ possibili pattern.
|
||||
![[Pasted image 20241106135449.png]]
|
||||
|
||||
Da questo esempio si dovrebbe capire come le informazioni importanti alla fine siano tutte comprese nei pattern uniformi: ![[Pasted image 20241106135815.png]]
|
||||
La seconda immagine contiene i pixel associati a pattern **uniformi**, la terza pixel associati a pattern **non uniformi**.
|
||||
|
||||
Come possiamo ottenere un vettore di features?
|
||||
- l'immagine viene suddivisa in sotto-finestre, ottenendo una griglia $k \times k$
|
||||
- per ogni sotto-finestra calcoliamo un istogramma (ad ogni bin corrisponde un pattern)
|
||||
- il vettore finale viene costruito concatenando i $k^2$ istogrammi.
|
||||
![[Pasted image 20241106140102.png]]
|
||||
|
||||
![[Pasted image 20241106140241.png]]
|
||||
Le rotazioni modificano l'LBP.
|
||||
|
||||
### Classificazioni di sistemi di riconoscimento facciale
|
||||
- **Metodi basati sull'apparenza della faccia (global/holistic appearance methods):** PCA, LDA, alcune reti neurali. Utilizzano l'immagine per intero invece di concentrarsi solo su alcune regioni, non perdendo informazioni da subito. Svantaggi: danno la stessa importanza ad ogni pixel, necessitano di alta correlazione tra training e test set, non performano bene su grandi variazioni PIE.
|
||||
- **Metodi basati su feature locali:** EBGM, LBP. Sono robusti a varianze di posizione in quanto vengono prima individuati i punti da cui estrarre le feature, e inoltre sono computazionalmente veloci. Come principale svantaggio hanno la scelta a priori dei punti da cui estrarre le feature, se non sono molto discriminativi le performance saranno pessime.
|
||||
- **Sistemi basati su grafi:** a ogni faccia è associato un grafo, dove ogni nodo corrisponde a punti discriminativi della faccia. Ottimi dal punto di vista di variazioni di posizione e illuminazione. Train e test molto lunghi.
|
||||
- **Sistemi basati su immagini termografiche o a infrarossi:** ottimi per quanto riguarda variazioni di illuminazione, però richiedono attrezzatura adeguata e la temperatura misurata varia in base allo stato del soggetto. Molto sensibili ai movimenti.
|
||||
- **Reti neurali:** mirano a simulare il modo in cui funzionano i neuroni del cervello. Ogni neurone è rappresentato da una funzione matematica, approccio ideale: usare un neurone per pixel ma richiede tantissimi neuroni. Quindi spesso si usa una rete per estrarre feature dall'immagine / comprimere l'immagine e poi una rete per la recognition effettiva. Sono molto robuste ma richiedono un training set molto grande. Altri possibili problemi: overfitting, overtraining (non generalizza), diventano inefficienti all'aumentare del numero di soggetti nel database.
|
||||
|
||||
###### Overfitting
|
||||
Quando la rete ha troppi parametri rispetto alla dimensione dell'input.
|
||||
|
||||
###### Overtraining
|
||||
Il sistema perde la capacità di generalizzare.
|
||||
|
||||
### Approcci Deep Learning: DeepFace di Facebook
|
||||
Include una fase di allineamento.
|
||||
- l'obiettivo della fase di allineamento è generale una faccia frontale a partire dall'immagine che può contenere facce con posizioni o angoli differenti. Il metodo proposto si basa dei "fiducial point" (punti estratti dalla faccia) per estrarre la fraccia frontale
|
||||
- generazione della faccia 2D, che non è altro che la faccia croppata dall'immagine di partenza
|
||||
- applicazione dei 67 fiducial point sull'immagine. Generazione di un modello 3D
|
||||
- frontalizzazione della faccia
|
||||
|
||||
![[Pasted image 20241106142503.png]]![[Pasted image 20241106142523.png]]![[Pasted image 20241106142539.png]]
|
||||
|
||||
Le facce "frontalizzate" saranno l'input della rete neurale:
|
||||
![[Pasted image 20241106142610.png]]
|
||||
|
||||
### Approcci Deep Learning: FaceNet di Google
|
||||
Raggiunse il miglior risultato sul dataset Labeled Faces in the Wild e Youtube Face Database.
|
||||
Fa uso di deep architectures come **ZF-Net** e **Inception Network**. Usa poi un metodo chiamato **triplet loss** come funzione loss per il training.
|
||||
|
||||
![[Pasted image 20241106143837.png]]
|
||||
- normalizzazione least squares: riscala i vettori in modo che la loro norma L2 sia 1 (ogni vettore è diviso per la norma L2)
|
||||
- la norma L2 calcola la distanza delle coordinate del vettore dall'origine dello spazio vettoriale, anche detta norma euclidea.
|
||||
|
||||
##### Triplet loss
|
||||
ha l'obiettivo di rendere piccola la distanza al quadrato (squared distance) tra gli embedding di due immagini corrispondenti alla stessa identità, indipendentemente dalla posa o altre condizioni, e di rendere grande la distanza tra immagini corrispondenti a identità diverse.
|
||||
![[Pasted image 20241106144314.png]]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue