"Riconoscimento Facciale" - Tesina Maturità - Rovereto

Pagina creata da Tommaso Romeo
 
CONTINUA A LEGGERE
"Riconoscimento Facciale" - Tesina Maturità - Rovereto
"Riconoscimento Facciale"
                  Tesina Maturità

    Mattia Manfredi | 5C i ITT Marconi | A.S. 2014/15
"Riconoscimento Facciale" - Tesina Maturità - Rovereto
Indice

1. Introduzi0ne al Progetto.....................................................................pagina 2

2. Rilevamento e Riconoscimento del volto

                Definizione.........................................................................pagina 3

                Funzionamento.................................................................pagina 3

                Il mio Software...................................................................pagina 4-6

3. Librerie Utilizzate

                Open CV.............................................................................pagina 7

                Emgu CV...........................................................................pagina 7

4. Fonti.........................................................................................................pagina 8

                                                                                                                   PAGINA 1
Introduzione al Progetto

Per il mio progetto ho deciso di proporre il tema della sicurezza informatica e
dell'Intelligenza Artificiale, in particolar modo nell'analisi di una particolare tecnica,
quella del riconoscimento facciale (Face Recognition). Questa tecnica permette di
identificare o verificare l'identità di una persona a partire da una o più immagini che la
ritraggono.

L'obbiettivo del mio progetto è dunque quello di sviluppare un software di
riconoscimento facciale nel linguaggio da noi studiato nel corso del triennio di
informatica (C#) in grado di riconoscere più individui presenti nella stessa immagine,
in particolar modo in un riconoscimento in tempo reale attraverso l'utilizzo di una
webcam collegata al pc.

Per realizzare questo progetto sono state utilizzate alcune risorse software che hanno
permesso lo sviluppo del programma quali l'IDE (Integrated Development Environment,
in italiano ambiente di sviluppo integrato) proprietario di Microsoft, Visual Studio
versione 13, che potrebbe essere stato sostituito da un IDE concorrente Open Source.
La scelta di utilizzare Visual Studio è dovuta all'utilizzo di questo ambiente durante le
ore di laboratorio a scuola e alla disponibilità da parte di Microsoft di rendere questo
software gratuito per gli studenti. L'altra risorsa software, la libreria Open Source
Emgu CV, un wrapper cross-platform della libreria Open CV che permette di utilizzare
le funzioni della libreria nei linguaggi compatibili con .NET come C#.

Per quanto riguarda il lato hardware è stato necessario l'utilizzo di una webcam per
testare il funzionamento del programma. Le mie prove sono state effettuate con una
webcam ad alta risoluzione (1080p che indica il numero di pixel di ogni fotogramma
(rapporto 16:9), fornendoci un immagine di 1920x1080 per un totale di 2 073 600 pixel).

                                                                                  PAGINA 2
Rilevamento e Riconoscimento del volto

Definizione
Il riconoscimento facciale (face recognition) è una tecnica che consiste nella verifica
dell’identità di un individuo attraverso i tratti somatici del viso. Dal punto di vista
informatico il riconoscimento facciale, non è altro che un particolare problema di
“object recognition” (riconoscimento oggetti) nel quale gli oggetti da riconoscere
presentano particolari proprietà che li accomunano (ad es. posizione di occhi, bocca e
naso) ed altre, più sottili, che permettono di distinguerli (es. lineamenti e forma del
viso).

L’obbiettivo del riconoscimento facciale è quello di imitare, attraverso l’utilizzo di un
elaboratore, l’abilità dell’essere umano di riconoscere i volti della sua specie.

Funzionamento
Il riconoscimento facciale avviene elaborando digitalmente le immagini (siano esse 2D
o 3D). Per fare questo il primo passo è quello di eliminare tutto ciò che non
rappresenta un volto come la presenza di altri oggetti nell'immagine, per facilitare
l'individuazione del volto. I primi sistemi tenevano conto la presenza di due occhi, un
naso e una bocca, mentre sistemi più recenti, invece, riescono a riconoscere una
persona anche se questa ha il viso ruotato, o comunque non in visione frontale.

L'algoritmo da me utilizzato è l'algoritmo PCA (Principal Components Analysis).
Come spiega il nome questo algoritmo analizza i componenti principali riducendo il
numero di variabili. Richiede dunque una quantità di risorse computazionali
relativamente ridotta ma risente fortemente di rotazioni e traslazioni, come pure di
variazioni di illuminazione e sfondo.

Attraverso l'utilizzo di questo algoritmo e del metodo Eigenfaces, noto come "metodo
delle autofacce" un insieme di “standardized face ingredients”, ogni eigenface descrive
dunque una certa caratteristica come la linea dei capelli, la simmetria, la larghezza del
naso o i contorni di quelle componenti non chiaramente distinguibili. In questa
tecnica le osservazioni sono viste come set di immagini di facce prese sotto le stesse
condizioni di luce, normalizzate per allineare occhi e bocca, e campionate alla stessa
risoluzione. Ogni volto umano può essere dunque considerato come una
combinazione di questi volti standard.

                                                                                 PAGINA 3
Esempio di Eigenfaces

Il mio software
Nel corso degli ultimi anni il riconoscimento facciale è arrivato a suscitare un grande
interesse nel mondo informatico, al giorno d'oggi esso viene utilizzato in svariati
settori da quello della sicurezza fino ad arrivare ai social network. In rete si possono
trovare infatti molte applicazioni in grado di riconoscere il volto umano, nonostante
ciò, ho deciso di sviluppare il mio software utilizzando una delle librerie per la visione
artificiale più diffusa e conosciuta, Open CV, con l'intenzione futura di utilizzare
questo programma per effettuare delle operazioni di login o implementarlo nel sistema
d'allarme di una casa domotica in quanto ritengo che questa tecnologia possa avere
una molteplicità di possibili utilizzi nella vita di tutti i giorni.

                                                                        Variabili Utilizzate

                                                                                   PAGINA 4
Caricamento dei dati

                  Cattura dei frame dalla webcam

                             Rilevamento del volto

Riconoscimento attraverso l'utilizzo dell'Eigenface

                                          PAGINA 5
Programma in funzione

Perché il software non riconosce le persone non registrate come sconosciuti?

Questa è una limitazione dell'algoritmo utilizzato, probabilmente in futuro cercherò di
utilizzare un altro algoritmo.

                                                                               PAGINA 6
Librerie Utilizzate

Open CV
OpenCV è una libreria Open Source cross-platform (Windows. Linux, MacOS, iOS,
Android) per computer-vision si interfaccia con C/C++, Java e Python. Include
strumenti per face detection, face tracking, face recognition, interfacciamento Kinect e
altri metodi di intelligenza artificiale.

Si può scaricare da: http://sourceforge.net/projects/opencvlibrary/

Emgu CV
Wrapper .NET della libreria Open CV, un wrapper è un modulo software che ne
"riveste" un altro, ovvero che funziona da tramite fra i propri clienti e il modulo
rivestito. Il principio si può applicare a sottoprogrammi come funzioni e metodi o a
interi tipi, classi o oggetti.

Si può scaricare da: http://sourceforge.net/projects/emgucv/

                                                                                PAGINA 7
Fonti

   Learning OpenCV: Computer Vision with the OpenCV Library
   Emgu CV Essentials
   wikipedia
   Open CV
   Emgu CV

                                                               PAGINA 8
Puoi anche leggere