Trova le fonti: “Classificatori a cascata” – notizie – giornali – libri – scholar – JSTOR (giugno 2019) (Impara come e quando rimuovere questo messaggio modello)
Scalatura e rotazioniModifica
Si può vedere da questa descrizione che il classificatore non accetterà volti che sono capovolti (le sopracciglia non sono in una posizione corretta) o il lato del viso (il naso non è più al centro, e le ombre sul lato del naso potrebbero mancare). Classificatori a cascata separati devono essere addestrati per ogni rotazione che non è nel piano dell’immagine (lato del viso) e dovranno essere riqualificati o eseguiti su caratteristiche ruotate per ogni rotazione che è nel piano dell’immagine (viso capovolto o inclinato di lato). La scalatura non è un problema, poiché le caratteristiche possono essere scalate (centerpixel, leftpixel e rightpixel hanno una dimensione solo relativa al rettangolo esaminato). Nelle cascate recenti, il valore dei pixel di una parte del rettangolo rispetto ad un’altra è stato sostituito con le wavelets Haar.
Proprietà dello stadioModifica
Per avere una buona performance complessiva, devono essere soddisfatti i seguenti criteri:
- Ogni stadio deve convalidare tutte le facce, e può produrre molti falsi positivi. Per esempio, se lo stadio 1 dovesse marcare come ‘non contiene una faccia’ il 20% dei rettangoli contenenti una faccia (tasso di falsi negativi=20%), allora la performance totale della catena non può essere superiore all’80% di veri positivi, qualunque siano gli stadi successivi, poiché il 20% delle facce è già stato rifiutato.
- Questo suggerisce che un buon stadio deve avere il 100% di veri positivi e per esempio il 40% di falsi positivi, cioè accettare tutti i rettangoli contenenti facce e marcare erroneamente molti rettangoli come potenzialmente contenenti una faccia, da eliminare dagli stadi successivi. Per un primo stadio, il 100% di veri positivi e il 40% di falsi positivi dà ancora un sacco di falsi negativi, se solo 1 su 1000 rettangoli in un’immagine contiene un volto, ci saranno ancora 400 a 1 falsi possibili volti dopo il primo stadio.
- Se il primo stadio è molto veloce (poche operazioni), abbiamo eliminato il 60% dei rettangoli non contenenti un volto molto rapidamente.
La procedura di addestramento per uno stadio è quindi quella di avere molti apprendisti deboli (semplici operatori di differenza di pixel), addestrarli in gruppo (aumentare il loro peso se danno un risultato corretto), ma fare attenzione ad avere solo pochi apprendisti deboli attivi in modo che il tempo di calcolo rimanga basso.
Il primo rilevatore di Viola & Jones aveva 38 stadi, con 1 caratteristica nel primo stadio, poi 10, 25, 25, 50 nei cinque stadi successivi, per un totale di 6000 caratteristiche. I primi stadi rimuovono rapidamente i rettangoli indesiderati per evitare di pagare i costi computazionali degli stadi successivi, in modo che il tempo computazionale sia speso analizzando profondamente la parte dell’immagine che hanno un’alta probabilità di contenere l’oggetto.
Addestramento a cascataModifica
Le cascate sono solitamente fatte attraverso ADAboost consapevole dei costi. La soglia di sensibilità (0,8 nel nostro esempio) può essere regolata in modo che ci sia quasi il 100% di veri positivi e alcuni falsi positivi. La procedura può quindi essere ricominciata per la fase 2, fino a raggiungere l’accuratezza desiderata/tempo di calcolo.
Dopo l’algoritmo iniziale, si è capito che l’addestramento della cascata nel suo complesso può essere ottimizzato, per ottenere un tasso di rilevamento vero desiderato con una complessità minima. Esempi di tali algoritmi sono RCBoost, ECBoost o RCECBoost. Nelle loro versioni più elementari, possono essere intesi come la scelta, ad ogni passo, tra l’aggiunta di uno stadio o l’aggiunta di un discente debole ad uno stadio precedente, qualunque sia il meno costoso, fino al raggiungimento dell’accuratezza desiderata. Ogni stadio del classificatore non può avere un tasso di rilevamento (sensibilità) inferiore a quello desiderato, quindi questo è un problema di ottimizzazione vincolato. Per essere precisi, la sensibilità totale sarà il prodotto delle sensibilità degli stadi.
I classificatori a cascata sono disponibili in OpenCV, con cascate pre-addestrate per i volti frontali e la parte superiore del corpo. L’addestramento di una nuova cascata in OpenCV è anche possibile con i metodi haar_training o train_cascades. Questo può essere utilizzato per il rilevamento rapido di oggetti più specifici, compresi gli oggetti non umani con caratteristiche simili a Haar. Il processo richiede due set di campioni: negativo e positivo, dove i campioni negativi corrispondono a immagini arbitrarie di non-oggetti. Il vincolo di tempo nell’addestramento di un classificatore a cascata può essere aggirato usando metodi di cloud-computing.