Domanda

Quale flusso sarebbe passato il programma?

È stato utile?

Soluzione

Molto approssimativamente, le fasi di elaborazione sarebbero:

  1. Rileva le posizioni facciali
  2. Normalizza i volti
  3. Raccogli le funzionalità per ogni viso rilevato
  4. Nutri le funzionalità a un algoritmo di apprendimento automatico

Il passaggio 1 di solito viene eseguito usando il classico Algoritmo di rilevamento del volto Viola & Jones. È abbastanza veloce e affidabile.

I volti trovati nel passaggio 1 possono avere diverse luminosità, contrasto e dimensioni diverse. Per semplificare l'elaborazione, sono tutti ridimensionati alle stesse dimensioni e le differenze di esposizione vengono compensati (ad esempio usando l'equalizzazione dell'istogramma) nel passaggio 2.

Esistono molti approcci al passaggio 3. I rivelatori della faccia precoce hanno cercato di trovare posizioni specifiche (al centro degli occhi, alla fine del naso, alla fine delle labbra, ecc.) E utilizzare distanze geometriche e angoli tra quelli come caratteristiche per il riconoscimento. Da quello che ho letto, questi approcci erano molto veloci, ma non così affidabili.

Un approccio più recente, "Eigenfaces", si basa sul fatto che le immagini dei volti possono essere approssimate come una combinazione lineare di immagini di base (trovata attraverso la PCA da una vasta serie di immagini di allenamento). I fattori lineari in questa approssimazione possono essere utilizzati come caratteristiche. Questo approccio può anche essere applicato a parti del viso (occhi, naso, bocca) individualmente. Funziona meglio se la posa tra tutte le immagini è la stessa. Se alcuni volti guardano a sinistra, altri guardano verso l'alto, non funzionerà anche. I modelli di aspetto attivo cercano di contrastare quell'effetto allenando un modello 3D completo anziché immagini 2D piatte.

Il passaggio 4 è relativamente semplice: hai una serie di numeri per ogni faccia e per le immagini del viso acquisite durante l'allenamento e si desidera trovare la faccia da allenamento che sia "più simile" alla faccia di prova attuale. Questo è ciò che fanno gli algoritmi di apprendimento automatico. Penso che l'algoritmo più comune sia la macchina vettoriale di supporto (SVM). Altre scelte sono ad es. Reti neurali artificiali o vicini più importanti. Se le caratteristiche sono buone, la scelta dell'algoritmo ML non avrà importanza così tanto.

Letteratura sull'argomento:

Altri suggerimenti

Analisi del componente principale è alla base dei sistemi di riconoscimento dei pattern come riconoscimento facciale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top