Diseo e implementacin de un herramienta de deteccin facial
Transcript of Diseo e implementacin de un herramienta de deteccin facial
Instituto Politécnico Nacional Centro de Innovación y Desarrollo
Tecnológico en Cómputo
Diseño e implementación de una herramienta de detección facial
TESIS
QUE PARA OBTENER EL GRADO DE MAESTRÍA EN TECNOLOGÍA DE CÓMPUTO
PRESENTA:
MARÍA ESTHER GARCÍA CHANG
DIRECTORES DE TESIS:
M. en C. Jesús Antonio Álvarez Cedillo
Dra. Hind Taud
México D.F., Junio 2009.
Diseño e implementación de un herramienta de detección facial
2
Diseño e implementación de un herramienta de detección facial
3
Diseño e implementación de un herramienta de detección facial
4
Resumen
Aunque el reconocimiento de rostro humano sea un tema difícil debido a varios
parámetros implicados, llega a ser de interés cada vez mayor en diversos campos de
aplicaciones como en la identificación personal, la interface hombre‐máquina, etc. La
mayoría de las imágenes del rostro contienen un fondo que se debe eliminar antes del
siguiente proceso del reconocimiento de lo mismo. Así esta tesis trata del diseño y la
implementación de un sistema de detección facial como el primer paso en el proceso de
reconocimiento de rostro. En la literatura científica, uno de los trabajos importantes de
detección de rostros en tiempo real es un método basado en el aprendizaje de Adaboost.
Por su eficiencia, este método ha sido elegido.
La principal aportación en este trabajo, es identificar un método de detección de rostro en
tiempo real, realizar una descripción detallada de sus etapas y su implementación basada
en la biblioteca OpenCV, en conjunto, permiten diseñar aplicaciones para imágenes fijas o
de video para cualquier tipo de cámara web.
Diseño e implementación de un herramienta de detección facial
5
Abstract Although human face recognition is a hard topic due to many parameters involved, it
becomes of increasing interest in numerous application fields as the personal
identification, the man‐machine interfaces, etc. Most face images contain a background
that must be discarded before subsequent face recognition process. Thus this thesis deals
with the design and the implementation of a system of facial detection as a first step in the
face recognition process. In scientific literature, one of the outstanding works in face
detection in real time is a method based in Adaboost learning. Because of its efficiency,
the implementation of this method has been chosen.
The main contribution in this work is to identify a method of face detection in real time, to
realize a detailed description of its stages and their implementation based on the OpenCV
library, altogether, allow designing applications in fixed images or video for any type of
camera Web.
Diseño e implementación de un herramienta de detección facial
6
"De nuestros miedos
nacen nuestros corajes, y en nuestras dudas
viven nuestras certezas. Los sueños anuncian otra realidad posible,
y los delirios otra razón. En los extravíos
nos esperan los hallazgos porque es preciso perderse para volver a encontrarse."
Eduardo Galeano
Diseño e implementación de un herramienta de detección facial
7
Agradecimientos
Gracias a mis hijos Jeniffer y Diego
Esta tesis es por ellos que los amo y son mi vida.
Gracias a mis padres Esther y Rodolfo
Por su cariño, apoyo, comprensión y brindarme todo su amor, apoyo incondicional y por
haber creído en mí siempre.
A mis hermanos Manuel y Rodolfo
Por compartir conmigo tantas cosas, estar a mi lado cuando más los necesito.
A mi director de tesis Hind Taud
Por su infinita paciencia y ayuda en este trabajo, por sus consejos, por confiar en mí pero
sobre todo por su amistad.
A mi director de tesis Jesús Antonio Álvarez Cedillo
Por haberme dado su confianza y amistad.
A mis amigos y compañeros
Por su apoyo y ayuda.
Gracias a cada uno de mis maestros
Que participaron en mi desarrollo profesional sin su ayuda y conocimientos no estaría en
donde me encuentro ahora, especialmente al Dr. Lindig Bos que me motivó a estudiar una
Maestría.
Gracias a mi Comité revisor
Dr. Víctor Manuel Silva García, M. en C. Eduardo Rodríguez Escobar, M. en C. Rolando
Flores Carapia, M. en C. Juan Carlos Herrera Lozada por proporcionarme toda su ayuda así
como sus conocimientos.
Gracias al Instituto Politécnico Nacional y al Centro de Innovación y Desarrollo
Tecnológico en Cómputo
Por todo el conocimiento adquirido durante los años de estudio.
Diseño e implementación de un herramienta de detección facial
8
En general quisiera agradecer a todas y cada una de las personas que han vivido conmigo
la realización de esta tesis de maestría, con sus altos y bajos y que no necesito nombrar
porque tanto ellos como yo sabemos que desde los más profundo de mi corazón les
agradezco el haberme brindado todo el apoyo, colaboración, ánimo y sobre todo cariño y
amistad.
Diseño e implementación de un herramienta de detección facial
9
Índice General
Resumen ...................................................................................... 4
Abstract ....................................................................................... 5
Índice de Figuras ........................................................................ 12
Índice de Tablas.......................................................................... 14
Glosario de Términos ................................................................. 15
Capítulo 1 ................................................................................... 16
Introducción ............................................................................... 16
1.1 Antecedentes .......................................................................................................................... 16
1.2 Objetivo del trabajo ................................................................................................................ 19
1.2.1 Objetivo general ............................................................................................................... 19
1.2.2 Objetivos particulares ...................................................................................................... 19
1.3 Justificación. ............................................................................................................................ 19
1.4 Planteamiento del Problema................................................................................................... 20
1.5 Organización de la tesis ........................................................................................................... 20
Capítulo 2 ................................................................................... 22
Estado del arte ........................................................................... 22
2.1 Detección y reconocimiento de rostro .................................................................................... 22
2.2 Retos de la detección facial ..................................................................................................... 22
2.2.1 Escala ................................................................................................................................ 23
2.2.2 Pose .................................................................................................................................. 23
2.2.3 Iluminación ....................................................................................................................... 24
2.2.4 Expresión Facial ................................................................................................................ 24
2.2.5 Oclusión ............................................................................................................................ 25
2.2.6 Edad .................................................................................................................................. 25
2.3 Reconocimiento de Patrones .................................................................................................. 25
2.3.1 Introducción ..................................................................................................................... 25
Diseño e implementación de un herramienta de detección facial
10
2.3.2 Aprendizaje ...................................................................................................................... 27
2.3.3 Enfoques de reconocimiento de patrones ....................................................................... 27
2.3.4 Selección de variables ...................................................................................................... 28
2.4 Algoritmos del reconocimiento facial ..................................................................................... 29
2.4.1 Reducción de dimensionalidad ........................................................................................ 29
2.4.2 Técnicas de grafos: “Elastic Bunch Graph Matching” EBGM ........................................... 31
2.4.3 Transformación de huella ................................................................................................ 31
2.4.4 Modelo activo de apariencia ........................................................................................... 32
2.4.5 Reconocimiento Facial 3‐D ............................................................................................... 32
2.4.6 Enfoque Bayesiano ........................................................................................................... 33
2.4.7 Máquinas de soporte vectorial ........................................................................................ 33
2.4.8 Redes neuronales ............................................................................................................. 34
2.4.9 Boosting y adaboost ......................................................................................................... 35
Capítulo 3 ................................................................................... 37
Marco Teórico ............................................................................ 37
3.1 Descripción general ................................................................................................................. 38
3.1.1 Preprocesamiento ............................................................................................................ 39
3.1.2 Extracción de descriptores ............................................................................................... 43
3.1.3 Block de decisión .............................................................................................................. 44
3.2 Descriptores de Harr .............................................................................................................. 45
3.3 Imagen Integral ....................................................................................................................... 47
3.3.1 Importancia de los descriptores de Harr‐Like .................................................................. 49
3.4 Algoritmos de Aprendizaje ...................................................................................................... 50
3.5 Las Funciones de clasificación en cascada .............................................................................. 53
3.5.1 Disposición de las funciones de clasificación ................................................................... 54
3.5.2 Árbol de funciones del clasificador .................................................................................. 56
3.5.3 Importancia de la estructura en cascada. ....................................................................... 57
Capítulo 4 ................................................................................... 60
Implementación del algoritmo ................................................... 60
4.1. Elementos computacionales. ................................................................................................. 60
Diseño e implementación de un herramienta de detección facial
11
4.1.1 Microsoft Visual Studio. ................................................................................................... 60
4.1.2 Open CV ............................................................................................................................ 61
4.1.3 Emgu. ................................................................................................................................ 62
4.2 Entrenamiento usando Haartraining....................................................................................... 62
4.2.1 Imágenes de muestra ....................................................................................................... 63
4.2.2 Preparación de muestra ................................................................................................... 63
4.2.3 Obtención del clasificador ................................................................................................ 65
4.2.4 Rendimiento del clasificador ............................................................................................ 66
4.3 Implementación ...................................................................................................................... 67
4.3.1 Requerimientos mínimos del sistema .............................................................................. 67
4.3.2 Software desarrollado ...................................................................................................... 67
4.3.3 Función de detección de objetos de OpenCV. ................................................................. 71
4‐3.4 Funciones de clasificación en cascada ............................................................................. 73
4.3.5 Detección combinada: rostro‐ojo .................................................................................... 76
Capítulo 5 ................................................................................... 77
Experimentación y resultados .................................................... 77
5.1 Experimentación ..................................................................................................................... 77
5.2 Resultados ............................................................................................................................... 78
5.3 Conclusión ............................................................................................................................... 79
Capítulo 6 ................................................................................... 92
Conclusiones y trabajo a futuro .................................................. 92
6.1 Conclusiones ............................................................................................................................ 92
6.2 Trabajo a futuro....................................................................................................................... 94
Referencias .................................................................................................................................... 95
Diseño e implementación de un herramienta de detección facial
12
Índice de Figuras
Figura 1.1 Estructura de un sistema de verificación, el cual está compuesto de dos módulos, detección de
rostros y verificación ................................................................................................................................ 17
Figura 1.2 Etapas de un sistema de reconocimiento facial ............................................................................... 18
Figura 2.1 Rostros en diferentes escalas ........................................................................................................... 23
Figura 2.2 Rostros con diferentes poses .......................................................................................................... 23
Figura 2.3 Rostros con diferente iluminación .................................................................................................. 24
Figura 2.4 Rostros con diferente expresión ...................................................................................................... 24
Figura 2.5 Rostros en oclusión .......................................................................................................................... 25
Figura 2.6 Rostros de la misma persona con edad diferente ............................................................................ 25
Figura 2.7 Ejemplo simple de reconocimiento de patrones; en la izquierda conjunto de patrones, en la
derecha patrones clasificados en dos clases. .......................................................................................... 26
Figura 3.1 Detección Facial ............................................................................................................................... 39
Figura 3.2 Conversión YUV a partir RGB ........................................................................................................... 40
Figura 3.3 Interpolación bicúbica con el valor de los 16 puntos vecinos .......................................................... 41
Figura 3.4 Ecualización del histograma H; ........................................................................................................ 41
Figura 3.5 Mejoramiento del contraste por ecualización del histograma; la izquierda: imagen original; la
derecha: imagen con ecualización del histograma. ................................................................................. 42
Figura 3.6 Ejemplo de detección del borde de Canny: ..................................................................................... 43
Figura 3.7 Sistema de detección de Viola y Jones [36] ..................................................................................... 45
Figura 3.8 Representación de un descriptor ..................................................................................................... 46
Figura 3.9 Los tres tipos de descriptores de Haar............................................................................................. 46
Figura 3.10 Extensión de los descriptores de Haar. .......................................................................................... 47
Figura 3.11 El valor de la imagen integral al punto (x, y) es igual a la suma de todos los píxeles situados
encima y a la izquierda. ........................................................................................................................... 48
Figura 3.12 La suma del Píxel en el rectángulo D puede ser calculada con solamente cuatro referencias. El
valor de la imagen integral en el lugar 1 es la suma del Píxel en el rectángulo A. El valor en el lugar 2 es
A + B, en el lugar 3 es A + C, y en el lugar 4 es ......................................................................................... 48
Figura 3.13 Los dos descriptores de Haar más discriminantes seleccionados por Adaboost ........................... 53
Figura 3.14 Esquema del árbol de las funciones de clasificación en cascada, n: clasificador, V: verdad, F: Falso.
................................................................................................................................................................. 55
Figura 3.15 Comparación entre un detector de rostro simple compuesto de 200 funciones de clasificación y
un detector compuesto de 20 períodos de prácticas de 10 funciones de clasificación [38]. .................. 58
Diseño e implementación de un herramienta de detección facial
13
Figura 4.1 Pasos para creación del clasificador ................................................................................................ 63
Figura 4.2 Pantalla principal del software ........................................................................................................ 68
Figura 4.3 Primera elección del software ......................................................................................................... 68
Figura 4.4 Selección de tipo de imágenes ........................................................................................................ 69
Figura 4.5 Elección de la ruta de la imagen a tratar ......................................................................................... 69
Figura 4.6 Resultado del algoritmo de detección de rostro .............................................................................. 70
Figura 4.7 Opción de video: iniciar, detener y cerrar ........................................................................................ 71
Figura 5.1 Diferentes pruebas con 3 clasificadores .......................................................................................... 85
Figura 5.2 Diferentes pruebas con 3 clasificadores: (a) Clasificación rostro con ojo frontalface_alt.xml, (b)
Clasificación carafrontal_alt.xml,(c) Clasificación cara frontalface_alt‐tree.xml ..................................... 91
Diseño e implementación de un herramienta de detección facial
14
Índice de Tablas
Tabla 3.1 El algoritmo de Adaboost ...................................................................................... 52
Tabla 4.1 Función de detección de objetos de OpenCV ....................................................... 72
Tabla 4.2 Estructura del árbol ............................................................................................... 74
Tabla 4.3 Estructura de una fase ........................................................................................... 75
Tabla 4.4 La estructura de la función de clasificación .......................................................... 75
Tabla 4.5 Las fases y sus funciones del archivo haarcascade_frontalface_alt.xml ............... 76
Diseño e implementación de un herramienta de detección facial
15
Glosario de Términos
AdaBoost: es una variante de boosting (adaptative boosting).
Boosting: un método de aprendizaje que se caracteriza por mejorar el resultado de otro
método de aprendizaje llamado base, mediante la aplicación repetida del mismo.
Falsas alarmas: falsos positivos.
Falsos positivos: Son aquellos objetos que son detectados pero que no deberían ser
detectados.
Falsos negativos: Son aquellos objetos que deberían ser detectados pero no se detectan.
Formato: una organización para almacenar datos digitales.
Histograma: la representación de la frecuencia de píxeles de cierto nivel de gris en función
de los niveles de gris.
Imagen: es una función que a cada par de coordenadas (x, y) (en el caso bidimensional)
asocia un valor relativo a alguna propiedad del punto que representa (por ejemplo su
brillo o su matiz).
Interpolación: construcción de nuevos puntos partiendo del conocimiento de un conjunto
discreto de puntos.
JPG: son las siglas de Joint Photographic Experts Group, es un formato de compresión de
imágenes.
Pixel: del inglés “picture element” es el elemento básico o más pequeño de una imagen.
Resolución espacial: El número de muestras por unidad de espacio sobre el objeto original
o el tamaño de un pixel por (ejemplo 2×2 cm).
Resolución radiométrica o espectral: el número de niveles posibles que puede tener como
valor un pixel.
Transformada de Haar: de los primeros ejemplos de transformadas ortonormales de
ondeletas.
XML: siglas de Extensible Markup Language, es un estándar para el intercambio de
formación estructurada entre diferentes plataformas. in
Diseño e implementación de un herramienta de detección facial
16
Capítulo 1
Introducción
Este capítulo presenta los antecedentes de la tesis, así como los objetivos de la misma, la
justificación del trabajo, el planteamiento del problema y la organización del documento.
1.1 Antecedentes
Las imágenes son ampliamente utilizadas como una de las fuentes más importantes de
información, sobre todo en el contexto de las aplicaciones centradas en el ser humano, tal
como: vigilancia de seguridad, desarrollo de sistemas biométricos, juegos multimedia de
interacción hombre‐máquina, rebotica, realidad virtual, videoconferencias, Indexación y
codificación [1].
Gracias al progreso tecnológico en la fabricación de sensores que captan las imágenes
digitales a un bajo coste y mejorando cada vez sus características, se puede constatar el
crecimiento de su utilización en diversos campos y aplicaciones.
Unos de estos campos es el desarrollo de sistemas biométricos, el cual notoriamente ha
crecido en estos últimos años. La biometría es una tecnología de seguridad basada en el
reconocimiento de una característica física e intransferible de las personas, tal como iris,
retina, rostro, sistema vascular, palma de la mano, huella dactilar, y voz.
El reconocimiento facial involucra el reconociendo de personas mediante sus
características faciales. Comparando a otros sistemas biométricos como ADN, la huella
dactilar o la voz, el reconocimiento facial es una técnica no intrusiva. Desde el primer
sistema automático desarrollado por Kanade [2] un creciente interés ha sido dado al
reconocimiento facial. La evolución de los sistemas de cómputo, así como los últimos
progresos en reconocimientos de patrones hacen que los sistemas de reconocimiento
Diseño e implementación de un herramienta de detección facial
17
facial se puedan realizar en tiempo real y obtener resultados satisfactorios bajo
condiciones controladas llevados a diferentes aplicaciones.
Un sistema de reconocimiento facial se puede realizar de dos modos diferentes:
verificación o autentificación e identificación. La verificación involucra la confirmación o la
negación de la identidad reclamada por una persona (uno‐a‐uno). Por otro lado, la
identificación procura establecer la identidad de una persona dada que se encuentra en
un grupo de N personas (uno a N). Mientras que verificación e identificación a menudo
comparten los mismos algoritmos de clasificación, ambos modos apuntan a aplicaciones
distintas.
En el modo de verificación, las principales aplicaciones conciernen al control de acceso,
por ejemplo: acceso a una computadora, entrada a un dispositivo móvil, control de
puertas, acceso a bancos de datos, etc. Un sistema biométrico presenta múltiples ventajas
sobre sistemas tradicionales de acceso de seguridad: la firma biométrica no puede ser
robada, olvidada , perdida , ni transmitida, como en el caso de un documento de
identificación. En el modo de identificación, las aplicaciones potenciales implican
principalmente video vigilancia (lugares públicos, zonas prohibidas, etc.), la recuperación
de la información (bases de datos, la gestión de datos multimedia, etc.) o interacción
hombre‐máquina (videojuegos, etc.).
Figura 1.1 Estructura de un sistema de verificación, el cual está compuesto de dos módulos, detección de rostros y verificación
Un sistema automático de verificación del rostro está compuesto de dos etapas
principales (Fig. 1.1): detección de rostro (primera etapa) y verificación de rostro (segunda
Diseño e implementación de un herramienta de detección facial
18
etapa). En detección de rostro, el propósito es determinar si hay uno o más rostros en una
imagen (o video), y si es el caso, devolver su posición y escala. El termino localización es
empleada cuando hay únicamente un rostro en la imagen. La detección del rostro es un
ámbito de la investigación importante en la visión de computadora, porque sirve como un
primer paso necesario a cualquier sistema de procesamiento de rostro, como
reconocimiento de rostro, seguimiento de rostro, análisis de expresión. La mayor parte de
estas técnicas asumen, en general, que la región de rostro ha sido localizada
perfectamente. Por lo tanto, sus rendimientos dependen de una manera muy significativa
en la precisión del paso de detección de rostro. En la Figura 1.2 se puede apreciar las dos
etapas que constituyen un sistema de reconocimiento de rostro donde la detección es la
primera etapa y la verificación es la segunda etapa.
Detección
Verificación
Esther
Figura 1.2 Etapas de un sistema de reconocimiento facial
Diseño e implementación de un herramienta de detección facial
19
1.2 Objetivo del trabajo
1.2.1 Objetivo general
Desarrollar un sistema de detección facial como primera etapa en un sistema de
reconocimiento facial.
1.2.2 Objetivos particulares
• Estudio bibliográfico de los avances en el tema de detección facial.
• Identificar el algoritmo eficaz para el reconocimiento facial.
• Implementar este algoritmo.
• Crear un sistema que pueda ser reutilizado para otros proyectos y en otras
aplicaciones.
1.3 Justificación.
Se justifica el desarrollo de un sistema de detección de rostro por los siguientes puntos:
1. Es un área de investigación muy creciente en visión por computadora por la
amplia gama de aplicación centrada en el ser humano, la cual fue citada
anteriormente.
2. Sirve como un primer paso necesario a cualquier sistema de procesamiento de
rostro, como reconocimiento de rostro, seguimiento de rostro, análisis de
expresión.
3. Permitirá su uso en otros proyectos que se requieren desarrollar en este centro.
Diseño e implementación de un herramienta de detección facial
20
1.4 Planteamiento del Problema.
Aunque la detección de rostro es un campo de investigación muy activo, todavía se
considera una tarea difícil el reconocimiento de patrones, a causa de la alta variabilidad de
la apariencia del rostro. Los rostros son objetos no rígidos y dinámicos con una diversidad
grande en la forma, el color y la textura, debido a múltiples factores como la pose de la
cabeza, iluminación (contraste, las sombras), expresiones faciales, las oclusiones (lentes) y
otras características faciales (el maquillaje, la barba). La alta variabilidad en la apariencia
de rostro afecta más la detección de rostro que la variabilidad de la identidad del rostro.
Otra dificultad viene de la carencia de imágenes, debido a que éstas son tomadas de
referencia para la fase de entrenamiento. Los pocos datos disponibles generalmente no
son suficientes para cubrir la variabilidad en apariencia. Además, una diferencia
significativa entre las condiciones en la fase de entrenamiento y la fase de prueba puede
suceder. Por último, el rendimiento de un sistema de reconocimiento facial es relacionado
sumamente al resultado del paso de detección de rostro.
Buscar solucionar estos problemas será casi imposible, lo que se pretende en este trabajo
es tratar de encontrar una metodología eficaz entre las que existen para implementarla y
así desarrollar un sistema de detección de rostros con resultados satisfactorios bajo
condiciones bien definidas.
1.5 Organización de la tesis
Esta tesis se encuentra compuesta por 5 capítulos organizados de la siguiente manera:
1. El primer capítulo proporciona una introducción a la detección de rostro para
situarla en un sistema de reconocimiento de rostro. Se presentan los objetivos del
trabajo, la justificación del porque es importante contar con una sistema de
detección de rostro. Se describe el planteamiento del problema y la organización
de la tesis.
Diseño e implementación de un herramienta de detección facial
21
2. El segundo capítulo describe el estado del arte, en el cual se hace una investigación
sobre los trabajos relacionado con el tema de esta tesis.
3. El tercer capítulo presenta el marco teórico de la tesis, el cual contiene todos los
elementos o herramientas esenciales que componen el desarrollo de la misma.
4. El cuarto capítulo detalla la implementación de la metodología propuesta para
designar un sistema de detección de rostro así como los resultados obtenidos en
diferentes casos.
5. El quinto capítulo se presenta las experiencias hechas con diferentes imágenes así
como los resultados obtenidos en diferentes casos.
6. El sexto capítulo describe las conclusiones del trabajo haciendo énfasis en las
aportaciones de esta tesis, las ventajas y limitaciones de la técnica propuesta así
como los trabajos futuros que pueden desarrollarse tomando como base esta tesis.
Diseño e implementación de un herramienta de detección facial
22
Capítulo 2
Estado del arte
2.1 Detección y reconocimiento de rostro
La detección del rostro es el primer paso en un sistema de reconocimiento facial. Dada una
imagen o un video, un identificador de rostros debe de ser capaz de identificar y localizar
todos los rostros independientemente de su posición, escala, edad y orientación, la
detección debe ser ajena, independientemente de las condiciones de iluminación así como
el contenido de la imagen o video.
El reconocimiento del rostro es una tarea que los humanos realizan rutinariamente y
fácilmente en sus vidas diarias. Desarrollar algoritmos capaces de hacer esta tarea es uno
de los desafíos fundamentales donde la investigación quiere llegar. Diferentes subareas y
componentes abarcan el reconocimiento facial, detección, seguimiento, alineamiento,
extracción de rasgos, entrenamiento, identificación, clasificación, análisis de expresión
facial, análisis en 2 y 3 dimensiones entre otros [3]. Muchos de estos componentes
comparten las mismas técnicas y algoritmos de reconocimiento de patrones y análisis de
imágenes a pesar que apuntan aplicaciones distintas. Una clasificación y evaluación de
estas técnicas de detección facial se encuentra en el trabajo de revisión de Yang et al. [4] y
Li y Jain [5].
2.2 Retos de la detección facial
Algunos de los factores que afecta la detección facial, son la escala, la pose, iluminación, la
expresión facial, la oclusión y la edad.
Diseño e implementación de un herramienta de detección facial
23
2.2.1 Escala
En una imagen puede aparecer un grupo de diferentes escalas de rostros como se puede
apreciar en la Figura 2.1, el tamaño o escala de un rostro puede ser tratado por un simple
proceso de cambio de tamaño por deformación. Este proceso de transformación requiere
la localización de algunos puntos como los ojos, la nariz, y boca [6].
Figura 2.1 Rostros en diferentes escalas
2.2.2 Pose
El rendimiento de los sistemas de detección de rostro se ven afectados cuando hay
variaciones en la pose (Figura 2.2) ya que la mayoría de los trabajos están hechos para la
detección del rostro frontal [7].
Figura 2.2 Rostros con diferentes poses
Diseño e implementación de un herramienta de detección facial
24
2.2.3 Iluminación
Los problemas creados por la iluminación se pueden apreciar en la Figura 2.3, en la cual el
mismo rostro con la misma expresión facial, y vista desde el mismo punto de vista, se ve
diferente debido a los cambios de iluminación, estos suelen ser muy drásticos. [8].
Figura 2.3 Rostros con diferente iluminación
2.2.4 Expresión Facial
A diferencia de los efectos de escala, la pose y la iluminación, la expresión facial puede
modificar en forma significativa la geometría del rostro, como se muestra en la Figura 2.4,
las expresiones son significativas para la detección del rostro [9].
Figura 2.4 Rostros con diferente expresión
Diseño e implementación de un herramienta de detección facial
25
2.2.5 Oclusión
Es otro tema a confrontar para la detección facial, como lentes, bufandas todo lo que
pueda cambiar la apariencia del rostro como se muestra en la Figura 2.5. Existen diferentes
algoritmos para poder resolver este problema.
Figura 2.5 Rostros en oclusión
2.2.6 Edad
La edad es otro problema a confrontar para la detección facial, ya que una persona puede
tener cambios significativos a través de su vida, y las bases de datos algunas veces no
están actualizadas, todavía no existen técnicas para este problema (Figura 2.6).
Figura 2.6 Rostros de la misma persona con edad diferente
2.3 Reconocimiento de Patrones
2.3.1 Introducción
El reconocimiento es un atributo básico de los humanos. Se realizan actos de
reconocimiento en cualquier instante de la vida, se reconocen los objetos del entorno
donde se encuentran. El ser humano se mueve y actúa en relación a ellos, se puede
distinguir a una persona conocida ante una multitud, la voz de un amigo, los gestos de un
rostro, un texto escrito, el olor de un perfume particular, el sabor de una naranja o el tacto
Diseño e implementación de un herramienta de detección facial
26
de un trozo de hielo. En este sentido, los humanos son un sistema de información muy
sofisticado, con cualidades de reconocimiento muy elevadas.
El estudio de los problemas de reconocimiento puede dividirse en dos grandes áreas:
1‐El estudio de las habilidades o capacidades de reconocimiento de los seres
humanos son temas incluidos en disciplinas como la psicología, la fisiología.
2‐El desarrollo de teorías, métodos y técnicas para el diseño de sistemas capaces
de realizar ciertas tareas de reconocimiento en aplicaciones específicas, son temas que
caen dentro de las áreas de interés de la informática o computación en general y de la
inteligencia artificial y reconocimiento de formas en particular [10]. En este sentido El
reconocimiento de patrones es la disciplina científica cuyo objetivo es la clasificación de
objetos en unos ciertos números de categorías o clases (Figura 2.7).
Figura 2.7 Ejemplo simple de reconocimiento de patrones; en la izquierda conjunto de patrones, en la derecha patrones clasificados en dos clases.
Diseño e implementación de un herramienta de detección facial
27
2.3.2 Aprendizaje
Todo sistema de reconocimiento de patrones puede ser dotado de dos modos de
funcionamiento: el denominado de reconocimiento propiamente dicho y el de análisis o
aprendizaje. Las aproximaciones metodológicas al diseño de las etapas de aprendizaje
pueden ser:
Aprendizaje Supervisado: en este caso se dispone de una muestra controlada de cada una
de las clases de formas en el diseño del clasificador de la cual se conocen a priori las
etiquetas de pertenencia a clase de todos y cada uno de los elementos de dicha muestra.
El proceso de aprendizaje consiste en la determinación, en base a la muestra, de las reglas
de clasificación a partir de las regularidades de la misma.
Aprendizaje no Supervisado: en este caso no se dispone de las etiquetas de pertenencia a
clase de los elementos de la muestra controlada, por lo que antes de obtener las reglas de
clasificación es preciso analizar el conjunto de datos para determinar el número de clases
de formas que la constituyen así como sus regularidades.
Aprendizaje mediante Refuerzo: es un concepto extraído de la literatura de aprendizaje
animal, y se refiere a una clase de tareas y algoritmos de aprendizaje, para los cuales este
último se efectúa maximizando una evaluación escalar o refuerzo de la calidad de lo
aprendido acerca del problema en cuestión. Si la medida de calidad se obtiene tras cada
paso del proceso de aprendizaje por una muestra, el procedimiento se denomina de
refuerzo inmediato, mientras que si se obtiene el refuerzo, no para cada muestra sino
para un colectivo de ellas, el procedimiento se denomina de refuerzo retardado.
2.3.3 Enfoques de reconocimiento de patrones
En la literatura especializada en reconocimiento de patrones hay varias técnicas que
pueden ser clasificadas según el enfoque:
Geométrico: en éste enfoque se emplea el cálculo de distancias, geometría de
formas, vectores numéricos, puntos de atracción, etc.
Diseño e implementación de un herramienta de detección facial
28
Estadístico: Este enfoque se basa en la teoría de probabilidad y estadística y
supone que se tiene un conjunto de medidas numéricas con distribuciones de
probabilidad conocidas y a partir de ellas se hace el reconocimiento.
Sintáctico –Estructural: Este enfoque se basa en encontrar las relaciones
estructurales que guardan los objetos de estudio, utilizando la teoría de lenguajes
formales. El objetivo es construir una gramática que describa la estructura del
universo de objetos.
Redes Neuronales: Este enfoque supone que se tiene una estructura de neuronas
interconectadas que se estimulan unas a otras, las cuales pueden ser “entrenadas”
para dar una cierta respuesta cuando se le presentan determinados valores.
Lógica Combinatoria: Este enfoque se basa en la idea de que la modelación del
problema debe ser lo más cercana posible a la realidad del mismo, sin hacer
suposiciones que no estén fundamentadas. Uno de los aspectos esenciales del
enfoque es que las características utilizadas para describir a los objetos de estudio
deben ser tratadas cuidadosamente.
2.3.4 Selección de variables
Uno de las etapas cruciales en reconocimiento de patrones es la selección de variables,
que pueden ser usadas para dos tareas:
Para la Clasificación: La selección de características relevantes, a partir del conjunto total
de características que describen a los objetos, se hace con dos motivos fundamentales:
mejorar la clasificación y/o aumentar la velocidad de procesamiento.
Para la Representación: Decidir cuáles características representan mejor a cierto tipo de
objetos.
Diseño e implementación de un herramienta de detección facial
29
2.4 Algoritmos del reconocimiento facial
Las técnicas desarrolladas para el reconocimiento facial están inspiradas totalmente en los
métodos y teorías matemáticas del reconocimiento de patrones. Algunas de estas técnicas
se describen a continuación.
2.4.1 Reducción de dimensionalidad
Tres algoritmos son bien conocidos en el mundo del reconocimiento e identificación de
rostros: Análisis de componentes principales (ACP), Análisis de componentes
independientes (ACI), Análisis Discriminatorio Lineal (ADL). Todos ellos pertenecen a un
grupo de técnicas estadísticas multivariantes descriptivas. Se obtienen la reducción de
dimensionalidad mediante la proyección en subespacios de menor dimensión.
2.4.1.1 Análisis de componentes principales (ACP)
El Análisis de Componentes Principales (ACP) es un enfoque que ha sido muy difundido,
especialmente en el tratamiento de grandes masas de datos. Según los campos de
aplicaciones el ACP es reconocido bajo el nombre de la transformación de karhunen‐Loeve
o transformación de Hotelling, o de descomposición ortogonal.
El ACP permite reducir la dimensionalidad de los datos, transformando el conjunto de p
variables originales en otro conjunto de q variables incorrelacionadas (q ≤ p) llamadas
componentes principales. Las p variables son medidas sobre cada uno de los n individuos,
obteniéndose una matriz de datos de orden np (p < n).
En el ACP existe la opción de usar la matriz de correlaciones o bien, la matriz de
covarianzas. En la primera opción se le está dando la misma importancia a todas y a cada
una de las variables; esto puede ser conveniente cuando se considera que todas las
variables son igualmente relevantes. La segunda opción se puede utilizar cuando todas las
Diseño e implementación de un herramienta de detección facial
30
variables tengan las mismas unidades de medida y además, cuando se juzga conveniente
destacar cada una de las variables en función de su grado de variabilidad.
Las nuevas variables (componentes principales) son obtenidas como combinaciones
lineales de las variables originales. Los componentes se ordenan en función del porcentaje
de varianza explicada. En este sentido, el primer componente será el más importante por
ser el que explica mayor porcentaje de la varianza de los datos. Por el interés de la
investigación se decide cuántos componentes se elegirán en el estudio.
El análisis se realiza en el espacio de las variables y, en forma dual, en el espacio de los
individuos.
La ACP es una forma de identificar patrones en datos y representar los datos en una forma
tal que sus semejanzas y diferencias sean resaltadas. Este método resulta de gran utilidad
cuando es necesario buscar cierto tipo de información. Esta técnica se considera de las
más usadas en los procesos de reconocimiento facial [11, 12, 13].
2.4.1.2 Análisis de componentes independientes (ACI)
Consiste de transformar un conjunto de señales observadas en un conjunto de señales
estadísticamente independientes llamadas fuentes o componentes independientes del
primer conjunto. El principal objetivo de ACI es identificar a partir de las señales
observadas, un nuevo grupo de señales subyacentes con significado. Esta representación
puede ser usada en distintos ámbitos como la extracción de características y el
reconocimiento de patrones. Esta técnica difiere de los análisis en componente principales
en que ACI impone independencia de alto orden y no solo de segundo orden como en ACP.
ACI ha sido aplicado con éxito para la tarea del reconocimiento facial [14,15].
Diseño e implementación de un herramienta de detección facial
31
2.4.1.3 Análisis Discriminatorio Lineal (ADL)
ADL es una técnica de aprendizaje supervisado para clasificar datos. La idea central de ADL
es obtener una proyección de los datos en un espacio de menor (o incluso igual)
dimensión que los datos entrantes, con el fin de que la separabilidad de las clases sea la
mayor posible. Es una técnica supervisada ya que para poder buscar esa proyección se
debe entrenar el sistema con patrones etiquetados.
Es importante aclarar que ADL no busca en ningún momento minimizar el error de
representación cometido, como si lo hacia ACP. Este análisis de discriminación fue usado
para el reconocimiento de rostro por Etemad y Chellappa [16], así como Zhao et al. [17].
2.4.2 Técnicas de grafos: “Elastic Bunch Graph Matching” EBGM
Todos los rostros humanos comparten una estructura topológica similar, los rostros son
representados como grafos, con nodos posicionados en puntos específicos. Bordes
etiquetados con 2‐D vectores de distancia. Cada nodo contiene un conjunto de 40
coeficientes de ondeleta Wavelet de Gabor Wavelet, con diferentes escalas y
orientaciones. El reconocimiento se basa en etiquetar las graficas. Una grafica etiquetada
es un conjunto de nodos conectada por bordes, los nodos son etiquetados con los jets y
los bordes son etiquetados con las distancias [18,19].
2.4.3 Transformación de huella
La transformada de huella conocida en terminología inglesa como “trace transform” es
una generalización de la transformada de Radon y es una nueva herramienta para el
procesamiento de imágenes la cual puede ser usada para el reconocimiento de objetos
bajo trasformaciones geométricas tal como rotación, traslación y cambio de escala. Para
producir esta trasformación se calcula mediante una función de un parámetro o trazo
funcional a lo largo de las líneas de una imagen, diferentes transformadas pueden ser
producidas de una imagen usando diferentes trazos funcionales. El uso de esta
Diseño e implementación de un herramienta de detección facial
32
transformada en la problemática de reconocimiento facial fue desarrollada por Kadyrov y
Petrou [20], así como Srisuk et al. [21].
2.4.4 Modelo activo de apariencia
Es un modelo generalizado del modelo activo de patrón [22]. Es un método Iterativo para
ajustar un modelo a una imagen utilizando toda la información de la imagen en lugar de
únicamente los bordes. Es un modelo estático integrado, el cual combina un modelo de
variación de forma con un modelo de variaciones en la apariencia, en una forma
normalizada. Coincidiendo con imágenes que involucren parámetros de modelo los cuales
minimizan la diferencia entre la imagen y el modelo sintetizado dentro de la imagen.
2.4.5 Reconocimiento Facial 3‐D
2.4.5.1 El modelo de “morphing”
El rostro humano es una superficie que se extiende intrínsecamente en un espacio 3‐D.
Por lo tanto el modelo 3‐D debería ser mejor para la representación de rostros,
especialmente para el manejo de las variaciones faciales, como pose, iluminación, etc.
Blanz y Vetter [23] propusieron un método basado en el modelo de “morphing” que
codifica la forma y la textura como parámetros del modelo. Estos autores desarrollaron
algoritmos que permiten recupera los parámetros de una sola imagen del rostro. Otro de
los investigadores que utilizo este método fue Moghaddam et al. [24].
2.4.5.2 Invariancia a la deformación
La principal novedad de este enfoque es la habilidad de comparar superficies
independientes de las deformaciones naturales, como resultado de las expresiones
faciales. Primero, el rango de la imagen y la textura del rostro son adquiridas.
Posteriormente, el rango de la imagen es pre‐procesada quitando ciertas partes, como el
Diseño e implementación de un herramienta de detección facial
33
cabello, el cual puede resultar complicado para el proceso de reconocimiento. Finalmente,
una forma canónica de la superficie facial es computarizada.
Es una representación la cual es insensible a la orientación de la cabeza y expresiones
faciales, lo que implica la simplicidad del procedimiento de reconocimiento. El desarrollo
por sí mismo es empleado sobre superficies canónicas. Bronstein et al. [25] utilizan el
reconocimiento facial 3‐D.
2.4.6 Enfoque Bayesiano
El enfoque Bayesiano es una estructura probabilística basado en la aplicación del teorema
de Bayes. El teorema de Bayes ofrece un método estadístico para calcular la probabilidad
de que un suceso ocurra, partiendo de la probabilidad de que un evento ligado a este
ocurra. Este teorema es de gran utilidad para evaluar una probabilidad a posteriori
partiendo de probabilidades simples, y así poder revisar la estimación de la probabilidad a
priori de un evento que se encuentra en un estado o en otro.
Una medida de similitud probabilista basada en el enfoque Bayesiano se funda en que las
diferencias de nivel de gris en imagen son una característica de las variaciones típicas en la
apariencia de un individuo. Dos clases de variaciones de imágenes faciales son definidas:
variaciones interpersonales y variaciones extra personales. Algunos trabajos [26,27] se
basaron en esta medida de la similitud entre rostros utilizando la regla Bayesian para el
reconocimiento facial.
2.4.7 Máquinas de soporte vectorial
Las máquinas de soporte vectorial son básicamente algoritmos de clasificación de
patrones binarios, cuyo objetivo es asignar cada patrón a una clase mediante la búsqueda
del mejor hiperplano de separación que se traduce en un problema de optimización.
Existen varios métodos para esta optimización, siendo uno de los más conocidos el paso a
la formulación de LaGrange. La teoría fue desarrollada inicialmente por Vapnik [28] y se
centra en lo que se conoce como Teoría del Aprendizaje Estadístico.
Diseño e implementación de un herramienta de detección facial
34
Inicialmente se usaron para problemas de clasificación binaria, pero después se ha
extendido su uso a problemas de regresión, agrupamiento, clasificación multiclase,
regresión ordinal. Las máquinas de soporte vectorial adquirieron fama cuando dieron
resultados muy superiores a las redes neuronales en el reconocimiento de letra
manuscrita. El reconocimiento y la detección facial entre otras han sido un campo de
aplicación de esta técnica [29,30].
2.4.8 Redes neuronales
Una red neuronal es un conjunto de procesadores muy simples (neuronas)
interconectados que forman lo que se considera un modelo simplificado del cerebro. Una
neurona artificial tiene, generalmente, varias entradas y una salida. La salida es una
función de la suma de las entradas, multiplicadas por “pesos" asociados a las
interconexiones entre neuronas. Dichas neuronas se encuentran interconectadas
formando una red neuronal. Algunas tienen interconexiones al mundo externo (entrada /
salida) y otras son internas (escondidas).
Las redes neuronales se utilizan, normalmente, como elementos clasificadores o
memorias asociativas, asociando una serie de patrones de entrada con patrones de salida.
Para ello se entrena la red, alterando los pesos de las interconexiones de acuerdo a la
relación deseada.
Una forma de aplicar las redes neuronales para reconocimiento es mediante su aplicación
a ventanas de pixeles. Primero se entrenan con varios ejemplos positivos y negativos de
los objetos de interés, y después se aplican a toda la imagen detectando la localización de
dichos objetos donde se tenga mayor respuesta. Esto se puede extender a diferentes
resoluciones para hacer el proceso más eficiente. Para ello se utiliza una estructura
piramidal para representar la imagen y se comienza por los niveles superiores (menor
resolución), pasando al siguiente nivel cuando exista cierta respuesta, hasta llegar a la
máxima resolución. El proceso de entrenamiento se puede optimizar mediante el mapeo
de los pesos de las redes de ciertas resoluciones a otras.
Diseño e implementación de un herramienta de detección facial
35
Esta idea ha sido aplicada al reconocimiento y detección de rostros [31]. El problema con
este enfoque es que la red no es invariante ante cambios de escala y rotación problema
que trató de resolver en parte Rowley et al. [32] en sus trabajos.
2.4.9 Boosting y adaboost
Los métodos de “boosting” son algoritmos que en el enfoque supervisado conocen la
solución a priori y utilizaran esto para adaptar su comportamiento. El boosting se basa en
la pregunta ¿Puede un conjunto de clasificadores débiles crear un solo clasificador fuerte?
Un clasificador débil es definido como un clasificador que se correlaciona levemente con la
clasificación final. En cambio, un clasificador fuerte es un clasificador que se correlaciona
fuertemente con la clasificación final.
La mayoría de los algoritmos de boosting consiste en procesos iterativos que aprenden de
clasificadores débiles con respecto a una distribución, para finalmente agregarlos a un
clasificador final el cual es más fuerte. Cuando se agregan, son almacenados de manera
que se relaciona comúnmente con la precisión del clasificador débil. Después de que se
agrega un clasificador débil, los datos se vuelven a pesar. Los ejemplos que son clasificados
correctamente pierden peso y los que son clasificados de manera errónea aumentan su
peso. Así, los siguientes clasificadores se centran más en los ejemplos que los anteriores
clasificaron erróneamente.
Existen una variedad de algoritmos de boosting, los originales propuestos por Schapire
[33] y Freund [34] no eran adaptativos y no podían tomar ventaja completa de los
clasificadores débiles. Por tal motivo Freund y Schapire [35] proponen posteriormente
Adaboost, el cual es un algoritmo adaptativo que toma ventaja de los clasificadores
débiles para formar un clasificador fuerte.
El algoritmo de Adaboost es normalmente implementado utilizando arboles de decisión,
pero puede utilizar diferentes clasificadores de base incluyendo el Bayesiano simple.
Diseño e implementación de un herramienta de detección facial
36
Uno de los trabajos de detección de rostros en tiempo real es el esquema algorítmico
desarrollado por Viola y Jones [36, 37, 38] que se basa en el aprendizaje de AdaBoost para
construir un clasificador no lineal.
Varias referencias [5,39] muestran la eficacia de este sistema en término de detección, de
alarmas falsas y de rapidez. Por esta razón se eligió su implementación en esta tesis. Este
método se detallará en el siguiente capítulo.
Diseño e implementación de un herramienta de detección facial
37
Capítulo 3
Marco Teórico
Según los autores Li y Jain [5], en sus comparaciones de los diversos métodos de detección
del rostro, el método de Viola y Jones basado en Adaboost ha sido el más eficaz de todos
los trabajos desarrollados. En términos de relación detección y falsos positivos, este
método es comparable al de la red neuronal de Rowley y otros [32], pero se realiza varias
veces más rápidamente. Su sistema se considera el primer detector de rostro en tiempo
real.En este capítulo se detallará la técnica de Viola y Jones [36, 37,38] que ha sido elegida
entre otras por estas razones ya mencionadas para ser implementada en éste trabajo.
Viola y Jones presentaron un método rápido de detección de objeto basado en un
algoritmo en cascada usando descriptores simples llamados los descriptores de "Haar"
que pueden ser calculados de modo eficaz utilizando una representación intermediaria de
la imagen llamada imagen integral. Propusieron también un procedimiento de
clasificación a varias etapas el cual reduce considerablemente el tiempo de ejecución
realizado casi con la misma exactitud con relación a un algoritmo de clasificación mono‐
fase, que ciertamente es más lento y más complejo.
El principio de base del algoritmo de Viola y Jones es explorar una sub‐ventana capaz de
detectar rostros a través de una imagen de entrada. El acercamiento estándar en
procesamiento de imagen sería escalar la imagen de la entrada a diversos tamaños y
después convertir la ventana del detector en tamaño fijo en las imágenes. Este
acercamiento resulta ser bastante largo en tiempo de cálculo debido al cálculo de las
diversas imágenes en diferentes escalas.
Al contrario el acercamiento propuesto por Viola y Jones permite transformar en
diferentes escalas el detector en vez de la imagen de la entrada y de esta manera el
detector es aplicado muchas veces a la imagen, cada vez con un tamaño diferente. Como
se puede apreciar, ambos acercamientos son igualmente largos en tiempos de cálculo,
Diseño e implementación de un herramienta de detección facial
38
pero Viola y Jones ha tenido la idea de un detector invariante de la escala que requiere el
mismo número de operaciones en cualquier escala.
Este detector se construye usando una imagen integral supuesta y algunas características
rectangulares simples derivadas de las wavelet (ondeletas) de Haar. Más adelante se
describe en detalle este detector.
3.1 Descripción general Todo proceso automático de detección y seguimiento de rostro debe tomar en
consideración varios factores que contribuyen a la complejidad de su tarea, porque el
rostro es una entidad dinámica que cambia constantemente bajo la influencia de varios
factores.
La Figura 3.1 ilustra el paso general adoptado para realizar tales sistemas. En el mundo
físico, hay tres parámetros que hay que considerar: la iluminación, la variación de postura
y la escala. La variación de uno de estos tres parámetros puede influir considerablemente
en los resultados de nuestro sistema. Este último se requiere ser el más independiente
posible de estos parámetros, es decir un sistema autónomo que no pide condiciones
puestas de inicialización manualmente así como de informaciones a priori sobre el entorno
de implantación.
Diseño e implementación de un herramienta de detección facial
39
Figura 3.1 Detección Facial
El método adoptado, que se presenta en las secciones siguientes, requiere de una fase de
aprendizaje en la cual se forma una función de clasificación robusta. Esta función de
clasificación se explotará mediante el algoritmo de detección para poder ser separada
entre la clase de los rostros y la clase de no rostros.
Siguiendo este esquema, tres etapas son necesarias: el pre‐procesamiento o tratamiento
previo, la extracción de características y la decisión. Como es sabido el método de Viola y
Jones aplica escalas a grises a las imágenes, la primera etapa describe el proceso que se
aplica a la imagen en color [39]. Las dos siguientes etapas describen directamente el
método de Viola y Jones.
3.1.1 Preprocesamiento
3.1.1.1 Transformación a nivel de gris
Este método basado en los descriptores de Haar, se aplica en imágenes en niveles de gris.
Para sistemas que funcionan con imágenes colores (la imagen y el video porque la
Diseño e implementación de un herramienta de detección facial
40
detección se realiza en cada imagen de video), es necesaria una etapa de procesamiento
previo que transformara los colores en niveles de gris. En la gran parte de los casos, la
imagen está representada en el espacio de los colores YUV. En ese caso la imagen en nivel
de gris correspondiente se deduce directamente de la imagen original considerando
únicamente la luminancia de cada pixel (Y). El modelo YUV es un espacio de color en
términos de una componente de luminancia y dos componentes de crominancia. Es el
modelo usado en los sistemas PAL y NTSC de difusión de televisión, el cual es el estándar
en la mayoría del mundo. El modelo YUV está más próximo al modelo humano de
percepción que el estándar RGB usado en el hardware de gráficos por computadora.
La conversión YUV a partir del m RG va a me iante la operación (Fig. 3.2): odelo B se lle cabo d
0.299 0.587 0.1140.147 0.289 0.4360.615 0.515 0.100
Figura 3.2 Conversión YUV a partir RGB
3.1.1.2 Escalado por Interpolación
Otro procesamiento, que resulta útil, consiste en cambiar el tamaño de la imagen para
controlar mejor el tiempo de cálculo y el espacio memoria. Esta tarea se realiza mediante
uno de los métodos de interpolación. La interpolación puede considerarse como el cálculo
del valor de intensidad de un pixel, en una posición cualquiera, como una función de los
pixeles que lo rodea. Existen diferentes técnicas de interpolación, entre los cuales los más
utilizados en el procesamiento geométrico de imágenes son: bilineal, bicúbica y vecino
más cercano [10]. En la interpolación bicúbica se requiere del valor de los 16 puntos para
calcular el valor de punto central como se puede apreciar en la Figura. 3.3.
Diseño e implementación de un herramienta de detección facial
41
Figura 3.3 Interpolación bicúbica con el valor de los 16 puntos vecinos
3.1.1.3 Ecualización del histograma
Es una transformación que pretende obtener, para una imagen, un histograma con
distribución uniforme. Es decir, que exista el mismo número de pixeles para cada nivel de
gris del histograma.
Figura 3.4 Ecualización del histograma H;
En teoría, la aplicación de esta operación debería transformar el histograma en otro con
una forma perfectamente uniforme sobre todos los niveles de gris (Figura 3.4). Sin
embargo, en la práctica esto no se va a poder conseguir pues se estaría trabajando con
funciones de distribución discretas en lugar de continuas. En la transformación, todos los
pixeles de un mismo nivel de gris se transformarán a otro nivel de gris, y el histograma se
distribuirá en todo el rango disponible separando en lo posible las ocupaciones de cada
nivel.
Se puede aplicar diferentes tipos de ecualización [10]: ecualización uniforme, exponencial,
de Rayleigh, etc. La libraría OpenCV emplea la ecualización uniforme según la expresión:
Diseño e implementación de un herramienta de detección facial
42
∑ (3.1)
Donde es el histograma.
El resultado de la ecualización maximiza el contraste de una imagen sin perder
información de tipo estructural, esto es, conservando su Entropía (información). Esta
operación constituye una regulación óptima y automática del contraste de la imagen
evitando los ajustes manuales, con los que no se consigue un equilibrio óptimo entre el
blanco y el negro, Figura 3.5.
Figura 3.5 Mejoramiento del contraste por ecualización del histograma; la izquierda: imagen original; la derecha: imagen con ecualización del histograma.
3.1.1.4 Detección del Borde mediante el algoritmo de Canny
Algunas funciones de detección de rostro [39] utilizan el detector del borde de Canny [40]
para rechazar algunas regiones de la imagen que contengan demasiados o pocos
contornos, regiones que no puede contener el objeto buscado. El objetivo de este
procedimiento es acelerar el proceso de detección.
El algoritmo de Canny se considera uno de los mejores detectores del borde en
procesamiento de imágenes. Este algoritmo se fundamenta en la teoría de operadores de
la primera derivada, debido a que toma el valor de cero en todas las regiones donde no
varía la intensidad y tiene un valor constante en toda la transición de intensidad. Por lo
tanto un cambio de intensidad se manifiesta como un cambio brusco en la primera
derivada, característica que es usada para detectar un borde. El detector de Canny (Figura
Diseño e implementación de un herramienta de detección facial
43
3.6) resulta particularmente interesante porque extrae bordes y cierra los contornos
evitando posible rupturas de los mismos durante su extracción, este es desglosado en tres
módulos [10]:
1‐Obtención del gradiente: en este paso se calcula la magnitud y orientación del
vector gradiente en cada píxel.
2‐Supresión no máxima: en este paso se logra el adelgazamiento del ancho de los
bordes, obtenidos con el gradiente, hasta lograr bordes de un píxel de ancho.
3‐Histéresis de umbral: en este paso se aplica una función de histéresis basada en
dos umbrales; con este proceso se pretende reducir la posibilidad de aparición de
contornos falsos.
Figura 3.6 Ejemplo de detección del borde de Canny:
Izquierda: imagen original, derecha imagen del borde
3.1.2 Extracción de descriptores
A partir de la imagen transformada en nivel de gris, redimensionada y con una regulación
óptima y automática del contraste, se realiza la extracción de características o descriptores
que van a constituir la entrada del sistema de reconocimiento. Los descriptores son
extraídos a partir de la imagen en nivel de gris mediante la imagen integral. Se calcula la
imagen integral de los cuadrados.
Diseño e implementación de un herramienta de detección facial
44
El valor de la imagen integral de los cuadrados al punto (x; y) es la suma de todos los
valores de píxeles al cuadrado situados encima y a la izquierda. La imagen integral permite
reducir considerablemente el tiempo de cálculo de los descriptores. Lo mismo la imagen
integral de los cuadrados es una representación de la imagen que permite calcular el
covariancia en una ventana muy rápidamente a partir de cuatro referencias solamente.
3.1.3 Block de decisión
La imagen integral y la función de clasificación son las entradas de un bucle. A cada
iteración, la ventana de barrido será redimensionada; siendo más precisos, será
aumentada por un factor bien escogido de escala. Por consecuencia, los datos de la
función de clasificación deben ser adaptados a este cambio.
La adaptación principalmente consiste en redimensionar los rectángulos de Haar
proporcionalmente al tamaño de la ventana. Este bucle garantiza la detección de rostro a
toda escala, pues su parámetro principal es el factor de escala. Este parámetro
generalmente es entre 1.1 y 1.4.
A fin de poder localizar los rostros en todo emplazamiento de la imagen, esta ventana
debe recorrer toda la imagen. Por consecuencia, un bucle imbricado se impone, y cuyo
paso es el parámetro determinante. A cada iteración, un algoritmo de decisión se ejecuta.
La Figura 3.6 resume el funcionamiento del método de detección de rostro.
Diseño e implementación de un herramienta de detección facial
45
Figura 3.7 Sistema de detección de Viola y Jones [36]
3.2 Descriptores de Harr
El valor de un punto de la imagen solo nos informa sobre el color en este punto. Una
técnica más elaborada es encontrar detectores basados en características más globales del
objeto. Es el caso de los descriptores de Haar. Estos descriptores son funciones que
permiten acentuar la diferencia de contraste entre diferentes regiones rectangulares
adyacente en una imagen. Es una manera de codificar los contrastes existentes entre un
rostro y las relaciones espaciales.
Un descriptor (figura 3.7) es representado por un rectángulo definido por su vértice, su
altura, su longitud y sus pesos (negativo o positivo, de cada rectángulo).
Diseño e implementación de un herramienta de detección facial
46
Hay muchas motivaciones para el uso de los descriptores más bien que los píxeles
directamente: el sistema fundado sobre los descriptores es más rápido que un sistema
fundado sobre los píxeles (Figura 3.8).
Figura 3.8 Representación de un descriptor
Los descriptores simples utilizados son inspirados por las funciones de base de Haar que
han sido empleados por Papageorgiou y al [41]. Más específicamente, Viola y Jones [36]
emplearon tres tipos de descriptores (Figura 3.9).
Un descriptor a dos rectángulos es la diferencia entra la suma de los píxeles de
ambas regiones rectangulares. Las regiones tienen el mismo tamaño y forma y
están horizontalmente o verticalmente adyacentes.
Un descriptor a tres rectángulos, es la suma de los píxeles en ambos rectángulos
exteriores sustraídos por la suma en el rectángulo central.
Un descriptor a cuatro rectángulos es la diferencia entre los pares diagonales de los
rectángulos.
Figura 3.9 Los tres tipos de descriptores de Haar
Diseño e implementación de un herramienta de detección facial
47
Lienhart et Maydt [42] han propuesto una extensión de estos descriptores incluyendo unos sometidos a una rotación de 45 grados (Figura 3.10).
Figura 3.10 Extensión de los descriptores de Haar.
Como ejemplo, en el caso que el tamaño de la ventana de base (imagen en entrada) ha
sido fijado sobre 24 × 24, este método utiliza un número grande de descriptores (45396
descriptores según Viola y Jones). Así, el número de descriptores es considerablemente
más grande que el espacio de la imagen (en este caso 576 píxeles).
3.3 Imagen Integral
Los descriptores rectangulares pueden ser calculados de modo eficaz utilizando una
representación intermediaria de la imagen llamada la imagen integral. Esta imagen,
resultado del trabajo publicado por Crow [43], es obtenida a partir de un algoritmo que
permite generar de manera eficiente y rápida la suma de los valores de un rectángulo
adentro de una imagen.
La imagen integral es una matriz del mismo tamaño que la matriz de la imagen original
donde cada elemento de la Imagen Integral a la posición (x; y) contiene la suma de todos
los píxeles localizados en la región superior izquierda de la imagen original (Figura 3.11).
Diseño e implementación de un herramienta de detección facial
48
Figura 3.11 El valor de la imagen integral al punto (x, y) es igual a la suma de todos los e uados en la izquierda. píxel s sit cima y a
, , (3.2) ∑ ,
, es la imagen integral y , es la imagen original. Usando las dos siguientes
operaciones:
(3.3) , , 1 ,
, 1, (3.4) ,
Donde , es suma acumulada en línea y , 1 0 1, 0
Así la imagen integral puede ser calculada en un solo barrido sobre la imagen original.
Utilizando esta representación cualquier suma de píxeles en un rectángulo
correspondiente a un descriptor puede ser calculada a partir de cuatro referencias
solamente por la imagen integral.
Figura 3.12 La suma del Píxel en el rectángulo D puede ser calculada con solamente cuatro referencias. El valor de la imagen integral en el lugar 1 es la suma del Píxel en el rectángulo A. El valor en el lugar 2 es A + B, en el lugar 3 es A + C, y en el lugar 4 es A + B + C + D
Diseño e implementación de un herramienta de detección facial
49
La Figura 3.12 muestra que la diferencia entre dos sumas de píxeles en una región
rectangular puede ser calculada a partir de ocho referencias. Ya que el descriptores a dos
rectángulos definidos anteriormente son por definición adyacentes, eso implica que
pueden ser calculados por seis referencias solamente de la imagen integral, ocho en el
caso el descriptores a tres rectángulos, y nueve para descriptores.
3.3.1 Importancia de los descriptores de Harr‐Like
Los descriptores rectángulos son atributos simples en comparación con otros medios de
análisis local tales como los filtros orientados. Los filtros orientados son excelentes para el
análisis detallado de las fronteras, la compresión de imagen, y el análisis de textura.
Los descriptores, a pesar de la sencillez son sensibles a la presencia de los contornos, las
barras y otras estructuras simples en la imagen.
Con el fin de apreciar la ventaja informática de la técnica de imagen integral, consideremos
el caso de detección de objeto basada en una pirámide de imágenes (imágenes a
diferentes escalas). Como en la mayoría de los sistemas de detección de objeto, el
algoritmo recorre la imagen de entrada a diferentes escalas comenzando con la resolución
más baja.
En calidad de ejemplo, podemos considerar una imagen de tamaño de 24x24 píxeles, la
imagen es recorrida a 11 escalas, cada una es más pequeña que la precedente teniendo un
factor de 1.25. Una ventana de tamaño fijo es recorrida a través de cada una de estas
imágenes implicando un aumento en tiempo de cálculo además del tiempo dedicado al
cálculo de la pirámide.
Como conclusión, la gran ventaja del uso de los descriptores es que representan un
conjunto significativo de descriptores, que tienen la propiedad de ser evaluado en
cualquier escala y cualquier lugar mediante muy pocas operaciones. Como demostraron
Diseño e implementación de un herramienta de detección facial
50
Viola y Jones [36], los algoritmos de detección con resultados aceptables podían ser
construidos con solamente dos descriptores.
3.4 Algoritmos de Aprendizaje
A partir de un conjunto de descriptores y un conjunto de imágenes correspondientes a
rostros (imágenes positivas) y a no rostros (imágenes negativas), un método de
aprendizaje puede emplearse para deducir una función de clasificación.
Se debe tomar en cuenta que el conjunto de los descriptores rectángulo está formado por
45396 descriptores, un número más grande que el número de pixeles en la imagen.
Aunque cada descriptor puede ser calculado de una manera eficaz, la utilización del
conjunto completo es excesivamente costosa. La hipótesis que ha sido confirmada por una
consecuencia de experiencias, es que un número limitado de estos descriptores puede
emplearse para formar una función de clasificación fuerte. El reto principal es encontrar a
estos descriptores.
En los trabajos de Viola y Jones [36, 37, 38] una versión de algoritmo de aprendizaje
conocido bajo el nombre de ”AdaBoost“, que significa “adaptative boosting“ (Tabla 3.1) , se
empleó para elegir los descriptores y formar la función de clasificación. Es uno de los
algoritmos más utilizados en aprendizaje automático.
Bajo su forma original, el algoritmo de aprendizaje de AdaBoost se empleó para mejorar
un algoritmo de aprendizaje simple. Su principio consiste en combinar un conjunto de
funciones sencillas o débiles de clasificación para formar una función de la clasificación
fuerte. La función de clasificación es débil si es solamente capaz de reconocer dos clases al
menos.
Para un problema dado una función de clasificación débil puede solamente clasificar los
datos de la base de aprendizaje correctamente al 51%. Después de la primera fase del
aprendizaje, los ejemplos serán combinados de modo que las que han sido clasificadas mal
por la función de clasificación anterior tendrán el peso más grande. La función fuerte de
Diseño e implementación de un herramienta de detección facial
51
clasificación final toma la forma de un perceptor = una combinación ponderada de
funciones de clasificación débiles (según su calidad de clasificación).
Consideremos el problema de aprendizaje, en el cual se combina un gran conjunto de
funciones de clasificación utilizando un voto mayoritario ponderado. El reto es asociar un
gran peso a cada mejor función de clasificación y un peso más pequeño a las funciones
débiles.
AdaBoost es un mecanismo que permite elegir un pequeño conjunto de buenas funciones
de clasificación que tienen sin embargo una variación significativa. Por medio de una
analogía entre las funciones de clasificación y los descriptores débiles de Haar, AdaBoost
es un procedimiento eficaz para seleccionar un número limitado de buenos descriptores.
Un método práctico para entender esta analogía es limitar la función débil de clasificación
en el conjunto de las funciones de clasificación que dependen de un único descriptor. Es
para eso que el algoritmo de aprendizaje débil se concibe para elegir al descriptor que
separa mejor las imágenes positivas s. de las negativa
Una función de clasificación débil , , , consta así de un descriptor de un
umbral y de una paridad que indica la dirección de la señal de desigualdad:
, , , 1 0
(3.5)
Donde x es una ventana de la imagen en entrada.
En la Tabla 3.1 se muestra el algoritmo de Adaboost desarrollado y publicado por sus
autores Viola y Jones [38].
Diseño e implementación de un herramienta de detección facial
52
Tabla 3. ritmo aboost 1 El algo de Ad
‐Dado un conjunto de imágenes 1, 1 , … . , donde 1 0,1 para muestras
negativas y positivas respectivamente.
• Inicializar los pesos , , para yi=0,1
Donde m es el número de muestras negativas y l es el número de muestras positivas.
• Para t = 1, . . . , T:
1) Normalizar los pesos , ∑ ,
2) Seleccionar la mejor clasificadora base respecto al error de peso.
min , ,θ | , , , |
3) Define , , , , donde , , son usadas para minimizar .
4) Actu iz pesos: , , al a los
Donde 0 si la muestra es clasificada correctamente, o 0 en otro caso,
con
• El clasificador robusto final queda: 1 ∑ ∑0
Donde
Las experiencias iníciales [36,37] han mostrado que una función de clasificación
constituida de 200 descriptores daría resultados razonables el porcentaje de buena
detección es del 95% y el número de falsa alarma es de 1 sobre un conjunto 14084 datos
de prueba.
Diseño e implementación de un herramienta de detección facial
53
Para caracterizar bien el rostro, los descriptores rectángulos iniciales elegidos por Ada‐
Boost son significativos y fácilmente interpretados. La elección del primer descriptor se
basa en la propiedad que la región de los ojos es a menudo más oscura que la región de la
nariz y las mejillas (Figura 3.13). El segundo descriptor elegido se basa en la propiedad que
los ojos son más oscuros que el puente de la nariz.
Figura 3.13 Los dos descriptores de Haar más discriminantes seleccionados por Adaboost
En resumen la función de clasificación a 200 descriptores ha mostrado que una función de
clasificación construida a partir de descriptores rectángulos es una técnica eficaz para la
detección de objeto. En términos de detección, estos resultados son alentadores pero no
son suficientes para mucha aplicación. En términos de cálculo, esta función de clasificación
es probablemente más rápida que cualquier otro sistema publicado, necesitando 0.7
segundos para recorrer una imagen de 384 × 288.
Desgraciadamente, la técnica más directa para mejorar la detección de rostro, es añadir
descriptores a la función de clasificación, y en consecuencia se aumenta directamente el
tiempo de cálculo.
3.5 Las Funciones de clasificación en cascada
Una función de clasificación es un algoritmo capaz distinguir al menos entre dos clases. En
nuestro caso clase de los rostros y no rostros.
Diseño e implementación de un herramienta de detección facial
54
3.5.1 Disposición de las funciones de clasificación
Se describe a continuación un algoritmo constituido por una sucesión de funciones de
clasificación que realiza un incremento de detección mientras reduce radicalmente el
tiempo de cálculo. Las funciones de clasificación se colocan en cascada: las funciones de
clasificación más débiles se emplean en primer lugar para rechazar la mayoría de las
ventanas antes de que las funciones de clasificación más complejas realizan baja tasa de
falsa alarma.
Los resultados de detección de una función de clasificación a dos descriptores son lejos de
ser aceptables para un sistema de detección de objeto. Sin embargo esta simple función
de clasificación puede significativamente reducir el número de las ventanas candidatas con
muy pocas operaciones:
1. Evaluar los descriptores rectángulos (exige entre 6 y 9 referencias por descriptor).
2. Calcular la función de clasificación débil para cada descriptor (exija una operación
de umbral por descriptor).
3. Combinar las funciones de clasificación débiles (exija una multiplicación por
descriptor, adición, y finalmente una comparación por descriptor).
La forma global del método de detección es la de un árbol degenerado de decisión (Figura
3.14). Un resultado positivo de la primera función de clasificación activa la evaluación de
una segunda función de clasificación que también ha sido ajustada para realizar tasa muy
elevada de detección. Un resultado positivo de la segunda función de clasificación activa
una tercera función, y así sucesivamente. Resultados negativos conducen al rechazo
inmediato de la ventana.
Diseño e implementación de un herramienta de detección facial
55
Figura 3.14 Esquema del árbol de las funciones de clasificación en cascada, n: clasificador, V: verdad, F: Falso.
La función de clasificación inicial elimina un gran número de ejemplos negativos con pocos
tratamientos. Las capas siguientes eliminan los negativos adicionales pero exigen un
cálculo adicional. Después de varias etapas de tratamientos se redujo radicalmente el
número de ventanas.
La estructura del árbol refleja el hecho de que para cualquier imagen simple la mayoría de
las ventanas son negativas. Así pues, la función intenta rechazar tantos negativos posibles
lo más pronto posible. Mientras que un ejemplo positivo desencadenará la evaluación de
cada función de clasificación en el árbol. Al igual que cualquier árbol de decisión, estas
funciones de clasificación se forman utilizando ejemplos que se deslizan por todas las
etapas anteriores. En consecuencia, una función de clasificación se está cargada de una
tarea más difícil que la anterior.
Diseño e implementación de un herramienta de detección facial
56
3.5.2 Árbol de funciones del clasificador
El proceso de concepción de las funciones de clasificación debe responder a un conjunto
de objetivos de detección y resultados. Para la detección de rostro, se han realizados tasas
de detección elevados (entre 85% y 95%) y tasas de falsas alarmas extremadamente bajo
(sobre el orden 10 ‐5% o 10 ‐6%). El número de etapas de transición y el tamaño de cada
etapa deben ser suficientes para realizar un resultado similar de detección reduciendo al
mínimo el tiempo de cálculo. Dado un árbol de funciones de clasificación, la tasa de falsas
alarmas es definida:
∏ (3.6)
Donde K es el número de funciones de clasificación, y es el la tasa de falsa alarma de la
I‐ésima función de clasificación calculada a partir de los ejemplos de formación. Del mismo
modo, la tasa de detección D es dado por:
∏ (3.7)
Donde es la tasa de detección de la I‐ésima función de clasificación.
El número de descriptores se evalúa cuando se prueba sobre imágenes verdaderas.
Cualquier ventana dada progresará en el árbol, hasta que se decida que la ventana es
negativa o, la ventana supera todas las pruebas y se señala como positiva. El
comportamiento previsto de este proceso viene determinada por la distribución de la
ventana la imagen en un conjunto típico de prueba. La medida principal de cada función
de clasificación es la tasa de detección llamado también la tasa positiva. El número
previsto de descriptor lúa :es que se eva es
∑ ∏ (3.5)
Dónde K es el número de funciones de clasificación, es la tasa positiva de la I‐ésima
función de clasificación, y es el número de descriptores en la I‐ésima función de
clasificación.
Diseño e implementación de un herramienta de detección facial
57
El proceso de formación de cada elemento del árbol exige un determinado cuidado. El
algoritmo de aprendizaje de “AdaBoost”, intenta reducir al mínimo los errores, y no se
concibe realizar una tasa elevada de buena detección. Simplemente, para controlar estos
errores se puede ajustar el umbral del perceptron producido por “AdaBoost”.
El proceso global de formación implica dos tipos de compromiso. En la mayoría de los
casos las funciones de clasificación con más descriptores realizarán tasas más elevadas de
buena detección y reducirán las tasas de falsas alarmas. Al mismo tiempo las funciones de
clasificación con más descriptores necesitan más tiempo de cálculo. En principio se podría
definir un marco de optimización en el cual el número de etapas de clasificación, el
número de descriptores, de cada etapa, el umbral de cada etapa, se negocian con el fin
de reducir al mínimo el número previsto de descriptores N siguiendo F y D.
Desgraciadamente la conclusión de esta optimización es un problema enormemente
difícil. En la práctica se emplea un marco muy simple para producir una función de
clasificación fuerte. El usuario elige las tasas mínimas aceptables para los y los . Las
tasas se determinan examinando el detector que corre sobre un conjunto de validaciones.
Si no se alcanza aún la tasa de falsas alarmas de objetivo global entonces se añade otra
capa al árbol. El conjunto negativo para las capas siguientes de formación se obtiene
reuniendo todas las falsas detecciones cometidas por el detector que corre sobre un
conjunto de imágenes que no contienen ningún ejemplo del objeto que debe detectarse.
3.5.3 Importancia de la estructura en cascada.
Con el fin de explorar la viabilidad del enfoque árbol de funciones de clasificación se
formaron dos detectores simples: una función de clasificación monolítica a 200
descriptores y un árbol de funciones de clasificación de 20 períodos de prácticas que
tienen cada uno 20 descriptores.
Diseño e implementación de un herramienta de detección facial
58
La función de clasificación del primer período de prácticas en el árbol se formó utilizando
5000 rostros y 10000 no rostros aleatoriamente elegidos a partir de las imágenes que no
contienen rostros. La función de clasificación del segundo período de prácticas se formó a
partir de las mismas 5000 rostros más 5000 no rostros de la primera función de
clasificación. Este proceso se repite de modo que las etapas siguientes se formen
utilizando los falsos positivos de la etapa anterior. Podríamos naturalmente emplear todas
las ventanas posibles de todas nuestras imágenes no rostro, pero esto cuesta muy caro en
tiempo de cálculo.
Figura 3.15 Comparación entre un detector de rostro simple compuesto de 200 funciones de clasificación y un detector compuesto de 20 períodos de prácticas de 10 funciones de
clasificación [38].
Las dos curvas de la Figura 3.15 ponen de manifiesto que las tasas de buenas detecciones
y de falsa alarma de una función de clasificación a 200 descriptores y un árbol de
funciones de clasificación son muy cercanas, pero la gran diferencia es la velocidad de
ejecución.
Diseño e implementación de un herramienta de detección facial
59
Comparando la velocidad de una función de clasificación monolítica y la de de un árbol de
funciones de clasificación conectado en cascada, la segunda es mucha más rápida. Por lo
tanto, se deduce la importancia de la estructura en cascada en un sistema de detección
tiempo real.
Diseño e implementación de un herramienta de detección facial
60
Capítulo 4
Implementación del algoritmo En este capítulo se explicara cómo se implemento la técnica de Viola y Jones. Está se
desarrollo en entorno Visual Studio 2008 con lenguaje C# y las librerías de OpenCV bajo
Emgu. Se introduje una breve explicación de estos elementos computacionales seguida
con una explicación detallada de la fase de entrenamiento de esta técnica usando librería
OpenCV. La fase de entrenamiento es de suma importancia puesto que influye en los
resultados de la detección. Una mirada del software desarrollado se presentara en el
parágrafo titulado implementación seguida de los resultados obtenidos.
4.1. Elementos computacionales.
4.1.1 Microsoft Visual Studio.
Microsoft Visual Studio 97 fue la primera versión que salió al mercado, ésta incluía Visual
Basic 5.0 y Visual C++ 5.0 para realizar software para Windows específicamente, mientras
que Visual J++ 1.1 era para Java y Windows. Los otros lenguajes eran Visual Fox Pro 5.0
para la Bases de Datos y Visual InterDev 1.0 para crear sitios dinámicos con ASP. Esto,
como se puede adivinar por la versión del producto, se realizó en 1997. Microsoft Visual
Studio 6.0 salió al siguiente año, en 1998. Con esto se movieron los números de versión de
todos los Lenguajes de Programación y fue la última versión que Visual J++ y Visual
InterDev aparecieron en una paquetería de Visual Studio. Microsoft Visual Studio .NET
2002 fue un salto completamente drástico, ya que se cambia completamente la
estructura. Ahora con .NET los programas no se compilan para generar un ejecutable
máquina (un archivo .EXE conocido comúnmente para el ambiente Microsoft Windows),
sino que se genera un archivo intermedio para poder ser ejecutado en diferentes
Diseño e implementación de un herramienta de detección facial
61
Plataformas (al decir Plataforma me refiero a distintas Arquitecturas de Software y
Hardware, como GNU/Linux, Solaris de Sun Microsystems o Mac OS X de Apple Inc.).
A esta versión se le agregan nuevos lenguajes que son: Visual J# (sucesor del desaparecido
Visual J++), Visual C#, .NET.Microsoft Visual Studio 2008, es un entorno de desarrollo
integrado (IDE) para sistemas operativos Windows. Soporta varios lenguajes de
programación como C ++, Visual C#, Visual J#, ASP.NET .Visual Studio permite a los
desarrolladores crear aplicaciones, así como servicios Web en cualquier entorno que
soporte la plataforma .NET. Así como dispositivos móviles.
4.1.2 Open CV OpenCV viene de las siglas Open Source Computer Vision Library [39], es una librería
abierta desarrollada por Intel en el año de 1999, contiene cerca de 500 funciones. Esta
librería proporciona un alto nivel de funciones para el procesado de imágenes. Estas
librerías permiten a los programadores crear aplicaciones poderosas. Open CV ofrece
varios tipos de datos de alto nivel como juegos, arboles, gráficos, matrices, etc. Funciona
en muchas plataformas. Algunas de las características que permite Open CV, son
operaciones básicas, procesamiento de imágenes y análisis. Análisis estructural, análisis de
movimiento, reconocimiento del modelo, reconstrucción 3D y calibración de la cámara
etc.
Open CV implementa una gran variedad de herramientas para la interpretación de la
imagen. Es compatible con la librería de procesamiento de imágenes de Intel (Intel Image
Processing Library (IPL)) la cual implementa algunas operaciones en imágenes digitales. A
pesar de primitivas como binarización, filtrado, estadísticas de la imagen, pirámides, Open
CV es principalmente una librería que implementa algoritmos para las técnicas de la
calibración (Calibración de la Cámara), detección de rasgos, para rastrear (Flujo Óptico),
análisis de la forma (Geometría, Contorno que Procesa), análisis del movimiento (Plantillas
del Movimiento, Estimadores), reconstrucción 3D (Transformación de vistas),
segmentación de objetos y reconocimiento (Histograma, etc.).
Diseño e implementación de un herramienta de detección facial
62
El rasgo esencial de la librería junto con funcionalidad y la calidad es su desempeño. Los
algoritmos están basados en estructuras de datos muy flexibles, acoplados con estructuras
IPL; más de la mitad de las funciones ha sido optimizada aprovechándose de la
Arquitectura de Intel.
4.1.3 Emgu. Emgu CV es una plataforma cruzada .Net ligada a la librería de Intel Open CV de
procesamiento de imágenes, permitiendo que las funciones de Open CV sean llamadas
desde .NET, compatible con lenguajes como C#, VB, VC ++ etc. Emgu CV está escrito en C#,
pude ser compilado en forma Mono (Monodevelop) por lo cual puede correr en cualquier
plataforma que contenga la forma Mono, incluyendo Linux/Solaris y mac.
Es necesario bajar todos los dlls que vienen incluidos en Emgu CV en la carpeta donde se
ejecuta el código. Para que el código pueda correr sin ningún problema.
4.2 Entrenamiento usando Haartraining.
La librería de Open CV, provee programas o comandos los cuales son usados para entrenar
clasificadores llamado HaarTraining por lo tanto es posible crear clasificadores propios
haciendo uso de éstas. Estos comandos son: “createsamples.exe”, “haaartraining.exe” y
“performance.exe”. Por otro lado, OpenCV viene con unos clasificadores ya entrenados
para detección facial frontal y otros objetos en uno archivos con extensión xml (apartado
4.3.3). El objeto de interés puede ser cualquier objeto como árbol, fruta, coche, etc., no
solamente el rostro. Para el logro de este clasificador es preciso completar los pasos
(Figura 4.1) que se describen a continuación.
Diseño e implementación de un herramienta de detección facial
63
Figura 4.1 Pasos para creación del clasificador
4.2.1 Imágenes de muestra
La parte más importante del proceso de entrenamiento del clasificador es la de
recolección de una gran cantidad de muestras positivas y negativas, de forma que de ellas
se puedan extraer las mejores reglas posibles que formen un detector de objetos potente.
El conjunto de imágenes se dividen en dos grupos: (1) las muestras positivas son en
imágenes que contienen múltiples ejemplos de la clase objeto de interés y (2) la muestras
negativas con una colección de imágenes donde no se encuentren dichos objetos que se
pretende detectar. En realidad cuatro muestras son necesarias:
• Muestras positivas para el entrenamiento (generación del clasificador)
• Muestras negativas para la prueba de clasificador
• Muestras positivas para el entrenamiento
• Muestras negativas para la prueba de clasificador
4.2.2 Preparación de muestra
Las muestras positivas necesarias para construir el clasificador se crean con la utilidad
Createsamples. Tras su ejecución, se crea un archivo de extensión vec que servirá al
clasificador para su entrenamiento.
El Createsamples puede tomar como base para la creación del archivo de entrenamiento
una única imagen del objeto o una colección de imágenes con las coordenadas exactas
Diseño e implementación de un herramienta de detección facial
64
donde se encuentre el objeto en cada una (archivo índice). El programa es capaz de, a
partir de rotaciones aleatorias, cambios en el color, así como colocación sobre diversos
fondos, generar un gran conjunto de muestras positivas que sirvan para el entrenamiento.
Por ello es necesario crear un archivo de índices con información sobre el conjunto de
muestras. Este archivo de índices (de extensión txt o idx) tendrá la siguiente estructura:
nombre_archivo1 número_muestras x11 y11 w11 h11 x12 y12...
nombre_archivo2 número_muestras x21 y21 w21 h21 x22 y22...
...
siendo nombre_archivo el nombre de la imagen donde se encuentran los objetos a buscar.
Debemos destacar que el nombre del archivo debe ir acompañado de su dirección dentro
del sistema de archivos. número_muestras el número de objetos positivos que se
encuentran en la imagen.
La llamada al programa para crear el archivo de extensión vec tiene los siguientes
argumentos:
• ‐vec: tras este flag se escribe el nombre del archivo vec que creará el Createsamples a
partir de las muestras proporcionadas.
• ‐info: precederá al nombre del archivo lista que contendrá todas las imágenes de los
objetos que constituyen las muestras positivas.
• ‐bg: nombre del archivo con la lista de las imágenes que servirán de fondos (muestras
negativas).
• ‐num: indica al Createsamples el número de muestras que contiene el archivo lista y que
por tanto añadirá en el formato adecuado en el archivo vec.
• ‐w: indica el ancho deseado para las muestras creadas en la ejecución del
Createsamples. Su valor por defecto es de 24 píxeles.
• ‐h: indica el valor para el alto de las muestras. Su valor por defecto es 24 píxeles.
Además de éstas, el programa también dispone de otras opciones cuyo objetivo es indicar
los ángulos máximos en cada dirección para realizar las rotaciones o para hacer la
inversión de los colores de la muestra.
Diseño e implementación de un herramienta de detección facial
65
4.2.3 Obtención del clasificador
El comando para ejecutar el Haartraining tiene los siguientes argumentos:
• ‐data: nombre del directorio donde se almacena el clasificador.
• ‐vec: nombre del archivo de extensión vec creado con la utilidad Createsamples.
• ‐bg: nombre del archivo índice de muestras negativas.
• ‐npos: número de muestras positivas usadas en el entrenamiento de cada etapa del
clasificador. Su valor por defecto es 2000.
• ‐nneg: Aquí se introduce el número de muestras negativas que se le solicita al
entrenamiento que encuentre en las imágenes de fondo del tamaño especificado. Para
cada etapa que construya, tendrá que encontrar este número basándose en las etapas de
clasificación que ya ha construido, de forma que sean candidatos que le sigan aportando
información. Su valor por defecto también es 2000.
• ‐nstages: número de etapas a construir. Por defecto es 14.
• ‐nsplits: Hace referencia a la estructura del árbol de clasificación ya que permite
especificar el número de nodos.
• ‐mem: Permite seleccionar la memoria de la que hará uso el programa para la ejecución.
Cuanta más se asigne, ésta será más rápida.
• ‐sym; ‐nonsym: especifica si la clase del objeto bajo entrenamiento tiene simetría
vertical o no. La simetría vertical acelera el proceso de entrenamiento.
• ‐minhitrate: Mínima tasa de detección que se desea alcanzar en cada etapa, siendo la
tasa del clasificador completo ese mismo valor elevado al número de etapas. El valor por
defecto es 0.995.
• ‐maxfalsealarm: Valor máximo para la falsa alarma de cada etapa. La total se obtiene de
la misma forma que la tasa de detección. Su valor por defecto es de 0.5.
• ‐mode: Permite escoger, para las características Haar, si se desea el conjunto básico
(BASIC) o el conjunto extendido (ALL). La forma por defecto es la primera.
• ‐w: Sirve para especificar el ancho de las muestras positivas proporcionadas. Su valor por
defecto es 24 píxeles.
Diseño e implementación de un herramienta de detección facial
66
• ‐h: Ídem que el anterior para el alto de las muestras. Su valor por defecto es también 24
píxeles, y esto se corresponde con los valores por defecto del Createsamples.
Esta etapa de entrenamiento no crea un archivo con extensión xml, para generarlo se
utiliza el código convert_cascade.c que se encuentra en OpenCV.
4.2.4 Rendimiento del clasificador
Una vez ejecutado el programa Haartraining, el clasificador puede ser probado con la
utilidad Performance. Es conveniente realizar el test del clasificador con muestras distintas
a las utilizadas durante el entrenamiento.
El comando Performance tiene los siguientes argumentos:
• ‐data: nombre del directorio donde se almacena el clasificador.
• ‐info: precederá al nombre del archivo lista que contendrá todas las imágenes de los
objetos que constituyen las muestras positivas.
• ‐maxSizeDiff y –maxPosDiff: determinan la coincidencia de detección de los rectángulos.
Los valores por defecto son 1,5 y 0,3 respectivamente.
• ‐sf: parámetro de detección. Por defecto vale 0,3.
• ‐w y –h: tamaño de las muestras (en píxeles). Debe ser el mismo que el usado durante el
entrenamiento con la utilidad Haartraining.
La salida por pantalla será de la forma: File Name| Hits |Missed| False|
donde File Name indica el nombre del archivo analizado, Hits muestra el número de
objetos correctos encontrados en el archivo, Missed el número de objetos no encontrados,
que el programa detecta que existen pero no los encuentra (falsos negativos) y False el
número de falsas alarmas, que no existen pero el programa los detecta (falsos positivos).
Tras su ejecución, el programa creará por cada imagen indicada en el archivo de índices,
otra con las siguientes características:
• Variará el nombre del archivo, anteponiendo el código det‐ al que tenía la imagen
original. Es decir, si inicialmente tenemos una imagen de nombre salida.jpg, el programa
creará otra con el nombre det‐salida.jpg.
Diseño e implementación de un herramienta de detección facial
67
•Si el objeto a buscar es encontrado correctamente, la nueva imagen contendrá un
rectángulo rojo alrededor del objeto; si devolvió un falso negativo, la imagen será igual a la
original y si devolvió un falso positivo, la imagen contendrá un rectángulo rojo situado
donde el programa detectó el falso positivo.
• Las nuevas imágenes se guardarán en el mismo directorio donde se encuentran las
originales.
4.3 Implementación En este parágrafo se explicara el diseño del software desarrollado en esta tesis. Ésta se
implementó en entorno Visual Studio 2008 con lenguaje C# y las librerías de Open CV bajo
Emgu, usando el detector de objetos disponible en estas librerías, llamado
DetectHaarCascade bajo Emgu o cvHaarDetectObjects bajo OpenCV. Asimismo se empleo
las funciones de clasificación en cascada de la librería OpenCV.
4.3.1 Requerimientos mínimos del sistema
El sistema desarrollado se denomina Sistema de Detección Facial en Sistemas de Cómputo versión 1.0, para su adecuado funcionamiento se enlistan las características mínimas de hardware requerido:
Sistema operativo: Windows XP o superior.
Procesador: Pentium 4 (1.5 GHz.) o similar
Memoria RAM: 512 MB. con Windows XP o 1 GB. con Windows Vista
Cámara: VGA (640 x 480)
4.3.2 Software desarrollado
Ejecutándolo, la primera ventana que se muestra es la pantalla principal del proyecto
(Figura 4.2).
Diseño e implementación de un herramienta de detección facial
68
Figura 4.2 Pantalla principal del software
Cuenta con un botón en la parte inferior derecha para continuar, la cual nos llevará a otra
ventana (Figura 4.3) con las opciones Ventanas o Ayuda.
Figura 4.3 Primera elección del software
La opción Ventanas (Figura 4.4) permite la elección de los tipos de imágenes a tratar:
imágenes fijas (fotos) o imágenes de video mediante cámara WEB (Video) así como el
cierre de todas las ventanas abiertas en el procesamiento o salir del software.
Diseño e implementación de un herramienta de detección facial
69
Figura 4.4 Selección de tipo de imágenes
Si se selecciona la opción foto, se podrá seleccionar varias opciones, como abrir imagen,
guardar imagen y cerrar.
Cuando se selecciona la opción abrir imagen (Figura 4.5) o guardar imagen, se abre una
ventana para escoger la ruta de la imagen a seleccionar o el nombre para guardar.
Figura 4.5 Elección de la ruta de la imagen a tratar
Diseño e implementación de un herramienta de detección facial
70
Una vez seleccionada el nombre de la imagen, se le da la opción abrir. A esta imagen se
aplicará el algoritmo de detección de rostro. Como se ha mencionado el capítulo anterior,
el algoritmo de Viola y Jones se emplea en imágenes a escala de gris. A la imagen de
entrada en color se les aplica la transformación (3.1) para extraer la luminancia (Formula
4.1).
0.299 0.587 0.114 4.1)
A esta imagen de luminancia o de escala de gris se le aplica la ecualización del histograma
para resaltar el contraste en la imagen. El resultado de estas transformaciones (Figura 4.6)
se presenta como imagen de la parte derecha. Una vez pasada a escala de grises se lleva a
cabo la detección de los rostros, el cual se coloca cuadros de color azul para enmarcar los
rostros encontrados, como se puede apreciar en la parte izquierda de la Figura 4.6.
Figura 4.6 Resultado del algoritmo de detección de rostro
Se puede guardar la imagen o cerrar, para poder hacer otra detección ya sea por imagen o
video según se requiera.
Diseño e implementación de un herramienta de detección facial
71
Si se selecciona la opción de video, cuenta con varias acciones (Figura 4.7) como inicio de
video o detener el video. Cuando se selecciona la opción de iniciar, el video se activa y
comienza a detectar los rostros que se encuentren dentro del video. De la misma manera
que lo hizo con la imagen.
Figura 4.7 Opción de video: iniciar, detener y cerrar
El módulo que se implemento es capaz de detectar y localizar más que un rostro en una
trama de vídeo a partir de un archivo de video o directamente de una cámara web.
El procesamiento es tan rápido que se puede seguir los movimientos de rostros dentro de
la zona de observación.
4.3.3 Función de detección de objetos de OpenCV.
La Tabla 4.1 muestra la función principal de detección de objetos de OpenCV:
cvHaarDetectObjects . Esta función, que se aplicó en este trabajo, depende de algunos
parámetros: image, cascade, storage, storagescale_factor, min_neighbors, flags, min_size.
Diseño e implementación de un herramienta de detección facial
72
Tabla 4.1 Función de detección de objetos de OpenCV
CvSeq* cvHaarDetectObjects(
const CvArr* image,
CvHaarClassifierCascade* cascade,
CvMemStorage* storage,
double scale_factor = 1.1,
int min_neighbors = 3,
int flags = 0,
CvSize min_size = cvSize(0,0)
);
Image es la imagen a escala de grises,
cascade es el clasificador de cascada resultado del entrenamiento (ver el parágrafo
siguiente),
Storage sirve para la memoria de almacenamiento para guardar los resultados
scale_factor: es un factor de escala. La función cvHaar Detect Objects() escanea la imagen
de entrada para rostros de cualquier escala, habilitando el factor de escala determina que
tan grande será el brinco entre cada escala si se le pone a un mayor valor significará que el
tiempo de computación será más rápido.
min_neighbors es un factor que sirve para prevenir falsas detecciones, si se le coloca el
valor (3) este indicará que solamente se decidirá si el rostro está presente después de
haber hecho al menos tres detecciones.
flags es un parámetro que puede tomar a cuatro factores válidos los cuales pueden ser
combinados con un operador booleano OR:
1‐ cv_haar_do_canny_pruning, causa que cuando las regiones sean planas (por
ejemplo un fondo homogéneo) se evita procesarlas.
Diseño e implementación de un herramienta de detección facial
73
2‐ cv_haar_scale_image, el cual le dice al algoritmo que escale la imagen en el lugar
de escalar el detector.
3‐ cv_haar_find_biggest_object , permite regresar nada mas el objeto más grande
encontrado (por lo tanto el numero de objetos regresados será uno o ninguno).
4‐ cv_haar_do_rough_search el cual es usado solamente con
cv_harr_find_biggest_object, utilizada para terminar la búsqueda de objeto en
cuando el primer candidato sea encontrado (con suficientes vecinos para que sea
un acierto).
min_size es el tamaño de la ventana más pequeña en el cual se hace la búsqueda del
rostro, colocando este a un mayor valor reducirá el proceso de computación evitando
encontrar rostros pequeñas. Como se puede apreciar en la Figura 4.8, en la cual algunas
rostros no son detectadas y también hay falsos positivos (la camisa, no es rostro).
Figura 4.8 Detección de rostros [39]
4‐3.4 Funciones de clasificación en cascada Los resultados del entrenamiento se encuentran catalogados en un archivo tipo xml. Este
archivo describe el árbol de funciones de clasificaciones que se utilizó. Varios archivos se
encuentran en la librería OpenCV desarrollada por Lienhart [39] Entre ellos se puede citar
los que sirven para la detección de rostro:
Diseño e implementación de un herramienta de detección facial
74
haarcascade_profileface.xml
haarcascade_frontalface_default.xml,
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_alt2.xml,
haarcascade_frontalface_alt.xml
Como ejemplo se presentará el caso del último archivo haarcascade_frontalface_alt.xml.
Está formado por 22 fases ordenadas del las más simples hacia las más complejas, aquí la
complejidad es una función de número de función de clasificación: por ejemplo, la fase 0
se compone de 3 funciones de clasificación sin embargo la última fase 21 contiene 213
funciones. Este árbol sólo se utiliza en nuestro módulo para validar el trabajo efectuado, la
elaboración de un árbol de funciones de clasificación es necesaria cuando se requiere la
comercialización del producto. La tabla 4.2 describe la estructura del árbol de las
funciones de clasificación como esta en el archivo de extensión xml.
Tabla 4.2 Estructura del árbol
Cascada:
Fase1
Clasificador 11
Descriptor 11
Clasificador 12
Descriptor 12
…
Fase 2
Clasificador 21
Descriptor 21
…
…
Cada fase es definida por un conjunto de función de clasificación y un umbral (Tabla 4.3).
Diseño e implementación de un herramienta de detección facial
75
Tabla 4.3 Estructura de una fase
Fasei
Clasificador i1
Descriptor i1
Clasificador i22
Descriptor i2
…
…
Umbral
Una función de clasificación (Tabla 4.4) incluye un descriptor de Haar, un umbral y dos
valores predefinidos por la función de clasificación. La salida toma una de estos valores
según que el resultado del descriptor sea superior o inferior al umbral de la función de
clasificación.
Tabla 4.4 La estructura de la función de clasificación
Clasificador i1
Descriptor i1
rectángulo 1
rectángulo 2
rectángulo 3
umbral
valor izquierda
valor derecha
El número total de funciones de clasificación utilizadas por el árbol es 2137. La tabla 4.5
describe la distribución de estas funciones de clasificación en cada fase.
Se puede observar que se utilizan solamente 1/4 de los descriptores en las 13 primeras
fases.
Diseño e implementación de un herramienta de detección facial
76
Tabla 4.5 Las fases y sus funciones del archivo haarcascade_frontalface_alt.xml
fase Numero de función
de clasificación
fase Numero de función
de clasificación
0 3 11 103
1 16 12 111
2 21 13 102
3 39 14 135
4 33 15 137
5 44 16 140
6 50 17 160
7 51 18 177
8 56 19 182
9 71 20 212
10 80 21 214
4.3.5 Detección combinada: rostro‐ojo
Como la mayoría de la funciones de OpenCV son optimizadas para tener respuestas en
tiempo real, un manera de tratar de mejorar el sistema de detección de rostro es el uso de
detección del ojo. En la primera etapa, el ojo será un objeto de estudio de igual manera
que el rostro con su entrenamiento generando un archivo tipo xml. Existe dentro de la
librería de OpenCV el archivo de Haarcascades para la detección de ojo lo cual es
haarcascade_eye.xml.
La afirmación o la negación de la presencia de un rostro está condicionada a la presencia
de un ojo en la zona rostro.
Diseño e implementación de un herramienta de detección facial
77
Capítulo 5
Experimentación y resultados
En este capítulo se expone los resultados obtenidos de los experimentos donde se
emplearon tres clasificadores de detección de rostro basados en: un clasificador de rostro
combinado con ojo y dos clasificadores de rostro mediante clasificadores entrenados que
se encuentran en OpenCV.
El objetivo tras la realización de estos experimentos no es investigar el rendimiento del
método de Viola y Jones, así como la comparación de los diferentes clasificadores de
OpenCV. El propósito esencial es encontrar las respuestas a las siguientes preguntas que se
pueden lograr solamente con tres clasificadores:
¿La combinación rostro – ojo mejoraría la detección?
¿La detección de rostro con dos diferentes clasificadores responde de la misma
manera?
¿La etapa del entrenamiento tiene importancia en la detección?
5.1 Experimentación
Los tres clasificadores propuestos para la experimentación tienen las características
siguientes:
‐Detección rostro‐ojo empleado con los archivos haarcascade_frontalface_alt.xml y
haarcascade_eye.xml.
‐Detección de rostro empleando el archivo haarcascade_frontalface_alt.xml.
‐Detección de rostro empleando el archivo haarcascade_frontalface_alt_tree.xml
Se utilizo la función de detección de rostro bajo Emgu DetectHaarCascade que corresponde a cvHaarDetectObjects de OpenCV. Esta función tiene los siguientes parámetros: DetectHaarCascade(face, 1.1, 1, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20));
Diseño e implementación de un herramienta de detección facial
78
La explicación de la tarea de cada parámetros fue explicada en el apartado 4.3.3 de capitulo 4.
scale_factor = 1.1
min_neighbors = 1 no se toma en cuenta la detección múltiple del mismo objeto
flags = cv_haar_do_canny_pruning, indica que cuando las regiones son homogéneas, se
evita procesarlas.
min_size= Size(20, 20) es el tamaño de la ventana más pequeña en el cual se hace la
búsqueda del rostro
Se tomaron 33 imágenes con diversas particularidades fueron elegidas para poder aplicar
estos clasificadores (Figuras 5.1 y 5.2). Estas particularidades son:
- Imágenes sencillas de rostro o rostros (por ejemplo fotos 9 y 25).
- Imágenes complejas: presencia de muchos objetos con alto contraste en el fondo
detrás de los rostros (fotos 3, 29,…)
- Imágenes con resolución diferente y tamaño de imágenes variado (imágenes
cuadradas, rectangulares, resolución alta, baja etc.)
- Imágenes con rostros en diferentes escalas (fotos 1, 28, 30, 31,…)
- Imagen sin rostro (foto 24)
A cada imagen se le aplicó los tres clasificadores lo que llevó a 99 el número total de
experimentos.
5.2 Resultados
Los resultados de estos tres clasificadores se muestran en las Figuras 5.1 y 5.2.
Se puede subrayar las siguientes observaciones:
‐ Detección de todos los rostros con los tres clasificadores en las fotos: 4, 6, 8, 9, 11, 12,
16, 23, 25 y 30.
‐ Detección de todos los rostros y además unos falsos positivos en los fotos 2, 14, 15 y 19.
‐ No se detectó nada en la imagen sin rostro.
Diseño e implementación de un herramienta de detección facial
79
‐ Se detectan rostros frontales o casi frontales, rostros de lado no se detectaron como en
las fotos 1, 21 y 28.
‐ El clasificador rostro–ojo y el clasificador rostro, los juntos con el mismo
haarcascade_frontalface_alt.xml, dieron resultados diferentes. El primero mejoro la
detección eliminando los falsos positivos en las fotos 2, 15 y 19. Al contrario, el hecho de
no poder detectar los ojos, no se detectaron los rostros en las fotos 1, 3, 27 y 28.
‐ Comparando las dos clasificadores de rostros (haarcascade_frontalface_alt.xml y
haarcascade_frontalface_alt_tree.xml) se nota las diferencias en fotos 1, 2, 7, 14, 15, 17,
20, 22, 29, 32 y 28.
‐ Se identificaron unos falsos negativos que son aquellos objetos que deberían ser
detectados pero no se detectan en fotos 3, 10 y 7.
En algunos casos se observan rostros detectados con doble cuadros (fotos 16, 25,31). Este
caso resulta del parámetro min_neighbors propuesto al valor 1. Un solo rostro se puede
detectar varias veces en ubicaciones cercanas o en diversas escalas. Las falsas alarmas
pueden también ocurrir pero generalmente con menos consistencia que las detecciones
múltiples. El número de detecciones múltiples (min_neighbors) en una vecindad de una
ubicación se puede utilizar como indicador de la existencia de un rostro en esa ubicación.
Se confirma una detección si el número de detecciones múltiples es mayor que un valor
dado. Esto se practica en la mayoría de los sistemas de detección de la cara [5,32]. Las
detecciones múltiples se combinan en un solo rostro y se eliminan las falsas alarmas.
5.3 Conclusión
De estos resultados se puede concluir lo siguiente:
• Los resultados con los dos archivos haarcascade_frontalface_alt.xml y
haarcascade_frontalface_alt_tree.xml dieron resultados diferentes. Por lo tanto la
detección de rostro depende de la fase de entrenamiento.
• el clasificador combinado rostro‐ojo no siempre mejora la detección, al contrario,
en algunos casos le empeora cuando no puede detectar el ojo.
Diseño e implementación de un herramienta de detección facial
80
• la presencia de falsos negativos está relacionado con diversos factores, como la
resolución de la imagen, el tamaño del objeto en le etapa del entrenamiento.
• Algunos rostros de lado o de perfil, rostro con gorra no se detectaron por la razón
que las muestras usadas en el entrenamiento que generaron estos dos archivos
son muestras de rostros frontales sin gorras.
foto Clasificación cara con ojo
frontalface_alt.xml
Clasificación cara
frontalface_alt.xml
Clasificación cara
frontalface_alt_tree.xml
2
4
5
Diseño e implementación de un herramienta de detección facial
81
6
7
8
9
Diseño e implementación de un herramienta de detección facial
82
10
11
12
14
15
Diseño e implementación de un herramienta de detección facial
83
16
17
18
19
20
Diseño e implementación de un herramienta de detección facial
84
21
22
23
24
Diseño e implementación de un herramienta de detección facial
85
25
26
29
32
Figura 5.1 Diferentes pruebas con 3 clasificadores
Foto 1(a)
Diseño e implementación de un herramienta de detección facial
86
Foto 1(b)
Foto 1(c)
Foto 3(a)
Foto 3(b)
Diseño e implementación de un herramienta de detección facial
87
Foto 3(c)
Foto 27(a)
Foto 27(b)
Diseño e implementación de un herramienta de detección facial
88
Foto 27(c)
Foto 28(a)
Foto 28(b)
Diseño e implementación de un herramienta de detección facial
89
Foto 28(c)
Foto 30 (a)
Foto 30(b)
Foto 30(c)
Diseño e implementación de un herramienta de detección facial
90
Foto 31(a)
Foto 31(b)
Foto 31(c)
Foto 33(a)
Foto 33(b)
Diseño e implementación de un herramienta de detección facial
91
Foto 33(c)
Figura 5.2 Diferentes pruebas con 3 clasificadores: (a) Clasificación rostro con ojo frontalface_alt.xml, (b) Clasificación carafrontal_alt.xml,(c) Clasificación cara
frontalface_alt‐tree.xml
Diseño e implementación de un herramienta de detección facial
92
Capítulo 6
Conclusiones y trabajo a futuro
En este capítulo se presentan las conclusiones a las cuales se ha llegado, en el desarrollo
de este proyecto, así como los resultados obtenidos a través de esta. De igual forma se
plantean algunos trabajos a futuro que pueden ser basados en esta investigación.
6.1 Conclusiones
La detección de rostro es una necesidad en la actualidad para varias aplicaciones como la
de video conferencia, indexación y sobre todo de video vigilancia. Su importancia crece
con la consideración que es la primera etapa en un sistema de reconocimiento de rostro.
La gran apariencia del objeto rostro, hace que su detección sea considerada una tarea
difícil para el reconocimiento de patrones.
Se logro objetivo principal establecido en el principio de esta tesis era el desarrollo de un
sistema de detección facial. Encontrar una metodología eficaz entre las que existen para
implementarla fue alcanzado mediante una búsqueda del estado del arte elaborado en el
segundo capítulo de este trabajo. Muchos de los métodos de detección de rostro
comparten las mismas técnicas y algoritmos de reconocimiento de patrones y análisis de
imágenes a pesar que estos últimos apuntan aplicaciones distintas. Uno de los métodos de
detección de rostros en tiempo real es el método de Viola y Jones. La descripción de este
algoritmo se detalló el tercer capítulo.
El método de Viola y Jones es un método supervisado de detección de rostro en tiempo
real. Su característica principal se puede resumir de la siguiente: un entrenamiento lento
con una detección muy rápida. Las ideas claves de este método se resumen en tres
puntos: (1) Explotar la imagen integral para tener una evolución rápida de los descriptores
de Haar. (2) Utilizar la técnica de “boosting” para la selección de descriptores: es un
método de clasificación que combina varios clasificadores simples para formar un único
Diseño e implementación de un herramienta de detección facial
93
clasificador más potente. (3) emplear un clasificador en cascada para un rápido rechazo
del objeto no‐rostro.
Este método de clasificación supervisado se requiere de una etapa de entrenamiento que
genera el clasificador. Varias funciones que contiene la biblioteca OpenCV permiten la
implementación de este método de una manera optimizada para lograr una aplicación en
tiempo real.
El diseño y la implementación de la aplicación mediante los elementos computacionales,
la etapa del entrenamiento, los parámetros de la función detección de rostro, los
clasificadores de OpenCV así como una detección combinada rostro‐ojo son explicados en
el capítulo 4.
El software desarrollado en esta tesis, implementado en el entorno Visual Studio 2008 con
lenguaje C# bajo Emgu y nombrado “Detección facial en sistemas de cómputo” admite
imágenes de video mediante cámara web así como imágenes fijas.
Los resultados obtenidos de la aplicación de este método de Viola y Jones en diferentes
imágenes usando diferentes clasificadores entrenados de OpenCV son presentados en el
capítulo 5.
Esta visión de los componentes principales de cada capítulo refleja el cumplimientos con
los 4 objetivos particulares de esta tesis lo cuales son (1) Estudio bibliográfico, (2)
encontrar un algoritmo eficaz para la detección facial, (3) su implementación y (4) la
creación de un sistema que se usara en otras aplicaciones. Al mismo tiempo refleja las
principales actividades realizadas en el desarrollo de este trabajo.
Los resultados de la aplicación desarrolladla en esta tesis muestra que el método de Viola
y Jones es un método de clasificación muy eficiente. A pesar que los resultados son
ampliamente relacionados con la etapa del entrenamiento, los parámetros de la función
de detección de objetos de OpenCV influyen ligeramente en los resultados.
Su aplicación no es limitada a la detección de rostro, se puede aplicarlo a cualquier tipo de
objeto.
Combinar la detección de rostro con la detección del ojo para mejorar la clasificación no
resulta siempre eficaz. Al contrario puede empeorar los resultados además de aumentar el
Diseño e implementación de un herramienta de detección facial
94
tiempo de computación y perder uno de los puntos claves de esta técnica que es su
respuesta en tiempo real.
Las aportaciones de este trabajo son:
1‐ Identificar un método de detección de rostro en tiempo real
2‐ Realizar una descripción detallada de sus etapas.
3‐ Implementar este método usando la biblioteca OpenCV la cual se encuentra
optimizada para respuestas en tiempo real.
4‐ Diseñar aplicaciones para imágenes fijas o de video para cualquier tipo de cámara
web.
5‐ Establecer las bases de investigación formal para próximos proyectos en
reconocimiento de rostros.
6.2 Trabajo a futuro
Los trabajos futuros citados a continuación se presentan con dos objetivos: mejorar el
presente trabajo o apoyarse en él para lograr otros objetivos.
- Generar un clasificador con un entrenamiento usando un gran número de
imágenes muestra.
- Mejora la detección con nuevos descriptores
- Implementar un sistema completo de reconocimiento de rostros
- Aplicar el método de Viola y Jones a otro campos como en proyectos Geo
espaciales (reconocimiento de objetos en mapa temáticas, detección de barcos en
imágenes satelitales de alta resolución, etc.)
- Detección y seguimiento de objetos en video (autos, personas, etc.).
- Detección de movimientos para proyecto de seguridad
- Implementar un sistema de reconocimiento facial como herramienta de seguridad
en un dispositivo móvil.
Diseño e implementación de un herramienta de detección facial
95
Referencias
[1] H. Ekenel and B.Sankur, “Feature selection in the independent component subspace for face recognition”, Pattern Recognition Letters, vol. 25, no. 12, pp. 1377‐1388, 2004.
[2] T. Kanade, “Picture Processing by Computer Complex and Recognition of Human Faces”, Ph.D. thesis, Kyoto University, 1973.
[3] F. Abate, M. Nappi, D. Riccio and G. Sabatino, “2D and 3D face recognition: A survey”, Pattern Recognition Letters, vol.28 , pp 1885–1906, 2007.
[4] M.‐H. Yang, D. Kriegman and N. Ahuja, “Detecting Faces in Images: A Survey, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol 24, no. 1, pp 34‐58, 2002.
[5] S. Z. Li A. K. Jain, Handbook of Face Recognition, springer,2005.
[6] D. de Ridder, O. Kouropteva, and O. Okun, “Supervised locally linear embedding”, in Proc. Joint Int. Conf. ICANN/ICONIP, vol. 2714, pp. 333‐341, 2003.
[7] D. J. Beymer, “Face recognition under varying pose”, in Proc. IEEE Conf. on Computer Vision and Pattern Recognition, pp. 756‐761, 1994.
[8] R. Brunelli and T. Poggio, “Face recognition: Features versus templates”, IEEE Trans. on Pattern Analysis and Machine Intelligence, vol. 15, no. 10, pp. 1042‐1052, 1993.
[9] A. Samal and P. A. Iyengar, “Automatic recognition and analysis of human faces and facial expressions: A survey”, Pattern Recognition, vol. 25, no. 1, pp. 65‐77, 1992.
[10] G. P. Martinsanz y G. de la Cruz, Visión por computadora, segunda edición Alfaomega, 2008.
[11] D. Valentin, H. Abdi, A. O’Toole and G. Cottrell, “Connectionist models of face processing: a survey”, Pattern Recogn., vol. 27, pp. 1208–1230, 1994.
[12] M. Turk and A. Pentland, “Eigenfaces for Recognition”, Journal of Cognitive Neurosicence, Vol. 3, No. 1, pp. 71‐86, 1991.
[13] H. Moon and P.J. Phillips, “Computational and Performance aspects of PCA‐based Face Recognition Algorithms”, Perception, Vol. 30, pp. 303‐321, 2001.
[14] M.S. Bartlett, J.R. Movellan and T.J. Sejnowski, “Face Recognition by Independent Component Analysis”, IEEE Trans. on Neural Networks, Vol. 13, No. 6, pp. 1450‐1464, November 2002.
Diseño e implementación de un herramienta de detección facial
96
[15] C. Liu and H. Wechsler, “Comparative Assessment of Independent Component Analysis (ICA) for Face Recognition”, in Proc. of the Second International Conference on Audio‐ and Video‐based Biometric Person Authentication, pp. 211‐216, March 1999.
[16] K. Etemad and R. Chellappa, “Discriminant Analysis for Recognition of Human Face Images”, Journal of the Optical Society of America A, Vol. 14, No. 8, pp. 1724‐1733, August 1997.
[17] W. Zhao, R. Chellappa and A. Krishnaswamy, “Discriminant Analysis of Principal Components for Face Recognition”, in Proc. of the 3rd IEEE International Conference on Face and Gesture Recognition, FG'98, Nara, Japan, pp. 336‐341, April 1998.
[18] L. Wiskott, J.‐M. Fellous, N. Krueuger and C. Von Der Malsburg, “Face Recognition by Elastic Bunch Graph Matching”, Chapter 11 in Intelligent Biometric Techniques in Fingerprint and Face Recognition, eds. L.C. Jain et al., CRC Press, pp. 355‐396, 1999.
[19] L. Wiskott, J.‐M. Fellous, N. Krueuger and C. Von Der Malsburg, “Face Recognition by Elastic Bunch Graph Matching”, IEEE Trans. On Pattern Analysis and Machine Intelligence, Vol. 19, No. 7, pp. 776‐779, 1997.
[20] A. Kadyrov and M. Petrou, “The Trace Transform and Its Applications”, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 23, No. 8, pp. 811‐828, August 2001.
[21] S. Srisuk, M. Petrou, W. Kurutach and A. Kadyrov, “Face Authentication using the Trace Transform”, in Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'03), Madison, pp. 305‐312, June 2003.
[22] T. F. Cootes, K. Walker and C. J. Taylor, “View‐Based Active Appearance Models”, in Proc. of the IEEE International Conference on Automatic Face and Gesture Recognition, Grenoble, France, pp. 227‐232, March 2000.
[23] V. Blanz and T. Vetter, “Face Recognition Based on Fitting a 3D Morphable Model”, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 25, No. 9, pp. 1063‐1074, September 2003.
[24] B. Moghaddam, J. H. Lee, H. Pfister and R. Machiraju, “Model‐Based 3D Face Capture with Shape‐from‐Silhouettes”, in Proc. of the IEEE International Workshop on Analysis and Modeling of Faces and Gestures, AMFG , Nice, pp. 20‐27, October 2003.
[25] A. Bronstein, M. Bronstein, R. Kimmel and A. Spira, “3D face recognition without facial surface reconstruction”, in Proceedings of ECCV, Prague, Czech Republic, May 2004.
[26] B. Moghaddam, C. Nastar and A. Pentland, “A Bayesian Similarity Measure for Deformable Image Matching”, Image and Vision Computing, vol. 19, no. 5, pp. 235‐244, May 2001.
Diseño e implementación de un herramienta de detección facial
97
[27] C. Liu and H. Wechsler, “A Unified Bayesian Framework for Face Recognition”, in Proc. of the 1998 IEEE International Conference on Image Processing, Chicago, Illinois, USA, pp. 151‐155, October 1998.
[28] V.N. Vapnik, Statistical Learning Theory, John Wiley & Sons, Inc, 1998.
[29] P. Shih and C. Liu, “Face detection using discriminating feature analysis and Support Vector Machine”, Pattern Recognition, vol. 39, no. 2, pp. 260‐276, February 2006.
[30] B. Heisele, T. Serre, S. Prentice and T. Poggio, “Hierarchical classification and feature reduction for fast face detection with support vector machines”, Pattern Recognition, vol. 36, no. 9, pp. 2007–2017, 2003.
[31] P. Brimblecombe and H. Meng. (2008). Sciences Face Detection using Neural Networks, Electronic Engineering. Available: http://en.scientificcommons.org/ electronic_engineering
[32] H. Rowley, S. Baluja and T. Kanade, Neural network‐based face detection, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 20, no. 1, pp. 23–38, 1998.
[33] R. Schapire, “Strength of weak learnability”, Journal of Machine Learning, vol. 5, pp. 197–227, 1990.
[34] Y. Freund, “Boosting a weak learning algorithm by majority”, In Annual Workshop on Computational Learning Theory, pp. 202 – 216, 1990.
[35] Y. Freund, and R. E. Schapire, “A decision‐theoretic generalization of on‐line learning and an application to boosting”, Journal of Computer and System Sciences, vol. 55, pp. 119 – 139, 1997.
[36] P. Viola and M. Jones, "Rapid object detection using boosted cascade of simple features," in Proceedings IEEE Computer Society Conference on Computer Vision and Pattern Recognition, vol. 1, pp. 511‐ 518, Kauai, Hawaii 2001,
[37] P. Viola and M. Jones., “Robust real time object detection”, In IEEE ICCV Workshop on Statistical and Computational Theories of Vision, Vancouver, 2001.
[38] P. Viola and M. Jones, “Robust Real‐Time Face Detection”. International Journal of Computer Vision, vol.57, no. 2, pp. 137‐154, 2004.
[39] G. R. Bradski, A. Kaehler, Learning OpenCV Computer Vision with the OpenCV Library, O’REILLY., September 2008.
[40] J. Canny, “A Computational Approach to Edge Detection”, IEEE Trans. on Pattern Analysis and Machine Intelligence, vol. 8, no. 6, pp. 679‐698, 1986.
Diseño e implementación de un herramienta de detección facial
98
[41] C.Papageorgiou, M. Oren and T. Poggio, "a general framework for object detection", in International Conference on Computer Vision, 1998.
[42] R. Lienhart and J. Maydt, "An extended set of haar‐like features for rapid object detection," in IEEE ICIP, vol. 1, pp. 900‐903, 2002.
[43] F. C. Crow, “Summed‐area tables for textures mapping”, computer Graphics, vol. 18, no. 3, july 1984.