trabajo fin de grado ingeniería electrónica, robótica y...

18
Equation Chapter 1 Section 1 Trabajo Fin de Grado Ingeniería Electrónica, Robótica y Mecatrónica Aplicación para Detección y Reconocimiento Facial en Interiores Autor: Pătraşcu Viorica Andreea Tutor: Jesus Capitan Fernandez Dep. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2016

Upload: truongtram

Post on 01-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

Equation Chapter 1 Section 1

Trabajo Fin de Grado

Ingeniería Electrónica, Robótica y Mecatrónica

Aplicación para Detección y Reconocimiento Facial

en Interiores

Autor: Pătraşcu Viorica Andreea

Tutor: Jesus Capitan Fernandez

Dep. Ingeniería de Sistemas y Automática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2016

Page 2: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

2

Page 3: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

3

Trabajo Fin de Grado

Ingeniería Electrónica, Robótica y Mecatrónica

Aplicación para Detección y Reconocimiento Facial

en Interiores

Autor:

Pătraşcu Viorica Andreea

Tutor:

Jesus Capitan Fernandez

Profesor titular

Dep. Ingeniería de Sistemas y Automática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2016

Page 4: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

4

Page 5: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

5

1 INTRODUCCIÓN

1.1 Descripción general

Hoy en día, Biometría juega un papel vital en nuestra vida cotidiana. Dado que es altamente segura y

conveniente, nuestra sociedad hace uso de esta tecnología en casi todas partes, desde la vigilancia en

aeropuerto hasta las casas inteligentes. En comparación con otras soluciones biométricas, reconocimiento

facial produce mayores ventajas, ya que no requiere interacción o el permiso del sujeto. Desde este punto

de vista, representa una manera rápida y eficaz para aumentar nuestro nivel de seguridad.

El reconocimiento facial automatizado es un concepto moderno. Nació en la década de 1960 y todavía

está en permanente desarrollo. En 2006, el proyecto “Facial Recognition Grand Challenge” (FRGC)

evaluó los algoritmos de reconocimiento facial disponibles en ese momento. Pruebas con escaneres en

3D, imágenes de alta calidad y fotografías de iris. El FRGC demostró que los algoritmos disponibles en

ese momento eran 10 veces más precisos que los de 2002 y 100 mejores que los de 1995.Algunos

métodos de reconocimiento fueron capaces de superar a los seres humanos en el reconocimiento de caras

e incluso podían distinguir entre gemelos idénticos.

1.2 Sobre el proyecto

Para mi proyecto final he implementado una aplicación software C que detecta y reconoce los rostros

humanos en una imagen de entrada o fotograma de vídeo de una fuente de vídeo en directo.La aplicación

está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV (una plataforma .NET para la

libreria de procesamiento de imágenes OpenCV) y un archivo de base de datos Microsoft Access.

A pesar del hecho de que el reconocimiento facial se basa en la detección de rostros, ambas representan

diferentes conceptos. Por esta razón, he optado por dividir mi proyecto en dos módulos, uno para cada

problema. El sistema puede detectar, contar y extraer las caras. El programa también puede reconocer las

caras de las personas si están registradas en la base de datos Microsoft Acess. El usuario puede añadir

nuevas caras en la base de datos junto con sus nombres o eliminar caras existentes.

Los algoritmos detrás de la aplicación software son los siguientes: El método de Viola-Jones para la

detección de rostros y el algoritmo “Eigenfaces” para el reconocimiento de caras.

Page 6: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

6

1.3 Logros

Este informe tiene como objetivo presentar en detalle cómo se puede construir un sistema de detección y

reconocimiento de rostros; así como, describir los marcos teóricos utilizados sus interconexiones,

incluyendo el aprendizaje máquina y la visión por ordenador.

Se ha implementado una aplicación software de reconocimiento facial que puede ser utilizada con fines

de seguridad en ambientes controlados. Por ejemplo, se puede instalar un programa de este tipo con el fin

de controlar el acceso al interior de una oficina u hogar.

1.4 Objetivos

Este proyecto implementa un sistema de detección y reconocimiento facial. En un futuro próximo, tengo

la intención de estudiar otros algoritmos disponibles hoy en día y mejorar la aplicación. Por otra parte,

tengo ganas de profundizar mis conocimientos y potencialmente trabajar en el campo de la Inteligencia

Artificial algún día.

1.5 Acerca del informe

El resto de mi informe sobre el Trabajo Fin de Grado se divide en 6 capítulos:

El capítulo 2 presenta conceptos como la inteligencia artificial, aprendizaje automático y visión

por ordenador.

El capítulo 3 cubre la teoría detrás del método Viola-Jones para la detección de la cara.

El capítulo 4 explica el algoritmo de reconocimiento de caras para Eigenfaces.

El capítulo 5 describe la aplicación software desarrollada así como pruebas realizadas con ella

El capítulo 6 concluye este informe y destaca las ventajas del sistema.

Page 7: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

7

2 PRELIMINARES

2.1 Inteligencia artificial

La inteligencia artificial (AI) se puede definir como la inteligencia que poseen los ordenadores. Un agente

inteligente percibe el entorno que le rodea y actúa de acuerdo a un escenario desconocido. Una máquina

tan flexible es capaz de realizar tareas "cognitivas", tales como el aprendizaje con el fin de resolver

diferentes problemas. Algunos ejemplos modernos de computadoras inteligentes artificiales incluyen

sistemas que pueden jugar y ganar juegos de ajedrez ("Deep Blue") o incluso coches de auto- navegacion

que puede desplazarse por carreteras atestadas.

Hoy en día, se han alcanzado muchos avances en esta área científica de aprendizaje, planificación,

razonamiento, comunicación, percepción y manipulación. Sin embargo, la Inteligencia Artificial General

(AGI) sigue siendo un objetivo principal y sigue siendo un tema para los escritores de ciencia ficción y

futuristas de todo el mundo.

Volviendo a los orígenes, la primera máquina de calculo funcional fue construida por el científico

Wilhelm Schickond hacia 1623.En el siglo XIX, el matemático y filósofo George Boole formuló el

"cálculo proposicional" (o "lógica sentencial") y Gottlob Fredge desarrolló lo que se conoce hoy en día

como "lógica de primer orden / predicado". Ambas representaciones siguen siendo utilizados hoy en día.

En 1936, Alan Turing trajo el modelo matemático de "computación", inventando una máquina abstracta

que lleva su nombre. Hoy en día, casi todos los lenguajes de programación son completamente capaces de

simular una máquina de Turing. Este invento ha inspirado a investigadores de todo el mundo a tener en

cuenta crear un cerebro electrónico.

El área de investigación de la inteligencia artificial fue fundada oficialmente en una conferencia en el

campus de la universidad en 1956 Dartmonth. A principios del siglo XXI, alcanzó su apogeo y se empezó

a utilizar en el sector industrial, la logística y el diagnóstico médico.

Hoy en día, podemos hablar del primer sistema de pregunta y respuesta de IBM ("Watson"), de la

"Kinect", que proporciona una interfaz de movimiento del cuerpo 3D para XboxOne y Xbox360 y, por

último pero no menos importante, de los asistentes personales inteligentes en nuestros smartphones. A

pesar de que esta disciplina ha evolucionado tanto últimamente, todavía ningún agente logra pasar la

prueba de Turing formulada en 1950, exhibiendo la misma inteligencia que un ser humano.

Page 8: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

8

2.2 Visión por ordenador

La visión por ordenador es una disciplina científica que incluye métodos para adquirir, procesar, analizar

y, finalmente, interpretar las imágenes del mundo en que vivimos. Este campo tiene que ver con la teoría

de la extracción de información de imágenes de entrada utilizando modelos y algoritmos de

aprendizaje. En estos días, podemos enumerar muchos subdominios relacionados con la visión por

ordenador, tales como el reconocimiento de objetos, la restauración de imágenes, reconstrucción de la

escena, detección de eventos, seguimiento de vídeo o de estimación de movimiento.

La visión por ordenador se ocupa de sistemas de construcción que obtienen datos de un conjunto de

imágenes dadas. La comprensión de una imagen significa transformarla en una descripción de la escena

que representa la imagen, usando patrones construidos con la ayuda de la geometría, estadística, física y

teoría del aprendizaje de máquina.

La parte principal de la inteligencia artificial cubre la planificación de los movimientos mecánicos de un

robot a través de un entorno. Con el fin de lograr este tipo de tarea, el robot necesita datos de entrada

proporcionados por un módulo de visión por ordenador, actuando como sus "ojos", como un puente entre

su mundo y el nuestro.

La información de entrada puede aparecer en muchas formas, tales como secuencias de vídeo,

representaciones de varias cámaras o incluso datos multidimensionales desde un escáner

médico. Podríamos pensar en la visión por ordenador como el reverso de la infografía. Si bien los

gráficos por ordenador crean datos de imagen a partir de modelos tridimensionales, la visión por

ordenador produce este tipo de modelos a partir de las imágenes recibidas. También hay una tendencia a

combinar estas dos tecnologías, como se ha explorado en la realidad aumentada.

Un problema habitual en la visión por ordenador es determinar si la imagen de entrada contiene una

característica determinada, objeto o actividad. Aquí podríamos dividir la visión artificial en la detección

(la imagen en cuestión se analiza en busca de una condición específica, por ejemplo, el escaneo de un

tejido en el tratamiento de imágenes médicas, en busca de células anormales), objeto de clasificación /

reconocimiento (programas como "Blippar", "LikeThat" y "Google Goggles") e identificación

(reconocimiento de una instancia específica de un objeto, como la huella digital de una persona o la cara).

Entre las numerosas aplicaciones de la visión por ordenador pueden incluirse el control de procesos

industriales, control de calidad en aplicaciones de fabricación, la navegación de robots móviles, detección

de eventos por razones de seguridad, el modelado de objetos como en el análisis de imagen médico,

interacción hombre-máquina y la dirección del misil en aplicaciones militares.

2.3 Aprendizaje automático

Como podemos imaginar, el principal objetivo de la visión por ordenador es el uso de máquinas que

emulan perfectamente la visión humana, siendo capaz de tomar medidas basadas únicamente en la

información de entrada visual. Sin embargo, la toma de decisiones sería imposible sin una técnica de

aprendizaje. El aprendizaje automático (Machine Learning) tiene como objetivo transformar los datos en

información. Un sistema puede aprender de un conjunto de datos mediante la extracción de ciertos

patrones y luego ser capaz de responder a preguntas relacionadas con un nuevo conjunto de datos. En

1959, Arthur Samuel define el aprendizaje de máquina como un "campo de estudio que da a las

computadoras la capacidad de aprender sin ser programadas de forma explícita".

Page 9: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

9

Cuando se trata de decisiones binarias, por lo general se separa un subconjunto de los datos originales (de

10.000 caras de un gran conjunto, por ejemplo 9000 caras) y otro para las pruebas (las restantes caras

1000). Usando el primer conjunto el clasificador construye su propio modelo de cómo se ve una

cara. Despues, el clasificador se pondrá a prueba en el subconjunto de datos más pequeño para comprobar

lo bien que funcionó. Si los resultados son malos, podríamos considerar la inclusión de algunas

características más en el primer conjunto de datos o incluso elegir un tipo diferente de clasificador. A

veces, saltando directamente desde el entrenamiento a la prueba final podría ser demasiado. En lugar de

eso, podríamos dividir las muestras en tres: 8000 caras para el aprendizaje, 1000 para la validación y las

últimas 1000 para la prueba final. Durante la fase de validación, podemos mirar los resultados y ver su

rendimiento. Sólo cuando estemos completamente satisfechos con esta etapa intermedia se debe ejecutar

el clasificador en la prueba final.

Page 10: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

10

3 DETECCIÓN DE ROSTROS

3.1 Detección Viola-Jones - Teoría

Este capítulo presenta el método de detección de rostros de Viola-Jones. Se propuso por primera vez en

una conferencia de visión por ordenador en 2001 por Pablo Viola y Michael Jones. Su enfoque superó

cualquier detector de caras existente en ese momento. A pesar de que puede ser entrenado para identificar

muchos tipos de objetos rígidos, se utiliza sobre todo para la detección de rostros.

Viola y Jones afirman que el rendimiento del algoritmo es comparable a los algoritmos anteriores. Pero,

usado en tiempo real, su detector es capaz de correr 15 veces mas rápido que los algortimos anteriores, sin

recurrir a técnicas como la detección de diferencias en la imagen o color de la piel. Por otra parte, la

adición de estas fuentes alternativas de información resultará en la consecución de velocidades aún más

altas.

Este detector se basa en tres conceptos. El primero de ellos es conocido como el "Imagen Integral", que

permite que las características tipo “haar” utilizadas por este detector se puedan computar muy rápido. El

segundo es un algoritmo de aprendizaje automático, "Adaboost", que selecciona sólo las características

importantes de todo el conjunto. El tercer concepto es la creación de una estructura en "cascada", la

combinación de clasificadores complejos, que rechaza el fondo de la imagen de entrada pasando más

tiempo de cálculo en las áreas que puedan contener el objeto de interés.

El algoritmo funciona mejor en objetos frontales y no tan bien en las vistas laterales, ya que éstas aportan

variaciones en la plantilla que las características tipo “haar” no pueden controlar bien. Por ejemplo, la

vista lateral de un objeto debe atrapar parte del cambio de escena detrás del perfil del objeto. Por lo tanto,

el clasificador se ve limitado para aprender la variabilidad de fondo.

La primera condición antes de empezar a entrenar nuestro sistema es recoger los datos apropiados para

nuestra situación. Los datos "buenos" son los datos perfectamente divididos en categorías. Por ejemplo,

no hay que mezclar objetos inclinados con objetos verticales. Los datos también tienen que ser

normalizados. El rendimiento disminuye dramáticamente cuando un clasificador trata de corregir la

variabilidad irreal en los datos.

Page 11: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

11

3.1.1 Las características tipo Haar

El algoritmo de detección facial buscará características específicas que sean comunes en una rostro humano.

Estas “características” son básicamente rectángulos blancos y negros, como los que se muestran en la

ilustración posterior. Por ejemplo, en la primera imagen, el rectángulo blanco representa el área iluminada de

las mejillas, mientras que el negro representa la sombra de los ojos. En la segunda imagen, el área blanca

corresponde al tabique nasal, que es más claro que la región de los ojos (ver imagen en memoria original).

3.1.2 La Imagen Integral

Frank Crow introdujo la Tabla de área sumada (Summed area table) para gráficos por computador en 1984.

Después, John Lewis usó este concepto en visión por computador. Más tarde, en 2001, Paul Viola y Michael

Jones, usaron el término equivalente “Imagen integral” dentro de su estructura de detección de objetos, para

referirse a un método rápido y eficiente para calcular la suma de los valores de los píxeles en cualquier zona

rectangular de una imagen dada.

3.1.3 Adaboost

El término Adaboost proviene del inglés “Adapting Boosting” (Boost adaptativo) y se refiere a un meta-

algoritmo de machine learning creado por Robert Schapire y Yoav Freund en 2003. Adaboost puede ser usado

junto con otros tipos de algoritmos de aprendizaje a fin de mejorar sus resultados. La idea principal es

combinar la salida de algunos clasificadores débiles (learners) en una suma ponderada, creando así un

clasificador final fuerte, cuyo error tienda exponencialmente a cero.

3.1.4 Filtro en cascada

El detector de Viola-Jones usa la técnica de Adaboost, pero organiza los clasificadores como una cascada de

nodos de rechazo. Este proceso en cascada hace que para cada nodo, un candidato sea clasificado como “not in

class” (“no de esta clase”) termine instantáneamente el cálculo computacional. Tan sólo el candidato que

logre atravesar la cascada entera será clasificado como un rostro. De esta manera el coste computacional se

reduce significativamente, ya que la mayoría de áreas que no contienen el objeto de interés son rechazadas en

alguna de las etapas de nuestra cascada.

Page 12: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

12

Pseudocódigo para entrenar l clasificador

Page 13: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

13

4 RECONOCIMIENTO FACIAL

4.1 Introdución

Una aplicación de reconocimiento facial puede identificar un ser humano en un cuadro de imagen o de vídeo

digital dado. Tales sistemas se utilizan sobre todo en áreas de seguridad junto con otras tecnologías de

autenticación biométrica.

Los métodos de reconocimiento facial podrían dividirse en procedimientos "geométricos" y "fotométricos". La

primera categoría se basa en la extracción de características específicas de la imagen de una persona. Por

ejemplo, el sistema puede analizar la posición relativa, la dimensión y la forma de los ojos, la boca, la nariz,

los pómulos y así sucesivamente. La segunda categoría es más bien un enfoque estadístico. Se utiliza la base

de datos de imágenes de las que se extrae los datos de cara, normalizados y comprimido. A continuación, la

imagen de la prueba se cuantifica en términos de esos datos.

Entre los métodos más populares de reconocimiento, me gustaría mencionar el método Eigenfaces, el

algoritmo Fisherface, el análisis Lineal Discriminar, el Modelo de Markov Oculto, el Subespacio de

Aprendizaje Multilineal y la Contrapartida de Enlace Dinámico.

La última tendencia en el reconocimiento facial está representada por tres dimensiones de reconocimiento

facial. Este método utiliza cámaras 3D para capturar datos sobre la cara de alguien. Esta tecnología tiene

mejores resultados que el reconocimiento 2D clásico, ya que no es sensible a los cambios de luz, diferentes

expresiones faciales, maquillaje y puede identificar puntos de vista, incluso perfil. Por ejemplo, la consola de

videojuegos de Microsoft (Xbox 360) implementa esta nueva tecnología. Funciona mediante la proyección de

"luz estructurada" sobre el objetivo. A continuación, el sistema infiere información de profundidad de cómo el

patrón proyectado se modifica. Últimamente, los ingenieros trataron de crear incluso un sistema más potente

mediante la combinación de tres cámaras que apuntan a diferentes ángulos de modo que pudieran seguir y

reconocer con alta precisión a una persona que se está moviendo.

4.2 Eigenfaces Algoritmo – Teoría

El primer sistema de reconocimiento facial fue desarrollado por Woody Bledsoe , Helen Chan Lobo y Charles

Bisson en la década de 1960.Ellos crearon un programa semi-automatizado que necesita un administrador para

localizar rasgos característicos de una determinada imagen, tales como los ojos, la nariz, la boca o los

oídos. Su sistema calcula las distancias relativas entre estas características y crea una lista con las proporciones

específicas para cada sujeto en la base de datos. Sin embargo, este enfoque ha demostrado ser bastante frágil.

El procedimiento Eigenfaces fue introducido por primera vez en 1987 por Kirby y Sirovich y posteriormente

desarrollado por Alex Pentland y Matthew Turk, en 1991. El término "eigen" se refiere a un conjunto de

Page 14: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

14

vectores propios, también conocido en álgebra lineal como"vectores característicos". La ventaja principal de

este método es que podemos representar un conjunto de imágenes utilizando una base formada de imágenes

"eigen" cuya dimensión es mucho más pequeña que el conjunto original. La identificación se puede lograr

mediante la comparación de dos imágenes de ambos representados en la base eigen del conjunto de

entrenamiento.

El enfoque de Eigen Caras comenzó con la necesidad de encontrar una representación de pocas dimensiones

de imágenes de rostros. Kirby y Sirovich demostraron que el Análisis de Componentes Principales se puede

utilizar en un grupo de imágenes de la cara para formar un conjunto de características básicas. Este conjunto es

conocido como “imágenes eigen” y se puede utilizar para reconstruir la colección de imágenes original. Cada

rostro original sería reconstruido como una combinación lineal del conjunto base. Queremos extraer sólo la

información crítica de la imagen de prueba y codificarla con la mayor eficacia posible. Fotografías de caras se

proyectan en un espacio de características que ilustra mejor la variación entre las imágenes de rostros

conocidos. Esta característica del espacio está definida por los vectores propios o”eigenfaces”. El vector de

pesos expresa la contribución de cada cara eigen a la imagen de nuestra entrada.

Estos resultados fueron ampliados y mejorados por dos científicos en computación, que encontraron una

manera eficiente para calcular los vectores propios de una matriz de covarianza. Inicialmente, una imagen de

la cara ocupaba un espacio de alta dimensión y el método PCA no podía ser aplicado en grandes conjuntos de

datos.Pero Alex Pentland y Matthew Turk descubrieron una forma para extraer los vectores propios basándose

en el número de imágenes de entrada, en lugar del número de píxeles.

Después de realizar la descomposición eigen en un conjunto de fotos dadas, se obtiene a través de un análisis

estadístico de los "ingredientes" específicos que representan nuestro conjunto de datos. Las características que

la imágenes de la colección original tienen en común se encuentran en lo que se llama un "cara media". Por

otro lado, las diferencias entre las imágenes aparecerán en los eigenfaces. Por otra parte, se puede invertir el

proceso y reconstruir cualquier imagen inicial a partir de los eigenfaces junto con la imagen media. De este

modo, cada cara se almacena como una lista de valores, en lugar de una fotografía digital, ahorrando espacio

en la memoria del computador.

La técnica Eigen se utiliza también en otros tipos de reconocimiento: imágenes médicas, reconocimiento de

voz, interpretación de gestos, lectura de labios, análisis de escritura. Por esta razón, algunos prefieren utilizar

el término de "imagen eigen" en lugar de "eigenface", a pesar de que básicamente se refieren a la misma cosa.

4.2.1 Pasos para obtener los eigenfaces

1. A la hora de recolectar imágenes de entrenamiento hay que tener en mente algunas reglas generales.

En primer lugar, las fotografías deben ser todas tomadas bajo las mismas condiciones de luminosidad

y después deben ser normalizadas de manera que las bocas y los ojos estén alineados a lo largo de

todas las imágenes. En segundo lugar, deben tener también la misma resolución (r x c). Cada foto será

tratada como un vector con r x c elementos tras concatenar las filas de píxeles. Todo el conjunto de

entrenamiento se almacenará en una sola matriz T, donde cada columna representa una imagen de

entrada distinta.

2. Calcular la imagen media M y restarla de cada foto original en T.

3. Determinar los autovectores y autovalores de la matriz de covarianza C (de la distribución de

probabilidad a lo largo del espacio vectorial dimensional de una imagen de rostro).

Cada autovector/autorrostro tiene el mismo tamaño que las imágenes originales y puede entonces ser

Page 15: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

15

vista como una imagen como tal. Son básicamente direcciones en las que cada imagen de entrada

difiere de la media.

4. Seleccionar de los autovectores sólo las componentes principales :

Colocar en orden inverso los autovalores y organizar los autovectores según éstos. El número de

componentes principales k es calculado estableciendo un valor umbral épsilon ε en la varianza total:

4.2.2 Análisis de Componentes Principales (PCA)

El Análisis de Componentes Principales es un método estadístico aplicado a un conjunto de datos con el

fin de resaltar variaciones e identificar patrones fuertes. Es utilizado frecuentemente con el objeto de

visualizar y explorar datos de manera más fácil que la forma original.

Si tenemos un conjunto de datos de dos dimensiones y estuviéramos particularmente interesados en cómo

varían esos puntos de los datos, hallaríamos otro sistema de coordenadas donde pudiéramos ver esta

variación con más claridad. Tras mapear los puntos iniciales al nuevo sistema, todos y cada uno de los

puntos tendrán otro valor. Los nuevos ejes no tienen significado físico, han sido seleccionados para

enfatizar una variación. Los componentes principales se han escogido en las direcciones en las cuales las

muestras varían con mayor intensidad.

4.2.3 Pseudocódigo para reconocer las caras

0. Calcular los autovectores y dejar solamente los más significativos, como se muestra en la sección

4.2.1 Pasos para obtener los autorrostros (k primeros elementos).

1. Restar la imagen media M de la imagen de entrada In y calcular el peso de cada autorrostro Eigi .

Para i = 1: k

wi = Eigi T * (In-M)

2. Reunir todos los pesos calculados previamente y formar un vector W que refleje la contribución

de cada autorrostro en la imagen de entrada (esto es equivalente a proyectar la imagen de entrada

sobre el espacio-rostro).

W = [ w1 … wi ….wk ]

3. Calcular las distancias entre la imagen de prueba In y cada imagen de la base de datos.

Para j = 1:d

Disj = ||W - Wj||2

4. Elegir la distancia mínima:

5. minDis = minj=1:d (Disj)

6. Determinar si la imagen de entrada In es “conocida” o no, dependiendo de un umbral t.

Si minDis<t, entonces Ines “conocida”, si no, In es “desconocida”.

Page 16: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

16

5 IMPLEMENTACIÓN Y RESULTADOS

Mi proyecto consiste en una aplicación de software en C # que detecta y reconoce los rostros humanos en una

imagen de entrada o fotograma de vídeo de una fuente de vídeo en directo. El programa fue desarrollado en

Microsoft Visual Studio 2010 utilizando EmguCV (plataforma .NET para la biblioteca de procesamiento de

imágenes OpenCV) y un archivo de base de datos Microsoft Access.

La aplicación tiene dos módulos, uno para la detección de rostros y el otro para el reconocimiento facial. El

sistema puede detectar los rostros en un marco de imagen o vídeo determinado, contar las caras detectadas y

extraerlas en una ventana secundaria. También puede reconocer las caras de las personas si están registrados

en la base de datos Microsoft Acess. El usuario puede aumentar la base de datos mediante la adición de nuevas

caras o eliminar los registros existentes directamente desde la aplicación de Visual Studio.

Page 17: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

17

6 CONCLUSIONES

6.1 Reconocimiento de caras en nuestra vida

Hoy en día, el reconocimiento facial junto con otras soluciones de identificación biométrica es acceptada por

nuestra sociedad por razones de seguridad. Por ejemplo, la policía y los militares, así como otras

organizaciones, hacen uso de la misma con el fin de mantener nuestra comunidad segura. Sin lugar a dudas, su

principal ventaja sigue siendo el hecho de que este procedimiento no requiere la cooperación del sujeto. Como

consecuencia, los sistemas de reconocimiento se pueden encontrar en los aeropuertos y otros lugares públicos

de todo el mundo con el fin de prevenir el terrorismo y la criminalidad. Sin embargo, hay muchos otros

campos en los que se emplea esta tecnología, tales como:

La búsqueda de niños desaparecidos

Más de 1,2 millones de niños desaparecen cada año en el mundo. Por lo tanto, la aplicación de android

llamada "Helping Faceless" ayuda a los niños secuestrados a reunirse con sus familias. El usuario

tomaría fotos de un niño de la calle y las subiría a un servidor. A continuación, la aplicación intentará

encontrar el niño en cuestión en una base de datos de niños perdidos.

Examen online

Hoy en día uno puede hacer un examen solamente sentado delante de su ordenador personal. Por otra

parte, el maestro no tiene ninguna razón para dudar de la identidad del estudiante que está siendo

examinado.

Eliminar duplicados en un sistema de votación

A veces hay casos en que la misma persona utiliza dos o incluso más cuentas para poder votar o

registrarse en una red varias veces. Si se utilizara un sistema de reconocimiento facial, nadie sería

capaz de cometer este tipo de fraude.

Page 18: Trabajo Fin de Grado Ingeniería Electrónica, Robótica y ...bibing.us.es/proyectos/abreproy/90722/fichero/... · está desarrollada en Microsoft Visual Studio 2010 utilizando EmguCV

18

Trastorno de la prosopagnosia

Prosopagnosia o "ceguera de la cara" representa la incapacidad de una persona para reconocer las

caras. La cura no se ha encontrado todavía. Por lo tanto, un sistema de reconocimiento facial portátil

sin duda podría ayudar al paciente a evitar situaciones desagradables. El sistema podría identificar la

cara de un determinado ser humano y pasar información descriptiva a nuestro paciente.

Pago por vídeo

Compañías de tarjetas de crédito están creando una forma de pagar usando nada más que el

reconocimiento facial, por lo que no tendrá que preocuparse más por el robo de identidad o

simplemente olvidar una contraseña.

6.2 Aplicaciones

El sistema de reconocimiento facial implementado por mí podría utilizarse con éxito dentro de una

oficina o cualquier espacio interior, donde se necesita rendimiento en tiempo real. Cuando se trabaja

en un ambiente controlado, esta aplicación representa una solución eficaz en términos de recursos

computacionales. El programa también sería apropiado para un sistema de vigilancia doméstica. No se

puede "sentirse como en casa", siempre y cuando usted no está seguro. Por lo tanto, mi aplicación

proporcionaría una solución precisa para limitar el acceso de extraños o simplemente notificar a la

familia sobre la llegada de alguien.

6.3 Conclusiones

Con todo, las técnicas de reconocimiento facial han evolucionado sorprendentemente en la última

década. Sin embargo, sigue siendo un importante campo de investigación en el área de visión por

ordenador. Es fácil imaginar un futuro en el que esta tecnología será capaz de reconocer cualquier cara

en un lugar lleno de gente. Por "espeluznante" que pueda parecer, considero que todos estamos de

acuerdo en que nuestra seguridad es mucho más importante que el deseo de permanecer en el

anonimato. Y, no hay que olvidar, al igual que todos los avances tecnológicos, ahorrarán un tiempo

preciado y hacen la vida más fácil para todos nosotros.