"Riconoscimento Facciale" - Tesina Maturità - Rovereto
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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