APLICACIÓN PRÁCTICA DE LA VISIÓN ARTIFICIAL PARA EL RECONOCIMIENTO DE ROSTROS EN UNA IMAGEN, UTILIZANDO REDES NEURONALES Y ALGORITMOS DE RECONOCIMIENTO DE OBJETOS DE LA
BIBLIOTECA OPENCV
EDISON RENE CABALLERO BARRIGA COD: 20162099033
GRUPO 2
GRUPO SEMINARIO: 24
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERIA
ESPECIALIZACIÓN EN INGENIERÍA DE SOFTWARE BOGOTA D.C.
APLICACIÓN PRÁCTICA DE LA VISIÓN ARTIFICIAL PARA EL RECONOCIMIENTO DE ROSTROS EN UNA IMAGEN, UTILIZANDO REDES NEURONALES Y ALGORITMOS DE RECONOCIMIENTO DE OBJETOS DE LA
BIBLIOTECA OPENCV
EDISON RENE CABALLERO BARRIGA COD: 20162099033
GRUPO 2
GRUPO SEMINARIO: 24
DIRECTOR
ALEJANDRO PAOLO DAZA
REVISOR
JORGE MARIO CALVO
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERIA
ESPECIALIZACIÓN EN INGENIERÍA DE SOFTWARE BOGOTA D.C.
TABLA DE CONTENIDO
INTRODUCCIÓN ... 7
PARTE 1. DESCRIPCIÓN DE LA INVESTIGACIÓN ... 8
CAPÍTULO 1. DESCRIPCIÓN DE LA INVESTIGACIÓN ... 8
Objetivo general ... 9
Objetivos específicos ... 9
PARTE 2. DESARROLLO DE LA INVESTIGACIÓN ... 24
CAPÍTULO 2. RECONOCIMIENTO BIOMETRICO ... 24
CAPÍTULO 3. DETECCIÓN Y RECONOCIMIENTO DE ROSTROS ... 26
CAPÍTULO 4. DESARROLLO DE LA APLICACIÓN ... 32
PARTE 3. CIERRE DE LA INVESTIGACIÓN ... 50
CAPÍTULO 5. RESULTADOS Y DISCUSIÓN ... 50
CAPÍTULO 6. CONCLUSIONES ... 51
CAPÍTULO 7. PROSPECTIVA DEL TRABAJO DE GRADO ... 51
PARTE 4. BIBLIOGRAFIA ... 52
IMAGENES
Imagen 1. Mapa de Conceptos para detección y Reconocimiento de Rostros en Imágenes.
Fuente: Realización Propia ... 13
Imagen 2. Características de Tipo Haar. (OpenCv O. , 2017) ... 16
Imagen 3. Características de Tipo Haar aplicadas a la detección de un rostro. (OpenCv O. , 2017) ... 16
Imagen 8. Modelo de desarrollo iterativo-incremental. (Sommerville, Ingenieria del Software, 2006) ... 20
Imagen 9. Fases del desarrollo en cascada. (Pressman, 2005) ... 21
Imagen 4. Etapas del método para detección de rostros de Viola-Jones. Fuente: Realización propia. ... 27
Imagen 4. Calculo de la imagen integral de Viola-Jones. (OpenCv O. , 2017) ... 28
Imagen 5. Filtros Haar rotados, trasladados y con cambios de escala. (OpenCv O. , 2017) 29 Imagen 6. Detección de rostros utilizando características Haar en cascada. (OpenCv O. , 2017) ... 29
Imagen 10. Vista del Negocio. Realización Propia. ... 42
Imagen 11. Vista de Aplicación. Realización Propia. ... 43
Imagen 12. Vista de Infraestructura. Realización Propia. ... 43
Imagen 13. Vista de Capas. Realización Propia. ... 44
Imagen 14. Solución y proyecto Windows Forms en .Net. Realización Propia. ... 45
Imagen 15. Formulario de la aplicación. Aplicación de Reconocimiento de Rostros. Realización Propia. ... 45
Imagen 16. Imagen con un rostro detectado por la aplicación. Aplicación de Reconocimiento de Rostros. Realización Propia. ... 47
Imagen 17. Entrenamiento de la aplicación. Aplicación de Reconocimiento de Rostros. Realización Propia. ... 47
Imagen 18. Imágenes de entrenamiento. Aplicación de Reconocimiento de Rostros. Realización Propia. ... 48
Imagen 19. Imagen donde se indica el nombre de la persona. Realización Propia. ... 48
7
INTRODUCCIÓN
El estudio de los mecanismos de la visión humana es el objetivo de la Visión Artificial o también llamada Visión por Computador. La visión computacional busca crear sistemas que sean capaces de reconocer un objeto determinado en una imagen. Para los humanos esta tarea es natural y es realizada constantemente sin preocuparse por el cómo; pero cuando trasladamos esta tarea a una máquina, nos encontramos con varias dificultades que resolver.
Para definir la visión computacional podemos optar por la definición de Marr (Marr D. , 1982) en la cual hay aspectos importantes que nos llevan a entender la visión computacional como el estudio de los procesos asociados a la visión natural, y que tiene como fin entender estos procesos y construir maquinas con capacidades similares.
Uno de los campos con mayor proyección dentro de la Visión Artificial es el relacionado con el Reconocimiento Biométrico Facial, el cual se centra en el mismo identificador que utilizamos los humanos para distinguir una persona de otra: su rostro. Por tanto, uno de los objetivos principales es comprender el complejo sistema visual humano y como se representan los rostros para lograr discriminar identidades con exactitud.
La principal dificultad en el proceso de reconocimiento de rostros, radica en las enormes variaciones que existen entre las distintas imágenes del rostro de un mismo individuo. Estas diferencias son dadas por los gestos, la intensidad o ausencia de luz, diferentes peinados, maquillaje y accesorios, por los cuales una misma persona puede parecer diferente en dos imágenes.
8
PARTE 1.DESCRIPCIÓN DE LA INVESTIGACIÓN
CAPÍTULO 1. DESCRIPCIÓN DE LA INVESTIGACIÓN
1.1. PLANTEAMIENTO/IDENTIFICACIÓN DEL PROBLEMA
La visión artificial por computadora es una disciplina de gran crecimiento en los últimos años, su futuro más prometedor se encuentra en la creación de máquinas autónomas capaces de interactuar de forma inteligente con el entorno. Para lograr la interacción de las maquinas con su entorno, es necesario desarrollar un sistema que tenga la capacidad de percibirlo e interpretarlo (Branch & Olague, 2001).
El término Visión Artificial dentro del campo de la Inteligencia Artificial puede considerarse como el conjunto de todas aquellas técnicas y modelos que nos permiten el procesamiento, análisis y explicación de cualquier tipo de información espacial obtenida a través de imágenes digitales (Pajares Martinsanz & Santos Peñas, 2006).
La visión artificial por computadora utiliza sensores ópticos, como cámaras fotográficas y de video, para adquirir imágenes y luego procesarlas mediante algún tipo de procesador, con el fin de extraer y analizar cierto tipo de propiedades de la imagen capturada (Múnera Salazar & Manzano Herrera, 2012). De lo anterior, podemos concluir que la visión computacional hace uso de computadoras y cámaras para adquirir, analizar e interpretar imágenes de una forma equivalente a la inspección visual humana.
9 La detección automática de objetos en imágenes sigue siendo un reto y una fuente muy interesante de oportunidades para el desarrollo de investigaciones y estudios dentro de la visión por computadora. El presente trabajo, busca contribuir con el crecimiento de este campo, presentando una forma sencilla de entrenar una red neuronal que permita reconocer una persona, utilizando técnicas existentes y algoritmos propios de la visión artificial que nos provee la biblioteca OpenCV (OpenCv, 2017).
1.2. OBJETIVOS Objetivo general
Crear un prototipo de aplicación que permita entrenar una red neuronal, utilizando técnicas de visión artificial y la biblioteca OpenCV, para reconocer el rostro de una persona en una imagen.
Objetivos específicos
• Identificar, analizar y evaluar los diferentes algoritmos de la visión artificial, que
permitan realizar el reconocimiento de un objeto en una imagen.
• Analizar y evaluar las técnicas de visión artificial y de biometría que permitan la
identificación de una persona mediante sus características faciales, para utilizarlas en el proceso de identificación de una persona mediante su rostro.
• Implementar una red neuronal que permitan reconocer el rostro de una persona en
una imagen, mediante técnicas y algoritmos de entrenamiento implementados por la biblioteca de visión artificial - OpenCV.
1.3. JUSTIFICACIÓN DEL TRABAJO/INVESTIGACIÓN
En la actualidad los sistemas biométricos juegan un rol fundamental en los procesos de reconocimiento de personas, enfocados a políticas de seguridad públicas y privadas. El reconocimiento biométrico facial es muy utilizado en el control de acceso a edificios, laboratorios y oficinas.
10 pasado delictivo (Rodríguez Salavarría, 2009). La industria de reconocimiento facial basado en computadoras ha hecho muchos adelantos útiles en la pasada década; sin embargo, la necesidad de sistemas de mayor precisión persiste.
La biometría y en especial el reconocimiento facial ha recibido grandes aportes de parte de la industria, en especial de la Industria Automotriz y los prototipos de vehículos autónomos. Desde la informática y la ingeniería también se aborda el problema del reconocimiento de un rostro en una imagen. Para lograr el reconocimiento se utilizan técnicas de procesamiento de imágenes, visión por computador, reconocimiento de patrones y redes neuronales.
A pesar de estos adelantos y los constantes estudios sobre el tema, el problema del reconocimiento de rostros sigue vigente. Las principales dificultades del reconocimiento están relacionadas con los diferentes factores externos que generan variaciones en el rostro de una persona, estos están dados por las iluminación a la cual este expuesta la persona al momento de capturar la imagen, los posibles accesorios que pueda llevar, como gafas o sombreros y también las variaciones fisionómicas relacionadas con el paso del tiempo.
Teniendo en cuenta lo anterior, para abordar el reconocimiento facial es necesario establecer ciertas restricciones contextuales y llevarlo a situaciones concretas donde se tenga cierto control sobre los posibles factores de variación. De esta manera, resulta posible obtener resultados satisfactorios en situaciones concretas y en entornos restringidos y muy controlados.
11
1.4. HIPÓTESIS
La visión artificial provee conceptos y técnicas que, aplicadas mediante algoritmos y redes neuronales, permiten detectar un objeto especifico presente en una imagen. Una de las bibliotecas de visión artificial que implementa y nos permite realizar este trabajo es OpenCV (Geeky, 2011), esta biblioteca implementa algoritmos para la detección de objetos y también para la detección de rostros en imágenes y video.
OpenCV nos facilita la terea de detectar rostros, ya que cuenta con clasificadores entrenados para esta tarea, además tiene implementado el algoritmo de Viola-Jones (Viola & Jones, Rapid object detection using a boosted cascade of simple features, 2001), el cual permite realizar este proceso de detección de rostros de forma sencilla y a muy bajo costo computacional. En caso de que lo necesitemos podemos crear nuestros propios clasificadores, OpenCv nos permite entrenar nuestros propios clasificadores utilizando AdaBoost (OpenCv O. , 2017).
La biblioteca OpenCV puede ser integrada con diferentes lenguajes de programación como: C++, Java, Python y los lenguajes de la plataforma .Net; por lo cual, es posible utilizarla para crear una aplicación para entornos web o de escritorio, que permita la detección de rostros dentro de una imagen tomada mediante una cámara.
1.5. MARCO REFERENCIAL
1.5.1. MARCO TEÓRICO
La visión artificial o visión por computador, pretende reproducir artificialmente el sentido de la vista humana mediante el procesamiento e interpretación de imágenes captadas desde diferentes dispositivos, como cámaras y utilizando computadores para su procesamiento.
12 Debido a la complejidad del proceso, la visión artificial se ha dividido en varias etapas o procesos. En cada una de ellas, las imágenes y la cantidad de información se va refinando hasta lograr el reconocimiento del objeto buscado. Generalmente se consideran cuatro procesos (Sánchez, 2002):
• Captura: Consiste en la captura de las imágenes por medio de un sensor.
• Análisis (Tratamiento digital): Mediante la aplicación de filtros se descartan partes
de la imagen y se enfoca en las partes con mayor probabilidad de coincidencia con lo buscado.
• Segmentación: Consiste en aislar los elementos de la imagen que se desean analizar,
La segmentación permite comprender la imagen individualizando sus elementos.
• Reconocimiento (Clasificación): En ella se distinguen los objetos segmentados,
mediante al análisis de ciertas características, que se establecen previamente para diferenciarlos.
Siguiendo estos procesos e implementándolos mediante algoritmos de procesamiento y apoyándose en redes neuronales, es posible identificar el objeto buscado dentro de una imagen.
1.5.2. MARCO CONCEPTUAL
El reconocimiento automático de rostro busca extraer los rasgos significativos de un rostro presente en una imagen, ponerlos en una representación útil, realizar algún tipo de clasificación en ellos y lograr, mediante algoritmos de detección y patrones, la ubicación de un rostro en la imagen.
13 Para lograr el reconocimiento de un rostro en una imagen se realizan dos etapas de procesamiento con sus respectivas técnicas y algoritmos. En la primera etapa se utilizan clasificadores en cascada y el algoritmo de Viola-Jones para lograr detectar un rostro dentro de la imagen (Viola & Jones, Robust real-time face detection, 2004). Viola-Jones utiliza clasificadores en cascada los cuales se entrenan utilizando el algoritmo de AdaBoost (Mayhua-Lopez, Gómez-Verdejo, & Figueiras-Vidal, 2012), con el cual se logra crear clasificadores fuertes a partir de clasificadores débiles.
En la segunda etapa se realiza el reconocimiento del rostro de una persona, comparando el rostro detectado en la imagen con una seria de imágenes guardadas llamadas imágenes de muestra. Para este reconocimiento, se utiliza el algoritmo de Eigenfaces (Turk & Pentland, Eigenfaces for recognition, 1991), el cual realiza la comparación de las imágenes de muestra con la del rostro detectado, e indica si existe concordancia.
Para observar la relación de estos conceptos con las etapas realizadas para la detección y reconocimiento, se elaboró el siguiente mapa conceptual. En él se observan los conceptos más relevantes en el proceso y su relación con el proceso general que permite el reconocimiento de rostros utilizando la librería de visión artificial OpenCV (OpenCv, 2017).
14
1.5.2.1. Machine Learning
El aprendizaje automático (ML), es un tipo de inteligencia artificial (IA) que proporciona a los ordenadores la capacidad de aprender sin ser explícitamente programados (Michalski, Carbonell, & Mitchell, 2013). El aprendizaje automático se centra en el desarrollo de programas informáticos que pueden cambiar cuando se exponen a nuevos datos.
El proceso de aprendizaje automático es similar al de la minería de datos. Ambos sistemas buscan a través de datos para encontrar patrones. Sin embargo, en lugar de extraer datos para la comprensión humana, como es el caso de las aplicaciones de minería de datos, el aprendizaje automático utiliza esos datos para detectar patrones en los datos y ajustar las acciones del programa en consecuencia (Pedregosa, Varoquaux, & Gramfort, 2011).
Los algoritmos de aprendizaje automático se clasifican a menudo como supervisados o no supervisados. Los algoritmos supervisados pueden aplicar lo que se ha aprendido en el pasado a los nuevos datos. El aprendizaje supervisado busca realizar predicciones a futuro basándose en características y comportamientos que se han detectado y clasificado en datos almacenados, datos históricos o conocimiento previo en el que nos podemos apoyar para hacer predicciones o tomar decisiones (Sebastiani, 2002).
Los algoritmos no supervisados pueden extraer inferencias de conjuntos de datos. El aprendizaje no supervisado a diferencia del supervisado, usa datos históricos que no estén etiquetados ni clasificados, con el fin de explorarlos y encontrar una estructura para relacionarlos y para organizarlos.
1.5.2.2. Algoritmo de Boosting
15 muy baja, se combinan para formar un clasificador de mayor precisión (Gómez-Verdejo, Ortega-Moral, Arenas-García, & Figueiras-Vidal, 2006).
El Boosting tiene sus raíces en un marco teórico para el estudio del aprendizaje de máquina (Machine Learning), llamado "PAC" (Probably Approximately Correct) Learning Model, expuesto en 1984 por Leslie Valiant (Valiant, 1984). Convirtiéndose en el modelo más importante en la teoría del aprendizaje computacional.
Kearns y Valiant fueron los primeros en plantear la cuestión de si un algoritmo de aprendizaje "débil" puede ser "Impulsado", utilizando PAC, en un algoritmo más preciso "fuerte" (Kearns & Valiant, 1994). Los primeros experimentos con estos primeros Algoritmos de impulsos fueron llevados a cabo en una tarea OCR (Optical Character Recognition).
Entre los diferentes algoritmos de impulso (Boosting), tres de los más importantes son:
• AdaBoost (Adaptive Boosting) • Gradient Tree Boosting
• XGBoost
AdaBoost, como se mencionó anteriormente este es el algoritmo utilizado por Viola-Jones para realizar el entrenamiento de los clasificadores en cascada que se utilizan en el reconocimiento de rostros en imágenes (Viola & Jones, Rapid object detection using a boosted cascade of simple features, 2001).
1.5.2.3. Características Haar
16
Imagen 2. Características de Tipo Haar. (OpenCv O. , 2017)
Por ejemplo, considere la siguiente imagen. La fila superior muestra dos características Haar, aplicadas a una imagen.
Imagen 3. Características de Tipo Haar aplicadas a la detección de un rostro. (OpenCv O. , 2017)
La primera característica seleccionada se basa en la propiedad de que la región de los ojos es a menudo más oscura que la región de la nariz y las mejillas. La segunda característica seleccionada se basa en la propiedad de que los ojos son más oscuros que el puente de la nariz.
1.5.2.4. Clasificador Débil
17 porque solo no puede clasificar la imagen, pero junto con otros clasificadores forma un clasificador fuerte.
1.5.2.5. Clasificador Fuerte
Un clasificador fuerte, está formado por varios clasificadores débiles. Este clasificador busca características de mayor complejidad en la imagen. El clasificador fuerte es una suma ponderada de estos clasificadores débiles.
1.5.2.6. AdaBoost
AdaBoost (Adaptive Boosting), propone entrenar iterativamente una serie de clasificadores base, de tal modo que cada nuevo clasificador preste mayor atención a los datos clasificados erróneamente por los clasificadores anteriores, y combinarlos de tal modo que se obtenga un clasificador con elevadas prestaciones (Mayhua-Lopez, Gómez-Verdejo, & Figueiras-Vidal, 2012).
Para ello, durante una serie de iteraciones entrena un clasificador que implementa una función asignándole un peso de salida, y lo añade al conjunto de modo que la salida global del sistema se obtenga como combinación lineal ponderada de todos los clasificadores base (Muñoz-Romero, Arenas-García, & Gómez-Verdejo, 2009).
Para conseguir que cada nuevo clasificador preste mayor atención a los datos más erróneos se emplea una función de énfasis que pondera la importancia de cada dato durante el entrenamiento del clasificador.
1.5.2.7. Clasificador Haar en Cascada
18 En el análisis de una imagen en busca de un rostro, se debe recorrer la imagen completamente, esto se realiza tomando pequeñas ventanas de la imagen original. La mayor parte de las ventanas que se analizan corresponden con porciones de la imagen donde no se encuentran rostros, por lo tanto, un método rápido y sencillo, es analizar la pequeña ventana de la imagen, si no es un rostro, desecharla y no procesarla de nuevo. De esta manera, se optimiza el tiempo necesario para comprobar una posible región de un rostro en la imagen completa.
Para realizar el proceso mencionado anteriormente, Viola-Jones utiliza la Cascada de Clasificadores. En lugar de aplicar todas las características, en una ventana, agrupa las características en diferentes etapas de los clasificadores y aplica una por una. (Normalmente las primeras etapas contendrán un número muy reducido de características a usar). Si una ventana falla en la primera etapa se desecha y no se evalúan las características restantes en la ventana. Si pasa, se aplica la segunda etapa de funciones y se continua el proceso. La ventana que pasa por todas las etapas es una región donde se encuentra un rostro.
1.5.2.8. Lenguaje C# de .Net
El lenguaje C#, (See Sharp), es un híbrido de C y C ++, es un lenguaje de programación de Microsoft (Microsoft, 2017). C # es un lenguaje de programación orientado a objetos utilizado con servicios Web basados en XML en la plataforma .NET y diseñado para mejorar la productividad en el desarrollo de aplicaciones web.
19 Microsoft define c#, como: C # es un lenguaje orientado a objetos elegante y de tipo seguro que permite a los desarrolladores crear una variedad de aplicaciones seguras y robustas que se ejecutan en .NET Framework (Microsoft, 2017).
1.5.3. MARCO HISTÓRICO
En el siglo XVI se desarrolla la teoría de la perspectiva, las Máquinas de Perspectiva ayudan a los pintores a reproducir en una imagen, exactamente la perspectiva de un objeto observado, sin tener que hacer cálculos matemáticos.
En el siglo XIX el químico francés Joseph Nicéphore Niépce, considerado el inventor de la fotografía, logra fijar una imagen en una superficie fotosensible ubicada dentro de una cámara obscura (BATCHEN, 2004). Posteriormente, en 1838 el químico francés Daguerre hizo el primer proceso fotográfico práctico. Daguerre utilizó una placa fotográfica que era revelada con vapor de mercurio y fijada con trisulfuro de sodio, este se emplea sobre todo como fijador en la fotografía (Mery, 2004).
Un hito importante en el inicio de la formulación de un enfoque para la visión artificial, fue acotado por Larry Roberts (Roberts, 1963), que trabajo ampliamente en los inicios del internet desde el proyecto ARPA, el cual, en 1961 creo un software que podía ver una estructura de bloques, analizar y crear una versión de la misma utilizando otra perspectiva. Esto lo realizo con una cámara conectada a un computador (Bidgoli, 2004).
20
1.6. METODOLOGÍA DE LA INVESTIGACIÓN
Ian Sommerville (Sommerville, Ingenieria del Software, 2006), define modelo de proceso de software, como "Una representación simplificada de un proceso de software, representada desde una perspectiva específica. Por su naturaleza los modelos son simplificados, por lo tanto; un modelo de procesos de software es una abstracción de un proceso real."
El modelo de desarrollo elegido para el presente trabajo es un modelo incremental, en este modelo las actividades del proceso de desarrollo de software se llevan a cabo en secuencias lineales, en forma escalonada a medida que avanza el calendario de actividades. Este modelo es muy útil cuando los requerimientos iniciales del software están bien definidos, pero se desea tener de forma temprana una versión con funcionalidad limitada del software y aumentarla en incrementos posteriores (Pressman, 2005).
El primer incremento de este modelo de desarrollo, generalmente es el producto fundamental, en el cual se abordan los requerimientos básicos, y se dejan para próximos incrementos las características suplementarias. Este modelo fue propuesto por Harlan D. Mills en 1980 (Basili, DeMarco, & Mili, 1999), y surge con la necesidad de poder probar el software de forma temprana y poder tomar mejor experiencia en los requerimientos a medida que se adquiría experiencia en el sistema.
Imagen 4. Modelo de desarrollo iterativo-incremental. (Sommerville, Ingenieria del Software, 2006)
Para el desarrollo de cada uno de los incrementos, se puede utilizar un modelo clásico en cascada, si los requerimientos a desarrollar como parte del incremento son lo suficientemente claros y se pueden considerar estables. El modelo en cascada es el modelo
21 de desarrollo de mayor uso en la industria del software, en este modelo cada fase debe seguirse en orden y debe terminar para poder continuar con la siguiente.
En el modelo en Cascada las actividades fundamentales, según define Pressman (Pressman, 2005), son:
• Definición de los requisitos: Los servicios, restricciones y objetivos son
establecidos con los usuarios del sistema. Se busca hacer esta definición en detalle.
• Diseño de software: Se divide el sistema en sistemas de software o hardware. Se
establece la arquitectura total del sistema. Se identifican y describen las abstracciones y relaciones de los componentes del sistema.
• Implementación y pruebas unitarias: Construcción de los módulos y unidades de
software. Se realizan pruebas de cada unidad.
• Integración y pruebas del sistema: Se integran todas las unidades. Se prueban en
conjunto. Se entrega el conjunto probado al cliente.
• Operación y mantenimiento: Generalmente es la fase más larga. El sistema es
puesto en marcha y se realiza la corrección de errores descubiertos. Se realizan mejoras de implementación. Se identifican nuevos requisitos.
En este modelo una fase no puede iniciar, si la fase anterior no se ha terminado, esto es un principio del modelo y debe ser respetado, ya que la salida de cada fase alimenta a la fase siguiente.
Imagen 5. Fases del desarrollo en cascada. (Pressman, 2005)
22
1.7. ESTUDIO DE SISTEMAS PREVIOS
El MIT junto con la Universidad de Stanford se perfilan como los centros más sobresalientes en los estudios de visión artificial, dentro de sus trabajos más relevantes se pueden mencionar la visión aplicada a robótica bajo el proyecto Hand-Eye (Estados Unidos Patente nº 7151853, 2005) y el llamado proyecto UIS (Nakano & Yasuaki, 1988), este último proyecto marca el comienzo del uso de estas técnicas en aplicaciones de tipo militar.
Por otra parte, países como Japón desarrollaron el llamado proyecto PIPS (Pattern-Information Processing System) (Nishino, 1978), el cual impulsó el desarrollo del análisis de imágenes (Ken-ichi, Masatsugu, & Hidenori, 1978).
Los siguientes trabajos presenta aplicaciones de las técnicas de visión y reconocimiento artificial, estos trabajos ya se están probando y utilizando en ambientes reales y los mencionamos debido a su gran contribución en la visión artificial.
1.7.1. CARE-O-BOT
En 1999 en la universidad de Stuttgart Alemania, los médicos Schaeffer y May (Schraft, Schaeffer, & May, 1998), desarrollaron el sistema Care-O-bot™, este sistema intenta contribuir a las soluciones tecnológicas necesarias una plataforma de demostración de un sistema móvil de atención en el hogar.
El Care-O-bot™ es un robot de servicio móvil que tiene la capacidad de realizar diversas tareas de apoyo en el hogar, como llevar y traer objetos. El énfasis principal está puesto en la integración de las tareas de comunicación y sociales, como llamadas automáticas de emergencia y comunicación interactiva.
1.7.2. PHOTOFACE
23 de otras bases de datos a disposición del público el nivel de cooperación entre los sujetos y el mecanismo de captura fue mínimo. El dispositivo propuesto también se puede usar, para capturar en 3D caras expresivas.
1.7.3. LUNABOT
Un grupo de estudiantes de la Universidad Pedagógica Nacional participaron en la competencia NASA's Third Annual Lunabotics Mining Competition, en el que participaron un total de 70 equipos de universidades de diferentes países a nivel mundial. El desafío de los estudiantes era diseñar y construir un robot excavador, llamado Lunabot, que pudiera extraer y depositar un mínimo de 10 kilógramos de un compuesto similar a la arena lunar, en 10 minutos en un lugar cerrado, desplazándose de un punto a otro (Ministerio de Educación Nacional, 2013).
Como podemos darnos cuenta los trabajos sobre Visión Artificial no son solo interés de instituciones o universidades extranjeras, en Colombia también existen trabajos interesantes sobre este tema y que han generado aportes importantes de aplicación en diferentes campos de la industria y la ciencia.
1.8. ORGANIZACIÓN DEL TRABAJO DE GRADO
El presente documento se ha organizado en tres partes cada una a su vez, organizada en capítulos.
• En la primera parte se realiza la descripción del problema de investigación y los
objetivos, que motivaron el desarrollo del proyecto.
• En la segunda parte se desarrollan los conceptos relacionados con la detección y el
reconocimiento de rostros en imágenes.
• En la tercera parte se presentan los resultados obtenidos del proyecto y los trabajos
24
PARTE 2.DESARROLLO DE LA INVESTIGACIÓN
CAPÍTULO 2. RECONOCIMIENTO BIOMETRICO
2.1. BIOMETRÍA
La Biometría es la ciencia que busca establecer la identidad de un Individuo basado en atributos físicos o de comportamiento (Jain, Bolle, & Pankanti, Biometrics: personal identification in networked society, 2006). El concepto de biometría proviene de la palabra bio (vida) y metría (medida), por lo tanto, un equipo biométrico mide e identifica alguna característica propia de una persona.
El objetivo de los sistemas biométricos es la identificación, entendida como el reconocimiento de una persona; o la autenticación, verificación de un individuo en una base de datos de características. En los sistemas biométricos es muy importante definir su objetivo, ya que algunas características son mejores para aplicaciones donde se busque identificar y otras características funcionan mejor si el objetivo es autenticar (Pankanti, Bolle, & Jain, 2002).
Las características anatómicas suelen permanecen estables al paso del tiempo, por ejemplo, la huella dactilar; por el contrario, las características de comportamiento, pueden variar con los años o con el estado anímico de la persona. Por ejemplo, la firma es considerada una característica de comportamiento, que puede variar con el paso del tiempo.
No cualquier característica anatómica puede ser utilizada con éxito por un sistema biométrico. Para que una característica pueda ser considerada como válida para un sistema biométrico se debe considerar los siguientes aspectos (Jain, Flynn, & Ross, Handbook of biometric, 2007):
• Universalidad: Que cualquier persona del mundo posea esta característica.
• Unicidad: Que la probabilidad que dos personas tengan esta característica idéntica
sea muy pequeña.
25
• Cuantificación: Que la característica pueda ser medida de forma cuantitativa. • Rendimiento: Que tan preciso, veloz y robusto es el proceso de identificación • Aceptabilidad – Que tanta aprobación tiene por parte de las personas
• Fiabilidad - ¿Qué tan fácil engañar al sistema mediante técnicas fraudulentas?
La Biometría hace posible que una característica física de nuestro cuerpo pueda ser utilizada como identificación y clave de acceso. Actualmente los sistemas Biométricos tienen un futuro muy prometedor en lo relacionado a la autenticación digital, y se están realizando muchos estudios para llevarla a sectores específicos como los pagos bancarios.
2.2. BIOMETRÍA POR RASGOS FACIALES
La biometría busca desarrollar sistemas de seguridad y de autenticación confiables y rápidos, basados en la identificación de las características propias de la persona, con lo cual se logra que la suplantación sea prácticamente imposible (Woodward Jr, Horn, Gatune, & Thomas, 2003). La técnica de reconocimiento basadas en los rasgos del rostro es conocida como biometría facial, y se basa en las diferencias que existen entre el rostro de una persona, con respecto a las demás.
El reconocimiento facial se utiliza principalmente para el control y seguridad, en este campo se cuenta con dos categorías (Xiao, 2007):
• Verificación biométrica: consiste en usar una determinada tecnología para asegurar
que el individuo que debemos reconocer es quien dice ser.
• Identificación biométrica: en este caso no queremos confirmar que un usuario es
quien asegura ser, sino que tratamos de aplicar la tecnología para conocer la identidad de un individuo.
Un sistema de biometría facial consta de tres componentes fundamentales:
26
• Software de Detección de rostros: Se encarga de verificar si en la imagen está
presente un rostro.
• Software de reconocimiento: Se encarga de diferenciar los rostros que se encuentran
en la imagen, para diferenciar entre las personas presentes.
El reconocimiento facial tiene su principal complicación relacionada con la luz, ya que dependiendo de la iluminación puede cambiar el color del rostro y generar sombras que pueden afectar la detección y el reconocimiento. Otro factor es el envejecimiento, ya que con el paso del tiempo las facciones del rostro cambian, y el contorno de los ojos cambia debido a las arrugas.
Este campo a tenido gran desarrollo en los últimos veinte años, y sigue evolucionando, financiado principalmente por la industria militar, los bancos y la de seguridad.
CAPÍTULO 3. DETECCIÓN Y RECONOCIMIENTO DE ROSTROS
3.1. ALGORITMO DE VIOLA-JONES
El método de reconocimiento de objetos en imágenes digitales conocido como Viola-Jones, fue propuesto por los investigadores Paul Viola y Michael Jones en el año 2001 (Viola & Jones, Rapid object detection using a boosted cascade of simple features, 2001). Es uno de los primeros métodos que logra detectar eficazmente objetos en tiempo real en una imagen.
Este método originalmente fue desarrollado para realizar la detección de rostros, pero puede ser usado para detectar cualquier objeto dentro de una imagen. Actualmente es uno de los métodos más utilizados en la industria, por su velocidad y su alto porcentaje de acierto.
27 boosted cascade of simple features, 2001). También se denominan estos clasificadores mediante el nombre de cascada, ya que el resultado del clasificador es el fruto de varios clasificadores más simples utilizados en conjunto. Una porción de la imagen donde se presume está el objeto buscado, debe superar todas las etapas del clasificador en cascada para ser aceptado.
El método de Viola-Jones, se divide en tres etapas. En la primera se realiza una transformación de la imagen generando una nueva llamada imagen integral, en la segunda etapa se realiza la extracción de características usando filtros con base Haar (Viola & Jones, Robust real-time face detection, 2004), y por último se usa Boosting (Mayhua-Lopez, Gómez-Verdejo, & Figueiras-Vidal, 2012) para la construcción de clasificadores en cascada.
Etapas de procesamiento de Viola-Jones
Este algoritmo realiza tres etapas para realizar la detección de un rostro, cada una de las etapas se describe a continuación:
28
a) Imagen Integral
La suma de todos los pixeles de un rectángulo, puede ser calculada empleando una representación intermedia llamada imagen integral. Esta imagen intermedia permite extraer de forma rápida características a diferentes escalas. Los autores definen la imagen integral como aquella en la cual cada punto contiene el resultado de la suma de los valores de todos los puntos situados por encima y a su izquierda en la imagen original.
Imagen 7. Calculo de la imagen integral de Viola-Jones. (OpenCv O. , 2017)
La imagen integral es utilizada por el algoritmo como una forma rápida de calcular la suma de los valores del rectángulo de una característica de tipo Haar (Papageorgiou, Oren, & Poggio, 1998). Esta imagen integral es la suma de los pixeles del rectángulo desde la esquina superior izquierda hasta un punto elegido dentro de la imagen. Para el cálculo de la imagen integral, la imagen original debe estar en escala de grises.
b) Extracción de características
29
Imagen 8. Filtros Haar rotados, trasladados y con cambios de escala. (OpenCv O. , 2017)
La extracción de características es un paso en el reconocimiento de patrones en el cuál las medidas u observaciones son procesadas para encontrar a tributos que puedan ser usados para asignar los objetos a determinada clase. En la metodología de Viola-Jones, la extracción de características es realizada aplicando a la imagen filtros con bases Haar (Viola & Jones, Rapid object detection using a boosted cascade of simple features, 2001).
30
c) Clasificación
Esta etapa se encarga de seleccionar un conjunto de características de tipo Haar (Papageorgiou, Oren, & Poggio, 1998) y aplicarlos dentro de la imagen que se está analizando. Para llevar a cabo la clasificación es necesarios realizar un proceso de entrenamiento para crear un clasificador en cascada. Este proceso se realiza mediante el algoritmo de AdaBoots (Sirovich & Kirby, 1987). La aplicación de clasificadores en cascada ha permitido obtener muy buenos resultados y es uno de los grandes aportes de este algoritmo.
La utilización de un clasificador en cascada y la introducción del algoritmo de aprendizaje AdaBoots, además del gran aporte conceptual, son los motivos principales para que el método de Viola-Jones sea considerado como uno de los métodos más importantes desarrollados en este campo. La idea de Paul Viola y Michael Jones de utilizar clasificadores débiles para formar clasificadores fuertes, denominados clasificadores en cascada, ha sido utilizado por otros investigadores para el reconocimiento de objetos en visión por computador.
3.2. EIGENFACES
Los sistemas de reconocimiento de rostros se basan en la idea de que cada persona tiene una estructura de rostro particular y, utilizando la simetría facial, es posible la comparación computarizada de las imágenes del rostro. El rostro y sus propiedades estructurales deben ser identificadas cuidadosamente, y la imagen resultante debe convertirse en datos digitales bidimensionales.
31 La idea de utilizar los componentes principales para representar los rostros humanos fue desarrollada por Sirovich y Kirby (Sirovich & Kirby, 1987) y utilizada por Turk y Pentland (Turk & Pentland, Eigenfaces for recognition, 1991) para la detección y reconocimiento de rostros. La motivación de las Eigenfaces es doble:
• Extraer la información facial pertinente, que puede o no estar directamente
relacionada con la intuición humana de rasgos faciales como los ojos, la nariz y los labios. Una manera de hacerlo es capturar la variación estadística entre las imágenes de un mismo rostro.
• Representar imágenes de rostros eficientemente. Para reducir el cómputo y la
complejidad del espacio, cada imagen de un rostro se puede representar usando un pequeño número de parámetros.
Los Eigenfaces pueden ser considerados como un conjunto de características que representan la variación global entre las imágenes de un rostro. Cada Eigenface representa un rasgo característico de las imágenes faciales siguiendo un patrón obtenido del estudio de muchos rostros.
El funcionamiento de este método es el siguiente:
• Por cada imagen del set de entrenamiento (imágenes de prueba) se concatenan sus
filas de pixeles, transformándola en un vector en el que cada valor se corresponde con el valor del pixel correspondiente.
• Tras esto, se obtiene una matriz de vectores, siendo cada vector una imagen.
• A este vector se le aplica el método PCA (Principal Component Analysis) (Peason,
1901), para obtener los componentes principales y reducir la dimensionalidad.
32 establecido, se selecciona como valor aceptado. Si no está dentro del umbral, se considerará un rostro desconocido.
Este método es muy aceptado debido a su fácil implementación y a que, bajo unas buenas condiciones, tiene un buen porcentaje de aciertos. Por el contrario, un inconveniente de este enfoque es que no solo se maximiza la dispersión entre imágenes producida en mayor parte por las condiciones de iluminación y por la expresión facial, lo cual dificulta la clasificación.
CAPÍTULO 4. DESARROLLO DE LA APLICACIÓN
En este capítulo se realizará la descripción de los componentes utilizados para el desarrollo de la aplicación para el reconocimiento de rostros. Se describe como mediante una librería de Visión Artificial como OpenCv y un lenguaje orientado a objetos como c#, es posible realizar el desarrollo de la aplicación, logrando muy buenos resultados.
También se describe la metodología de desarrollo utilizada, y los diferentes artefactos generados como parte del proceso de diseño y desarrollo.
4.1. OPENCV
Para el desarrollo de la aplicación utilizaremos el módulo de “Object Detection” del Core de la librería OpenCV. Este detector de objetos utiliza los conceptos propuesto por Paul Viola. (Viola & Jones, Rapid object detection using a boosted cascade of simple features, 2001)
33 Esta librería está escrita en C y C++ y cuenta con aproximadamente quinientas funciones que abarcan diferentes procesos de la visión artificial. OpenCV fue diseñado para la eficiencia computacional y con un fuerte enfoque en aplicaciones en tiempo real. La librería permite el manejo eficiente de imágenes y matrices, reconocimiento de objetos y análisis de imágenes utilizando la técnica de Eigenfaces y el algoritmo AdaBoost (OpenCv O. , 2017).
OpenCv se encuentra actualmente en su versión 3.2.0, liberada el 23 de diciembre de 2016, en esta versión se cuenta con la clase de FaceRecognizer para el reconocimiento facial, Los algoritmos actualmente disponibles son:
• Eigenfaces • Fisherfaces
• Local Binary Patterns Histograms
OpenCv nos permite detectar un rostro mediante el uso de clasificadores en cascada, y realizar el reconocimiento de un rostro especifico utilizando Eigenfaces. Por lo anterior se eligió esta librería para el desarrollo de la aplicación para el reconocimiento de una persona, la cual es el producto final esperado del presente trabajo.
El módulo de reconocimiento de objetos de OpenCv nos provee las siguientes clases:
Clases
class cv::BaseCascadeClassifier
class cv::CascadeClassifier
Cascade classifier class for object detection.
struct cv::DetectionROI
struct for detection region of interest (ROI)
34 struct cv::HOGDescriptor
class cv::SimilarRects
Tabla 1. Lista de Clases del módulo de reconocimiento de objetos de OpenCv. (OpenCv O. , 2017)
Para el reconocimiento especifico de rostros OpenCv suministra las clases y métodos:
Clases
class cv::face::BasicFaceRecognizer
class cv::face::FaceRecognizer
Abstract base class for all face recognition models. More...
class cv::face::LBPHFaceRecognizer
class cv::face::PredictCollector
Abstract base class for all strategies of prediction result handling. More...
class cv::face::StandardCollector
Default predict collector. More...
Metodos
Ptr< BasicFaceRecognizer > cv::face::createEigenFaceRecognizer (int
num_components=0, double threshold=DBL_MAX)
Ptr< BasicFaceRecognizer > cv::face::createFisherFaceRecognizer (int
num_components=0, double threshold=DBL_MAX)
Ptr< LBPHFaceRecognizer > cv::face::createLBPHFaceRecognizer (int radius=1, int
neighbors=8, int grid_x=8, int grid_y=8,
35
Tabla 2. Clases y métodos del Módulo de reconocimiento facial de OpenCV. (OpenCv, 2017)
4.1. EMGUCV
Emgu CV es un contenedor para la plataforma .Net de la biblioteca de procesamiento de imágenes de OpenCV (EmguCV, 2017). Permitir que las funciones de OpenCV sean llamadas desde los lenguajes compatibles con .NET, tales como C #, VB, VC ++ etc. El contenedor puede ser compilado por Visual Studio, Xamarin Studio y Unity, puede ejecutarse en Windows, Linux, Mac OS X, iOS, Android y Windows para teléfonos móviles.
EmguCV permite usar OpenCV en la plataforma .net con lenguajes como C #. El algoritmo de Viola-Jones hace parte de EmguCV. Al usar este algoritmo, estaríamos haciendo uso de un detector de rostros que ha sido entrenado con miles y miles de rostros humanos. Los datos de entrenamiento generados a partir de los rostros se almacenan en archivos Xml que vienen por defecto con el paquete EmguCV que se almacenan en [EnguCV Root Folder] \ opencv \ data \ haarcascades.
4.2. IMPLEMENTACIÓN DEL MODELO DE DESARROLLO
Para el desarrollo de la aplicación para el reconocimiento de rostros se eligió el modelo Incremental. Esta elección se basó en el hecho de que los requerimientos de la aplicación son los suficientemente estables, ya que estos fueron definidos con anticipación y formaron parte del anteproyecto presentado como parte de la investigación, y de esta forma poder realizar el desarrollo en iteraciones; al final de cada iteración se cuenta con una versión de la aplicación que cuenta con funcionalidad lista para ser probada.
36 Con este modelo es posible probar cada módulo de la aplicación, detectar las fallas corregirlas y seguir con el siguiente modulo, sin necesidad de esperar a tener toda la funcionalidad implementada para iniciar con las pruebas. Esto permite una retroalimentación temprana y la posibilidad de realizar ajustes específicos, sin tener que realizar cambios a todo el desarrollo realizado.
A continuación, se detalla el proceso que se realizara para cada uno de los incrementos:
PRIMER INCREMENTO
• Definición de los requisitos: Se desarrollan los requerimientos relacionados con la
detección de un rostro en una imagen.
• Diseño de software: Se diseñan los casos de uso.
• Implementación y pruebas unitarias: Se realiza el desarrollo y las pruebas.
SEGUNDO INCREMENTO
• Definición de los requisitos: Se desarrollan los requerimientos relacionados con el
reconocimiento del rostro de una persona.
• Diseño de software: Se diseñan los casos de uso. Se diseña la arquitectura del
sistema.
• Implementación y pruebas unitarias: Se realiza el desarrollo y las pruebas.
• Integración y pruebas del sistema: Se realizan las pruebas de integración del
sistema, realizando pruebas de detección y reconocimiento de un rostro
TERCER INCREMENTO
• Integración y pruebas del sistema: Se realizan casos de prueba para el sistema. Estos
casos de prueba estarán relacionados con el entrenamiento y el reconocimiento de un rostro.
• Operación y mantenimiento: Se realiza la operación de la aplicación en un ambiente
37 El resultado final será la aplicación funcionando, los casos de uso, los diagramas de arquitectura del sistema y la aplicación desarrollada con el lenguaje C#.
4.3. DEFINICIÓN DE LOS REQUISITOS
4.3.1. ALCANCE
Desarrollar un sistema de visión artificial, utilizando la librería de Visión Artificial OpenCV, que pueda ser entrenado para reconocer el rostro de una persona en una imagen de video. El entrenamiento se realizará utilizando fotografías del rostro de la persona tomadas de forma frontal.
La aplicación realizará el proceso de reconocimiento facial, utilizando una cámara web conectada al sistema. Cuando la persona, con la cual se realizó el entrenamiento, este dentro del espacio capturado por la cámara, el sistema la reconocerá e indicará en la pantalla la ubicación de la persona dentro de la imagen y el nombre de la persona.
4.3.2. LIMITACIONES
• El sistema solo reconocerá una persona dentro de la imagen
• Para el entrenamiento y reconocimiento del rostro de la persona, esta no debe llevar
accesorios como lentes, sombreros u otro tipo de elementos que interfieran en el reconocimiento.
• El clasificador para el reconocimiento de la persona, requiere de fotografías con
ciertos parámetros de iluminación y fondo.
• El sistema solo mostrara en pantalla el nombre de la persona cuando la reconozca
dentro de la imagen.
4.3.3. RESULTADOS ESPERADOS
38 El sistema reconocerá el rostro de una persona en particular, para lo cual se debe realizar con anterioridad el entrenamiento utilizando imágenes del rostro de la persona tomadas de forma frontal. Cuando el sistema reconozca la persona dentro de la imagen, se indicara en pantalla encerrando el rostro de la persona en un rectángulo e imprimiendo su nombre.
4.4. DISEÑO DE SOFTWARE
Los requerimientos para la aplicación de visión artificial están relacionados con la interacción del usuario con el sistema y con los diferentes subsistemas que lo componen, ya que este depende de la información de otros procesos automáticos que están en continua ejecución.
4.4.1. REQUERIMIENTOS
Requerimientos funcionales:
Numero Tipo Descripción
RF1 Funcional El sistema debe poder reconocer un objetivo dentro de su campo visual, para ello debe estar analizando continuamente el flujo de video recibido por una cámara.
RF2 Funcional El objetivo que deberá reconocer el sistema será único, el sistema no reconocerá varios objetos de diferentes tipos, para este trabajo se decidió que el objetivo sería una persona que esté dentro del campo de visión del sistema.
RF3 Funcional El sistema debe ser capaz de detectar un rostro cuando este dentro de su campo de visión.
RF4 Funcional Cuando el sistema detecte un rostro este debe indicarlo en pantalla dibujando una señal que indique que se reconoció el objetivo.
39
Requerimientos no funcionales:
Numero Tipo Descripción
RNF1 No funcional Se necesita un sistema de entrenamiento para definir el objeto a buscar.
RNF2 No funcional Se necesita un sistema portable con la capacidad de capturar video y enviar la información al PC para su procesamiento.
RNF3 No funcional El sistema debe desarrollarse con software libre
4.4.2. DISEÑO DE CASOS DE USO
Identificador caso de uso: CU–01
Nombre:
Reconocimiento de objetivo Propósito
El sistema debe poder reconocer un objetivo dentro de su campo visual, para ello debe estar analizando continuamente el flujo de video recibido por una cámara.
Identificador caso de uso: CU–02
Nombre:
40 Requerimiento funcional 2: El objetivo que deberá reconocer el sistema será único, el sistema no reconocerá varios objetos de diferentes tipos, para este trabajo se decidió que el objetivo sería una persona que esté dentro del campo de visión del sistema.
Requerimiento funcional 4: El sistema debe ser capaz de detectar un rostro cuando este dentro de su campo de visión.
IDENTIFICADOR CASO DE USO:
CU–04
NOMBRE:
Indicar en pantalla que se encontró el objetivo
PROPÓSITO
41
4.4.3. ARQUITECTURA
Para la diseñar los modelos de la arquitectura de la aplicación, se utilizó la especificación Archimate 2.0 y Architecture Development Method (AMD) (Group, 2012), con la cual se generaron las tres capas de la Arquitectura: Negocio, Aplicación e Infraestructura. Para la elaboración de los diagramas de utilizó el software ArchiTools.
4.4.3.1. Vista de Negocio
La Vista de arquitectura de negocio considera los aspectos funcionales del sistema, es decir, lo que el nuevo sistema tiene la intención de hacer. Esto puede ser construido a partir de un análisis del entorno existente y de los requisitos y limitaciones que afectan al nuevo sistema (Blevins, Spencer, Tower, & Waskiewi, 2004).
42 En la aplicación interactúan, el sistema y la persona que se desea identificar. A continuación, se muestra el diagrama de negocio para la aplicación.
Imagen 10. Vista del Negocio. Realización Propia.
4.4.3.2. Vista de aplicación
La vista de aplicación es útil para diseñar o comprender la estructura principal de aplicaciones o componentes y los datos asociados. La capa de aplicación comprende aplicaciones de software que apoyan los componentes del negocio (Group, 2012).
La capa de aplicación da soporte a la capa de negocio, en esta capa se manifiestan el dominio de datos y los componentes de la aplicación (Lankhorst, Proper, & Jonkers, 2009). Para la aplicación de reconocimiento de rostros se identifican tres componentes principales: Autenticación, Detección y Reconocimiento.
43 Como objeto de datos, se encuentran las imágenes del entrenamiento, las cuales se encuentran alojadas en un directorio y su metadato está en un XML.
Imagen 11. Vista de Aplicación. Realización Propia.
4.4.3.3. Vista de Infraestructura
El punto de vista de Infraestructura contiene los elementos de infraestructura de software y hardware que soportan la capa de aplicación, como dispositivos físicos, redes o software del sistema (por ejemplo, sistemas operativos, bases de datos y middleware) (Group, 2012).
Para la aplicación de detección de rostros, se requiere un computador con una cámara web, la librería OpenCV y el Frame Work de .Net. Los dos últimos componentes deben estar en la misma máquina, ya que se requieren para la ejecución de la aplicación, pero la cámara web puede ser un periférico conectado por USB o puede ser una cámara IP.
44
4.4.3.4. Vista de Capas
El principio estructural detrás de esta vista, es que cada capa expone servicios, que son utilizados por la capa superior o capas adyacentes (Group, 2012).
El objetivo principal del punto de vista de Capas es proporcionar una visión general de la arquitectura en un mismo diagrama. Además, este punto de vista puede ser utilizado como soporte para el impacto del análisis de cambios y análisis de desempeño o para el portafolio de servicios.
Imagen 13. Vista de Capas. Realización Propia.
4.5. IMPLEMENTACIÓN Y PRUEBAS
45 C# es un lenguaje orientado a objetos, basado en C++, por lo cual resulta muy fácil de aprender. Este lenguaje permite la conexión con OpenCV, y con bases de datos no relacionales.
La solución para el desarrollo de la aplicación cuenta con un proyecto de tipo Windows Forms, en el cual se encuentra el desarrollo de los formularios y los eventos asociados a los controles dentro de los formularios.
Imagen 14. Solución y proyecto Windows Forms en .Net. Realización Propia.
Las imágenes de prueba con las cuales se realiza el entrenamiento, se guardan en un directorio dentro de la aplicación, esto con el fin de que se tengan los permisos suficientes para crear y leer archivos.
46
4.6. INTEGRACIÓN Y PRUEBAS DEL SISTEMA
Para realizar las pruebas de integración del sistema, se crearon escenarios de prueba, con diferentes flujos y resultados esperados.
Prueba Resultado Esperado
Detectar el rostro de una persona, ubicada de frente a la cámara
Se debe resaltar el rostro en un recuadro.
Detectar el rostro de una persona ubicada sobre una margen de la cámara.
Se debe resaltar el rostro en un recuadro.
Detectar el rostro de una persona que tiene gafas oscuras.
Se debe resaltar el rostro en un recuadro. Se debe etiquetar como desconocido.
Detectar un rostro que se encuentre en las imágenes de pruebas
Se debe resaltar el rostro en un recuadro. Se debe etiquetar con el nombre de la persona a la que pertenece el rostro.
Detectar el rostro de dos personas Se debe resaltar el rostro en un recuadro. Se debe etiquetar con el nombre de la persona a la que pertenece el rostro.
4.7. OPERACIÓN Y MANTENIMIENTO
La aplicación para el reconocimiento de rostros, debe instalarse en un computador que cuente con una cámara web integrada, o con una conectada como periférico. La aplicación inicia la captura de video tomando la cámara web por defecto que se encuentre configurada.
47 se enmarca en un rectángulo rojo, tal como puede apreciarse en la siguiente imagen. Si no se ha realizado entrenamiento la aplicación marca el rostro de la persona como desconocido.
Imagen 16. Imagen con un rostro detectado por la aplicación. Aplicación de Reconocimiento de Rostros. Realización Propia.
Para realizar el entrenamiento, se debe dar clic en el botón con el texto “Entrenar Sistema de Reconocimiento”, el cual abre una nueva ventana con el formulario para registrar las fotografías de la persona que se desea identificar.
48 Las imágenes se guardan en un directorio local, la aplicación guarda cada imagen con el nombre de la persona a la cual pertenece, de esta forma cuando se realiza el proceso de reconocimiento se toma el nombre de la fotografía y se imprime en pantalla.
Imagen 18. Imágenes de entrenamiento. Aplicación de Reconocimiento de Rostros. Realización Propia.
Cuando el rostro detectado, coincide con el de una de las personas que se han registrado en la aplicación, el sistema muestra el nombre de la persona en la parte superior del recuadro rojo. En la siguiente imagen puede observarse que la aplicación logro reconocer el rostro correspondiente a las imágenes de prueba.
49 En la parte derecha del formulario se muestran las imágenes con las cuales se está realizando la comparación. Estas son las imágenes que se guardaron durante el entrenamiento. Con mayor cantidad de imágenes, es mejor el resultado del reconocimiento.
Imagen 20. Imagen donde se indica el nombre dos personas diferentes. Realización Propia.
50
PARTE 3.CIERRE DE LA INVESTIGACIÓN
CAPÍTULO 5. RESULTADOS Y DISCUSIÓN
Como resultado de la presente investigación se logró desarrollar una aplicación que, utilizando una librería de visión artificial, es capaz de reconocer el rostro de una persona en una imagen. La aplicación puede ser entrenada para reconocer una o varias personas.
El proceso de reconocimiento inicia con la etapa de detección de rostros, en este proceso se utilizó el algoritmo de Viola-Jones, que hace parte de la librería OpenCV, y que utiliza clasificadores en cascada ya entrenados, en donde se utilizaron bases de datos como la de AT&T Laboratories Cambridge (Cambridge, 1994), la cual cuenta con diez imágenes diferentes del rostro de cuarenta personas.
Para el reconocimiento se utiliza Eigenfaces, que también viene implementado en OpenCV, El cual realiza la comparación de la imagen del rostro detectado con las imágenes guardadas, si encuentra una imagen que se acerqué mucho a la detectada, se indica la correspondencia.
El reconocimiento facial implementado en la aplicación, es muy utilizado en la biometría, para la autenticación y la verificación de personas. Utilizando la librería OpenCV, y un lenguaje de programación es posible realizar aplicaciones de esta técnica orientadas a la seguridad o al control de personas en oficinas, aulas de clase o para la presentación de pruebas supervisadas de forma remota.
Aunque existen aún varias complicaciones con estas técnicas ya que son susceptibles a la luz y a factores como los accesorios que lleve la persona, vemos que, dentro de condiciones controladas, su desempeño es muy alto y no requieren de computadores con gran capacidad de procesamiento.
51 También harán parte de nuestros hogares, ya que esta tecnología se combina actualmente con el Internet de las Cosas.
CAPÍTULO 6. CONCLUSIONES
De los resultados de la presente investigación, podemos concluir que es posible crear un sistema de visión artificial con las tecnologías disponibles en el momento. Se logró comprobar la hipótesis inicial, ya que utilizando OpenCv y un lenguaje de programación orientado a objetos como C#, fue posible desarrollar una aplicación capaz de reconocer el rostro de una persona, analizando el flujo de video capturado por una cámara web.
OpenCv nos provee grandes herramientas para aquellos que quieren iniciar se en el estudio de la visión artificial y del reconocimiento de objetos en imágenes y video. Los sistemas de cómputo actuales, los precios de los procesadores y discos duros, hacen ahora que sea posible tener estos sistemas de visión artificial en equipos de cómputo de bajo costo o incluso en celulares.
CAPÍTULO 7. PROSPECTIVA DEL TRABAJO DE GRADO
La aplicación desarrollada en la presente investigación, puede ser utilizada en control de presencia o control de acceso en diferentes ámbitos educativos y empresariales.
52
PARTE 4.BIBLIOGRAFIA
Angulo Usategui, J. (1986). Visión Artificial por Computador. Madrid: Thomson Paraninfo S.A. Association Federation of International. (2006). Robots in Education, Entertainment and Service.
FIRA RoboWorld Congress 2006.
Branch, J., & Olague, G. (2001). La visión por computador: Una aproximación al estado del arte.
Revista Dyna, 133.
Bristol Robotics Laboratory, T. P. (2010). staffwww.dcs.shef.ac.uk. Recuperado el 2013, de http://staffwww.dcs.shef.ac.uk/people/C.Fox/Prescott_et_al_RISE2010r.pdf
Cáceres, T. J. (2002). La visión artificial y las operaciones morfológicas en imágenes binarias. Alcalá, España.
Calle, A. S. (2005). Aplicaciones de la vision artificial y la biometria informatica. Madrid: Dykinson. Cambridge, A. L. (1994). The Database of Faces. Obtenido de AT&T Laboratories Cambridge:
http://face-rec.org/databases/
Cubas, G., & Consuegra, P. (2001). Dispositivos autómatas para navegación, detección Recoleccion de pelotas de tenis en ambientes conocidos. Revista Científica Ingeniería y
Desarrollo, http://rcientificas.uninorte.edu.co/index.php/ingenieria/article/view/2281/1490.
EmguCV, L. (02 de 2017). Emgu CV Docs. Obtenido de Emgu CV: http://www.emgu.com/wiki/index.php/Main_Page
Feigenbaum, E. A. (1984). The fifth generation : artificial intelligence and Japan's computer
challenge to the world. New York: New American Library.
Freund, Y., & Schapire, R. E. (1997). A decision-theoretic generalization of on-line learning. Journal
of Computer and System Sciences, 119–139.
Geeky, T. (01 de 01 de 2011). Opencv. Recuperado el 19 de 08 de 2013, de OpenCV: opencv.org Gómez-Verdejo, V., Ortega-Moral, M., Arenas-García, J., & Figueiras-Vidal, A. R. (2006). Boosting
by weighting critical and erroneous samples. Neurocomputing, 679-685.
Group, T. (2012). Archimate 2.0 Specification. Obtenido de http://pubs.opengroup.org: http://pubs.opengroup.org/architecture/archimate2-doc/
HERNANDEZ, E., CABRERA SARMIENTO, A., & SANCHEZ SOLANO, S. (2012). Implementación híbrida hardware software del algoritmo de detección de rostros de Viola-Jones sobre
53
http://www.scielo.org.ve/scielo.php?script=sci_arttext&pid=S1316-48212012000200005&lng=es&nrm=iso
Heseltine, T., Pears, N., & Austin, J. (2002). Evaluation of image preprocessing techniques for eigenface-based face recognition. In Second International Conference on Image and
Graphics, 677-685.
Hurtado, J., & Granados, A. (2007). Detección de flujo vehicular basado en visión artificial. Scientia Et Technica.
Jain, A., Bolle, R., & Pankanti, S. (2006). Biometrics: personal identification in networked society.
New York: Springer Science & Business Media.
Jain, A., Flynn, P., & Ross, A. A. (2007). Handbook of biometric. New York: Springer Science & Business Media.
Kearns, M., & Valiant, L. (1994). Cryptographic limitations on learning Boolean formulae and finite automata. Journal of the ACM (JACM), 67-95.
Kearns, M., & Valiant, L. G. (1994). Learning Boolean formulae or finite automata is as hard as factoring. Technical Report TR-14-88, Harvard University Aiken Computation Laboratory, Technical Report TR-14-88.
Ken-ichi, M., Masatsugu, K., & Hidenori, S. (1978). Design of local parallel pattern processor for image processing. Proceedings of the National Computer Conference, (págs. 1025, 1978). ANAHEIM.
KIRBY, M., & SIROVICH, L. (1990). Application of the Karhunen-Loeve procedure for the characterization of human faces. IEEE Transactions on Pattern analysis and Machine intelligence, 103-108.
Kyoung-sig, R., Young, S., & Joo-young, K. (2005). Estados Unidos Patente nº 7151853.
Lankhorst, M. M., Proper, H. A., & Jonkers, H. (2009). The architecture of the archimate language.
Enterprise, Business-Process and Information Systems Modeling, 367-380.
López Beltrán, R., & Paternina Arboleda, C. D. (2001). Análisis cinemático de un robot autónomo con ruedas. Revista Científica Ingeniería y Desarrollo.
López Beltrán, R., Sotter Solano, E., & Zurek Varela, E. (2001). Aplicación del sistema Robot Vision PRO para operaciones automáticas de control de calidad. Revista Científica Ingeniería y Desarrollo.
Marr, D. (1982). Vision - A computational investigation into the human representation and
processing of visual information. San Francisco: W. H. Freeman.
Marr, D. (1982). Vision: A Computational Investigation into the Human Representation and
Processing of Visual Information. San Francisco: W. H. Freeman.
Mayhua-Lopez, E., Gómez-Verdejo, V., & Figueiras-Vidal, A. R. (2012). Real Adaboost with gate controlled fusion. IEEE transactions on neural networks and learning systems, 2003-2009. Mery, D. (2004). Apuntes de Visión por computador. Obtenido de Visión por computador: