Parte III — Feature locali: allineamento e localizzazione · Capitolo 9

Template matching

~45 min di lettura3 widget interattivi4 tavole

In questo capitolo

  1. Il problema: cercare un template in un'immagine
  2. Misurare le prestazioni: precision, recall e curva ROC
  3. Template matching rigido: la finestra mobile
  4. SSD, cross-correlation e normalizzazione
  5. I problemi del matching rigido e l'approccio multirisoluzione
  6. Template matching basato su descrittori locali
  7. La localizzazione dei volti: Viola–Jones
  8. Histogram of Oriented Gradients (HoG)
  9. Modelli parametrici e trasformata di Hough
  10. Shape learning: forme apprese dagli esempi
  11. Verifica le tue conoscenze

1. Il problema: cercare un template in un'immagine

Il termine template matching è molto generico nell'ambito del pattern recognition, ma normalmente fa riferimento alla «ricerca» di un template T all'interno di un'immagine I, con l'obiettivo di determinare se I contiene l'oggetto (match) e in quale posizione T appare nell'immagine. La tassonomia vista a lezione distingue i rigid template matching dai deformable template matching, e per ciascuno le tecniche principali:

template matching rigid template matching deformable template matching pixel-based local descr. based Hough free-form deformable parametric deformable dominio spaziale / frequenze shape learning
Tavola 9.1 — La tassonomia del template matching: rigido (pixel-based, descrittori locali, Hough) contro deformabile (free-form e parametrico). Il capitolo segue esattamente questa mappa.

2. Misurare le prestazioni: precision, recall e curva ROC

In un sistema di localizzazione di oggetti è necessario misurare:

I principali indicatori sono:

Precision = TP / (TP + FP)          Recall = TP / (TP + FN)

con TP = true positive, FP = false positive, FN = false negative. Per decidere se un oggetto localizzato d_i corrisponde a un oggetto del ground truth g_j, lo score associato al matching tra i due è l'intersezione su unione:

S(d_i, g_j) = area(d_i ∩ g_j) / area(d_i ∪ g_j)

Può essere necessario un algoritmo di assegnamento che ottimizzi le coppie (d_i, g_j) sulla base del relativo score. False e mancate localizzazioni sono spesso legate tra loro e funzioni dei parametri di tolleranza del sistema: rendendo il sistema meno tollerante ai falsi aumenta la probabilità di perdere oggetti genuini; rendendolo più tollerante aumenta la probabilità di localizzare qualche falso. Le prestazioni al variare della tolleranza si sintetizzano nella curva ROC (Receiver Operating Characteristic), che traccia i due tassi di errore (FPR e FNR) al variare della soglia.

Precision, recall e tolleranza

Regola direttamente TP, FP e FN, oppure muovi la tolleranza del sistema: più tolleranza → più oggetti trovati ma anche più falsi (FPR cresce, FNR cala). Il grafico mostra il punto (FNR, FPR) corrente, come nella curva ROC delle slide.

3. Template matching rigido: la finestra mobile

Un approccio molto usato per la localizzazione di oggetti si basa sull'analisi delle immagini con una finestra mobile che viene fatta scorrere sull'immagine e confrontata di volta in volta con i diversi template degli oggetti da ricercare (es. pedoni e macchine in una scena). Il template T è costituito da un oggetto rigido (normalmente una piccola immagine in formato raster):

Il confronto tra sottoimmagine e modello si basa su apposite feature (es. intensità, descrittori SIFT). Per decidere se un oggetto è presente si impone una soglia alla similarità tra le feature della sottofinestra e il modello; è possibile che lo stesso oggetto venga localizzato in più posizioni adiacenti, per cui serve una fase di post-processing (es. fusione, soppressione dei non massimi).

input image finestra in esame oggetti da trovare modelli (template) pedoni macchine similarità > soglia? (correlazione) post-processing fusione / non-max suppression
Tavola 9.2 — Il template matching rigido: la finestra scorre su tutte le posizioni, la correlazione con le istanze dei modelli viene confrontata con una soglia, e il post-processing (fusione o soppressione dei non massimi) elimina le localizzazioni adiacenti duplicate.

4. SSD, cross-correlation e normalizzazione

Immagini e template sono definiti, per semplicità di notazione, come vettori 1-dimensionali ottenuti disponendo in sequenza le righe delle corrispondenti matrici 2-dimensionali. Nell'approccio correlation-based, una misura intuitiva di diversità tra I e un'istanza T_i è la Sum of Squared Differences (SSD):

SSD(I, T_i) = ‖I − T_i‖² = (I − T_i)ᵀ (I − T_i) = ‖I‖² + ‖T_i‖² − 2·T_iᵀ I

Quando i termini ‖I‖² e ‖T_i‖² sono costanti, minimizzare il primo termine corrisponde a massimizzare la Cross-Correlation (CC) tra I e T_i:

CC(I, T_i) = T_iᵀ I = Σ_k T_i[k] · I[k]

In alcuni casi la cross-correlation non è una misura robusta e diventa necessario applicare delle normalizzazioni: ciò accade in particolare quando I e T_i non sono costanti, ad esempio cercando lo stesso template su immagini diverse, oppure con istanze dello stesso template diverse tra loro per numero di pixel e luminosità media.

Finestra mobile: SSD e cross-correlation

L'immagine contiene un oggetto (rettangolo scuro con nucleo chiaro) in posizione nota. Sposta la finestra con i cursori: la SSD è minima (e la CC massima) quando la finestra coincide con l'oggetto. Premi «Trova il minimo» per lanciare la ricerca esaustiva.

5. I problemi del matching rigido e l'approccio multirisoluzione

I problemi dell'approccio correlation-based

L'approccio multirisoluzione

Per ridurre la complessità si segue la ricerca su una gerarchia crescente di risoluzioni: viene creata una piramide di risoluzioni, ad esempio dimezzando la risoluzione a ogni livello. La ricerca viene eseguita inizialmente sulla risoluzione più bassa; ai livelli successivi vengono analizzate solo le istanze promettenti (la cui correlazione al livello inferiore eccedeva una soglia, tenuta piuttosto bassa per evitare false reiezioni). Così si esegue una scrematura ai livelli iniziali e si perfeziona la localizzazione (filtrando le false accettazioni) ai livelli successivi. L'approccio multirisoluzione viene usato anche per localizzare oggetti a scale diverse.

livello 0 (bassa risoluzione) ricerca grossolana istanze promettenti livello 1 solo intorno alle promettenti livello 2 localizzazione raffinata soglia bassa ai livelli iniziali (evitare false reiezioni) → scrematura → affinamento
Tavola 9.3 — La ricerca multirisoluzione: si parte dalla risoluzione più bassa, si selezionano le istanze promettenti e ai livelli superiori si analizza solo il loro intorno, perfezionando la localizzazione e filtrando le false accettazioni.

6. Template matching basato su descrittori locali

Per la rappresentazione dei template e delle singole patch è possibile usare dei descrittori locali (es. SIFT, SURF, HOG, Haar) associati a punti distribuiti uniformemente sull'immagine (dense sampling). Il confronto tra descrittori può essere effettuato sommando o mediando le distanze euclidee calcolate tra descrittori di punti corrispondenti: se la distanza ottenuta è inferiore alla soglia prefissata, l'oggetto si considera localizzato. L'esempio visto a lezione è la localizzazione dei prodotti in un ambiente di vendita: un'immagine campione viene confrontata con le foto dei prodotti presenti in assortimento.

Collegamento

Questa è l'applicazione diretta dei descrittori del capitolo 7: il template rigido non è più un raster di intensità, ma un insieme di descrittori locali, e la «similarità» diventa una distanza media nel loro spazio.

7. La localizzazione dei volti: Viola–Jones

Data una singola immagine o una sequenza video, la localizzazione del volto deve rilevare la presenza di uno o più volti e localizzarne la posizione. È necessaria l'indipendenza rispetto a: posizione, orientazione, scala ed espressione del volto; e a fattori esterni quali illuminazione o sfondo complesso. L'approccio: analizzare sottofinestre consecutive (sovrapposte) dell'immagine in input e valutare per ciascuna se appartiene alla classe dei volti («volto o non volto?»).

Il localizzatore di Viola e Jones [VJ01] è uno dei più robusti ed efficienti allo stato dell'arte: l'addestramento è molto lento (può richiedere giorni), ma la procedura di localizzazione è molto efficiente (funzionamento real-time). Si crea un classificatore inizialmente addestrato mediante multiple istanze della classe da individuare (esempi positivi) e varie istanze di esempi negativi (immagini che non contengono alcun oggetto della classe). Durante il training vengono estratte diverse caratteristiche dagli esempi e selezionate quelle particolarmente discriminanti; questa informazione è racchiusa nei parametri del modello statistico. Se il classificatore addestrato non trova un oggetto presente (miss) o ne indica erroneamente la presenza (false alarm), si può ricalibrare l'addestramento aggiungendo gli esempi corrispondenti (positivi o negativi) al training set.

Le tre componenti del metodo:

La localizzazione è effettuata facendo scorrere sull'immagine una finestra di ricerca (di dimensioni variabili), estraendo le feature presenti nella finestra e classificando la finestra come volto o non volto.

8. Histogram of Oriented Gradients (HoG)

HoG è un descrittore molto noto, proposto per la localizzazione di persone. Si basa su una finestra mobile applicata all'immagine in tutte le possibili posizioni e a diverse scale. La pipeline, a partire dall'immagine in input (sottoregione riscalata a 64 × 128):

  1. normalizzazione del colore;
  2. calcolo del gradiente;
  3. calcolo dell'istogramma per ciascuna cella (celle 8 × 8 pixel → 8 × 16 celle), un descrittore simile ai descrittori SIFT già visti;
  4. normalizzazione degli istogrammi nelle finestre con overlap (celle 2 × 2 → 7 × 15 blocchi).

I descrittori delle sottofinestre vengono concatenati e il descrittore globale viene usato per la classificazione tramite SVM. Viene infine applicata una soppressione dei non massimi per semplificare l'output e ridurre il numero di falsi positivi.

9. Modelli parametrici e trasformata di Hough

Alcune forme si lasciano descrivere da modelli parametrici: la linea y = m·x + c, la circonferenza r² = (x − x_c)² + (y − y_c)², l'ellisse (x−x_c)²/a² + (y−y_c)²/b² = 1. La trasformata di Hough sfrutta i parametri per localizzare queste forme anche da edge e punti sparsi:

Sebbene sia ritenuta da alcuni computazionalmente molto costosa, con l'uso del gradiente, il calcolo in aritmetica intera, il pre-calcolo dei valori e approcci multi-risoluzione si ottengono implementazioni molto efficienti — più efficienti della correlazione.

Rette

Ogni retta nel piano x, y è descritta da y = m·x + c: lo spazio dei parametri (m, c) viene discretizzato in un array bidimensionale A[m₁…m_r][c₁…c_s]. Durante la scansione ogni pixel attivo (x, y) individua una retta nello spazio dei parametri: per ogni valore discreto di m_i si determina il corrispondente c_j e si incrementa A[m_i][c_j]. Al termine, i massimi di A denotano le rette candidate. Nella pratica si preferisce la parametrizzazione in coordinate polari:

ρ = x·cos θ + y·sin θ

perché la discretizzazione di (m, c) comporta problemi per le rette verticali o quasi verticali (m infinita). L'esempio a lezione: gradiente (Sobel) → binarizzazione (soglia globale) → le 30 rette più probabili localizzate con la trasformata di Hough.

Circonferenze ed ellissi

Per una circonferenza di raggio prefissato r è costante e l'array degli accumulatori è bidimensionale A[x_c₁…x_cr][y_c₁…y_cs]. Se si vogliono tutte le circonferenze con raggio in un range prefissato, lo spazio (x_c, y_c, r) viene discretizzato in un array tridimensionale, con complessità ovviamente superiore. Nell'approccio base per le ellissi si sostituisce l'equazione dell'ellisse a quella del cerchio: i parametri però sono 4 (x_c, y_c, a, b) e per implementazioni efficienti servono semplificazioni.

Trasformata di Hough per rette

I punti blu giacciono su una retta (con rumore), i vermigli sono outlier. Ogni punto vota una sinusoide nello spazio (ρ, θ); il cursore fa votare progressivamente più punti e il picco dell'accumulatore individua la retta (in coordinate polari).

piano immagine (x, y) ogni punto attivo (x, y) vota una retta nello spazio dei parametri spazio dei parametri (ρ, θ) ρ θ il picco dell'accumulatore = la retta cercata
Tavola 9.4 — La dualità della trasformata di Hough: ogni punto dell'immagine vota una curva nello spazio dei parametri (in coordinate polari ρ = x·cosθ + y·sinθ, una sinusoide); i voti si accumulano nelle celle e il massimo individua la retta.

10. Shape learning: forme apprese dagli esempi

Spesso risulta complicato fornire espressioni analitiche di un template e altrettanto difficile definire precisamente le trasformazioni che mappano un oggetto nelle sue possibili deformazioni. I metodi di shape learning hanno come obiettivo l'apprendimento della forma di un oggetto e delle sue possibili variazioni a partire da un insieme di esempi.

Nel metodo di Cootes [Coot00] il template viene modellato da poligonali; durante l'addestramento gli esempi nel training set sono allineati (manualmente) sulla base di punti notevoli. I molteplici gradi di libertà dati dalla mobilità spaziale dei punti corrispondenti nei diversi pattern di esempio vengono fortemente ridotti (trasformata KL) per ottenere un modello parametrico con pochi gradi di libertà — la stessa idea dei sottospazi KL del relevance feedback del capitolo 5. Il modello converge a partire da una soluzione iniziale anche «molto imprecisa».

Gli esempi visti a lezione: la forma della mano (18 immagini etichettate con una poligonale, marcando i punti corrispondenti sempre nello stesso ordine — i 5 «modi di variazione principali» della KL gestiscono gran parte delle variazioni) e le caratteristiche interne del volto (200 immagini etichettate con più poligonali, stesso criterio).

Verifica le tue conoscenze

Che cosa si intende per template matching?

La ricerca di un template T all'interno di un'immagine I, con l'obiettivo di determinare se I contiene l'oggetto (match) e in quale posizione T appare nell'immagine.

Disegnate la tassonomia delle tecniche di template matching.

Rigid template matching: pixel-based (dominio spaziale o delle frequenze), local descr. based, Hough transform. Deformable template matching: free-form deformable (analytic-form based, transformation based) e parametric deformable (shape learning).

Definite precision e recall per un sistema di localizzazione.

Precision = frazione di oggetti localizzati che sono rilevanti: TP/(TP+FP). Recall = frazione di oggetti rilevanti che sono stati localizzati: TP/(TP+FN). I tre tipi di errore: false positive (oggetto non corretto localizzato), false negative o drop/miss (oggetto presente non localizzato), e la precisione di localizzazione (accuracy).

Come si calcola lo score di matching tra un oggetto localizzato e uno del ground truth?

Con l'intersezione su unione: S(d_i, g_j) = area(d_i ∩ g_j) / area(d_i ∪ g_j). Può servire un algoritmo di assegnamento che ottimizzi le coppie (d_i, g_j) sulla base del relativo score.

Qual è il legame tra tolleranza del sistema, falsi positivi e mancate localizzazioni?

False e mancate localizzazioni sono legate tra loro: rendendo il sistema meno tollerante ai falsi aumenta la probabilità di perdere oggetti genuini; rendendolo più tollerante aumenta la probabilità di localizzare falsi. Le prestazioni al variare della tolleranza si sintetizzano nella curva ROC.

Come funziona il template matching rigido con finestra mobile?

Il template T (oggetto rigido, piccola immagine raster) viene sovrapposto a I in tutte le posizioni (X e Y) e, se serve, ruotato e scalato (istanze T_i). Per ogni istanza si calcola la similarità massimizzando la correlazione con la porzione coperta; una soglia decide la presenza dell'oggetto; un post-processing (fusione, soppressione dei non massimi) elimina le localizzazioni adiacenti duplicate. Attenzione agli effetti di bordo se il template è più grande dell'immagine.

Derivate la relazione tra SSD e cross-correlation.

SSD(I, T_i) = ‖I‖² + ‖T_i‖² − 2·T_iᵀ I: quando ‖I‖² e ‖T_i‖² sono costanti, minimizzare la SSD equivale a massimizzare la cross-correlation CC = Σ_k T_i[k]·I[k]. La CC va normalizzata quando I e T_i non sono costanti (template cercato su immagini diverse, istanze con numero di pixel o luminosità media diversi).

Quali sono i problemi dell'approccio correlation-based?

Complessità computazionale: cresce linearmente con le istanze e i pixel, quindi in modo quadratico rispetto al lato — quasi sempre inapplicabile in real-time. Difficile gestione dei pattern deformabili: servono invarianza per posizione, rotazione, scala e aspect ratio (enorme numero di istanze), gestione delle variazioni di colore (es. operare sugli edge) e delle deformazioni locali.

Come funziona l'approccio multirisoluzione?

Si crea una piramide di risoluzioni (es. dimezzando la risoluzione a ogni livello). La ricerca parte dalla risoluzione più bassa; ai livelli successivi si analizzano solo le istanze promettenti (correlazione al livello inferiore sopra una soglia bassa, per evitare false reiezioni): scrematura ai livelli iniziali, perfezionamento e filtraggio delle false accettazioni ai successivi. Serve anche per localizzare oggetti a scale diverse.

Come si usa il template matching basato su descrittori locali?

Template e patch vengono rappresentati con descrittori locali (SIFT, SURF, HOG, Haar) su punti distribuiti uniformemente (dense sampling); il confronto somma o media le distanze euclidee tra descrittori di punti corrispondenti; se la distanza è sotto soglia, l'oggetto è localizzato.

Descrivete il localizzatore di Viola e Jones.

Classificatore addestrato su esempi positivi e negativi; tre componenti: Haar-like feature, classificazione con boosting (combinazione di classificatori semplici), multiscale detection con finestra scorrevole. Addestramento lento (giorni), localizzazione real-time. Miss o false alarm si correggono aggiungendo gli esempi corrispondenti al training set (ricalibrazione).

Descrivete la pipeline del descrittore HoG.

Immagine riscalata a 64 × 128 → normalizzazione del colore → calcolo del gradiente → istogramma per ciascuna cella 8 × 8 (8 × 16 celle, simile a SIFT) → normalizzazione degli istogrammi in blocchi 2 × 2 con overlap (7 × 15 blocchi) → descrittore globale classificato con SVMsoppressione dei non massimi per ridurre i falsi positivi.

Come funziona la trasformata di Hough?

Si definisce uno spazio dei parametri discretizzato in un array di accumulatori; ogni pixel attivo vota per le celle corrispondenti alle soluzioni compatibili; le celle con più voti indicano le soluzioni più probabili. Per le rette si usa la forma polare ρ = x·cosθ + y·sinθ (la forma (m, c) fallisce sulle rette verticali). Le circonferenze usano accumulatori 2D (raggio fisso) o 3D (raggio in range); le ellissi hanno 4 parametri e richiedono semplificazioni.

Che cos'è lo shape learning e come funziona il metodo di Cootes?

È l'apprendimento della forma di un oggetto e delle sue variazioni dagli esempi. Cootes modella il template con poligonali; gli esempi del training set sono allineati manualmente su punti notevoli (sempre nello stesso ordine); la trasformata KL riduce i gradi di libertà a pochi «modi di variazione principali», ottenendo un modello parametrico che converge anche da una soluzione iniziale molto imprecisa. Esempi: forma della mano (18 immagini) e caratteristiche interne del volto (200 immagini).