vault backup: 2024-12-26 04:24:44

This commit is contained in:
Marco Realacci 2024-12-26 04:24:44 +01:00
parent 7192d14da1
commit 34d8577615
15 changed files with 697 additions and 146 deletions

View file

@ -6,76 +6,87 @@
{
"id": "10d05f5ce47bfda2",
"type": "tabs",
"dimension": 50.1269035532995,
"children": [
{
"id": "0b84e8ee40a319b0",
"type": "leaf",
"state": {
"type": "image",
"state": {
"file": "Biometric Systems/images/Pasted image 20241212094046.png"
},
"icon": "lucide-image",
"title": "Pasted image 20241212094046"
}
}
]
},
{
"id": "2d6c0c860f9d3654",
"type": "tabs",
"dimension": 49.87309644670051,
"children": [
{
"id": "5708c825977190cc",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/LEZIONE12_MULBIOMETRIC.pdf",
"page": 8,
"left": -3,
"top": 110,
"zoom": 0.88
},
"icon": "lucide-file-text",
"title": "LEZIONE12_MULBIOMETRIC"
}
},
{
"id": "ddcbcd954092c261",
"id": "34cfdf6e8485642e",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/Biometric_System___Notes.pdf",
"page": 4,
"left": -25,
"top": 725,
"zoom": 0.6078431372549019
"page": 17,
"left": -85,
"top": 416,
"zoom": 1.5
},
"icon": "lucide-file-text",
"title": "Biometric_System___Notes"
}
},
{
"id": "aad0ea67df9f4a75",
"id": "dee6b7fc799ba9d4",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/LEZIONE4_Face introduction and localization.pdf",
"page": 25,
"left": -373,
"top": 295,
"zoom": 0.8
},
"icon": "lucide-file-text",
"title": "LEZIONE4_Face introduction and localization"
}
},
{
"id": "fac915dd40926979",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/LEZIONE5_NEW_More about face localization.pdf",
"page": 3,
"left": -292,
"top": 228,
"zoom": 0.9
},
"icon": "lucide-file-text",
"title": "LEZIONE5_NEW_More about face localization"
}
},
{
"id": "bf4a60835e83ee85",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "Biometric Systems/slides/Riassunto_2021_2022.pdf",
"page": 1,
"left": -4,
"top": 846,
"zoom": 0.9
"page": 35,
"left": -11,
"top": 423,
"zoom": 1.3154136917261656
},
"icon": "lucide-file-text",
"title": "Riassunto_2021_2022"
}
},
{
"id": "61ed77bf6f8f2ca3",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Foundation of data science/notes/4 L1 and L2 normalization - Ridge and Lasso.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "4 L1 and L2 normalization - Ridge and Lasso"
}
}
]
],
"currentTab": 4
}
],
"direction": "vertical"
@ -106,7 +117,7 @@
"state": {
"type": "search",
"state": {
"query": "adaboost",
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
@ -245,54 +256,53 @@
"companion:Toggle completion": false
}
},
"active": "0d5325c0f9289cea",
"active": "2b2245f56092006e",
"lastOpenFiles": [
"Biometric Systems/images/Pasted image 20241217030157.png",
"Biometric Systems/images/Pasted image 20241217025904.png",
"Foundation of data science/notes/1 CV Basics.md",
"Foundation of data science/notes/5 Neural Networks.md",
"Foundation of data science/notes/6 PCA.md",
"Foundation of data science/notes/4 L1 and L2 normalization - Ridge and Lasso.md",
"Foundation of data science/notes/3.2 LLM generated from notes.md",
"Foundation of data science/notes/3.1 Multi Class Logistic Regression.md",
"Foundation of data science/notes/3 Logistic Regression.md",
"Foundation of data science/notes/2 Linear Regression.md",
"Foundation of data science/notes/9 Decision tree.md",
"Biometric Systems/slides/LEZIONE8_Face antispoofing.pdf",
"Biometric Systems/notes/8 Face anti spoofing.md",
"Biometric Systems/slides/LEZIONE7_Face recognition3D.pdf",
"Biometric Systems/slides/LEZIONE5_NEW_More about face localization.pdf",
"Biometric Systems/slides/LEZIONE4_Face introduction and localization.pdf",
"Biometric Systems/slides/Biometric_System___Notes.pdf",
"Biometric Systems/slides/LEZIONE6_Face recognition2D.pdf",
"Biometric Systems/notes/9. Ear recognition.md",
"Biometric Systems/notes/3. Recognition Reliability.md",
"Biometric Systems/notes/7. Face recognition 3D.md",
"Biometric Systems/slides/Riassunto_2021_2022.pdf",
"Biometric Systems/notes/dati da considerare.md",
"Biometric Systems/notes/multi bio.md",
"Biometric Systems/notes/13. Multi biometric.md",
"Biometric Systems/notes/2. Performance indexes.md",
"Biometric Systems/notes/11. Fingerprints.md",
"Foundation of data science/notes/8 Variational Autoencoders.md",
"Foundation of data science/notes/7 Autoencoders.md",
"Biometric Systems/notes/6. Face recognition 2D.md",
"Biometric Systems/slides/LEZIONE2_Indici_di_prestazione.pdf",
"Biometric Systems/notes/1. Introduction.md",
"Biometric Systems/notes/12. Iris recognition.md",
"Biometric Systems/notes/4. Face detection.md",
"Foundation of data science/notes/9 Random Forest.md",
"Biometric Systems/images/Pasted image 20241212094046.png",
"Biometric Systems/images/Pasted image 20241212094016.png",
"Biometric Systems/images/Pasted image 20241212093900.png",
"Biometric Systems/images/Pasted image 20241212084349.png",
"Biometric Systems/notes/13. Multi biometric.md",
"Biometric Systems/notes/multi bio.md",
"Biometric Systems/slides/Riassunto_2021_2022.pdf",
"Biometric Systems/notes/6. Face recognition 2D.md",
"Biometric Systems/notes/4. Face detection.md",
"Biometric Systems/images/Pasted image 20241212094046.png",
"Biometric Systems/images/Pasted image 20241212094000.png",
"Biometric Systems/images/Pasted image 20241212093943.png",
"Biometric Systems/images/Pasted image 20241212093927.png",
"Biometric Systems/images/Pasted image 20241212093902.png",
"Biometric Systems/slides/LEZIONE12_MULBIOMETRIC.pdf",
"Biometric Systems/images/Pasted image 20241212091320.png",
"Biometric Systems/images/Pasted image 20241212090608.png",
"Biometric Systems/notes/12. Iris recognition.md",
"Biometric Systems/images/Pasted image 20241212085003.png",
"Biometric Systems/slides/Biometric_System___Notes.pdf",
"Biometric Systems/notes/3. Recognition Reliability.md",
"Biometric Systems/slides/LEZIONE3_Affidabilita_del_riconoscimento.pdf",
"Biometric Systems/slides/LEZIONE10_Iris recognition.pdf",
"Biometric Systems/slides/lezione1 notes.md",
"Biometric Systems/slides/LEZIONE4_Face introduction and localization.pdf",
"Biometric Systems/slides/LEZIONE5_NEW_More about face localization.pdf",
"Biometric Systems/slides/LEZIONE1_Introduzione.pdf",
"Biometric Systems/slides/LEZIONE2_Indici_di_prestazione.pdf",
"Biometric Systems/notes/1. Introduction.md",
"Foundation of data science/notes/2 Logistic Regression.md",
"Foundation of data science/notes/1 CV Basics.md",
"Foundation of data science/notes/3 Multi Class Binary Classification.md",
"Foundation of data science/notes/7 Autoencoders.md",
"Foundation of data science/notes/9 Gradient Boosting.md",
"Foundation of data science/notes/6 PCA.md",
"Foundation of data science/notes/9 K-Nearest Neighbors.md",
"Foundation of data science/notes/9 Decision tree.md",
"Foundation of data science/notes/8 Variational Autoencoders.md",
"Foundation of data science/notes/9 Random Forest.md",
"Biometric Systems/notes/2. Performance indexes.md",
"Biometric Systems/notes/dati da considerare.md",
"Foundation of data science/slides/more on nn.pdf",
"Foundation of data science/notes/Untitled.md",
"Foundation of data science/notes/4 L1 and L2 normalization.md",
"Autonomous Networking/notes/5 Drones.md",
"Autonomous Networking/notes/6 Internet of Things.md",
"Autonomous Networking/notes/3 WSN MAC.md",
"Senza nome.canvas"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View file

@ -40,7 +40,7 @@ riguarda la voice recognition
- Pecora: produce tratti biometrici che matchano bene con altri template di se stesso e male con quelli di altri soggetti (classe media)
- Capra: produce tratti biometrici che matchano poco con altri template di se stesso, aumentando cosı̀ i casi di FR
- Agnello: produce tratti biometrici che sono facilmente riproducibili da altri, aumentando cosı̀ i casi di FA nei suoi confronti
- Lupo: produce un matching score più alto rispetto alla media quando viene confrontato con template diversi dal suo, aumentando cosı̀ i FA.
- Lupo: produce un matching score più alto rispetto alla media quando viene confrontato con template diversi dal suo, aumentando così i FA.
La differenza è che gli agnelli sono facili da impersonare, i lupi sono forti a impersonare gli altri. Gli agnelli sono dal lato del gallery, i lupi dal lato del probe.

View file

@ -29,48 +29,56 @@ Approcci di diversa natura:
>
> white compensation using Luma
RGB is not a preceptually uniform space
- colors close to each other in RGB space may not be perceived as similar
RGB to YCrCb
![[Pasted image 20241023133231.png]]
Darker region may have dominant blue component, light region red.
Algoritmo A:
- variance-based segmentation
- the simplest method is thresholding
- we have an image I with L gray levels
- $n_i$ is the number of pixels with gray level $i$
- $p_i = \frac{n_i}{MxN}$ is the probability of gray level i
- we divide pixel in two classes C0 and C1 by a gray level t
- for each class we can compute mean and variance of gray level![[Pasted image 20241023135127.png]]
- connected components
- skin tone pixels are segmented using local color variance![[Pasted image 20241023135925.png]]
#### 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
![[Pasted image 20241023133231.png]]
(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)
![[Pasted image 20241023135925.png]]
Eye localization
The algorithm builds two different eye maps (chroma and luma)
- **Chrominance map:** its creation relies on the observation that the region around eyes is characterized by high values of Cb and low values of Cr: $EyeMapC = \frac{1}{3}[(C_B^2)+(C_R^2)+(\frac{C_b}{C_r})]$
- **Luminance map:** eyes usually contain both light and dark zones that can be highlighted by morphological operators (dilation and erosion with hemispheric structuring elements)![[Pasted image 20241023140250.png]]
- 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.![[Pasted image 20241023140250.png]](nella formula il + indica dilation e il - erosion)
Chroma map is enhanced by histogram equalization
The two maps are combined through AND operator
The resulting map undergoes dilation, masking and normalization to discard the other face regions and brighten eyes
Further operations allow to refine this map.
- chroma map is enhanced by histogram equalization
- le due mappe sono combinate insieme con un operatore AND, risultato:![[Pasted image 20241217025904.png]]
**Dilation**
The dilation operator takes two pieces of data as inputs. The first is the image which is to be dilated. The second is a (usually small) set of coordinate points known as a structuring element (also known as a kernel). It is this structuring element that determines the precise effect of the dilation on the input image.
**Erosion**
The erosion operator takes two pieces of data as inputs. The first is the image which is to be eroded. The second is a (usually small) set of coordinate points known as a structuring element (also known as a kernel). It is this structuring element that determines the precise effect of the erosion on the input image.
- 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:![[Pasted image 20241217030157.png]]
![[Pasted image 20241023141948.png]]
- 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
The algorithm analyzes all the triangles composed by two candidate eyes and a candidate mouth. Each triangle is verified by checking:
- Luma variations and average of the orientation gradient of the blobs containing eyes and mouth
- Geometry and orientation of the triangle
- Presence of a face contour around the triangle
#### Algoritmo B
#### 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).
@ -81,7 +89,7 @@ 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.![[Pasted image 20241023144725.png]]
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).
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.

View file

@ -2,12 +2,13 @@
Nel riconoscimento facciale 2D abbiamo principalmente due problematiche da
risolvere:
- Costruzione di feature discriminative e rappresentative
- **Costruzione di feature discriminative e rappresentative**
- difficile avere una separazione lineare tra classi
- in certi casi dobbiamo combinare classificatori lineari (AdaBoost) o usare classificatori non lineari (molto più complesso)
- Costruzione di un classificatore che possa generalizzare anche su oggetti mai visti nel training
- **Costruzione di un classificatore che possa generalizzare anche su oggetti mai visti nel training**
In questo caso quindi ci troviamo a rappresentare le facce allinterno di immagini digitali, che vengono rappresentate da matrici a due dimensioni (w × h) oppure vettori unidimensionali (d = w × h). Lalta dimensionalità dei dati (es.: immagine 100 × 100 ha dimensione 10000) ci porta subito a un primo problema, ovvero il “Curse of dimensionality”: quando la dimensionalità aumenta, il volume dello spazio aumenta cosı̀ velocemente che i dati diventano sparsi/radi, rendendo difficile la classificazione.
**Le facce possono essere rappresentate nell'image space:**
In questo caso quindi ci troviamo a rappresentare le facce all'interno di immagini digitali, che vengono rappresentate da matrici a due dimensioni (w × h) oppure vettori unidimensionali (d = w × h). Lalta dimensionalità dei dati (es.: immagine 100 × 100 ha dimensione 10000) ci porta subito a un primo problema, ovvero il “Curse of dimensionality”: quando la dimensionalità aumenta, il volume dello spazio aumenta così velocemente che i dati diventano sparsi/radi, rendendo difficile la classificazione.
La sparsità dei dati, nel momento in cui vengono utilizzati strumenti statistici
come ad esempio i modelli di machine learning, diminuisce drasticamente la capacità predittiva di questi in quanto si hanno bisogno di tanti più esempi per generalizzarne le regole predittive.
> [!PDF|yellow] [[LEZIONE6_Face recognition2D.pdf#page=7&selection=6,0,6,17&color=yellow|LEZIONE6_Face recognition2D, p.7]]
@ -15,7 +16,7 @@ come ad esempio i modelli di machine learning, diminuisce drasticamente la capac
>
> leggi le conseguenze
Un'alternativa è rappresentare un'immagine nel feature space:
**Un'alternativa è rappresentare un'immagine nel feature space:**
- Gabor filters
- discrete cosine transform (DCT)
- local binary pattern (LBP) operator
@ -23,6 +24,8 @@ Un'alternativa è rappresentare un'immagine nel feature space:
#### PCA
possibile soluzione al curse of dimensionality: PCA.
p.s. per una descrizione molto migliore di PCA guardate gli appunti di FDS. Poi tornate qui per Eigenfaces ;>
Metodo statistico che consente di ridurre l'alta dimensionalità di uno spazio mappando i dati in un altro spazio con dimensionalità decisamente più piccola minimizzando la perdita di informazioni.
Vengono individuati dei nuovi assi, ortogonali tra loro, su cui proiettare i dati che però ne **massimizzano la varianza**. L'ortogonalità di questi ci permette di escludere componenti correlate tra loro che risultano quindi ridondanti.
Nello spazio delle immagini, i principali componenti sono ortogonali quando sono gli *autovettori della matrice di covarianza*.
@ -67,7 +70,7 @@ Possibile soluzione: Fisherfaces, un'applicazione di FLD (Fisher's linear discri
Alcuni dei problemi di PCA possono essere dati dal fatto che lavoriamo su dati in una maniera unsupervised (non supervisionata), ovvero senza tenere in considerazione le classi dei vari sample.
Una soluzione supervised è proposta da LDA, ovvero un metodo simile a PCA ma che minimizza la distanza intra-classe e cerca di massimizzare invece la distanza tra classi.
Nell'immagine la riduzione è da 2 a 1 dimensioni. In alcuni casi tipo questo non basta ridurre da due a un asse, gli assi sono ruotati per massimizzare la separazione tra classi. L'importante è che le coordinate rimangano ortogonali tra loro
Nell'immagine sotto la riduzione è da 2 a 1 dimensioni. In alcuni casi tipo questo non basta ridurre da due a un asse, gli assi sono ruotati per massimizzare la separazione tra classi. L'importante è che le coordinate rimangano ortogonali tra loro
![[Pasted image 20241030144246.png]]
the best subspace is better cause we are able to separate class among the 1D axis. As we can see, in the worst one, we are definitely not able to.
@ -107,6 +110,8 @@ Dobbiamo massimizzare il rapporto tra la varianza tra classi e la varianza della
- con due classi, è definita come la funzione lineare $w^Tx$ che massimizza la funzione $$J(w)=\frac{{|\tilde{\mu_{1}}-\tilde{\mu_{2}}|^2}}{\tilde{s_{1}}²+\tilde{s_{2}}^2}$$
- cerchiamo una proiezione dove sample della stessa classe sono proiettati molto vicini tra loro, ma con i valori medi delle classi il più possibile lontani tra loro![[Pasted image 20241031091853.png]]
e poi si calcolano autovettori e autovalori sulla matrice $(S_{W})^{-1}S_{B}$, e si prosegue come PCA.
### Feature spaces
- possiamo estrarre feature applicando filtri o trasformazioni alle immagini
- possiamo usare uno dei metodi appena descritti se le feature estratte hanno una dimensionalità alta
@ -133,33 +138,41 @@ provides a time-frequency representation of the signal. Fornisce tempo e frequen
Un feature vector viene ricavato eseguendo varie convoluzioni con un insieme Gabor filter (Gabor filter bank) con diversi orientamenti e scale (nell'immagine sull'asse x troviamo gli orientamenti e su y le scale)
Otteniamo quindi diversi filtri andando a cambiare i parametri:
- λ: frequenza, controlla lo spessore della striscia; più è grande più sarà spessa
- f: frequenza della sinusoide, controlla lo spessore delle strisce
- θ: orientamento, controlla la rotazione della striscia ed è espresso come un angolo
- γ: aspect ratio, controlla laltezza della striscia; più è grande più laltezza diminuirà
- σ: larghezza di banda, controlla la scala generale determinando anche il numero di strisce; aumentando questo valore avremo più strisce con meno distanza tra loro.
- $\sigma_{x}$ e $\sigma_{y}$: Varianza della gaussiana.
Questa procedura, su immagini molto grandi, porta ad unalta dimension-
alità; possibili soluzioni sono:
- Applicare il filtro su un subset di pixel, come ad esempio una griglia =⇒ dimensionalità ridotta, ma possibile perdità di informazioni salienti (dovuta a possibili rotazioni ad esempio)
- Applico il filtro su tutti i pixel, ma poi seleziono solo i punti con picchi di valori =⇒ problemi di allineamento
###### Ma come facciamo la convoluzione?
- Griglia fissa
- possiamo perdere punti importanti
- Griglia definita a mano in modo che i vertici sono vicini alle feature importanti, come gli occhi
Questa procedura, su immagini molto grandi, porta ad unalta dimensionalità ed è computazionalmente complessa; possibili soluzioni sono:
- Applicare il filtro su un subset di pixel, come ad esempio una griglia =⇒ dimensionalità ridotta, ma possibile perdita di informazioni salienti (dovuta a possibili rotazioni ad esempio)
Spiegato più semplicemente: faccio la convoluzione ma saltando un po' di pixel ogni volta (lo stride per chi conosce le CNN)
- Griglia fissa
- possiamo perdere punti importanti
- Griglia definita a mano in modo che i vertici sono vicini alle feature importanti, come gli occhi
- Applico il filtro su tutti i pixel, ma poi seleziono solo i punti con picchi di valori (con maggiore informazione) $\to$ problemi di allineamento.
#### EBGM Elastic Bunch Graph Matching
Questo metodo fa uso di grafi, nello specifico abbiamo per ogni soggetto una collezione di grafi (per questo il nome “bunch”), uno per ogni posa, dove:
- i vertici (edges) sono labellati (pesati) con la distanza tra i nodi
- gli archi (edges) sono labellati (pesati) con la distanza tra i nodi
- i nodi contengono un insieme di risultati di diversi gabor filter (in genere 5 differenti frequenze e 8 diversi orientamenti), conservati in questa struttura chiamata “Jet”, e sono posizionati in punti importanti come ad esempio naso, occhi e bocca
In questo modo considerando la posizione dei nodi e le label degli archi, il grafo modella la geometria del volto.
Face Bunch Graph: può rappresentare volti
label dei nodi: insiemi di jet (detti bunches) dei volti campione usati per costruire il FBG
label degli archi: distanze come detto prima
un volto è rappresentato come una combinazione di jet. Per ogni bunch si sceglie il jet più appropriato, una faccia nuova viene quindi rappresentata con i jet delle facce nel campione che più gli assomigliano, prendendo ad es. bocca da faccia 1, naso da faccia 2...
(un FBG fatto con 6 volti campione e 9 punti cardine può rappresentare fino a 6⁹ volti diversi :o)
![[Pasted image 20241031104206.png]]
![[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.
Lavora sempre su un kernel, ma il kernel è "trasparente". Lavora pixel per 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]]

View file

@ -125,14 +125,16 @@ Un tool per generare il modello 3D di una faccia usando il morphing è
#### 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.
La distanza geodetica è il path più breve che congiunge due punti in uno spazio curvo, quindi il path non è una linea dritta ma segue l'andamento curvilineo dello spazio.
- 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.
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 (strisce composte dai punti che hanno la stessa distanza geodetica dalla punta del naso, vedi figura) di uguale o crescente distanza dalla punta del naso.
Gli archi sono arricchiti con **3D Weighted Walkthroughs (3DWWs)**, descrittori che catturano spostamenti (displacement) spaziali tra punti corrispondenti delle strisce. I 3DWWs sono robusti rispetto alle deformazioni delle espressioni.
È molto efficiente.
![[Pasted image 20241107104144.png]]
strisce iso-geodetiche

View file

@ -9,7 +9,7 @@ L'attacco di spoofing può essere:
### 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 iderntificato (cambia il modo in cui riflette la luce ecc., LBP viene d'aiuto), oppure possiamo rilevare cose tipo il battito delle ciglia...
- **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)

View file

@ -1,4 +1,10 @@
- numero di dataset usati
- dimensione immagini
- dimensione probe/gallery
- numero e livello di variazioni tollerate
- numero e livello di variazioni tollerate
#### argomenti da rivedere
- iso geodesic stripes
- recognition reliability
- crf

View file

@ -0,0 +1,78 @@
# Linear Regression
## Definizione
La regressione lineare è un metodo per modellare la relazione tra variabili indipendenti (input,$x$) e una variabile dipendente (output,$y$) assumendo che questa relazione sia approssimativamente lineare.
### Notazione
-$m$: Numero di esempi di training.
-$n$: Numero di caratteristiche (features).
-$x^{(i)}$: Input del$i$-esimo esempio.
-$y^{(i)}$: Output del$i$-esimo esempio.
-$\theta$: Parametri del modello.
### Ipotesti del modello
La funzione ipotesi per un modello con una variabile è:
$$h_\theta(x) = \theta_0 + \theta_1x$$
Per più variabili (multivariata):
$$h_\theta(x) = \theta_0 + \theta_1x_1 + \dots + \theta_nx_n = \theta^T x$$
## Funzione di costo
Misura l'errore tra le predizioni del modello e i valori reali:
$$J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2$$
## Gradient Descent
Algoritmo iterativo per minimizzare$J(\theta)$:
$$\theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}$$
Dove:
- $\alpha$ è il learning rate.
- $\frac{\partial J(\theta)}{\partial \theta_j}$è il gradiente rispetto a$\theta_j$.
### Varianti
1. **Batch Gradient Descent**: Usa tutti gli esempi per calcolare il gradiente.
2. **Stochastic Gradient Descent (SGD)**: Aggiorna $\theta$usando un solo esempio per iterazione.
3. **Mini-batch Gradient Descent**: Combina i due approcci sopra usando piccoli gruppi (mini-batch).
### Feature Scaling
Per migliorare la convergenza del gradient descent, è utile normalizzare le feature:
$$x_j := \frac{x_j - \mu_j}{s_j}$$
Dove:
- $\mu_j$: Media della feature$j$.
- $s_j$: Range o deviazione standard della feature $j$.
## Equazione Normale
Un metodo analitico per calcolare i parametri $\theta$:
$\theta = (X^T X)^{-1} X^T y$
Utile quando il dataset è piccolo, ma inefficiente per grandi dataset.
## Metrica di Valutazione
- **MSE (Mean Squared Error)**: Valuta l'errore medio quadratico.
- **Coefficiente di correlazione (Pearson)**: Misura la relazione lineare tra $x$ e $y$:
$$r = \frac{\text{Cov}(x, y)}{\sigma_x \sigma_y}$$
Valori:
- $r = 1$: Massima correlazione positiva.
- $r = 0$: Nessuna correlazione.
- $r = -1$: Massima correlazione negativa.
- **R^2 (Coefficient of Determination)**:
$R^2 = 1 - \frac{\text{SSE}}{\text{SST}}$
Dove:
- $\text{SSE}$: Somma degli errori quadrati.
- $\text{SST}$: Somma totale dei quadrati.
## Locally weighted regression (Loess/Lowess)
Tecnica non parametrica che pesa gli esempi locali:
$$w^{(i)} = \exp\left(-\frac{(x - x^{(i)})^2}{2\tau^2}\right)$$
Dove $\tau$ è un parametro di larghezza (bandwidth).
## Interpretazione Probabilistica
Assumendo un errore gaussiano:
$$y^{(i)} = \theta^T x^{(i)} + \epsilon^{(i)}, \quad \epsilon^{(i)} \sim \mathcal{N}(0, \sigma^2)$$
La massimizzazione della verosimiglianza equivale alla minimizzazione di$J(\theta)$.
## Overfitting e Underfitting
- **Overfitting**: Modello troppo complesso; alta varianza.
- **Underfitting**: Modello troppo semplice; alto bias.
Soluzioni:
- Selezione delle feature.
- Regolarizzazione.

View file

@ -0,0 +1,142 @@
Solamente note generate da Gemini 2.0 sulla base del PDF, un po' così...
Leggete 3 e 3.1, coprono già praticamente tutto e sono scritti bene.
# Generalizzazione per Classificazione Multiclasse (C > 2)
## Softmax
* **Scopo:** Mappare un vettore di *logits* (output non normalizzati di una rete neurale) in un vettore di probabilità che somma a 1. Questo permette di interpretare l'output come una distribuzione di probabilità sulle classi.
* **Formula:**
$$
softmax(a_i) = exp(a_i) / Σ_j exp(a_j)
$$
dove:
* $a_i$ è l'i-esimo logit.
* $exp(a_i)$ è l'esponenziale del logit.
* $Σ_j exp(a_j)$ è la somma degli esponenziali di tutti i logits (fattore di normalizzazione).
* **Proprietà:**
* **Esponenziale:** Valori di $a_i$ più alti risultano in probabilità più alte. Valori più bassi vengono ridimensionati verso lo zero.
* **Normalizzazione:** Assicura che la somma di tutte le probabilità sia uguale a 1.
* **Relazione con i Logits:** $f(x) = softmax(Θ^T x)$ dove $Θ^T x$ rappresenta i logits.
## Probabilità e Funzione di Verosimiglianza (Likelihood)
* **Distribuzione di Probabilità:** In un contesto di classificazione, rappresenta la probabilità che un'istanza appartenga a ciascuna delle classi.
* **Codifica One-Hot:** Le etichette di classe $y$ sono spesso rappresentate con vettori one-hot (es. cat=[1, 0, 0], dog=[0, 1, 0], giraffe=[0, 0, 1]).
* **Funzione di Verosimiglianza per una Singola Istanza:**
$$
P(y | f(x)) = Π_i [f(x)_i]^{y_i}
$$
dove:
* $f(x)_i$ è la probabilità predetta per la classe $i$.
* $y_i$ è l'elemento corrispondente nel vettore one-hot (vale 1 per la classe corretta, 0 altrimenti).
* Solo la probabilità della classe corretta contribuisce al prodotto grazie alla codifica one-hot.
* **Funzione di Verosimiglianza per l'Intero Dataset:**
$$
L = Π_n P(y^i | f(x^i))
$$
dove $n$ indica l'indice del campione nel dataset.
## Log-Verosimiglianza (Log-Likelihood) e Negative Log-Likelihood (NLL)
* **Log-Verosimiglianza:** È il logaritmo della funzione di verosimiglianza. Utilizzato per semplificare i calcoli e trasformare prodotti in somme.
$$
log L = Σ_n log P(y^i | f(x^i)) = Σ_n Σ_c y^i_c log f(x^i)_c
$$
* **Negative Log-Likelihood (NLL):** È l'opposto della log-verosimiglianza. Viene minimizzata durante l'addestramento.
$$
NLL = - log L = - Σ_n Σ_c y^i_c log f(x^i)_c
$$
* **Cross-Entropy:** La NLL è equivalente alla Cross-Entropy nel contesto della classificazione multiclasse con codifica one-hot.
## Esempio di Calcolo della Cross-Entropy
* Viene fornito un esempio con due istanze ($π_1$, $π_2$) e tre classi (cat, dog, giraffe).
* Si calcola la Cross-Entropy per ciascuna istanza e poi la Cross-Entropy media $CE(Θ)$.
* L'obiettivo è **massimizzare la probabilità della classe vera** a scapito delle altre.
## Instabilità Numerica del Softmax
* **Problema:** Il calcolo dell'esponenziale di numeri grandi può portare a overflow, mentre la somma di esponenziali può portare a underflow.
* **Soluzione:** Sottrarre una costante $c$ (tipicamente il massimo dei logits) a ciascun logit prima di calcolare l'esponenziale.
$$
log(Σ_i exp(p_i)) = log(Σ_i exp(p_i - c)) + c
$$
* **Beneficio:** Evita che valori molto grandi influenzino negativamente l'ottimizzazione e previene l'instabilità numerica.
## Funzione di Costo (Loss Function)
* **Cross-Entropy:** La Cross-Entropy è comunemente usata come funzione di costo per la classificazione multiclasse.
* **Alternativa (per regressione):** $-1/(2n) * (Loss)$ è menzionata come funzione di costo per la regressione (differenza dei quadrati).
* **Normalizzazione:** La funzione di costo viene normalizzata per il numero di campioni nel dataset.
## Regressione Logistica Multiclasse
* $f(x) = softmax(Θ^T x)$ è la formulazione della regressione logistica multiclasse.
* L'obiettivo è trovare il **miglior set di parametri $Θ$** minimizzando la funzione di costo (Cross-Entropy).
## Entropia, Cross-Entropy e Divergenza KL
* **Entropia (H(P)):** Misura l'incertezza di una distribuzione di probabilità $P$.
$$
H(P) = - Σ_i p_i log p_i
$$
* **Cross-Entropy (CE(P, Q)):** Misura l'incertezza della distribuzione $P$ quando la codifichiamo usando la distribuzione $Q$.
$$
CE(P, Q) = - Σ_i p_i log q_i
$$
* **Divergenza KL (KL(P||Q)):** Misura quanta informazione si perde quando si usa la distribuzione $Q$ al posto di $P$.
$$
KL(P||Q) = Σ_i p_i log (p_i / q_i)
$$
* **Relazione:** $CE(P, Q) = H(P) + KL(P||Q)$
* $H(P)$: Incertezza della distribuzione vera.
* $KL(P||Q)$: Costo aggiuntivo di usare $Q$ invece di $P$.
## Calibrazione del Modello
* **Logits vs. Probabilità:** I logits non possono essere interpretati direttamente come probabilità.
* **Calibrazione:** Misura quanto bene le probabilità predette dal modello corrispondono alle frequenze osservate.
* **Procedura:**
1. Selezionare un set di validazione.
2. Dividere l'intervallo [0, 1] in $m$ bin.
3. $B_m$: Numero di campioni la cui confidenza cade nel bin $m$.
4. $P_m$: Confidenza media per ciascun bin.
5. $a_m$: Accuratezza media per ciascun bin.
* **Expected Calibration Error (ECE):** Misura l'errore di calibrazione atteso.
$$
ECE = Σ_m |B_m / n| * |a_m - P_m|
$$
## Iperpiani
* **Spazio N-dimensionale:** Un iperpiano in uno spazio N-dimensionale è un sottospazio piatto di dimensione N-1.
* **Esempi:**
* 2D -> Linea 1D
* 3D -> Piano 2D
* **Proprietà:**
1. Possono separare linearmente le classi che sono linearmente separabili.
2. La distanza dal campione di dati più vicino all'iperpiano è chiamata **margine**.
## Bias-Varianza
* **Underfitting:** Il modello è troppo semplice e non riesce a catturare le relazioni nei dati.
* **Perfect-fit:** Il modello trova un buon equilibrio tra bias e varianza.
* **Overfitting:** Il modello è troppo complesso e si adatta troppo bene ai dati di addestramento, imparando anche il rumore. Ciò porta a una scarsa generalizzazione su dati nuovi.
* **Errore (Error):** Rappresenta la discrepanza tra la previsione del modello e il valore vero.
* **Bias²:** Differenza tra la previsione media del modello e il valore corretto. Un bias alto indica che il modello fa ipotesi troppo semplificate.
* **Varianza (Variance):** Variabilità della previsione del modello per un dato dataset. Alta varianza significa che il modello è sensibile alle fluttuazioni nei dati di addestramento.
* **Capacità del Modello (Model Capacity):** La capacità del modello di apprendere relazioni complesse nei dati.
* **Trade-off Bias-Varianza:** C'è un compromesso tra bias e varianza. Aumentare la capacità del modello generalmente riduce il bias ma aumenta la varianza, e viceversa.
* **Errore Irriducibile (σ²):** Errore intrinseco ai dati che non può essere ridotto dal modello.
* **Decomposizione dell'Errore Quadratico Medio (MSE):**
$$
E[(Y - f(X))^2] = Bias(f(X))^2 + Variance(f(X)) + σ^2
$$
* **Minimizzazione del Rischio:**
* **Rischio Atteso:** Minimizzato per ottenere i parametri ottimali $Θ*$.
* **Rischio Empirico:** Minimizzato per ottenere i parametri $Θ_hat$.
Spero che questi appunti ti siano utili per prepararti al tuo esame! Inserendoli in Obsidian, potrai anche collegare concetti correlati per una comprensione più approfondita. In bocca al lupo!

View file

@ -0,0 +1,292 @@
Certamente, ecco gli appunti dettagliati in formato Markdown per il tuo blocco note Obsidian, basati sui PDF forniti:
### Reti Neurali
* **Funzione Score Lineare:**
* $f = Wx$
* **Rete Neurale a 2-layer:**
* $f = W₂ max(0, W₁x)$
### Fully Connected Neural Net
* **Problema:**
* Spatial correlation locale
* Molti parametri: 10^12 per una immagine 1000x1000 con 1M hidden units
* Meglio usare le risorse altrove
### Locally Connected Neural Net
* **Soluzione:**
* Input connessi localmente.
* Meno parametri.
* 100M per una immagine 1000x1000 con 1M hidden units e filter size 10x10
* **Problema:** Staticità dei parametri.
### Convolutional Neural Net
* **Soluzione:**
* Condivide i parametri su diverse locazioni
* Convolution con learned kernels
* Impara multipli filtri,
* Esempio con 100 filtri e dimensione 10x10, si hanno 10k parametri.
* **Motivazioni:**
* Le reti standard crescono quadraticamente con la dimensione dell'input.
* Non sfruttano la staticità.
* Connette ogni unità nascosta con un piccolo input patch.
* Condivide i pesi.
### Pooling
* **Scopo:** Filtra risposte a diverse locazioni, ottenendo robustezza.
* Max e Average.
### Neural Nets for Vision
* Connessione hidden layer a patch dell'input, condividendo i pesi.
* **Cnn:** convolutional network.
### Layer Fully Connected
* Si applica dopo la fase di feature extraction.
* Output lineare: $Wx$
* Output è un numero se si applica $Wx$
### Layer Convoluzionale
* Preserva la struttura spaziale
* Dimensione filtro tipica 5x5x3.
* Applica la convoluzione tra filtro e chunk di immagine.
### Layer Convoluzionale Multiplo
* Si possono usare più filtri, ottenendo più mappe di attivazione.
* Si stackano le mappe di attivazione.
* Ogni mappa è un nuovo channel.
### ConvNet
* Sequenza di convolutional layers, alternate da funzioni di attivazione (RELU).
### VGG-16
* Bassi livelli: low level features.
* Medio livello: mid level features.
* Alti livelli: high level features.
* Dopo i vari layers la classificazione è lineare.
### CONV layer in Pytorch
* `torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)`
* **Input:** N (batch size), C(channel), H(height) e W(width).
* **Output:** N, Cout, Hout, Wout.
* $out(N, C) = bias(Cout) + sum_{k=0}^{C_in-1} weight(Cout, k) * input(N, k)$
* **Parametri:** $kernel_size, stride, padding, dilation$ sono parametri int o tuple.
* **Hyperparameters:**
* Numero di filtri $K$
* Dimensione dei filtri $F$
* Stride $S$
* Padding $P$
### Pooling Layer
* Rende la rappresentazione più piccola e gestibile.
* Opera indipendentemente per ogni mappa di attivazione.
* **Downsampling:**
* 224 diventa 112.
### Max Pooling
* **No learnable parameters.**
* Introduce spatial invariance.
### Struttura tipica CNN
* CONV -> RELU -> POOL (più volte) -> FC (linear) -> Softmax.
* Struttura di base: $[(CONV-RELU)*N-POOL?]*M-(FC-RELU)*K,SOFTMAX$
Spero che questi appunti ti siano utili. Buono studio per il tuo esame! Se hai altre domande, non esitare a chiedere.
## Appunti su Reti Neurali e Convoluzionali
### Dropout
* **Definizione:** Tecnica di regolarizzazione per prevenire l'overfitting in reti neurali.
* **Funzionamento (Training):**
* Disattiva casualmente una frazione di neuroni durante ogni iterazione di training.
* I neuroni disattivati (dropped-out) hanno attivazione zero.
* La probabilità di dropout è controllata dall'iperparametro *p* (dropout rate), dove 0 ≤ *p* < 1.
* I pesi dei neuroni attivi vengono aggiornati normalmente con backpropagation.
* I neuroni disattivati non contribuiscono al forward o backward pass.
* Formula: $h = r ⊙ x$, dove $rᵢ ~ Bernoulli(1-p)$ e $⊙$ è la moltiplicazione elemento per elemento.
* **Funzionamento (Inferenza):**
* Nessun neurone viene disattivato.
* Le attivazioni vengono scalate in base al dropout rate (*p*). Tipicamente si moltiplica per 1-*p* per compensare la minore attività dei neuroni in training.
* Formula: $h = (1-p)x$
* **Inverse Dropout:**
* La scalatura delle attivazioni viene fatta durante il training, non l'inferenza.
* Assicura la consistenza dei valori delle attivazioni tra training e inferenza.
* Formula: $h = (r ⊙ x) / (1-p)$
* **Obiettivo:** Forzare la rete a imparare caratteristiche robuste che non dipendono da neuroni specifici.
* **Efficacia:** Non è sempre efficace.
### Connessioni Residue (Residual Connections)
* **Definizione:** Introdotte nelle Residual Networks (ResNets) per affrontare il problema del vanishing gradient.
* **Funzionamento:**
* Aggiungono l'input di un layer direttamente al suo output, "saltando" uno o più layer.
* Formula: $h = F(x) + x$
* Ogni layer aggiunge un "residuo" al valore precedente.
* **Backpropagation:**
* Se i parametri sono tali che $F(x) = 0$, allora l'input passa inalterato (funzione identità).
* I derivati non si annullano grazie alla forma $F(x) + x$.
* **Deep Residual Networks:**
* Consistono in molti layer con unità residue.
* Per la visione, F sono tipicamente 2-3 layer convolution nets.
* Performance migliore con profondità maggiori rispetto alle reti normali.
* **Esempio ImageNet:**
* ResNet 152 layers: errore top-5 4.49%
* Ensemble ResNet: 3.57%
* Precedente SOTA: 6.6% (GoogLeNet)
* Umani: 5.1%
* ResNets fino a 1000 layers, ma le performance si stabilizzano a 150 layer.
### Normalizzazione
* **Standard Scaling:**
* Preprocessa i dati in modo che ogni feature (colonna) abbia media zero e varianza unitaria.
* Formula: $X' = (X - μ) / sqrt(σ²)$
* $μ$: media della feature, calcolata come $μⱼ = (1/n) Σᵢ Xᵢⱼ$
* $σ²$: varianza della feature, calcolata come $σ²ⱼ = (1/n) Σᵢ (Xᵢⱼ - μⱼ)²$
* **Batch Normalization (BN):**
* Normalizza gli output di ogni layer o blocco in una rete neurale.
* Obiettivo: imparare media e varianza ottimali per ogni unità del layer durante il training.
* La media e la varianza di un layer cambiano durante l'ottimizzazione.
* Calcola media e varianza su un mini-batch anziché sull'intero dataset.
* Formula: $H' = (H - μ) / (sqrt(σ²) + ε)$
* BN(H) imposta una nuova media e varianza: $BN(H) = αH'ᵢⱼ + βⱼ$
* $α$ e $β$ sono trainati via gradient descent.
* **Inferenza:**
* **Post-Training Stats:** Calcola media e varianza sull'intero dataset e le usa fisse.
* **Moving Average:** Mantiene medie mobili di media e varianza durante il training, le usa fisse in inferenza.
* **BN Convoluzioni:**
* Media e varianza sono calcolate *per canale*, non per feature.
* **Sfide:**
* **Mini-batch dependencies:** Limita l'efficacia in scenari come distributed optimization.
* **High variance:** Con batch piccoli, la stima di media e varianza è poco affidabile.
* **Layer Normalization (LN):**
* Normalizza gli input a un layer *attraverso le features* (non mini-batch).
* Comunemente usata in forecasting con time series e transformers (batch size variabile o spesso = 1).
* Vengono allenate le variabili alfa e beta.
### Data Augmentation
* **Definizione:** Tecnica per aumentare la dimensione del training set applicando trasformazioni casuali ai dati.
* **Funzionamento:**
1. Campiona un mini-batch dal dataset.
2. Applica una o più trasformazioni casuali (flipping, cropping, rotazione...).
3. Allena il modello sul mini-batch trasformato.
* **Benefici:** Previene overfitting e migliora la robustezza del modello.
* **Trasformazioni Geometriche:**
* Flipping (orizzontale/verticale)
* Rotazione (angoli casuali)
* Traslazione (shift in x/y)
* Scaling (ridimensionamento)
* Cropping (ritaglio)
* Zooming
* Affine (combinazione di altre)
* **Trasformazioni Colore/Luce:**
* Brightness/Contrast/Saturation/Hue
* Color Jittering
* Grayscale
* **Noise and Distortion:**
* Gaussian Noise
* Salt-and-Pepper Noise
* Elastic Deformations
* **Cutout/Masking:**
* Cutout
* Random Erasing
* **Combinazione Tecniche:**
* Mixup
* CutMix
### Convoluzioni 1D
* **Definizione:** Usata per dati *time series* dove l'informazione è ordinata in sequenza.
* **Obiettivo:** Estrarre feature locali o pattern che evolvono nel tempo.
* **Input:** Time series di n passi, $x₀, x₁,..., xₙ₋₁$, dove ogni passo ha c features.
* Rappresentata come matrice $X (n, c)$: ogni riga è un timestep, ogni colonna è una feature.
* **Convoluzione 1D:** Definità da un receptive field di dimensione 2k:
* $Hᵢ = φ( Σⱼ₌₋ₖᵏ Σ₂₁ᶜ Wⱼ₊ₖ,₂ * Xᵢ₊ⱼ,₂)$
* **Scopi:**
* **Local Pattern Detection:** Catturare dipendenze locali nei time series.
* **Parameter Sharing:** Stesso filtro applicato a tutti i passi, riducendo i parametri.
* **Translation Invariance:** Robustezza a shift nel tempo.
* **Applicazioni:**
* Forecasting
* Anomaly Detection
* Classification
* Signal Processing
* **Causal Convolution:**
* L'output a un tempo i dipende solo dai passi precedenti (non futuri).
* Utile per forecasting e modelli che non devono "vedere" il futuro.
* $Hᵢ = φ( Σⱼ₌₀ᵏ Σ₂₁ᶜ Wⱼ,₂ * Xᵢ₋ⱼ,₂)$
### Causal Model
* **Forecasting:** Prevedere il passo successivo nei time series.
* **Opzioni:**
* Poola l'output $H$ e applica un regressor per predire $xₙ$.
* Definisce un target $Y = [x₁, x₂,..., xₙ]$ e allena il modello in modo che $Hᵢ ≈ Hᵢ₊₁$
* Quest'ultimo funziona solo con modelli causali.
### Autoregressive Generation
* Modelli allenati a prevedere il passo successivo possono essere usati per generazione autoregressiva.
* **Funzionamento:**
1. Inizia con una sequenza iniziale come prompt.
2. Il modello predice il passo successivo.
3. Aggiungi la predizione all'input e ripeti.
### Self-Attention
* **Scopo:** Modellare sequenze.
* **Confronto con 1D Convolution:**
* **1D Convolution:** Filtro a dimensione fissa, cattura pattern locali.
* **Self-Attention:** Calcola le interazioni tra ogni elemento della sequenza, imparando le dipendenze globali.
* **Funzionamento:**
* Calcola gli "attention scores" tra tutti gli elementi di una sequenza.
* L'output è la somma pesata degli elementi, dove i pesi sono gli attention scores.
* **Q, K, V Matrices:**
* Ogni token viene trasformato in 3 vettori: Query (Q), Key (K), Value (V).
* **Analogia web search:**
* Query (Q): la search term
* Key (K): titoli delle pagine web
* Value (V): contenuto delle pagine web.
* Il modello usa Q, K, V per calcolare gli attention scores.
* **Masked Self-Attention:**
* **Attention Score:** $dot product$ di Q e K.
* **Masking:** Blocca i token futuri (upper triangle) ponendo i loro scores a $-inf$.
* **Softmax:** Converte gli scores in probabilità.
* **Multi-Head Attention:**
* Multipli self-attention heads, ognuno cattura relazioni diverse tra i tokens.
* Output concatenati e passati per una proiezione lineare.
* **MLPs:**
* I risultati del multi-head self-attention vengono elaborati da un Multilayer Perceptron.
* **Transformer Block:**
* $Add \& Norm$: connessione residua, layer normalization.
* Layernorm applicato prima di MHA e MLP
* Il blocco si ripete "Nx" volte.
### Text Embeddings
* **Tokens:** Il testo viene diviso in unità più piccole (parole o subwords).
* **Embeddings:** I tokens sono convertiti in vettori numerici.
* **Problematiche con encoders a livello di parola:**
* Difficoltà a gestire le boundaries delle parole.
* Parole con forme simili trattate come separate.
* **Char encoders:** Riducono la complessità ma sono difficili da usare.
* **Subword Encoders (Byte Pair Encoding):**
* Algoritmo che parte dal vocabolario base con tutti i caratteri.
* Conta la frequenza delle coppie di caratteri.
* Unisce la coppia più frequente in un nuovo simbolo.
* Aggiunge il simbolo al vocabolario, re-tokenizza i dati.
* Si ferma dopo un numero di step.
* GPT-2 utilizza BPE su byte e aggiunge regole per il merging process.
### Positional Encoding
* **Problema:** I transformers processano i tokens simultaneamente, perdendo informazione di sequenza.
* **Positional Encoding:** Aggiunge informazione di posizione ai token vectors, consentendo al modello di differenziarli.
* **Sinusoidal Embeddings:**
* $$p(t)ᵢ= { sin(ωₖ * t) se i = 2k
cos(ωₖ * t) se i = 2k+1
ωₖ = 1/10000^(2k/d)$$
* **Relative Positional Embeddings:**
* Considera la distanza *relativa* $i-j$ tra i tokens, non la posizione assoluta.
* Es. ALiBi (Attention with Linear Biases): bᵢⱼ aggiunto basato sulla distanza relativa.
* In ALiBi non si usano positional embeddings all'inizio.
* **Output del Transformer:**
* L'output è proiettato nello spazio 50,257 dimensionale (grandezza vocabolario).
* Ogni valore è un logit, raw score del token.
* **Softmax:** i logits vengono trasformati in probabilità (distribuzione), si sceglie il token più probabile.
* **Temperature:**
* Iperparametro che controlla la randomicità della generazione.
* Temp = 1: nessun effetto.
* Temp < 1: distribuisce "sharper", più deterministico.
* Temp > 1: distribuisce "softer", più casuale, più creativa.