Applicazione MATLAB nel riconoscimento facciale: codice, descrizione e sintassi
Pubblicato: 2020-06-23Ogni volta che sblocchi il tuo cellulare con la tua faccia o passi attraverso il tuo sistema di sorveglianza ad alta tecnologia dell'ufficio, un'elaborata tecnologia di riconoscimento facciale è operativa in background. Allora, cos'è il riconoscimento facciale e come puoi eseguire il riconoscimento facciale utilizzando MATLAB ?
Il riconoscimento facciale è il processo di identificazione dei volti umani attraverso la tecnologia. Il sistema di riconoscimento facciale utilizza la visione artificiale e le tecniche di Machine Learning per modellare e classificare le caratteristiche facciali estratte da immagini e video. Gli algoritmi per l'identificazione del viso estraggono e mappano i tratti del viso e li confrontano con un database di volti noti per trovare la migliore corrispondenza.
Fonte
Sommario
MATLAB nel riconoscimento facciale
È possibile ottenere il riconoscimento facciale utilizzando il codice MATLAB. La classe e la funzione integrate in MATLAB possono essere utilizzate per rilevare il viso, gli occhi, il naso e la bocca. Il sistema object vision.CascadeObjectDetector del toolbox del sistema di visione artificiale riconosce gli oggetti in base all'algoritmo di rilevamento del volto di Viola-Jones.
Descrizione del rilevatore di oggetti MATLAB
Il vision.CascadeObjectDetector utilizza l'algoritmo Viola-Jones per l'identificazione di volti, occhi, bocca, naso o parte superiore del corpo. Un classificatore personalizzato può essere addestrato utilizzando Image Labeler di MATLAB e utilizzato insieme all'oggetto System. Quindi, come vengono rilevati i tratti del viso o la parte superiore del corpo in un'immagine? Ecco i passaggi:
- Il primo passaggio prevede la creazione dell'oggetto vision.CascadeObjectDetector e l'impostazione delle sue proprietà.
- In questo passaggio, l'oggetto viene invocato con argomenti (come se si comportasse come una funzione).
Leggi: 15 interessanti idee e argomenti di progetto MATLAB per principianti

Sintassi per la creazione dell'Object Detector
La sintassi utilizzata per la creazione dell'Object Detector è la seguente:
- rilevatore = visione.CascadeObjectDetector
- rilevatore = vision.CascadeObjectDetector(mode1)
- Rilevatore = vision.CascadeObjectDetector(Nome,Valore)
- rilevatore = vision.CascadeObjectDetector(XMLFILE)
Descrizione della sintassi
- detector = vision.CascadeObjectDetector: questa sintassi viene utilizzata per la creazione di un rilevatore che rileva oggetti utilizzando l'algoritmo Viola-Jones.
- detector = vision.CascadeObjectDetector(mode1): questa sintassi viene utilizzata per la creazione di un rilevatore configurato per il rilevamento di oggetti definiti dal vettore di input – mode1.
- detector = vision.CascadeObjectDetector(Name, Value): questa sintassi viene utilizzata per impostare le proprietà utilizzando una o più coppie nome-valore, in cui ogni nome di proprietà è racchiuso tra virgolette. Ad esempio: detector = vision.CascadeObjectDetector('ClassificationModel','UpperBody')
Dai un'occhiata a: Idee per progetti di apprendimento automatico
Proprietà
Se non diversamente specificato, le funzionalità di Cascade Object Detector non sono sintonizzabili, il che significa che dopo aver chiamato l'oggetto, i loro valori non possono essere modificati. Gli oggetti vengono bloccati quando vengono invocati e il loro sblocco avviene tramite la funzione 'rilascio'.
D'altra parte, una proprietà sintonizzabile significherebbe che il suo valore può essere modificato in qualsiasi momento. Quindi, diamo un'occhiata ad alcune delle funzionalità prima di comprendere il riconoscimento facciale utilizzando i codici MATLAB .
- ClassificationModel: definita come vettore di caratteri, questa proprietà è responsabile del controllo del tipo di oggetto da rilevare. La configurazione predefinita del rilevatore rileva i volti.
- MinSize: la dimensione dell'oggetto più piccolo riconoscibile è indicata come vettore a due elementi [larghezza altezza]. A meno che non venga specificato un valore di proprietà, il rilevatore lo imposta sulla dimensione dell'immagine utilizzata per addestrare il modello di classificazione.
- MaxSize: la dimensione dell'oggetto più piccolo riconoscibile è indicata come vettore a due elementi [larghezza altezza] . A meno che non venga specificato un valore di proprietà, il rilevatore lo imposta sulla dimensione (I).
- ScaleFactor: ha un valore specificato maggiore di 1.0001. Questa proprietà serve per il ridimensionamento incrementale della risoluzione di rilevamento tra MinSize e MaxSize.
- MergeThreshold: ha un valore intero specificato uguale a 4. In caso di rilevamenti multipli attorno a un oggetto target, la soglia definisce i criteri di rilevamento finali.
- UseROI: specificata come false, questa proprietà può essere impostata su true per il rilevamento di oggetti all'interno di un'area rettangolare di interesse nell'immagine di input.
Sintassi per l'utilizzo del rilevatore di oggetti
- bbox = rivelatore(I)
- bbox = rivelatore(I,roi)
Descrizione della sintassi
- bbox = detector(I) restituisce bbox, una matrice M -by-4, che definisce dei riquadri di delimitazione ' M ' che contengono gli oggetti rilevati.
- bbox = detector(I,roi) viene utilizzato per rilevare oggetti all'interno della regione rettangolare di interesse, specificata da roi.
Argomenti di input

- I — Immagine di input: viene specificata come true color o scala di grigi (RGB).
- modello — Modello di classificazione: viene specificato come vettore di caratteri e descrive il tipo di oggetto da rilevare.
- XMLFILE — Modello di classificazione personalizzato: specificato come file XML, può essere creato utilizzando la funzionalità di addestramento OpenCV o la funzione trainCascadeObjectDetector.
- roi — Regione di interesse rettangolare: per specificare questo argomento di input viene utilizzato un vettore a quattro elementi [ x y width height ].
Argomenti di uscita
bbox — Rilevamenti: i rilevamenti vengono restituiti come una matrice di elementi M -by-4, ciascuna riga della quale contiene il vettore a quattro elementi [ x y larghezza altezza ].
Funzioni oggetto comuni a tutti gli oggetti di sistema
- passaggio: per eseguire l'algoritmo dell'oggetto di sistema
- release: per il rilascio delle risorse di sistema
- reset: per ripristinare gli stati interni dell'oggetto di sistema.
Codice MATLAB per il riconoscimento facciale
In questa sezione vedremo un esempio di riconoscimento facciale utilizzando il codice MATLAB.
Riconoscimento facciale
Fonte
Fonte
Il passaggio(Detector,I) restituirà il valore del riquadro di delimitazione contenente [x,y,Height,Width] degli oggetti rilevati:
Fonte
Rilevamento del naso
Fonte
Fonte
Descrizione:
- Il passaggio dell'argomento "naso" denota che l'oggetto di interesse è il naso.
- La sintassi predefinita per il rilevamento del naso è vision.CascadeObjectDetector('Nose')
- I valori dei parametri predefiniti passati a vision.CascadeObjectDetector possono essere modificati in base all'immagine di input.
- Il valore "MergeThreshold" può essere sovrascritto per evitare rilevamenti multipli attorno all'oggetto di destinazione (come nell'immagine sopra).
Rilevamento degli occhi
Fonte
Fonte

Rilevamento della bocca
Fonte
Fonte
Leggi anche: While loop in MATLAB: tutto ciò che devi sapere
Avvolgendo
Sebbene la tecnologia di riconoscimento facciale sia utile per la verifica dell'identità personale, solleva problemi di privacy. Poiché la tecnologia utilizza l'impronta facciale di un individuo, è spesso considerata una violazione della propria privacy, sicurezza e protezione. Il riconoscimento facciale mediante MATLAB può essere impiegato in diversi casi in cui la sicurezza è la massima preoccupazione. Dagli aeroporti e dagli uffici agli smartphone, il riconoscimento facciale è diventato parte integrante di molti sistemi e organizzazioni.
Se sei interessato a saperne di più sull'apprendimento automatico, dai un'occhiata al Diploma PG di IIIT-B e upGrad in Machine Learning e AI, progettato per i professionisti che lavorano e offre oltre 450 ore di formazione rigorosa, oltre 30 casi di studio e incarichi, IIIT- B Status di Alumni, oltre 5 progetti pratici pratici e assistenza sul lavoro con le migliori aziende.
Cos'è il riconoscimento facciale?
Il riconoscimento facciale può essere utilizzato per proteggersi dal furto di identità e per identificare le persone per nome. Tuttavia, dato che il riconoscimento facciale è relativamente nuovo ed è in continuo sviluppo, è importante comprendere le basi del riconoscimento facciale per utilizzarlo in modo efficace. Il riconoscimento facciale si riferisce al processo per determinare se un'immagine del viso appartiene a una persona conosciuta. Il problema del riconoscimento facciale può essere suddiviso in due attività: 1) Face Detection: individuare il volto nell'immagine, 2) Face Recognition: identificare la persona di cui si tratta.
Cos'è Matlab?
Matlab è un linguaggio di programmazione per il calcolo numerico. Fondamentalmente, è un linguaggio di programmazione a matrice. È molto usato nei calcoli scientifici e ingegneristici. A differenza degli altri linguaggi di programmazione, MATLAB è stato progettato per essere un linguaggio matriciale, adatto al calcolo su matrici. Le matrici sono utilizzate in molte equazioni diverse, specialmente nei calcoli scientifici e ingegneristici. Matlab è un linguaggio di programmazione di alto livello dotato di un gran numero di funzioni. Viene utilizzato per risolvere problemi matematici, analizzare dati e creare grafici.
Cos'è Viola Jones in Matlab?
L'algoritmo Viola Jones viene utilizzato per il rilevamento del volto e il riconoscimento dell'espressione facciale. L'algoritmo Viola Jones si basa sugli istogrammi dei gradienti orientati (HOG) introdotti per la prima volta da Paul Viola e Michael Jones nel 2001. Viene utilizzato nella visione artificiale, nell'apprendimento automatico e nell'elaborazione delle immagini. L'algoritmo Viola Jones fornisce un sistema completo di rilevamento di oggetti e può essere utilizzato nel rilevamento di pedoni, oggetti o rilevamento di persone. L'algoritmo Viola Jones consiste in una fase di estrazione delle caratteristiche, una fase di raggruppamento e una fase di classificazione degli oggetti.