desarrollo de un sistema de detecciÓn e …
TRANSCRIPT
1
DESARROLLO DE UN SISTEMA DE DETECCIÓN E IDENTIFICACIÓN DE ROSTROS PARA
UN ROBOT DE SERVICIO.
PAULA JANETH MORENO ESCOBAR
JUAN DAVID VARGAS ALEJO
UNIVERSIDAD SANTO TOMÁS
FACULTAD DE INGENIERÍA ELECTRÓNICA
BOGOTÁ D.C.
2018
2
DESARROLLO DE UN SISTEMA DE DETECCIÓN E IDENTIFICACIÓN DE ROSTROS PARA
UN ROBOT DE SERVICIO.
PAULA JANETH MORENO ESCOBAR
JUAN DAVID VARGAS ALEJO
TRABAJO DE GRADO
Director: Ing. JOSÉ GUILLERMO GUARNIZO MARÍN
Codirector: Ing. CARLOS ANDRÉS QUINTERO PEÑA
UNIVERSIDAD SANTO TOMÁS
FACULTAD DE INGENIERÍA ELECTRÓNICA
BOGOTÁ D.C.
2018
3
TABLA DE CONTENIDO
1. INTRODUCCIÓN ............................................................................................................ 8
2. PLANTEAMIENTO DEL PROBLEMA ............................................................................. 9
3. JUSTIFICACIÓN ........................................................................................................... 10
4. ANTECEDENTES ......................................................................................................... 12
5. OBJETIVOS .................................................................................................................. 16
5.1. OBJETIVO GENERAL ............................................................................................... 16
5.2. OBJETIVOS ESPECÍFICOS ...................................................................................... 16
6. MARCO TEÓRICO ........................................................................................................ 17
6.1. MODELOS DE EXTRACCIÓN ................................................................................... 17
6.1.1. MODELO DE HOG ................................................................................................. 17
6.1.2. MODELO LBP ........................................................................................................ 19
6.1.3. MODELO BAG OF WORDS ................................................................................... 20
6.2. CLASIFICADORES .................................................................................................... 21
6.2.1. MODELO SVM ....................................................................................................... 21
6.2.2. MODELO VECINO MÁS CERCANO (K NEAREST NEIGHBORS K-NN) .............. 22
6.2.3. ÁRBOL DE DECISIÓN ........................................................................................... 23
6.2.4. PERDIDA DE CLASIFICACIÓN (RESUBLOSS) .................................................... 24
6.2.5. VIOLA & JONES ..................................................................................................... 26
6.2.6. KERNEL ................................................................................................................. 28
6.3. DEEP LEARNING ...................................................................................................... 28
6.3.1. REDES NEURONALES CONVOLUCIONALES ..................................................... 29
7. DESARROLLO DEL PROYECTO ................................................................................. 32
7.1. INVESTIGACIÓN DE ALGORITMOS Y HERRAMIENTAS ....................................... 34
7.2 SELECCIÓN DE AMBIENTE CONTROLADO Y HARDWARE .................................. 34
7.2.1 AMBIENTE CONTROLADO ................................................................................... 34
7.2.2 HARDWARE ........................................................................................................... 35
7.3 CREACIÓN DE BANCO IMÁGENES EN CARPETAS .............................................. 36
7.3.1 MODELO 1: DETECCIÓN DE ROSTROS EN UNA IMAGEN ................................ 36
7.3.2 MODELO 2: IDENTIFICAION DE PERSONAS ...................................................... 39
7.4 METODOLOGÍA DE SOFTWARE ............................................................................. 41
4
7.5 EXTRACCIÓN DE REQUERIMIENTOS FUNCIONALES DE LA APLICACIÓN DE
DETECCIÓN Y RECONOCIMIENTO DE ROSTROS .......................................................... 42
7.6 CONSTRUCCIÓN DE MODELOS ............................................................................. 43
7.6.1 HOG ....................................................................................................................... 47
7.6.2 LBP ......................................................................................................................... 47
7.6.3 BOF ........................................................................................................................ 47
7.6.4 V&J ......................................................................................................................... 48
7.6.5 SVM ........................................................................................................................ 50
7.6.6 TREE ...................................................................................................................... 51
7.6.7 KNN ........................................................................................................................ 52
7.6.8 DEEP LEARNING ................................................................................................... 53
7.7. VALIDACIÓN DEL SOFTWARE DE LA CONSTRUCCIÓN DE LOS MODELOS ...... 66
7.7.1. MODELO 1: DETECCIÓN DE ROSTROS .............................................................. 67
7.7.2. MODELO 2: IDENTIFICACIÓN DE ROSTROS ...................................................... 70
7.8. DISEÑO E IMPLEMENTACIÓN DE LA APLICACIÓN DE RECONOCIMIENTO Y
DETECCIÓN DE ROSTROS ............................................................................................... 73
7.8.1. INTERFAZ .............................................................................................................. 75
7.8.2. MANUAL ................................................................................................................. 76
7.8.3. AUTOMÁTICO ........................................................................................................ 77
7.9. VALIDACIÓN DE LA APLICACIÓN ........................................................................... 78
7.9.1. REENTRENO CON IMÁGENES TOMADAS CON LA CÁMARA MEDIANTE LA
APLICACIÓN. ...................................................................................................................... 79
8. IMPACTO SOCIAL ........................................................................................................ 83
9. CONCLUSIONES .......................................................................................................... 84
10. TRABAJOS FUTUROS .............................................................................................. 86
11. REFERENCIAS.......................................................................................................... 87
12. ANEXOS .................................................................................................................... 91
5
ÍNDICE DE TABLAS
Tabla 1. Procesador. ............................................................................................................ 35
Tabla 2. GPU. ...................................................................................................................... 35
Tabla 3. Cámara. ................................................................................................................. 36
Tabla 4. Parámetros Viola & Jones. ..................................................................................... 48
Tabla 5. Definición de capas. ............................................................................................... 53
Tabla 6. Alexnet (70 Entrenamiento, 30 Prueba). ................................................................ 56
Tabla 7. Alexnet (60 Entrenamiento, 40 Prueba). ................................................................ 56
Tabla 8. Alexnet (80 Entrenamiento, 20 Prueba). ................................................................ 57
Tabla 9. Alexnet (90 Entrenamiento, 10 Prueba). ................................................................ 58
Tabla 10. Alexnet resultados. .............................................................................................. 59
Tabla 11. Alexnet (80 Entrenamiento, 20 Prueba). .............................................................. 59
Tabla 12. Alexnet (90 Entrenamiento, 10 Prueba). .............................................................. 60
Tabla 13. Alexnet (60 Entrenamiento, 40 Prueba). .............................................................. 60
Tabla 14. Alexnet (70 Entrenamiento, 30 Prueba). .............................................................. 61
Tabla 15. Alexnet Resultados. ............................................................................................. 62
Tabla 16. Entrenamiento (80, 20). ....................................................................................... 65
Tabla 17. Porcentaje (HOG, SVM). ...................................................................................... 67
Tabla 18. Porcentaje (HOG, KNN). ...................................................................................... 67
Tabla 19. Porcentaje (HOG, TREE). .................................................................................... 68
Tabla 20. Porcentaje (LBP, SVM). ....................................................................................... 68
Tabla 21. Porcentaje (Deep learning). ................................................................................. 68
Tabla 22. Porcentaje (BOF, SVM). ...................................................................................... 69
Tabla 23. Porcentajes finales. .............................................................................................. 69
Tabla 24. Porcentaje (HOG, SVM). ...................................................................................... 70
Tabla 25. Porcentaje (HOG, KNN). ...................................................................................... 71
Tabla 26. Porcentaje (HOG, TREE). .................................................................................... 71
Tabla 27. Porcentaje (Deep Learning). ................................................................................ 71
Tabla 28. Porcentaje (BOF, SVM). ...................................................................................... 72
Tabla 29. Porcentaje (LBP, SVM). ....................................................................................... 72
Tabla 30. Porcentajes finales. .............................................................................................. 72
Tabla 31. Experimentos aplicación. ..................................................................................... 78
Tabla 32. Validación modelo con reentreno. ........................................................................ 79
Tabla 33. Experimentos con el modelo reentrenado. ........................................................... 81
6
ÍNDICE DE FIGURAS
Figura 1. Descriptores HOG sobre una imagen. .................................................................. 18
Figura 2. Procedimiento de cálculo de LBP original. ............................................................ 19
Figura 3. Hiperplanos de decisión para un problema de clasificación. ................................ 22
Figura 4. Ejemplo sobre K vecinos. ..................................................................................... 23
Figura 5. Estructura árbol de decisión [33]. ......................................................................... 24
Figura 6. Imagen integral [62]. ............................................................................................. 26
Figura 7. Clasificadores en cascada [36]. ............................................................................ 27
Figura 8. Ejemplo de una red neuronal. ............................................................................... 28
Figura 9. Ejemplo neurona con muchas capas ocultas. ....................................................... 29
Figura 10. Arquitectura de una red neuronal convolucional [42]. ......................................... 30
Figura 11. Ejemplo de Convolución [42]. ............................................................................. 31
Figura 12. Desarrollo de proyecto. ....................................................................................... 33
Figura 13. Mosaico Con Rostro. .......................................................................................... 37
Figura 14. Mosaico Sin Rostro. ............................................................................................ 38
Figura 15. Mosaico diferentes tipos de imágenes en sin rostro. .......................................... 39
Figura 16. Mosaico de Juan David Vargas Alejo. ................................................................ 40
Figura 17. Mosaico de Paula Janeth Moreno. ..................................................................... 41
Figura 18. Diagrama de flujo de construcción de modelos. ................................................. 45
Figura 19. Ejemplo arquitectura alexnet. ............................................................................. 53
Figura 20. Curva de entrenamiento (60 entrenamiento, 40 prueba). ................................... 57
Figura 21. Curva de entrenamiento modelo 2 (60 entrenamiento, 40 prueba). ................... 61
Figura 22. Arquitectura de la Red. ....................................................................................... 62
Figura 23. Capas red propia. ............................................................................................... 64
Figura 24. Curva de entrenamiento red propia. ................................................................... 66
Figura 25. Diagrama de barras porcentajes finales modelo 1. ............................................. 70
Figura 26. Diagrama de barras porcentajes finales modelo 2. ............................................. 73
Figura 27. Diagrama de flujo de la aplicación. ..................................................................... 74
Figura 28. Interfaz. ............................................................................................................... 76
Figura 29. Diagrama de barras de los porcentajes del modelo con reentreno ..................... 80
Figura 30. Diagrama de barras de los porcentajes del modelo con reentreno vs el modelo
antiguo. ................................................................................................................................ 80
Figura 31. Diagrama de barras de los porcentajes del modelo con reentreno vs el modelo
antiguo. ................................................................................................................................ 81
Figura 32. Algoritmo de detección e identificación de rostros. ............................................. 82
7
ÍNDICE DE ANEXOS
Anexo 1. Tabla HOG V&J. ............................................................................................................... 91
Anexo 2. Tabla HOG V&J. ............................................................................................................... 92
Anexo 3. Tabla HOG SVM 1. ........................................................................................................... 93
Anexo 4. Tabla HOG SVM 2. ........................................................................................................... 94
Anexo 5. Tabla LBP SVM 1. ............................................................................................................ 95
Anexo 6. Tabla LBP SVM 2. ............................................................................................................ 96
Anexo 7. Tabla BOF SVM 1. ........................................................................................................... 97
Anexo 8. Tabla BOF SVM 2. ........................................................................................................... 99
Anexo 9. Tabla BOF SVM (Banco de imágenes grande). ........................................................ 101
Anexo 10. Tabla HOG TREE 1. .................................................................................................... 103
Anexo 11. Tabla HOG TREE 2. .................................................................................................... 104
Anexo 12. Tabla HOG KNN 1. ....................................................................................................... 105
Anexo 13. Tabla HOG KNN 2. ....................................................................................................... 106
Anexo 14. Curva de entrenamiento (70 entrenamiento, 30 prueba). ...................................... 107
Anexo 15. Curva de entrenamiento (80 entrenamiento, 20 prueba). ...................................... 108
Anexo 16. Curva de entrenamiento (90 entrenamiento, 10 prueba). ...................................... 109
Anexo 17. Curva de entrenamiento modelo 2 (80 entrenamiento, 20 prueba). .................... 110
Anexo 18. Curva de entrenamiento modelo 2 (90 entrenamiento, 10 prueba). .................... 111
Anexo 19. Curva de entrenamiento modelo 2 (70 entrenamiento, 30 prueba). .................... 112
8
1. INTRODUCCIÓN
La detección de rostros es un proceso por el cual el computador ubica los rostros presentes
en una imagen o un video. Desde los años setenta, se ha trabajado en el desarrollo de
diferentes algoritmos para la detección de rostros, basados en técnicas heurísticas y
antropométricas, pero no eran muy eficientes ya que eran sensibles a los cambios. En los
años noventa, la tecnología tuvo un avance significativo hacia la reproducción de videos por
lo que se dio la necesidad de desarrollar los algoritmos de detección de rostros para que
estos fueran utilizados en videoconferencias, vigilancia de multitudes y seguridad doméstica
[1].
La identificación de rostros es una aplicación que automáticamente reconoce a una persona
en una imagen digital o un video. Así, para lograr fichar el rostro, esta aplicación realiza un
análisis de las características faciales del sujeto extraídas de la imagen o de un video, y estas
se comparan con un modelo predeterminado con dichas bases de datos. El objetivo de la
identificación de rostros es que, dada una imagen de una cara desconocida o imagen de
prueba, se encuentre una imagen de similares características en un conjunto de imágenes
conocidas o imágenes de entrenamiento.
La solución a dicha problemática se basa en la implementación de varios algoritmos; en
primer lugar, uno de los algoritmos extrae las características de las imágenes con y sin rostro.
Luego, se utiliza otro algoritmo que extrae las características de las imágenes con rostros de
personas conocidas. Finalmente, con este algoritmo se entrenan los modelos que en la
aplicación determinan si existe un rostro, para que, en caso afirmativo, identifica de qué
individuo se trata. Después de que los modelos estén entrenados, se desarrollara una
aplicación, la cual pretende detectar e identificar los rostros de personas desconocidas o
conocidas.
9
2. PLANTEAMIENTO DEL PROBLEMA
El mundo de la tecnología actual se enfrenta a una dificultad para los sistemas que basan su
sistema sensorial en la utilización de cámaras de video y sistemas de visión computacional:
detectar rostros y reconocer objetos, o personas de interés en ambientes no controlados [2].
Entre estos sistemas se encuentran los sistemas de control automático y robótico o los
sistemas de vigilancia. Otro de los problemas que presentan estos sistemas robóticos es la
interacción Humano-Robot, ya que es muy importante que el robot sea capaz de identificar
correctamente el rostro de la persona, para tener una correcta interacción y que las fallas
sean menores.
En la actualidad, los robots de servicio son utilizados para operar de forma parcial o
totalmente autónoma y realizar servicios útiles para el bienestar de los humanos. Estos robots
son utilizados en el campo militar, rescate, seguridad, sector salud, sistemas de cirugía,
cuidado de personas enfermas y de la tercera edad [3] [4], servicios domésticos, trabajos
peligrosos, entre otros [5]. Para lograr que los robots de servicio tengan una interacción
Humano-Robot, se han aplicado técnicas de visión artificial que permiten detectar e identificar
el rostro de la persona con la que se quieren relacionar, para crear una comunicación por
medio de la inteligencia artificial o por comandos predeterminados [8].
Con base en este problema en los sistemas que basan su sistema sensorial en la utilización
de cámaras de video, este proyecto se enfocará en resolver el problema de la detección y la
identificación de rostros. La detección de rostros busca encontrar la ubicación y tamaño de
los rostros presentes en una imagen y determinar la identidad de las personas presentes en
la misma. Para esto se construirá un software que, a través de una cámara, detecte el rostro
a partir de imágenes y logre identificar a la persona. También se evaluarán diferentes técnicas
existentes para resolver el problema y encontrar la mejor solución comparando las técnicas.
Este prototipo estará orientado a un robot de servicios, sin embargo, se desarrollará en una
primera etapa que será implementada en un computador de escritorio.
10
3. JUSTIFICACIÓN
Una de las prácticas importantes en la visión artificial por computador es el reconocimiento
de rostros con múltiples aplicaciones. Para que un robot sea capaz de crear una
comunicación Robot-Humano, es importante que el robot pueda detectar e identificar el rostro
de la persona con la que quiere llegar a crear una comunicación. Existe la identificación por
radio frecuencias (RFID por sus siglas en ingles), esta identificación consiste en un sistema
de almacenamiento y recuperación de datos remotos que usa dispositivos como etiquetas,
tarjetas, o transpondedores para transmitir la identidad de un objeto mediante ondas de radio.
Esta aplicación no presenta un sistema de seguridad contundente ya que se podrían duplicar
la tarjeta o el mensaje y aparentar ser otro. Teniendo en cuenta lo anterior, otras opciones
para la identificación de personas son la huella dactilar y biometría, ya que el proceso de
copia de las características físicas de una persona en particular requiere de una mayor
complejidad. El robot asocia la imagen del rostro que observa en tiempo real con una base
de datos ya creada de personas conocidas, para así saber cómo debe comportarse
dependiendo de la persona.
En el campo de la robótica, la robótica de servicio es utilizada en varias áreas de trabajo,
esto para ayudar a las personas a realizar actividades con mayor rapidez y siendo más
eficaces. Una de las áreas en las que más se utiliza estos robots de servicio, es en las tareas
del hogar, allí se pueden encontrar; aspiradora [6], fregador de piso, cortador de césped,
regador de jardín, Robot social estático y móvil [7]. También existe un robot para la
discapacidad, este es un robot diseñado para ayudar a las personas que tienen
discapacidades físicas. Las personas con discapacidades severas pueden ser asistidas con
sillas de ruedas robóticas, en donde estas pueden dejar el control a la persona o al robot,
dependiendo del nivel de discapacidad [3, 4].
Este proyecto permite aplicar los conocimientos adquiridos en ingeniería, enfocándolo en el
área de programación. El desarrollo de este proyecto será utilizado en un futuro para un robot
de servicio, el cual está siendo creado y desarrollado por el Grupo de Estudio y desarrollo en
Robótica GED de la Universidad Santo Tomás. Este trabajo tiene un enfoque de proyección
social, ya que la implementación de un robot de servicio impacta positivamente en la
11
Universidad y en la sociedad. La robótica de servicio busca ayudar en tareas del hogar,
industriales o que presenten algún riesgo para las personas.
12
4. ANTECEDENTES
Teniendo en cuenta que el desarrollo de este trabajo estará orientado a un Robot de servicio,
es importante contextualizar el origen, historia y desarrollo de estos robots y también como
han afectado la vida cotidiana de los seres humanos. A su vez, estos robots utilizan la visión
e inteligencia artificial para poder crear una comunicación Robot-humano, en este sentido,
también se hará énfasis en torno a cómo se ha establecido dicha comunicación.
El inicio de la visión artificial fue marcado por Larry Roberts, quien en 1961 creó un programa
que podía “ver” una estructura de bloques, analizar su contenido y reproducirla desde otra
perspectiva. Roberts demostró a los espectadores que esa información visual que se había
enviado al ordenador por una cámara había sido procesada adecuadamente por él. Durante
el avance de la visión artificial, surgieron muchos programas y cámaras, y con estos se fueron
creando varios trabajos relacionados con la detección de rostros [10, 11]. Luego de la
detección de rostros en una imagen, se realiza la identificación del rostro encontrado, esto
también hace parte de la visión artificial y se han realizado varias publicaciones e
investigaciones al respecto [12, 13]. A su vez, se implementó la visión artificial en áreas como:
La detección, segmentación, localización y reconocimiento de ciertos objetos en
imágenes.
Registro de diferentes imágenes de una misma escena u objeto, y hacer concordar
un mismo objeto en diversas imágenes.
Seguimiento de un objeto en una secuencia de imágenes.
Búsqueda de imágenes digitales por su contenido.
De las publicaciones e investigaciones que se han realizado sobre la visión artificial, se
encuentra un artículo sobre identificar a varias personas en un sistema de localización de
personas que se encuentren en interiores, mediante el uso de la cámara, micrófono y
altavoz del teléfono celular [14]. Debido a que algunas aplicaciones existentes sobre la
identificación de personas no son accesibles para todo el público, ya sea por costo o porque
solo se venden a empresas de seguridad, en [15] se creó un sistema de reconocimiento
facial eficiente y de bajo costo, el cual no solo identifica los rostros, sino que además alerta
al usuario a través del correo electrónico y envía una alerta para pedir servicio a la policía,
13
también genera un registro de entrada y salida de las personas donde está instalada la
aplicación. También existen las aplicaciones que solo se utilizan para el reconocimiento
facial, en donde utilizan la visión artificial y un conjunto de caras para entrenar las redes
neuronales artificiales, con diferentes condiciones de iluminación, gestos, accesorios y
distancias [16].
Para la utilización de los robots de servicio es necesaria la inteligencia artificial, debido a
que debe haber una interacción robot-humano. La inteligencia artificial surge en la década
de los 40, pero hasta 1950 estos estudios y propuestas consiguen una repercusión gracias
al artículo “Computing Machinery and Intelligence”, escrito por Alan Turing, uno de los
padres de la IA [17]. Este articulo discute sobre la posibilidad de que una maquina pueda
imitar el comportamiento de la mente humana, también se propone el archiconocido Test
de Turing, orientado a demostrar si una determinada máquina es inteligente o no [18]. En
1956 durante la conferencia de Dartmouth se bautizó oficialmente a este estudio, en esta
conferencia se definieron las directrices y líneas de actuación futuras en el ámbito de la
nueva ciencia [17].
La inteligencia artificial lo que busca es que las maquinas sean capaces de simular la
conducta de las personas, ya sea pensar como ellos basados en las experiencias y el
conocimiento que tienen constantemente de acuerdo en el ambiente que se encuentren. Es
por esto que se presenta un trabajo donde se diseña un ambiente de enseñanza y
aprendizaje inteligente y distribuido, usando las técnicas de la inteligencia artificial
denominadas razonamiento basado en casos y planificación institucional [19]. La
planificación institucional consiste en un estado inicial, un conjunto de objetivos y un
conjunto de acciones posibles. Es una técnica que intenta llegar a la solución de problemas
de forma similar como lo hacen los seres humanos utilizando experiencias anteriores.
En [19] se realizó un trabajo sobre el reconocimiento de rostros utilizando análisis de
componentes principales, para el reconocimiento de rostros utilizaron 400 fotografías
sacadas de una base de datos creada por los laboratorios AT&T de la Universidad de
Cambridge, UK. De las 400 imágenes, un porcentaje se utilizó para el entrenamiento y el
porcentaje restante se utilizó para las pruebas. En los experimentos que realizaron,
escogieron varias imágenes de las 400 de las existentes, en conjunto con otras 10 que no
14
estuvieran dentro de la base de datos, para así poder observar el comportamiento del
software realizado en MATLAB. Para los resultados de estas pruebas, se podían presentar
4 posibilidades:
1. Rostro reconocido como tal e identificado como sospechoso (Verdadero Positivo), ya que
se dice que la base de datos es de personas sospechosas de haber cometido algún delito.
2. Rostro reconocido como tal, pero no identificado (Verdadero Negativo).
3. Rostro distante del espacio de rostros identificados, pero cercano a una clase (Falso
Positivo).
4. Rostro distante del espacio de rostros identificados y alejado de alguna clase (Falso
Negativo).
Para los resultados de estas pruebas, se dice que la eficiencia ideal del sistema se obtiene
cuando el número de “Falsos Positivos” es igual a cero y se obtiene un máximo en el número
de “Verdaderos Positivos
En [20] se realizó un proyecto cuyo objetivo es la implementación de un sistema automático
de detección y reconocimiento de caras en imágenes estáticas. Este proyecto trata de hacer
la implementación de un sistema de reconocimiento de caras para comparar su eficacia
ante dos situaciones distintas. Se van a comparar los resultados que se obtienen cuando
se está en un ambiente controlado y frente a una situación en la que las fotografías son
menos propicias para la tarea de reconocimiento.
Durante el proceso de detección de caras, se utilizó una técnica basada en rasgos, más
concretamente la detección de pixeles de piel. La extracción de características se realizó
con 3 imágenes de cada persona, esta extracción se obtuvo por medio del algoritmo PCA
[21], con el cual a cada imagen se le extrajeron 4 conjuntos de características. Luego de
tener la extracción completa, se crearon 4 redes neuronales para cada uno de los conjuntos
de características y los resultados de cada red fueron combinados para dar como resultado
las M caras de la base de datos que más se parecen a la cara de la imagen de prueba. En
la universidad de Chile, se realizó un trabajo sobre el reconocimiento frontal de rostros en
base a imágenes de alta resolución [22]. Este trabajo utiliza la base de datos frontales
XM2VTS de la Universidad de Surrey, se toman 8 imágenes de cada sujeto, 6 de ellas para
el entrenamiento, una para la validación y la restante para prueba. La extracción de
15
características de los rostros, se realiza por medio de dos métodos el LBP y Filtro de Gabor.
Luego de tener la extracción se procede a realizar varias pruebas tomando un número
acotado de individuos de la base de datos, para estas pruebas, fue modificado el porcentaje
de resolución de cada imagen y también el tamaño de las mismas para así poder variar el
número de pixeles.
Uno de los algoritmos importantes sobre la detección de objetos o rostros es el algoritmo
de viola-jones, este es un método de detección que se destaca por su bajo coste
computacional y esto permite que sea empleado en tiempo real. El desarrollo de este
algoritmo se dio debido al problema con la detección de caras, ya que es muy utilizado, pero
también se puede utilizar para la detección de objetos. Este algoritmo se basa en los
clasificadores denominados Haar-like features que se pueden calcular por medio de una
imagen integral, estos clasificadores se agrupan en una cascada empleando un algoritmo
de aprendizaje basado en AdaBoost para conseguir un mejor rendimiento en la detección
[21].
En [23] se realizó un trabajo que estudia la posibilidad de emplear un sensor de imagen con
procesamiento en el plano focal que, entre otras operaciones, es capaz de realizar de
manera masivamente paralela una pixelación reconfigurable de la imagen, para sustituir al
cálculo de la imagen integral para la obtención de las Haar-like features y así con esto
conseguir que el proceso de detección sea más rápido. Para la realización de este trabajo
se utilizó la librería de visión artificial OpenCV, esta librería permite ser empleada en
aplicaciones académicas o comerciales, está escrita en C/C++ y esta optimizada para
operar en tiempo real.
16
5. OBJETIVOS
5.1. OBJETIVO GENERAL
Diseñar un software de detección e identificación de personas a partir del rostro, orientado
a un robot de servicio.
5.2. OBJETIVOS ESPECÍFICOS
Definir los requerimientos funcionales necesarios para el desarrollo del software de
detección e identificación de personas.
Construir un modelo que permita la detección de un rostro partiendo de una imagen.
Construir un modelo que permita la identificación de una persona, a partir de las
características extraídas en el proceso de detección del rostro.
Desarrollar el software de detección e identificación de personas, basado en la
información extraída en los modelos construidos.
17
6. MARCO TEÓRICO
En el desarrollo del proyecto se requieren distintos conceptos para la ejecución de los
objetivos. Inicialmente, se explica cada modelo de extracción de características aplicado en
la parte de detección e identificación rostros. Luego se explica cada uno de los
clasificadores que se utilizó y finalmente una explicación sobre las redes convolucionales
CNN.
6.1. MODELOS DE EXTRACCIÓN
6.1.1. MODELO DE HOG
El modelo de histogramas de gradientes orientados (HOG) es un método de extracción de
características, el objetivo de este es que la apariencia y forma local de un objeto pueda ser
caracterizada por la manera en que la dirección e intensidad de la iluminación cambian en
el borde en una región específica de la imagen [24].
Para obtener los descriptores HOG, se estima el gradiente horizontal y vertical de una
imagen. Luego de estos hallazgos, es posible conseguir su orientación en cada píxel, así
como el candidato del mismo, este último puede ser la magnitud, la magnitud elevada al
cuadrado, o alguno similar. A partir de esto, la imagen es dividida en celdas uniformes y
sobre estas, se obtiene un histograma de los candidatos dependiendo del intervalo de
orientación del gradiente. El descriptor final es constituido por el histograma de todas y cada
una de las celdas [25].
En la parte teórica de un Descriptor HOG, se tiene una imagen A de tamaño 𝑊𝑥𝐻; un
tamaño de celda 𝐶𝑤𝑥𝐶𝐻 con W mod 𝐶𝑤= 0 y H mod 𝐶𝐻 = 0; y un tamaño de bloque en celdas
𝐵𝑊𝑥𝐵𝐻; el ancho y alto de la imagen en celdas, 𝑊𝑐 y 𝐻𝑐, y el número de bloques distribuidos
horizontalmente y verticalmente, 𝑁𝐵𝑊 y 𝑁𝐵𝐻, se calculan con la Ec.(1) y Ec.(2) [31]:
𝑊𝑐 =𝑤
𝐶𝑤, 𝐻𝑐 =
𝐻
𝐶𝐻
(1)
18
𝑁𝐵𝑊 = 1 + 𝑊𝑐 − 𝐵𝑊, 𝑁𝐵𝐻 = 1 + 𝐻𝑐 − 𝐵𝐻 (2)
Con lo anterior, el número total de celdas 𝑁𝑐 y el número total de bloques 𝑁𝑏 resultantes de
la imagen A serán igual a la Ec.(3) y Ec.(4):
𝑁𝐶 = 𝑊𝑐 ∗ 𝐻𝑐 (3)
𝑁𝐵 = 𝑁𝐵𝑊 ∗ 𝑁𝐵𝐻 (4)
A partir de la distribución de celdas y bloques, el descriptor HOG calcula de forma
independiente el HOG de cada celda y cada bloque agrupa a los HOGs de sus celdas
correspondientes. El número de HOGs que contiene un descriptor será Ec.(5):
𝑁𝐻𝑂𝐺 = 𝐵𝑊 ∗ 𝐵𝐻 ∗ 𝑁𝐵 (5)
Con la teoría anterior se extrae los gradientes y luego se visualizan, en la
Figura 1 se puede observar los descriptores sobre una imagen.
Figura 1. Descriptores HOG sobre una imagen.
19
6.1.2. MODELO LBP
El patrón binario local (LBP) es un descriptor de textura en imágenes. Para cada pixel P en
la imagen se examina su 8-vecindad, a esto se le llama loses, los 8 pixeles que se
encuentran a su alrededor. Por cada pixel en esa vecindad debe determinarse si el valor de
intensidad es mayor o menor que el valor de intensidad del pixel P [26].
Para calcular LBP sobre una imagen en escala de grises se utiliza la siguiente ecuación:
𝐿𝐵𝑃𝑃,𝑅 = ∑ 𝑆(𝑔𝑝 − 𝑔𝑐)2𝑃, 𝑠(𝑥) = {1 𝑠𝑖 𝑥 ≥ 00 𝑠𝑖 𝑥 ≤ 0
𝑃−1
𝑝=0
(6)
Donde P es el número de vecinos que se van a considerar, R es el tamaño del vecindario
y, 𝑔𝑐 y 𝑔𝑝 son los valores de gris del píxel central y cada uno de los p píxeles del vecindario
respectivamente. En la Figura 2 observar un ejemplo del LBP [27].
Figura 2. Procedimiento de cálculo de LBP original.
20
6.1.3. MODELO BAG OF WORDS
El modelo Bag of Words utilizado en procesamiento del lenguaje natural, es un modelo de
clasificación de imágenes propuesto inicialmente por Sivic y Zisserman [28], que representa
una imagen en función de la frecuencia de una serie de elementos visuales. Se esperaría
que, por ejemplo, una imagen de un edificio contenga más ventanas que una imagen de un
árbol. Estos elementos visuales se llamarán palabras visuales. El conjunto de palabras
visuales constituye el diccionario [29].
Este modelo debe tener 3 pasos claros:
Detección de puntos de interés.
Descripción de características.
Generación de codebooks.
Detección de puntos de interés
Los detectores de puntos de interés tratan de encontrar características de las imágenes,
como pueden ser colores, bordes, esquinas, etc. Algunos de los más famosos pueden ser
el detector de esquinas de Harris, el detector SUSAN (Smallest Univalue Segment
Assimilating Nucleus), el detector SIFT de Lowey, el detector SURF (Speeded-Up Robust
Features) y el detector FAST (Features from Accelerated Segment Test) [29].
Extracción de descriptores
Para cada punto de interés obtenido en la imagen, se procede a sacar un vector de
características, llamado descriptor. Existen varios algoritmos de extractor de descriptores
como SURF, este extractor al tener los puntos de interés, calcula su orientación, mediante
el cálculo de la respuesta de Haar en la dirección x e y en un área circular alrededor del
punto. Cuando se obtiene la orientación se extrae el descriptor y o se construye una región
cuadrada alrededor del punto y orientada en la relación con la orientación calculada en el
paso anterior [29].
21
Generación de diccionario
Una vez extraídos los descriptores de todas las imágenes, mediante la extracción de puntos
característicos, y observando que no todas las imágenes tienen el mismo número de puntos
de interés, se suele realizar el denominado diccionario visual, o vocabulario de las
características. A este vocabulario se le denomina ‘codebook’ y sirve para describir las
imágenes usando un mismo número de características, agrupando estas características en
un mismo grupo denominado ‘cluster’ [29].
6.2. CLASIFICADORES
6.2.1. MODELO SVM
Support Vector Machine (SVM) es un método genérico que se utiliza para resolver
problemas de reconocimiento de patrones. Se toma un conjunto de puntos en un
determinado espacio en donde existen dos clases distintas, el SVM encuentra el hiperplano
que separa la mayor cantidad de puntos de la misma clase del mismo lado. Esto se realiza
maximizando la distancia de cada clase al hiperplano de decisión, denominado OSH
(Optimun Separating Hyperplane). Los puntos más cercanos al hiperplano, de cada
conjunto en cuestión, son los llamados vectores soporte (support vectors) [30].
Una SVM primero mapea los puntos de entrada a un espacio de características de una
dimensión mayor, ejemplo, (si los puntos de entrada están en 𝑅2 entonces son mapeados
por la SVM a 𝑅3 ) y encuentra un hyperplano que los separe y maximice el margen m entre
las clases en este espacio como se aprecia en la Figura 3 [31].
22
Figura 3. Hiperplanos de decisión para un problema de clasificación.
6.2.2. MODELO VECINO MÁS CERCANO (K NEAREST NEIGHBORS K-NN)
Esta técnica se basa en recordar todo lo que se hizo en la etapa del entrenamiento. Cuando
pasa al sistema de aprendizaje, este se clasifica según el comportamiento del dato que esté
más cerca [32]. Es usado para clasificar objetos basados en la cercanía presente en
elementos de un espacio n-dimensional. Cuando un elementó llega, k-NN encuentra los k
vecinos más próximos al nuevo ejemplar tomando en cuenta todo el conjunto existente
previamente, basándose en la similitud o distancia. Se crea un proceso de votación para
elegir la clase perteneciente según los k vecinos más cercanos [32]. En la Figura 4 se puede
observar un ejemplo sobre K vecinos.
23
Figura 4. Ejemplo sobre K vecinos.
6.2.3. ÁRBOL DE DECISIÓN
El árbol de decisiones es una técnica que desarrolla métodos y sistemas de razonamiento,
que son utilizados en investigaciones de inteligencia artificial y programación de
aplicaciones, por su estructura son fáciles de comprender y utilizar. Existen varias áreas en
donde se utilizan los arboles de decisión como, diagnósticos médicos, predicciones
meteorológicas, controles de calidad, y otros problemas que necesiten de análisis de datos
y toma de decisiones [33].
Como se muestra en la Figura 5, se encuentra un ejemplo de la construcción de un árbol
de decisión. Dentro de un Árbol de Decisión un cuadrado (■) significará un punto de
decisión, es decir, el punto desde el cual se fija un curso de acción; y un círculo (●)
significará los posibles eventos asociados al curso de esa acción [33].
24
Figura 5. Estructura árbol de decisión [33].
6.2.4. PERDIDA DE CLASIFICACIÓN (RESUBLOSS)
Las funciones de pérdida de clasificación miden la inexactitud predictiva de los modelos
de clasificación. Al comparar el mismo tipo de pérdida entre muchos modelos, una pérdida
menor indica un mejor modelo predictivo [34].
Esta pérdida se utiliza para dos tipos de clasificación y se puede utilizar con la Ec.(7) de
pérdida cuadrática:
𝐿 = ∑ 𝑤𝑗(1 − 𝑚𝑗)2
𝑛
𝑗=1
(7)
Clasificación Binaria
Utilizando la ecuación 1 se considera lo siguiente:
o L es la pérdida de clasificación promedio ponderado.
o n es el tamaño de la muestra.
25
𝑦𝑗 es la etiqueta de clase observada. El software lo codifica como -1 o 1
indicando la clase negativa o positiva, respectivamente [34].
𝑓 (𝑋𝑗) es el puntaje de clasificación sin procesar para la observación (fila) j de
los datos del predictor X [34].
𝑚𝑗 = 𝑦𝑗𝑓 (𝑋𝑗) es el puntaje de clasificación para clasificar la observación j en
la clase correspondiente a 𝑦𝑗. Los valores positivos de 𝑚𝑗 indican una
clasificación correcta y no contribuyen mucho a la pérdida promedio. Los
valores negativos de 𝑚𝑗 indican una clasificación incorrecta y contribuyen a la
pérdida promedio [34].
Clasificación Multiclase (K≥3)
Utilizando la ecuación 1 se considera lo siguiente:
o L es la pérdida de clasificación promedio ponderado.
o n es el tamaño de la muestra.
𝑦𝑗 * es un vector de K - 1 ceros, con un 1 en la posición correspondiente a la
verdadera clase observada 𝑦𝑗. Por ejemplo, si la clase verdadera de la segunda
observación es la tercera clase y K = 4, entonces y * 2 = [0 0 1 0]'. El orden de
las clases corresponde al orden en la propiedad ClassNames del modelo de
entrada [34].
𝑓 (𝑋𝑗) es el vector K de longitud de los puntajes de clase para la observación j
de los datos del predictor X. El orden de los puntajes corresponde al orden de
las clases en la propiedad ClassNames del modelo de entrada [57].
𝑚𝑗= 𝑦𝑗* ‘𝑓 (𝑋𝑗). Por lo tanto, 𝑚𝑗es el puntaje de clasificación escalar que el
modelo predice para la clase real observada [34].
26
6.2.5. VIOLA & JONES
El algoritmo de Viola-Jones permite la detección en tiempo real de caras. Este algoritmo
presenta una gran rapidez y es una ayuda efectiva dentro de los algoritmos de detección,
ya que la clasificación se hace pixel a pixel, esto permite abstracción del algoritmo respecto
el resultado [35]. Este algoritmo tiene tres contribuciones fundamentales: la creación de una
nueva representación de la imagen, llamada imagen integral; la construcción de un
clasificador basado en AdaBoost; y la combinación de clasificadores en cascada [36].
Imagen Integral
La imagen integral permite una rápida extracción de características al disminuir
considerablemente el número de operaciones sobre los pixeles. El tamaño de la imagen
integral es la misma de la imagen original y los pixeles contienen la información de
luminancia entre las coordenadas (0,0) y el pixel en cuestión [36]. La Figura 6 muestra la
región de luminancia.
Figura 6. Imagen integral [62].
27
Construcción de un calificador basado en AdaBoost
Para garantizar una clasificación rápida, el proceso de aprendizaje debe excluir una gran
mayoría de las posibles características, y centrarse en un pequeño conjunto de
características críticas. En el algoritmo de Viola-Jones, hay clasificadores débiles que se
apoyan en una sola característica. El resultado de cada etapa del proceso de Boosting, que
selecciona un nuevo clasificador débil, es un proceso de selección de características [36].
Combinación de clasificadores en cascada
Es un método para combinar clasificadores sucesivamente más complejos en cascada, esto
incrementa la velocidad del detector centrando la atención en las ventanas importantes de
la imagen. El objetivo es determinar con rapidez donde se encuentra la cara en una imagen
y reservar el procesado más complejo para estas ventanas, así con esto la probabilidad de
que falle disminuya y la probabilidad de detección aumente a medida que se superen las
etapas. En la figura 7 se puede observar el proceso de cascada [36].
Figura 7. Clasificadores en cascada [36].
28
6.2.6. KERNEL
Es un grupo de algoritmos en el mundo del análisis inteligente de datos y reconocimiento
de patrones. Es una combinación de varios algoritmos eficientes como el perceptrón y tiene
la flexibilidad de sistemas no lineales. Kernel lleva los datos a un espacio vectorial y en este
espacio se aplican métodos lineales para identificar los patrones [37].
Existen tres tipos de funciones kernel [60]:
Lineal: 𝐾(𝑥𝑖 , 𝑥𝑗) = 𝑥𝑖𝑇𝑥𝑗
Gaussiano: 𝐾(𝑥𝑖 , 𝑥𝑗) = exp (‖𝑥𝑖−𝑥𝑗‖
2
2𝜎2)
Polinómico: 𝐾(𝑥𝑖 , 𝑥𝑗) = (𝑥𝑖𝑇𝑥𝑗 + 1)𝑛
6.3. DEEP LEARNING
Deep Neural Networks, son una aplicación de Deep Learning, estas son redes de neuronas
con muchas capas ocultas. Una red neuronal se propone como un sistema inteligente que
imita al sistema nervioso y a la estructura del cerebro, pero muy diferente en términos de
su estructura y escala. Al igual que las neuronas biológicas, las neuronas artificiales se
interconectan para formar redes de neuronas artificiales. Cada neurona artificial utiliza una
función procesamiento que agrega la información de conexiones de entrada con otras
neuronales artificiales, una función de activación y una función de transferencia para dar
una salida de la neurona en sus conexiones de salida [38].
Figura 8. Ejemplo de una red neuronal.
29
El Deep Learning usa una red neuronal artificial que se compone de un número de niveles
jerárquicos. En los primero niveles la red aprende algo simple y luego envía esta información
al siguiente nivel. Con esta información el siguiente nivel, la combina y compone una
información un poco más compleja y lo pasa al siguiente nivel y así sucesivamente [39].
Una DNN utiliza las redes neuronales con muchas capas ocultas como se observa en la
Figura 9.
Figura 9. Ejemplo neurona con muchas capas ocultas.
6.3.1. REDES NEURONALES CONVOLUCIONALES
Son un modelo donde las neuronas corresponden a campos receptivos de una manera muy
similar a las neuronas de la corteza visual primaria de un cerebro biológico [40]. Estas redes
se componen de múltiples capas, al inicio de la red se encuentra la fase de extracción de
características, la fase está compuesta por capas convolucionales y de reducción. A medida
que se avanza en las capas de la red se disminuyen las dimensiones activando
características cada vez más complejas. Al final se encuentran totalmente conectadas para
realizar la clasificación [41].
30
Arquitectura
Una red neuronal convolucional es una red multicapa que consta de capas convolucionales
y de submuestreo alternadas, y al final tiene capas de conexión total como una red
perceptrón multicapa [42].
Figura 10. Arquitectura de una red neuronal convolucional [42].
Convolución
En la convolución se realizan operaciones de productos y sumas entre la capa de partida y
los n filtros (o kernel) que genera un mapa de características. Las características extraídas
corresponden a cada posible ubicación del filtro en la imagen original. Después de aplicar
la convolución se les aplica a los mapas de características una función de activación [42].
32
7. DESARROLLO DEL PROYECTO
El procedimiento utilizado para la construcción del proyecto se encuentra estructurado en
nueve fases, las cuales se dividen en: Investigación de algoritmos y herramientas, selección
de ambiente controlado y hardware, creación de banco de imágenes (dataset) definición de
metodología de software, extracción de requerimientos funcionales de la aplicación de
detección y reconocimiento de rostros, construcción de modelos, validación de construcción
de modelos, diseño e implementación de la aplicación de reconocimiento y detección de
rostros, y por último, la validación de aplicación, observadas en la Figura 12.
Las fases anteriormente mencionadas se desarrollaron de manera secuencial puesto que
cada una de ellas requiere el uso del paso anterior para su próximo desarrollo, en el
presente documento se explicará de manera individual, con el fin de describir
detalladamente la metodología utilizada.
34
7.1. INVESTIGACIÓN DE ALGORITMOS Y HERRAMIENTAS
La plataforma utilizada es MATLAB, ya que con este medio es posible cumplir los objetivos
anteriormente planteados, se usó la versión R2017a para el desarrollo de todo el software
del proyecto, considerando toda la gama de algoritmos disponibles para realizar la detección
e identificación de rostros. Dos pasos son necesarios para lograr cualquiera de los dos
casos, el primero es la extracción de características de las imágenes y el segundo es el
clasificador de las mismas, para cada uno de ellos se realizó la investigación pertinente.
En el primero se revisó la técnica LBP (Local Binary Patterns), HOG (Histograma orientado
a gradientes) y BOF (Bag of features), en el segundo fue revisado SVM (Support Vector
Machine), arboles de decisión, KNN, Viola&Jones, Eigenfaces, estos algoritmos son los
investigados en primera medida, después, se buscó información acerca de Deep Learning
y las redes neuronales convolucionales para ser utilizado en el proyecto con redes pre-
entrenadas mayormente, además se informó acerca de la validación cruzada para el manejo
de los bancos de imágenes creados.
7.2 SELECCIÓN DE AMBIENTE CONTROLADO Y HARDWARE
7.2.1 AMBIENTE CONTROLADO
Es necesario realizar la parametrización de los elementos que componen el ambiente en
donde serán tomadas las imágenes, estos son: la luz, la distancia, la cantidad de personas,
el fondo, y que la cara se encuentre de manera frontal hacia la cámara.
El primer componente referente a la luz, se tomará la foto en el laboratorio en horas del día,
más específicamente en la mañana, se encuentran varias ventanas que son recubiertas con
persianas, logrando un rango general en las fotos tomadas, no siendo posible que sean
oscuras. El segundo componente es la distancia, en este se escogió que fuera alrededor de
un metro con la cámara, para realizar el proceso concerniente al software. El tercer
componente es la cantidad de personas, se decidió que solo estuviera una persona frente
35
a la cámara para mayor seguridad en la conclusión del programa. El cuarto componente el
fondo, idealmente debe ser blanco, pero en la realidad es que sea con la menor cantidad
posible de elementos que estén alrededor de la persona. Por ultimo las personas debe estar
frontal hacia la cámara no puede ser lateral.
7.2.2 HARDWARE
En el armado del software, es necesario tener un hardware con buenas condiciones de
rendimiento ya que los algoritmos utilizados, requieren una capacidad de procesamiento
considerable, por tanto, fue adquirido un equipo con las siguientes prestaciones en
procesador (Tabla 1) y la GPU utilizada con la tarjeta gráfica (
Tabla 2), además de la memoria ram de 16 gb ddr4 y frecuencia de 2400 mhz:
Tabla 1. Procesador.
Procesador Intel Core i7-7700
Desempeño
Cantidad de núcleos 4
Cantidad de subprocesos 8
Frecuencia básica del procesador 3,6 GHz
Frecuencia turbo máxima 4,2 GHz
Caché 8 MB SmartCache
Velocidad del bus 8 GT/s DMI3
Cantidad de enlaces QPI 0
TDP 65 W
Tabla 2. GPU.
Chip gráfico
Modelo GPU GP107
Variante GP107-400-A1
Fabricación 14 nm Samsung
Tamaño del chip 135 mm
N.° de transistores 3300 millones
Multiprocesadores de flujos de datos 768
Unidades de textura 48
Unidades de renderizado 32
36
Frecuencia base 1290 MHz
Frecuencia turbo 1392 MHz
Memoria
Tipo GDDR5
Interfaz 128 bits
Rendimiento
Tasa texturas 66.82 Gtexel/s
Tasa píxel 44.54 Gpixel/s
Operaciones en coma flotante 2.14 TFLOPS
FP64 1./32.
Además de este equipo fue necesario la utilización de una cámara para la toma de las fotos,
la cual es una HP 2100 webcam se muestran en la Tabla 3 las diferentes características
técnicas, mediante la función webcam es posible utilizarla, y cambiar algunos atributos de
esta en el proceso del software como por ejemplo la resolución.
Tabla 3. Cámara.
HP Webcam 2100
Matrix: 1,3 millones de píxeles,
CMOS
Resolución (video): 1280x1024
La frecuencia máxima de cuadros: 30 Hz
Compatible con: 640x480 @ 30 Hz
Resolución interpolada en megapixels (foto): 8 Millones de píxeles
7.3 CREACIÓN DE BANCO IMÁGENES EN CARPETAS
En una tercera medida es necesario tener a disposición un banco de imágenes para realizar
el entrenamiento, y construcción de los modelos, por tal motivo se crearon unas carpetas
destinadas a ser las muestras a utilizar en los diferentes modelos.
7.3.1 MODELO 1: DETECCIÓN DE ROSTROS EN UNA IMAGEN
En el primer modelo el objetivo es determinar si hay un rostro o no dentro de una imagen
tomada por una cámara, por tanto, se crearon dos carpetas, una con imágenes que
37
contuvieran rostros en ella, y la otra fue con la una cantidad diferente de escenarios para
abarcar donde no hubiese caras de personas.
Se construyó un dataset de muestras positivas y negativas, para hacerlo posible fueron
utilizadas varias páginas de bancos de imágenes de internet como pexels.com,
pixabay.com, stokpic.com, Stocksnap.io, entre otras. Además, fueron usadas imágenes del
Grupo Calthech gratuito para la descarga apropiada [43]. Por ejemplo, se divisa en la Figura
13 un mosaico con diferentes imágenes de rostros de una persona y en la Figura 14 el
mosaico de varios objetos que hace alusión al caso de sin rostro.
Figura 13. Mosaico Con Rostro.
38
Figura 14. Mosaico Sin Rostro.
Las imágenes incluidas en las carpetas de muestras positivas constan de fotos de rostros
de diferentes personas con entornos variados, de esta manera, las características
ambientales son amplias o de gran rango. También es posible encontrar imágenes en
distintas posiciones y puede haber varias personas en una misma foto. En las carpetas de
muestras negativas se encuentran objetos, animales o paisajes ya sean artificiales o
naturales, que rodean y hacen parte de la realidad tales como armas, banderas, maletas,
binoculares, dirigible, plantas, estatuas, osos, mariposas fuentes, casas, naturaleza, y
muchos otros ejemplos.
39
En la ¡Error! No se encuentra el origen de la referencia. se observan diferentes casos q
ue fueron tenido en cuenta, se puede observar la posibilidad que una misma foto estén
varias personas, se expone la foto de un arma como una opción de objeto, el ejemplo
referido hacia animales, y por último muestra diferentes de los posibles paisajes.
Figura 15. Mosaico diferentes tipos de imágenes en sin rostro.
7.3.2 MODELO 2: IDENTIFICAION DE PERSONAS
En el segundo modelo el objetivo es identificar a la persona, siendo posible las opciones
de Juan David Vargas Alejo, Paula Janeth Moreno Escobar o una persona desconocida.
Por esta razón, se crearon dos carpetas, una perteneciente a cada una de las personas
en un ambiente controlado predispuesto anteriormente.
40
Se creó un dataset de fotos de Juan David Vargas Alejo y de Paula Moreno, mediante la
cámara se realizaron 200 fotos de cada uno, separando en datos de entrenamiento (80%)
y de prueba (20%) en primera medida, mostrados algunos ejemplos en los mosaicos
correspondientes a cada una de la Figura 16 y Figura 17 .
Figura 16. Mosaico de Juan David Vargas Alejo.
41
Figura 17. Mosaico de Paula Janeth Moreno.
Persona desconocida: Esta opción se dará mediante la comparación del resultado con un
margen, este tendrá el valor de 90%, si el resultado es mayor a este brindara una respuesta
respecto a que persona conocida es, si está por debajo genera un mensaje de voz y texto
que contiene “persona desconocida”.
7.4 METODOLOGÍA DE SOFTWARE
En la realización del software es necesario tener una metodología adecuada para el proceso
de corrección y revisión al construir los modelos, el modelo escogido con el fin de lograr
buenos resultados fue el Modelo en Espiral.
42
Es un modelo de proceso de software evolutivo donde se comienza analizando las
diferentes posibilidades de desarrollo y se asume el menor riesgo posible para empezar a
utilizar. Se valida el resultado, si no es el esperado se repite el ciclo cambiando factores o
variables para lograr el objetivo. El modelo en espiral consiste en varios pasos, en primer
lugar, se encuentra determinar el objetivo, lo cual consiste en la detección de rostros e
identificación de personas para en un ambiente controlado. Luego de esto sigue el análisis
de riesgo que se trata del Porcentaje de error presente en los clasificadores, factores
cambiantes del ambiente, dispositivo externo en este caso la cámara y las características
como tipo y calidad. Lo cual está relacionado con las prestaciones del computador utilizado
para la creación y prueba ya que en intentos de utilizar un banco de imágenes más grande
para un mayor detalle es necesario que exista un mayor desempeño.
Después del análisis de riesgo, es necesario desarrollar, validar y probar. En este punto se
requiere de un código y su posterior aplicación. En primer lugar, es necesaria la creación
del código base para construcción parcial de los modelos, la verificación de porcentaje de
error dependiendo de la base de datos presente, y de la técnica utilizada en las dos
secciones (Extractor de características y construcción del calificador), esto es para cada
uno de los modelos. Después, sigue la creación de la aplicación, después de la escogencia
de un porcentaje de error aceptable, con la continuación de los diferentes pasos como son
lectura de cámara, toma de un video, y captura de una foto. Esto con el fin de procesar la
imagen con los modelos y generar una respuesta textual y de voz. (Realizar el proceso
anterior automático cada 5 segundos).
7.5 EXTRACCIÓN DE REQUERIMIENTOS FUNCIONALES DE LA APLICACIÓN DE
DETECCIÓN Y RECONOCIMIENTO DE ROSTROS
Conforme a los objetivos planteados previamente para el desarrollo del proyecto, se
presentan los requerimientos funcionales necesarios para la construcción del trabajo, estos
con el fin de determinar las características que tendrá la interfaz y su funcionamiento, antes
de empezar se recuerda que se realizó un estudio de las diferentes técnicas de extracción
de características de una foto y los métodos para clasificar en la herramienta Matlab:
43
Se debe tomar una foto cada 5 segundos en un ambiente controlado y sea procesada
posteriormente por el software.
Se verificará por medio del software si la foto tomada tiene rostro o no.
Si al verificar que la foto tiene rostro, el programa determinará si la persona es
conocida o desconocida.
Si es una persona conocida, la aplicación sabrá qué persona es y le dará un saludo
cordial.
La aplicación se realiza por medio de GUI Matlab, este GUI tendrá un cuadro donde
ira la foto que toma cada 5 segundos, determinará si es conocido o desconocido, si es
conocido saldrá el nombre de la persona y también se podrá escuchar un audio con
el saludo cordial.
La aplicación tendrá tres métodos cada uno de ellos con un proceso diferenciado,
aunque sea similares en algunos casos, el primero tendrá una base de datos ya
procesada para identificar un ejemplo de cada caso, el segundo será manual en
cuanto a tomar la foto y procesarla, el tercero será automático realizando el proceso
completo.
El último requerimiento se da una necesidad gracias al formato o forma que queremos
generar, para la presentación de la interfaz y el manejo de cada una de las funcionalidades,
con esto que sea lo más completa posible la aplicación en busca del cumplimiento de los
objetivos y la interacción del usuario.
7.6 CONSTRUCCIÓN DE MODELOS
En la construcción de los modelos se utilizaron diferentes algoritmos, que se concretaron en
diferentes fases, en la primera fase se construyó el banco de imágenes descargadas de
forma gratuita, se dio inicio con ellas a la lectura y almacenamiento dentro de la herramienta
Matlab, en la segunda fase se realizó la repartición de las muestras en el porcentaje de
entrenamiento y prueba cambiándose estos para cada uno de los experimentos
(aproximadamente veinte), tomando los valores de cada uno de ellos, se definieron los
vectores o variables, en la tercera fase se procesa la extracción de características y
almacenamiento en los espacios de memoria anteriormente previstos (vectores y variables),
44
tomando como base la investigación de los algoritmos realizada para la clasificación de
imágenes, se consideran las funciones determinando los diferentes parámetros, ejecutando
la correspondiente validación mediante pruebas siendo posible evidenciar a grandes rasgos
este proceso en la Figura 18.
46
En el primer paso, se tiene en cuenta que se dispone de un conjunto de imágenes en
carpetas almacenadas con todos los archivos que componen el proyecto. Se almacenan los
datos en un objeto que guarda la descripción de las imágenes, la ruta de cada una de ellas,
y la cantidad total que se tiene, con esto realizado se procede a realizar la lectura de cada
una de ellas, logrando que sea posible la manipulación de la información de cada una de
las imágenes dentro de la plataforma Matlab.
En el segundo se repartieron en dos conjuntos complementarios los datos de muestra,
realizar el análisis de un subconjunto denominado datos de entrenamiento, y validar el
análisis en el otro subconjunto denominado datos de prueba, de forma que la función de
aproximación sólo se ajusté con el conjunto de datos de entrenamiento y a partir de esto
calcula los valores de salida para el conjunto de datos de prueba en este caso, información
mediante texto (La descripción de la clase como lo son con rostro, sin rostro, persona
desconocida y persona conocida).
En el primer modelo se utilizaron tres funciones, la primera que ajusta la información del
modelo dependiendo de la plantilla que se empleó (fitcecoc), y la segunda que directamente
realiza la creación de la máquina de vectores de soporte (fitcsvm), la tercera función
“trainImageCategoryClassifier”, que genera la información de la imagen y los predictores en
un clasificador de categoría de imagen conteniendo su número y las etiquetas de estas, se
utilizó también un clasificador de multiclases de máquina de vector de soporte, ya que los
extractores y clasificadores secuencialmente actúan se concluye que son los pasos
fundamentales de la construcción del mismo, al extraer los vectores de caracterización se
emplearon los algoritmos de HOG, LBP, BOF, y en la clasificación de las imágenes se
usaron los códigos de V&J, SVM, TREE, KNN. En el segundo modelo se utilizó con la
diferencia de que se omitió el código V&J.
Profundizando con el tema referente a cuál algoritmo utilizar para la creación de los
modelos, se verifico o se investigó referente a Deep Learning, ya que es una de las técnicas
más recientes y de las más usadas para la detección e identificación facial, se investigó
acerca de redes pre-entrenadas tal como Alexnet, además de una revisión general de las
redes neuronales convolucionales, para la construcción de una propia y gestar una
comparación con la ya existentes.
47
En las primera tablas de cada técnica se habla acerca del primer modelo, el de detección
de rostros en el segundo grupo de tablas se demuestran los resultados acerca del modelo
de identificación de rostros, enumeradas cada una dependiente de su correspondencia.
7.6.1 HOG
En el extractor HOG, se obtuvo el vector de características de las imágenes para ser
procesada como entrenamiento para la máquina, para el caso de la carpeta FACEDATA4
es de una longitud de 167796 espacios de memoria, no fue posible utilizar el banco
(BIGFACE3) con mayor cantidad de fotos por las limitaciones de la plataforma, se guardó
en un vector la descripción de cada una de las elecciones, y las opciones que existen acerca
de este tópico.
En el segundo modelo se realizó el mismo proceso, con la diferencia de la carpeta utilizada
para el muestreo, con el almacenamiento en los correspondientes vectores, y su correcto
tratamiento para conseguir la respuesta esperada.
7.6.2 LBP
En el extractor LBP, primero fue necesario convertir las imágenes a una escala de grises,
para ser posible procesarlas, con este proceso, se definió uno de los parámetros del
histograma, el que define el número de celdas, y permite crear el vector de las descripciones
de las fotos, para tener almacenado el tipo de elemento que es, se manejó este método
para los dos modelos diferenciando las carpetas manejadas.
7.6.3 BOF
En el extractor BOF, como su nombre lo indica se obtiene una salida que consiste en una
bolsa de palabras de la imagen. Se considera una serie de parámetros para lograr tener
una respuesta cercana a lo esperado que significa un porcentaje alto en la clasificación de
imágenes, el primero es la cantidad de palabras que estarán en la bolsa, esto hace variar
el resultado de forma considerable ya que aumenta o disminuye el detalle referente al
análisis de la imagen.
48
En el segundo se encuentran dos opciones, una es detector, que consiste en que los puntos
de características se seleccionan usando un detector de característica robusta
acelerada(SURF) mirando la superficie o el contorno de los objetos logrando una mayor
definición del mismo, o de lo contrario se recogen en una cuadricula predefinida con un
espaciado definido por “GridStep”, el tercer parámetro es “strongestFeatures”, siendo que
este valor representa la fracción de las características más fuertes dentro de cada etiqueta,
es mejor que el valor fuera cercano a 1, tomando la mayoría de atributos como importantes
ya que abarca un mayor margen de posibilidades, se manejó este procedimiento para los
dos modelos.
7.6.4 V&J
En el clasificador Viola&Jones existen diferentes factores, que son los argumentos de
entrada, los diferentes parámetros que lo definen, así como la salida que se obtiene que es
un archivo XML explicados en la Tabla 4.
Tabla 4. Parámetros Viola & Jones.
trainCascadeObjectDetector
NOMBRE DESCRIPCIÓN
INPUT ARGUMENTS
INPUT ARGUMENTS
Muestras positivas, especificadas como una tabla de dos columnas o una estructura de dos campos. La primera columna de tabla o campo de estructura contiene nombres de archivo de imagen, especificados como vectores de caracteres. Cada imagen puede ser de color verdadero, escala de grises o indexada, en cualquiera de los formatos admitidos por imread.
NEGATIVEIMAGES
Imágenes negativas, especificadas como un objeto imageDatastore, una ruta a una carpeta que contiene imágenes o como una matriz de celdas de nombres de archivos de imágenes. Debido a que las imágenes se utilizan para generar muestras negativas, no deben contener ningún objeto de interés. En cambio, deben contener fondos asociados con el objeto.
OUTPUTXMLFILENAME Nombre del archivo del detector de cascada entrenado, especificado como un vector de caracteres con una extensión XML. Por ejemplo, 'stopSignDetector.xml'.
PARAMETROS
49
FALSEALARMRATE Tasa de falsa alarma aceptable en cada etapa. Este da cuenta de la fracción de muestras de entrenamiento negativas clasificadas incorrectamente como muestras positivas
NUMCASCADESTAGES Número de etapas en cascada a entrenar.
TRUEPOSITIVERATE Velocidad positiva verdadera mínima requerida en cada etapa. La fracción de muestras de entrenamiento positivas correctamente clasificadas
NEGATIVESAMPLESFACTOR Factor de muestra negativo
Con la Tabla 4 se observó que un número grande de etapas dan como resultado un detector
más preciso, pero también aumenta el tiempo de entrenamiento, además de requerir más
muestras, pero finalmente, se obtuvo mejor resultado a partir de este caso ubicando un
límite de 20 cascadas, debido a la cantidad de instancias poseídas, nunca se llegó hasta tal
número.
El segundo es “FalseAlarmRate”. Después de varias pruebas, se decidió que la mejor
opción para el valor es 0.1 mediante ensayo y error, siendo utilizada para las últimas partes
del experimento que consiste en la totalidad del anexo a. Por último, fue utilizado el
parámetro “TruePositiveRate”. Este valor fue rotundamente validado ya que cambiándolo
se disminuye considerablemente el porcentaje que da como resultado lo demostrado en el
Anexo 1. Todas estas meta-parámetros afectan el rendimiento del modelo teniendo en
cuenta los valores que se escojan.
En el Anexo 2 se generó con un mayor número de muestras positivas mejores resultados
utilizando el mismo tipo de configuraciones anteriormente explicadas, aunque la diferencia
no es muy grande y el tiempo de procesamiento tuvo un aumento considerable.
50
7.6.5 SVM
En el clasificador SVM, se manejan varios parámetros, para poder ser utilizado, vamos a
mirar cada uno de ellos y cuál es su función, el primero es “BoxConstraint” siendo la
restricción de caja, cuanto mayor es, también aumenta el costo de los puntos mal
clasificados, lo que lleva a una separación más estricta de los datos, se colocó varios valores
a esta medida para saber los resultados que producía en cada uno de los casos siendo
observable para los extractores LBP y BOF en los Anexo 5, Anexo 6, Anexo 7, Anexo 8
para cada uno de los modelos, el segundo “KernelFunction”, la función kernel utilizada para
calcular los elementos de la matriz Gram, existen diferentes ecuaciones o fórmulas que son
Gaussian y Polynomial se probó con la primera con el extractor HOG (Anexo 5 y Anexo 4)
y con la segunda en todos los extractores definidos en los Anexo 3, Anexo 4, Anexo 5,
Anexo 7 y Anexo 8
El tercer caso es “CacheSize”, el tamaño de la cache para contener la matriz Gram se
escogió “maximal” para ser capaz de reservar la mayor cantidad de memoria para ser
contenida definido de esta manera para todos los experimento, el cuarto “KernelScale”, el
software divide todos los elementos de la matriz de predicción x por el valor de KernelScale
luego aplica la norma kernel para calcular la matriz de Gram se dejó en auto para ser
calculada internamente el mejor valor dependiendo de la situación que se encontrara, y por
último “Solver” existen dos opciones asequibles que son “ISDA” (Algoritmo iterativo de datos
únicos), o “SMO”.
Adicionalmente en el Anexo 3, se calcula el error cuadrático medio para cada una de las
configuraciones, ya que si el que tenga el más alto valor tendrá mayor rendimiento en el
porcentaje de resultado, con esto otro punto de decisión para escoger el que al final va ser
utilizado, además se calculó los diferentes tiempos de procesamiento en cada uno de los
extractores para cada una de las configuraciones, siendo muy variable ya que no siempre
se reconocía un patrón con relación al porcentaje de eficacia en la clasificación de las
imágenes.
En el Anexo 3 se encuentra que a menor tiempo de procesamiento de entrenamiento se
consiguió un mejor porcentaje como resultado, además que la función kernel de mejor
51
desempeño ha sido el polinomio a grado 3, dando el valor de 86,6421569, el mejor obtenido
en este experimento.
En el Anexo 4 la equivalencia entre parámetros no es muy observable ya que siempre el
resultado es 100%, se debe tener en cuenta que las imágenes establecidas poseen
características muy parecidas de ambiente, siendo verificadas posteriormente en la
aplicación, el Anexo 3 corresponde al primer modelo y el Anexo 4 al segundo modelo.
En el Anexo 5 y Anexo 6 se dispone de un comportamiento de variabilidad con respecto al
tiempo de procesamiento y al porcentaje de resultados, siendo que en el primer modelo el
polinomio lineal dio mejores efectos, y en el segundo modelo se encuentra una gran
cantidad de valores de 100% que pueden ser validada su veracidad en los experimentos de
la aplicación.
El Anexo 7 y Anexo 8 está referida hacia el extractor BOF en donde se puede observar la
variabilidad que presenta los cambios en el tiempo de procesamiento con respecto al
porcentaje que da como resultado, existiendo varios 100% en la salida con diferentes
configuraciones optando por ser mejor en los polinomios de grado 3 y 5, en el segundo
modelo gracias a la menor dificultad de decisión es posible mejores efectos en la
clasificación de las imágenes.
En el Anexo 9 se muestran las mismas configuraciones anteriormente explicadas, con la
diferencia que se utilizó el banco de imágenes de mayor tamaño (Carpeta BIGFACE) para
verificar el cambio de los porcentajes con respecto a las mismas condiciones, pero con la
carpeta FACEDATA4, con esto se puede dar cuenta que son menores y que el tiempo de
entrenamiento es mucho mayor.
7.6.6 TREE
En el clasificador TREE se evidencia varias características siendo necesario una
explicación, el primero y el más importante es el número máximo de divisiones de decisión
(o nodos de ramas) por árbol, escogido por un numero entero positivo se escogieron los
valores de 5,20,50,80,100,500 almacenado en un vector para probar que sucedía con pocas
o muchas ramas observable en el Anexo 10 y Anexo 11 para cada uno de los modelos
52
respectivamente, el segundo es en donde el árbol de decisión fusiona las hojas que se
originan en el mismo nodo padre, y que proporciona una suma de valores de riesgo mayores
o iguales al riesgo asociado con el nodo padre, ya que el porcentaje final es más alto, y por
último el parámetro comienza con todas las categorías C en la rama derecha después se
mueven cada categoría a la rama izquierda, porque, cada vez se disminuyendo la impureza
en las categorías restantes, y se escoge la que tenga el valor menor.
En Anexo 10 y Anexo 11 se expone con el extractor HOG y el clasificador TREE, los
resultados de eficacia en cuanto porcentaje dado según la cantidad de ramas que se utilice
y el porcentaje de entrenamiento que se escogió, además se calculó el tiempo de
procesamiento siendo variable con respecto a la salida sin existir un claro patrón y el error
cuadrático medio con el fin de deducir cual configuración tenía mejor desempeño,
definiendo que fue con 20 ramas, 60% en la cantidad de muestras destinadas a el
entrenamiento, logrando un resultado de 67,6470588. En el segundo modelo la salida es la
misma de un 100% no aportando mucho a una conclusión.
7.6.7 KNN
En el clasificador KNN, el primer parámetro a observar es el número de vecinos más
cercanos en x a encontrar para clasificar cada punto al predecir, se escogieron los valores
de 5,20,50,80,100,500, con el fin de probar su funcionamiento evidenciado en el Anexo 12
y Anexo 13 , otro de los importantes es la métrica de distancia, existen varias opciones, se
vieron algunas como ‘correlation’, ‘cosine’, ‘euclidean’ y ‘mikowski’, y por último
“standardize” escogido con true para que se centralizara y escalara cada columna de los
datos del predictor (x) por la media de la columna y la desviación estándar, respectivamente.
En Anexo 12 y Anexo 13 se encuentran los resultados de eficacia para el extractor HOG y
el clasificador KNN, se determina la cantidad de números cercanos que van a haber y se
implementa la validación cruzada, obteniendo para cada uno de los casos un valor, además
se calcula el tiempo de procesamiento y el porcentaje de eficacia en la clasificación de las
imágenes y por último el error cuadrático medio, dado a la variabilidad de cada uno de ellos,
no se encuentra un patrón fijo, por tanto, se decide la configuración que vaya acometida
por el mejor porcentaje de salida, que es con 500 ramas, genera una eficacia del 79,1541%.
53
7.6.8 DEEP LEARNING
Esta red neuronal de tipo convolucional fue creada inicialmente para un concurso llamado
ImageNet Large Scale Visual Recognition Competition (ILSVRC). Alexnet está formada por
cinco capas convolucionales, capas de agrupación máxima, capas eliminadas, y tres capas
totalmente conectadas. La red se diseñó para la clasificación de mil posibles categorías.
Figura 19. Ejemplo arquitectura alexnet.
Tabla 5. Definición de capas.
Softmax
4096x1000
4096x4096/ReLU
Entrada
256x4096/ReLU
Convolución
Max pool 3x3, s2, p1
Pool
3x3x192, s1, p1, 256/Relu
LRN
3x3x192, s1, p1, 384/Relu
FC
3x3x256, s1, p1, 384/Relu
Softmax
Max pool 3x3, s2, p1
LRN
5x5x48, s1, p2, 256/ReLU
Max pool 3x3, s2, p1
LRN
54
11x11x3, s4, p0, 96/ReLU
227x227x3
Las diferentes capas que contiene la red Alexnet están entre la normalización,
convolucionales, activación, LRN (Local Responsive Normalization), consociación, y por
último Softmax. En la capa inicial las imágenes de entrada se normalizan, en estos valores
227x227x3, que corresponden al alto, ancho y profundidad que son los valores RGB. En las
capas convolucionales se entienden como un conjunto de filtros, cada una de ellas consta
de 4 hiper parámetros, el número de filtros N, dimensión MxM, stride que representa el salto
de cada filtro, y pad que significa el espacio a partir del cual comienza a recorrer cada
campo. La capa de activación se refiere a la función de activación utilizada en cada salida
de todas las neuronas, algunos ejemplos son sigmoide y ReLU (Rectified Linear Unit). Local
Responsive Normalizartion trata acerca de detectar altas frecuencias en las características
de la imagen. La capa de consociación se encarga de extraer información más profunda,
después de recibir las características convolucionales. La última Softmax es la capa
ocupada para la salida de la red neuronal, su objetivo es correlacionar todas las neuronas
de salida en función de probabilidad, para así normalizar las activaciones de las neuronas,
explicado los valores de las diferentes capas (Tabla 5).
En Deep Learning se revisó en primera medida la red Alexnet, y se modificaron las capas
para el uso específico de este proyecto, esto requiere una cantidad de pasos a seguir. El
primero consiste en realizar la correspondiente lectura y almacenamiento de las imágenes,
posteriormente se realizó la repartición entre datos de entrenamiento y de prueba, se probó
el porcentaje de entrenamiento de 60%,70%,80%,90%.
En la aplicación de este algoritmo es necesario cambiar algunos elementos de la red, que
en este caso se llaman layers o capas que son las funciones características que definen a
las redes neuronales, se cambia la salida sea binaria, también existen las opciones de
entrenamiento que son necesarias modificar o manejar para cumplir el objetivo estas son:
el número máximo de épocas a usar para entrenamiento, escogido en 20 divisado en las
tablas 14,15,16, 17 otra función trata acerca del tamaño del mini lote que se usará para
55
cada iteración de entrenamiento, siendo el numero de 64 muestras para nuestro caso en
particular.
Además, se observó la tasa de aprendizaje para el entrenamiento, se escogió 0.001 ya que
a menor valor funciono mejor, otra función trata acerca del factor para disminuir la tasa de
aprendizaje valor de 0.1, estas variables no se cambiaron mucho ya que los resultados se
mantenían entre el 99% y 100% después de realizar la validación.
Definidas ya las opciones de entrenamiento se procede a la construcción de la función que
realizara la lectura de las imágenes, proveniente de la cámara, primero se lee la foto,
segundo se redimensiona al tamaño especificado en los layer, y por último se envía los
datos para ser procesados.
Las tablas presentadas a continuación (Tabla 6,
Tabla 7, Tabla 8 y Tabla 9) tratan acerca del entrenamiento que se le hace a la red Alexnet
para poderla usarla para nuestro caso en específico, evaluando los parámetros existentes,
se da cuenta de mini-batch loss que encuentra el gradiente para la función de perdida y a
la vez actualiza los datos de las neuronas, los gradientes son la derivada de la pérdida con
respecto al peso, Mini-batch accuracy el porcentaje que define la eficacia del modelo y Base
learning rate, es un parámetro que controla cuánto se está ajustando los pesos de nuestra
red con respecto al gradiente de pérdida. Cuanto menor es el valor, más lento se viaja a lo
largo de la pendiente descendente, además del tiempo de procesamiento y la cantidad de
iteraciones utilizadas, además se puede observar las diferentes curvas de entrenamiento
para cada uno de los casos anteriormente expuestos (Anexo 14, Figura 20, Anexo 15 y
Anexo 16).
56
Tabla 6. Alexnet (70 Entrenamiento, 30 Prueba).
Training 0.7 test 0.3
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 1.00 0.8615 50 0.001
3 50 42.17 0.0029 100 0.001
5 100 83.20 0.0002 100 0.001
7 150 124.76 0.0001 100 0.001
10 200 165.57 0.0001 100 0.001
12 250 206.41 0 100 0.001
14 300 247.1 0 100 0.001
16 350 287.75 0.0001 100 0.001
19 400 328.86 0 100 0.001
20 440 361.46 0.0001 100 0.001
Tabla 7. Alexnet (60 Entrenamiento, 40 Prueba).
Training 0.6 test 0.4
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 1.02 1.1283 37.5 0.001
3 50 41.79 0.0005 100 0.001
6 100 82.64 0.0008 100 0.001
8 150 123.5 0.0001 100 0.001
11 200 164.12 0.0002 100 0.001
14 250 204.69 0 100 0.001
16 300 245.16 0 100 0.001
19 350 285.81 0.0002 100 0.001
57
20 380 310.07 0 100 0.001
Figura 20. Curva de entrenamiento (60 entrenamiento, 40 prueba).
Tabla 8. Alexnet (80 Entrenamiento, 20 Prueba).
Training 0.8 test 0.2
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 1 0.8453 51.56 0.001
2 50 42.45 0.0002 100 0.001
4 100 85.69 0 100 0.001
6 150 127.71 0.0002 100 0.001
8 200 169.63 0.0001 100 0.001
58
10 250 211.67 0 100 0.001
12 300 253.48 0.0002 100 0.001
14 350 295.42 0 100 0.001
16 400 337.22 0.0001 100 0.001
18 450 378.95 0.0003 100 0.001
20 500 421.63 0.0007 100 0.001
Tabla 9. Alexnet (90 Entrenamiento, 10 Prueba).
Training 0.9 test 0.1
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 1.78 0.7998 62.5 0.001
2 50 43.16 0.0001 100 0.001
4 100 87.2 0.0003 100 0.001
6 150 130.34 0.0001 100 0.001
8 200 172.7 0.0003 100 0.001
9 250 215.96 0 100 0.001
11 300 259 0 100 0.001
13 350 302.43 0 100 0.001
15 400 345.68 0 100 0.001
17 450 388.83 0 100 0.001
18 500 432.32 0.0005 100 0.001
20 550 475.49 0.0001 100 0.001
20 560 484.09 0.0003 100 0.001
59
En la Tabla 10 se muestra los porcentajes que dieron como resultado para cada una de las
reparticiones de las muestras, siendo mejor la mayor cantidad utilizada para entrenar la que
mejores efectos en la clasificación de imágenes produjo de un 100%.
Tabla 10. Alexnet resultados.
Porcentaje
dado a las
muestras
utilizadas para
el
entrenamiento
Porcentaje
Test
0.9 100
0.8 0.9975
0.7 0.9918
0.6 0.9951
En las tablas a continuación (Tabla 11, Tabla 12, Tabla 13 y Tabla 14) se realizaron los
correspondientes entrenamientos con la red Alexnet para acomodarla para el proyecto
tratado en este documento, con los diferentes parámetros establecidos de la misma forma
que el primer modelo, estableciendo menor tiempo de procesamiento, siendo estas las que
describen el segundo modelo, además de las correspondientes curvas de entrenamiento
(Anexo 17, Anexo 18, Anexo 19 y Figura 21).
Tabla 11. Alexnet (80 Entrenamiento, 20 Prueba).
Training 0.8 test 0.2
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 1 1.1556 43.75 0.001
9 50 41.84 0.0001 100 0.001
17 100 82.78 0 100 0.001
20 120 99.1 0 100 0.001
60
Tabla 12. Alexnet (90 Entrenamiento, 10 Prueba).
Training 0.9 test 0.1
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 0.95 1.0909 43.75 0.001
8 50 41.53 0 100 0.001
15 100 82.52 0 100 0.001
20 140 115.12 0 100 0.001
Tabla 13. Alexnet (60 Entrenamiento, 40 Prueba).
Training 0.6 test 0.4
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 0.94 0.8365 57.81 0.001
13 50 41.4 0 100 0.001
20 80 66.04 0.0001 100 0.001
61
Figura 21. Curva de entrenamiento modelo 2 (60 entrenamiento, 40 prueba).
Tabla 14. Alexnet (70 Entrenamiento, 30 Prueba).
Training 0.7 test 0.3
Entrenamiento
Epoch iteration Time (s)
Mini- batch
loss
Mini-batch
accuracy
Base learning
rate
1 1 1 0.5985 68.75 0.001
10 50 41.09 0 100 0.001
20 80 81.44 0.0001 100 0.001
En la Tabla 15 se muestran los resultados en porcentaje de eficacia de cada una de las
reparticiones de la validación cruzada, ya que se ha repetido constantemente los mismos
62
valores de salida se debe a la menor complejidad que posee el segundo modelo, aunque
se verificara en los experimentos de la aplicación.
Tabla 15. Alexnet Resultados.
Porcentaje
dado a las
muestras
utilizadas para
el
entrenamiento
Porcentaje
Test
0.9 100
0.8 100
0.7 100
0.6 100
Adicionalmente se creó una red convolucional, la arquitectura general se presenta en la
Figura 22 que corresponde a las diferentes capas que posee la de normalización,
convolucionales, de activación, de consociación, y por último el clasificador.
Figura 22. Arquitectura de la Red.
63
Se definieron las diferentes capas, por ejemplo, el tamaño de las imágenes especificado en
[480 640 3], el segundo es la convolución de la entrada moviendo los filtros a lo largo de la
entrada vertical y horizontalmente y calculando el producto escalar de los pesos y la
entrada, y luego agregando un término de sesgo definido, la primera capa de este tipo se
encuentra definida como [3,16,’Padding’,1] y la segunda como [3,32,’Padding’,1].
En el tercer caso se realiza una operación de umbral para cada elemento de la entrada
mediante ReLU, donde cualquier valor inferior a cero se establece en cero, el cuarto es en
donde se realiza un muestreo descendente dividiendo la entrada en regiones de
agrupación rectangulares y calculando el máximo de cada región definido como
(2,'Stride',2), el sexto es determinar la salida como binaria, y por último la el parametro
que contiene el nombre de la función de perdida para la clasificación multiclase, el tamaño
de la salida y las etiquetas de clase, a grandes rasgos observable en la
Figura 23.
65
En la selección de las opciones de entrenamiento, se escogieron los parámetros
anteriormente manejados en Alexnet gracias a su buen desempeño presentado en ese
momento, aunque existe un cambio de estos para analizar los resultados obtenidos.
En el procesamiento de estos datos, o cumplimiento de este proceso se envió la
responsabilidad a la cpu con el parámetro 'ExecutionEnvironment', asimismo se utilizó la
gpu en paralelo para una capacidad mayor, aunque los recursos de hardware fueron
limitados, no logrando crear una gran cantidad de capas debido al tiempo y lo que consume
en recursos físicos.
En la construcción de la red propia se escogieron los layer, y las opciones de entrenamiento
y se realizó la prueba con la carpeta FACEDATA4.
En la Tabla 16 se muestran los resultados y los diferentes parámetros tenidos en cuenta
para la gestión de una red neuronal convolucional propia. El learning rate que indica a que
pasos se deben seguir para alcanzar el mínimo de la función de pérdida, y mini-batch que
calcula el gradiente de la función de perdida para modificar el valor de los pesos y realizar
otra época, el porcentaje de efectividad es bajo comparado a la red pre-entrenada por tanto
es necesario hacer pruebas con los parámetros y con las capas de esta, aunque el tiempo
de procesamiento es mayor que las demás técnicas o algoritmos, además de la curva de
entrenamiento (Figura 24).
Tabla 16. Entrenamiento (80, 20).
Epoch iteration Time (s) Mini- batch
loss Mini-batch accuracy
Base learning
rate
1 1 209.87 2.8531 43.75 0,1
6 50 9160.59 0.67 60.94 0,1
12 100 17545.79 0,6849 57.03 0,1
17 150 26021.42 0.661 63.28 0.1
20 180 31579.8 0.6942 54.69 0.1
66
Figura 24. Curva de entrenamiento red propia.
7.7. VALIDACIÓN DEL SOFTWARE DE LA CONSTRUCCIÓN DE LOS MODELOS
En esta etapa se ejecutará los diferentes experimentos y pruebas antes explicadas para
evidenciar los resultados dados para todos los modelos además se tabulará o se mantendrá
constancia del producto para poder sacar conclusiones.
67
7.7.1. MODELO 1: DETECCIÓN DE ROSTROS
A continuación, se presenta el promedio de los porcentajes de eficacia en cada de las
reparticiones del banco de las imágenes para el entrenamiento y la prueba, para cada uno
de los modelos con sus extractores y clasificadores en las Tabla 17, Tabla 18, Tabla 19,
Tabla 20, Tabla 21 y Tabla 22
Se denota en las Tabla 17, Tabla 18, Tabla 19 y Tabla 20 que en la repartición
correspondiente a las muestras de entrenamiento de 60% dio los mejores resultados, en la
Tabla 21 y Tabla 22 tiene variación dependiendo de la técnica utilizada.
Tabla 17. Porcentaje (HOG, SVM).
HOG
SVM
Training Test
Promedio de
clasificación
0.8 0.2 77.0392667
0.6 0.4 85.2941177
0.7 0.3 83.0882353
0.9 0.1 74.8366013
Tabla 18. Porcentaje (HOG, KNN).
HOG
KNN
Training Test
Promedio de
clasificación
0.8 0.2 61.8831833
0.6 0.4 70.506536
0.7 0.3 69.6078431
0.9 0.1 60.7026144
68
Tabla 19. Porcentaje (HOG, TREE).
HOG
TREE
Training Test
Promedio de
clasificación
0.8 0.2 63.1419833
0.6 0.4 66.2581699
0.7 0.3 64.1067538
0.9 0.1 60.9477124
Tabla 20. Porcentaje (LBP, SVM).
LBP
SVM
Training Test Promedio Porcentaje
0.8 0.2 73.5906863
0.6 0.4 79.3811275
0.7 0.3 78.1862745
0.9 0.1 71.5686275
Tabla 21. Porcentaje (Deep learning).
Deep learning
Porcentaje de
muestras para
el
entrenamiento
Porcentaje
Test
0.9 100
0.8 0.9975
0.7 0.9918
0.6 0.9951
69
Tabla 22. Porcentaje (BOF, SVM).
BOF
SVM
Training Test Promedio Training Promedio Test
0.6 0.4 96.872799 96.872799
0.7 0.3 96.94973 96.94973
0.8 0.2 97.257261 97.257261
0.9 0.1 97.089479 97.089479
Por último, se presenta el mejor porcentaje para cada uno de los sub-modelos en la ¡Error! N
o se encuentra el origen de la referencia., para decidir cuáles serían los probados
posteriormente en la aplicación.
Tabla 23. Porcentajes finales.
Extractor Clasificador Porcentaje
HOG SVM 85.2941177
HOG KNN 70.506536
HOG TREE 66.2581699
BOF SVM 97.257261
LBP SVM 79.3811275
DL DL 100
En la Figura 25 se puede verificar cual ha sido el mejor de ellos ha sido Deep Learning,
determinado por las variables del ambiente y el nivel de controlabilidad que poseen,
teniendo en cuenta el banco de imágenes creado, y las pruebas experimentales que se
harán posteriormente.
70
Figura 25. Diagrama de barras porcentajes finales modelo 1.
7.7.2. MODELO 2: IDENTIFICACIÓN DE ROSTROS
En las tablas (Tabla 24, Tabla 25, Tabla 26, Tabla 27, Tabla 28 y Tabla 29) se presenta
los porcentajes de los respectivos sub-modelos, es necesario escoger el mejor valor de
cada uno de ellos ya no es posible hacer una semejanza con la validación cruzada ya que
son muy dispersos.
Tabla 24. Porcentaje (HOG, SVM).
HOG
SVM
Training Test
Promedio de
clasificación
0.8 0.2 100
0.6 0.4 100
0.7 0.3 100
0.9 0.1 100
0
10
20
30
40
50
60
70
80
90
100
SVM KNN TREE SVM SVM DL
HOG HOG HOG BOF LBP DL
Porcentaje Modelo 1
71
Tabla 25. Porcentaje (HOG, KNN).
HOG
KNN
Training Test
Promedio de
clasificación
0.8 0.2 77.3611167
0.6 0.4 75.9375
0.7 0.3 77.3611111
0.9 0.1 87.9166667
Tabla 26. Porcentaje (HOG, TREE).
HOG
TREE
Training Test
Promedio de
clasificación
0.8 0.2 89.1667
0.6 0.4 90.625
0.7 0.3 89.1666667
0.9 0.1 77.5
Tabla 27. Porcentaje (Deep Learning).
Porcentaje de
muestras para
el
entrenamiento
Porcentaje
Test
0.9 100
0.8 100
0.7 100
0.6 100
72
Tabla 28. Porcentaje (BOF, SVM).
Training Test
Promedio
Training
Promedio
Test
0.6 0.4 99.8842593 99.884259
0.7 0.3 99.8611111 99.861111
0.8 0.2 99.8871528 99.887153
0.9 0.1 99.8765432 99.876543
Tabla 29. Porcentaje (LBP, SVM).
LBP
SVM
Training Test Promedio Porcentaje
0.8 0.2 87.5
0.6 0.4 87.5
0.7 0.3 87.5
0.9 0.1 87.5
En la Tabla 30 se escogieron los mejores resultados de cada uno de los sub-modelos dando
como conclusión que hay una igualdad entre SVM y Deep Learning, también graficado en
la figura 32, por tanto, se debe realizar una prueba mediante la aplicación.
Tabla 30. Porcentajes finales.
Extractor Clasificador Porcentaje
HOG SVM 100
HOG KNN 87.9166667
HOG TREE 90.625
BOF SVM 99.8871528
LBP SVM 87.5
DL DL 100
73
Figura 26. Diagrama de barras porcentajes finales modelo 2.
7.8. DISEÑO E IMPLEMENTACIÓN DE LA APLICACIÓN DE RECONOCIMIENTO Y
DETECCIÓN DE ROSTROS
El diseño e implementación de la aplicación, se realizó en un primer momento la
identificación de los requerimientos funcionales para la construcción de la aplicación y se
escogió la herramienta GUI de Matlab para su empleo, con base en esto se desarrolló el
esquema con el cual se obtuvo una aproximación a la interfaz, tomando en cuenta las
funciones que preceden a los elementos que la componen. Estos elementos se clasifican
en tres tipos o métodos diferentes: manual, automático y ejemplos en donde el usuario tiene
la posibilidad de escoger la opción que se acomode a su necesidad, se puede observar a
grandes rasgos en la Figura 27. Tomando en cuenta lo anterior se entrará a explicar con
detalle la composición de la interfaz y cada uno de los métodos.
0
10
20
30
40
50
60
70
80
90
100
SVM KNN TREE SVM SVM DL
HOG HOG HOG BOF LBP DL
Porcentaje Modelo 2
74
Figura 27. Diagrama de flujo de la aplicación.
La generalidad de los diferentes modelos permite en cierto sentido hacer varios pasos que
pueden ser considerados para la detección e identificación de personas, el primero es la
carga de los modelos, y la copia de estos en variables globales para el posible uso en
cualquier parte del código, el segundo es la limpieza de las variables referentes a los objetos
de visualización llamados “axes”, la tercera es la lectura de la hora real y almacenamiento
en una variable, la cuarta es la utilización de la función “webcam” para hacer la verificación
de la conexión de una cámara y guardado correspondientemente, y por último la creación
de las banderas para el uso de cada uno de los botones de manera correcta.
75
7.8.1. INTERFAZ
En el esquema se empleó varias gráficas y botones que en la Figura 28 están identificados
mediante números en rojo, se explicara a continuación cada uno de ellos.
1. En donde se implementa una gráfica en donde se llama video y se puede observar el
video en tiempo real, proporcionado por la cámara.
2. Una segunda gráfica utilizada para mostrar la captura de la imagen o el “frame” tomado
llamado “Image”.
3. Un botón de inicio para el modo manual en donde arranca el video, y se puede
continuar después con los siguientes pasos.
4. El botón de stop para detener en cualquier momento y volver a empezar en cualquiera
de los dos modos, además se limpia todas las variables referentes al video, y lo que
se esté representando en las gráficas y en el cuadro de texto, además del
correspondiente manejo de las banderas para el uso de los botones
5. El botón de salida de la aplicación, además de realizar de limpieza se detiene el video
y se borra la variable referenciada a este.
6. Se dispone de un botón que se utiliza para capturar la imagen llamado Capture
“Image”.
7. Se colocó un botón para realizar la clasificación de la imagen para saber a qué
categoría pertenece con el modelo escogido anteriormente.
8. Se usó un cuadro de texto para representar la salida del clasificador, y conocer que
caso es de los que se plantearon desde un principio, como lo es persona conocida o
desconocida, si existe un rostro o no dentro de la imagen, etc.
9. Existe un botón llamado “Voice”, que replica lo del cuadro de texto en voz, explicando
a que clase y caso es.
10. En el botón de “Database”, se inicia la verificación de los ejemplos, abre un menú
consecutivamente dependiendo de lo que se escoja si es con rostro se abre el de
persona desconocida o conocida, y si es la segunda opción ya se decide si Juan David
o Paula.
11. Menú con la opción de con rostro o sin rostro, posteriormente de si es persona
conocida o desconocida, y por ultimo si es Juan David Vargas Alejo o Paula Moreno.
76
12. Existe un botón llamado 5 “seconds” que inicia el proceso completo de todo el proceso
automáticamente, cada 5 segundos realizando cada uno de los pasos pertinentes para
cumplir los objetivos.
Figura 28. Interfaz.
7.8.2. MANUAL
El primer método en ser explicado es el manual, en este se quiso explicar cada uno de los
pasos del proceso, divido en sectores o como tal los diferentes botones que existen en la
interfaz, los pasos se constituyen así el primero es oprimir “start” para iniciar el video,
después se oprime capture “image”, con esto ya se obtiene un “frame”, para posteriormente
activar “process image” que califica la foto y la salida a que categoría pertenece en el cuadro
de texto, además está la posibilidad de activar la grabación de voz referente al mensaje de
respuesta mediante el botón “voice”, se explicara a continuación cada uno de ellos:
77
En el botón de “start” se define la resolución y la nitidez del video, tomadas como
características y guardadas en variables, para posteriormente ser proyectado en la gráfica,
y mantenerlo de esta hasta que se decida detener.
En el botón de capture “image”, toma un “frame” del video por medio de “snapshot”, y se
muestra en la segunda gráfica.
En este botón primero se llama al modelo, y se dispone con el “frame” que se tomó
clasificarlo mediante la función “classify”, inicialmente para el primer modelo, después se
verifica cual fue la respuesta si es ‘CR’ se continua a utilizar el segundo modelo y hacer el
mismo proceso, aunque a continuación de esto se calcula si la persona es desconocida
(DS) o conocida (PC) mediante un porcentaje de seguridad que se da a través de la
clasificación es una de las salidas de la función, se escoge un margen o umbral y a través
de este decidir qué caso es, si es mayor es ‘PC’ y si es menor es ‘DS’.
En el caso que sea ‘PC’ se dispone a verificar si en la respuesta se habla de Juan David
(P1) o Paula Moreno (P2), para generar el texto correspondiente, también dependiendo la
hora en que se este del día.
En el botón de “Voice” dependiendo de la clasificación que se hizo, se escuchara el tipo de
grabación dada al caso, también siendo igual que el avance que se produce cuando se hace
lo inmerso en “Procces image”.
7.8.3. AUTOMÁTICO
En el modo de automático consta del mismo proceso presentado en el manual, pero con
unas variaciones y resumido en un solo botón, para lograr que sea continuo y se puede
parar en cualquier momento que el usuario quiera.
En el botón “seconds” se realiza el mismo proceso que se genera en la parte manual,
aunque se incluye en un ciclo infinito mientras que no sea activado el botón de parar o el de
salir de la aplicación, la clasificación y la respuesta se hacen cada cinco segundos
78
agregando el factor de voz, incluyendo el valor de la hora para identificar las palabras
adecuadas.
7.9. VALIDACIÓN DE LA APLICACIÓN
En esta etapa se verifica el desempeño de la aplicación evidenciando que cumpla los
requerimientos funcionales, además de los correspondientes objetivos, además de observar
a futuro mejoras o avances en este proyecto.
En base de las tablas anteriores se escogieron los modelos con mayor desempeño de cada
uno de los extractores para realizar los experimentos correspondientes, y verificar que
porcentaje da como resultado, con el motivo de dar por decidido que modelos estarán
incluidos en la aplicación y su uso en un ambiente controlado.
A continuación, se muestra en la Tabla 31 para cada uno de los casos que se pueden
presentar qué porcentaje da como resultado con cada uno de los modelos, utilizando un
proceso que consiste tomar 30 fotos cada cinco segundos realizando el correspondiente
análisis y clasificación.
Realizando una rápida verificación se puede observar en la tabla 39 que el mejor porcentaje
de clasificación de imágenes lo posee Deep Learning, por tanto, se decidió que será la
técnica definitiva utiliza en la aplicación, en la columna de V&J aparecen vacías las casillas
de los últimos casos, ya que este algoritmo es aplicable solo a la parte de detección de
rostros, no siendo recomendable implementarlo para la identificación.
Tabla 31. Experimentos aplicación.
Experimentos
Casos Porcentaje
Técnica Deep Learning BOF(SVM) HOG(SVM) LBP(SVM) V&J V&J(DL)
Con Rostro 95 90 80 79 77 96
Sin Rostro 96 95 84 82 80 95
Juan Vargas 93 83 79 71 - 91
Paula Moreno 92 80 79 73 - 90
Persona desconocida 90 72 63 57 - 88
79
7.9.1. REENTRENO CON IMÁGENES TOMADAS CON LA CÁMARA MEDIANTE
LA APLICACIÓN.
Con las imágenes obtenidas después de realizar los experimentos para saber el desempeño
del software con la aplicación en tiempo real, se decide reentrenar el modelo correspondiente
a la identificación de la persona ya se amplía las opciones de entorno o características de la
imagen para disminuir la correlación y empezar a probar un software con capacidad de
análisis más compleja.
El entreno siguió el mismo proceso ya realizado anteriormente en donde se verifica con cada
uno de los algoritmos investigados, variando los parámetros de cada uno de ellos, obteniendo
resultados de acierto en la clasificación de las imágenes de prueba, con el fin de escoger el
de mayor valor para su uso en la aplicación.
En la Tabla 32 se puede observar el porcentaje más alto de acierto con los diferentes
algoritmos en donde se puede observar que BOF(SVM) es el más alto, y se dispone a verificar
su desempeño en la aplicación. En la Figura 29 se puede observar los datos de la tabla en
diagrama de barras para su comparación de valores.
Tabla 32. Validación modelo con reentreno.
Extractor Clasificador Porcentaje
HOG SVM 95,9459459
HOG KNN 88,863964
HOG TREE 67,286036
BOF SVM 99,8204232
LBP SVM 67,9054054
DL DL 98,99
80
Figura 29. Diagrama de barras de los porcentajes del modelo con reentreno
En la Figura 30 se puede observar que se realizó una comparación entre los valores que
dieron de resultado en la validación con cada uno de los algoritmos denotando que son
menores ya que la complejidad del sistema ha aumentado, cada vez que se realice este
proceso va a dar este tipo de comportamiento, aunque se consigue mejor respuesta a las
fotos tomadas en tiempo real.
Figura 30. Diagrama de barras de los porcentajes del modelo con reentreno vs el modelo antiguo.
0
20
40
60
80
100
SVM KNN TREE SVM SVM DL
HOG HOG HOG BOF LBP DL
Porcentaje de reentrenamiento
0
10
20
30
40
50
60
70
80
90
100
SVM KNN TREE SVM SVM DL
HOG HOG HOG BOF LBP DL
Comparación
Viejo Nuevo
81
Al terminar el entrenamiento y construcción del nuevo modelo, se dispone a probar su
desempeño mediante la aplicación con cada uno de los sub-modelos con sus respectivos
algoritmos obteniendo los resultados observables en la Tabla 33, para posteriormente
observar la comparación con los antiguos valores en la Figura 31, se observa que disminuye
el porcentaje de acierto ya que se está logrando cada más una mayor apreciación de los
elementos que componen la imagen o diferentes situaciones que existen en la realidad,
aunque todavía faltaría una inclusión más grande de opciones.
Tabla 33. Experimentos con el modelo reentrenado. Experimentos nuevos
Casos Porcentaje
Técnica Deep Learning BOF(SVM) HOG(SVM) LBP(SVM) V&J V&J(DL)
Con Rostro 90 91 81 75 77 90
Sin Rostro 92 94 85 78 80 93
Juan Vargas 85 79 72 67 - 86
Paula Moreno 88 75 70 64 - 87
Persona desconocida 80 68 55 44 - 78
Figura 31. Diagrama de barras de los porcentajes del modelo con reentreno vs el modelo antiguo.
0
20
40
60
80
100
120
Comparación aplicación
Con Rostro Sin Rostro Juan Vargas Paula Moreno Persona desconocida
82
Por último, se presenta el diagrama de bloques (Figura 32) del algoritmo en general con cada
uno de los pasos anteriormente explicados en el documento, el primero es la captura de la
imagen con la cámara, después se utiliza como entrada en el primer modelo para definir si
existe un rostro o no, si existe se avanza hacia el segundo modelo donde se define en primera
medida si es una persona conocida o no, si no existe se genera una respuesta de voz y
textual, en la opción de que sea conocida la persona se produce una respuesta de voz y
textual dependiendo de que sea Juan David Vargas Alejo y Paula Janeth Moreno Escobar,
si no es conocida se menciona esta información para dar por concluido el proceso.
Figura 32. Algoritmo de detección e identificación de rostros.
83
8. IMPACTO SOCIAL
El impacto social generado por este proyecto se puede investigar teniendo en cuenta el uso
en la sociedad de los robots de servicio doméstico, práctica generalizada en la actualidad. El
software de detección e identificación de personas puede ser de utilidad en muchos
contextos; ambientes laborales, instituciones educativas, y cualquier otro sector que sea
aplicable, esto mismo genera que se encuentra otra ayuda para tareas simples y así seguir
evolucionando este trabajo para lograr una mejor influencia.
En la sociedad se generan diversas opiniones frente al uso o no de robots en compañía de
las personas en las tareas básicas. Algunos afirman que el abuso de la tecnología convierte
a los seres humanos en seres dependientes, mientras que otros apelan a los riesgos de la
utilización de este tipo de tecnología y afirman que no está desarrollada aún a un nivel
suficiente para ser utilizada. Si bien estas afirmaciones pueden llegar a ser pesimistas y
entorpecen el uso y avance de la tecnología, deben ser tenidas en cuentas a la hora de
resolver y enfrentar dilemas morales y sociales que se crean a partir del auge de sistemas
tecnológicos cada vez más avanzados.
La digitalización de las relaciones e interacciones sociales implica ser cuidadosos y estar
atentos a la manera en que se pretende desarrollar la tecnología teniendo en cuenta que es
uno de los campos que protagonizan el mercado actual. A su vez, se vuelve necesario dar
cuenta de la manera en que la relación entre artefactos tecnológicos y humanos va en doble
vía y tiene repercusiones reales ―tanto positivas como negativas― en la vida de los
individuos, las culturas y las sociedades.
84
9. CONCLUSIONES
Luego de revisar el funcionamiento de las diferentes técnicas o algoritmos, es
concluyente que el desempeño con las redes neuronales convolucionales es superior
a las técnicas anteriormente explicadas, cuando las condiciones preestablecidas en el
entrenamiento no existen, tiene mejor eficacia o si las imágenes son parecidas la
clasificación resulta con un menor error que las demás opciones.
Los tiempos de procesamiento, sumado a los recursos de procesamiento que se
tengan, determinan si es posible entrenar un modelo independientemente del
algoritmo basado en la cantidad de muestras dispuestas, debido al espacio de
memoria ya sea en disco o en ram y a la frecuencia que posea el procesador.
El ambiente controlado es una causante de que sea posible realizar una clasificación
más efectiva, ya que se disminuyen a cierto porcentaje la cantidad de variables que
se encuentran, además de los valores que toman, como lo son la luz, la distancia, que
sea solo una persona en la foto y frontal hacia la cámara, ya que con estas se entrenó
y son las que basa el modelo para decidir la categoría de la nueva imagen.
Si en el banco de imágenes se manejaba una mayor cantidad de imágenes esto no
indicaba que se lograra un mejor resultado, ya que podría existir sobre-entrenamiento,
porque se especificaba ciertas características y no podría generar una respuesta
correcta si aparece algo nunca antes visto, aunque si se diera con menos cantidad de
fotos es necesario contener el mayor número de posibilidades que se pueden
presentar para una mejor predicción, en este caso en particular si se logra un resultado
mayor a lo conseguido con menor cantidad de muestras.
En cada una de las iteraciones, la cantidad de muestras utilizadas positivas como
negativas, determina como ha sido el proceso de entrenamiento, y si realmente
aprendió las características correctamente, además los parámetros escogidos como
la función kernel, o la operación matemática utilizada para el manejo de los datos es
85
consecuente con el porcentaje de error producido, partiendo de esto es posible tomar
una decisión, de que cambiar y añadir, con el motivo de cumplir los objetivos.
La plataforma utilizada contiene limitaciones, en cuanto a cantidad de memoria pueda
almacenar con las variables, y los algoritmos incluidos, ya que es posible una mejora,
o continua investigación de estos, además existen diversas opciones o librerías para
desarrollar este proyecto en otros programas o sistemas operativos.
En el parámetro constituido como el tamaño de la caja utilizado en el clasificador SVM
determina en gran medida el detalle que se verifica en las imágenes para poder
realizar la clasificación o predicción, por tanto, modifica el porcentaje que da como
resultado, dependiendo también de los otros factores evaluados en el proceso.
La variable del tiempo no es posible utilizarla como referencia ya que los datos tienen
una dispersión amplia y no se encuentra una relación directa con el porcentaje de
eficacia en la clasificación de las imágenes, por tanto, solo se tiene en cuenta para
estimar la duración total en el entrenamiento para cada uno de los modelos.
Una de las alternativas para mejorar el desempeño del software es capturar nuevas
fotos con la cámara en tiempo real, con el fin de ampliar el rango de las variables o
elementos que componen la foto y así obtener una menor correlación en las muestras,
aunque se presentó una disminución en los porcentajes de acierto ya que es mayor la
complejidad del sistema o el análisis que tiene que realizar el software.
86
10. TRABAJOS FUTUROS
Los modelos creados tienen capacidad de mejora ya que es posible obtener un mejor
procesamiento aumentando las prestaciones físicas (Cámara, Computador). Además, es
posible conseguir una mayor profundización del tema, especificando en Deep Learning ya
que tiene el mayor desempeño, con esto se identificará cuáles son los parámetros a escoger,
de qué forma y bajo qué condiciones, ya requiere un trabajo de investigación mayor para
poder crear una red propia con buenos resultados.
A futuro es posible cambiar la plataforma utilizada para lograr variantes o nuevas pruebas y
verificar el desempeño. Además, es posible intentar nuevas posibilidades y obtener una
mayor profundidad en torno al tema ya que aún queda bastante trabajo por realizar al
respecto. Al interactuar con una nueva plataforma se podría expandir el contexto de uso ya
que no solo se podría referir al ambiente doméstico, sino una mejora en otros sectores como
es el médico, el almacenamiento, o el industrial, en suma, sería de gran utilidad en muchos
otros sectores donde es necesario el uso de robots para el trabajo diario. Sin olvidar la
necesidad de personalizar las necesidades implementando y modificando el software
dependiendo de los objetivos.
87
11. REFERENCIAS
[1].Hjelmås, E., & Low, B. K. (2001). Face detection: A survey. Computer Vision and
Image Understanding, 83(3), 236-274.
[2].Correa Pérez, M. A. (JULIO de 2012). Reconocimiento robusto de rostros en
ambientes dinámicos. Tesis para optar al grado de doctor. Universidad de Chile.
[3].A. Lopes, J. Rodrigues, J. Perdigao, G. Pires and U. Nunes. (2016). A New Hybrid
Motion Planner: Applied in a Brain-Actuated Robotic Wheelchair. IEEE Robotics &
Automation Magazine. 82-93.
[4].Al-Okby Ruzaij, M. F. (2017). Hybrid Wheelchair Controller for Handicapped and
Quadriplegic Patients. For obtaining the academic title Doctor Engineer (Dr.-Ing.).
University of Rostock.
[5].Aracil, R., Balaguer, C., & Armada, M. (2008). Robots de servicio. Revista
Iberoamericana de Automática e Informática Industrial RIAI, 5(2), 6-13.
[6].M. R. Elara, N. Rojas and A. Chua. (2014). Design principles for robot inclusive spaces:
A case study with Roomba. IEEE International Conference on Robotics and
Automation (ICRA). 5593-5599.
[7].Srinivasan, V., Bethel, C.L., & Murphy, R.R. (2014). Evaluation of Head Gaze Loosely
Synchronized With Real-Time Synthetic Speech for Social Robots. IEEE Transactions
on Human-Machine Systems, 44, 767-778.
[8].Soniya, S. Paul and L. Singh. (2015). A review on advances in deep learning. IEEE
Workshop on Computational Intelligence: Theories, Applications and Future Directions
(WCI), 1-6.
[9].M. R. Elara, N. Rojas and A. Chua. (2014). Design principles for robot inclusive spaces:
A case study with Roomba. IEEE International Conference on Robotics and
Automation (ICRA). 5593-5599.
[10]. Ke Wang, Ruifeng Li and Lijun Zhao. (2010). Real-time facial expressions recognition
system for service robot based-on ASM and SVMs. 8th World Congress on Intelligent
Control and Automation. 6637-6641.
[11]. Günther, M., Hu, P., Herrmann, C., Chan, C., Jiang, M., Yang, S., Dhamija, A.R.,
Ramanan, D., Beyerer, J., Kittler, J.T., Jazaery, M.A., Nouyed, M.I., Guo, G.,
88
Stankiewicz, C., & Boult, T.E. (2017). Unconstrained Face Detection and Open-Set Face
Recognition Challenge. 2017 IEEE International Joint Conference on Biometrics (IJCB),
697-706.
[12]. T. Bourlai and B. Cukic. (2012). Multi-spectral face recognition: Identification of people
in difficult environments. IEEE International Conference on Intelligence and Security
Informatics. 196-201.
[13]. M. Y. Sai, R. V. C. Prasad, P. R. Niveditha, T. Sasipraba, S. Vigneshwari and S. Gowri.
(2017). Low cost automated facial recognition system. Second International Conference
on Electrical, Computer and Communication Technologies (ICECCT). 1-5.
[14]. Y. Liu, Q. Wang and J. Chen. (2015). Identification of People in a Camera's Field of
View Using Acoustic Signal from Mobile Phone. Fifth International Conference on
Instrumentation and Measurement, Computer, Communication and Control (IMCCC).
805-810.
[15]. M. Y. Sai, R. V. C. Prasad, P. R. Niveditha, T. Sasipraba, S. Vigneshwari and S. Gowri.
(2017). Low cost automated facial recognition system. Second International Conference
on Electrical, Computer and Communication Technologies (ICECCT). 1-5.
[16]. W. G. Pezoa and M. J. Domínguez. (2017). Combined approach using artificial vision
and neural networks for facial recognition. CHILEAN Conference on Electrical,
Electronics Engineering, Information and Communication Technologies (CHILECON).
1-5.
[17]. Villena Roman, J, Garcia Crespo, R, and Garcia Rueda, J. Inteligencia en Redes de
Comuniaciones: Historia de la inteligencia Artificial. Máster Interuniversitario en
Ingeniería Telemática. España.
[18]. C. Laura. (2000). Ejercitación introductoria a la inteligencia artificial con el test de
Turing. VI Congreso Argentino de Ciencias de la Computación. 1-9.
[19]. Jimenez Builes, J. A., & Ovalle Carranza, D. A. (2008). Uso de técnicas de inteligencia
artificial en ambientes distribuidos de enseñanza/aprendizaje. Revista Educación en
Ingeniería. 98.
[20]. Gamez. C. (2009). Diseño y Desarrollo de un Sistema de Reconocimiento de Caras.
Proyecto Fin de Carrera Ingeniería de Telecomunicación. Madrid.
[21]. Fuente Fernandez, S. (2011). Componentes Principales. Universidad Autonoma. 1-32.
89
[22]. Zuñiga, F. (2015). Reconocimiento Frontal de Rostros en base a imágenes de alta
resolución. memoria para optar al título de ingeniero civil eléctrico. Santiago de Chile.
[23]. P. Eloy. (2015). Aceleración del algoritmo de Viola-Jones mediante rejillas de
procesamiento masivamente paralelo en el plano focal. Trabajo Fin de Grado. Sevilla.
[24]. Arranza, F, Liu Yin, Q, and Lopez, J. (2012). Interacción persona-computador basada
en el reconocimiento visual de manos. Proyecto sistemas informáticos. Madrid.
[25]. Avila. E. (2011). Seguimiento de personas basado en los descriptores HOG. Trabajo
de grado para optar por el título de ingeniero electrónico. Bogotá.
[26]. Cuadri, J. (2009). Segmentación de imágenes en color por intersección de
histogramas de color y textura. Proyecto Fin de Carrera. Sevilla.
[27]. Garcia, O, and Alegre, E. (s.f.). Descripción de textura en imágenes utilizando local
binary pattern (LBP). Universidad de León. 1-16.
[28]. J. Sivic and A. Zisserman. (2003). Video Google: a text retrieval approach to object
matching in videos. Proceedings Ninth IEEE International Conference on Computer
Vision. 1470-1477.
[29]. González-Castro, V. E. (2016). Clasificacion de imagenes con bag of visual words. En
V. E. González-Castro, Conceptos y métodos en visión por computador. 181-200.
[30]. C. Aguerrebere, G. Capdehourat, M. Delbracio and M. Mateu. (2018). Proyecto
Aguará: Reconocimiento Automático de Caras. 1-9.
[31]. Carmona, E. (2014). Tutorial sobre Máquinas de Vectores Soporte (SVM). Universidad
Nacional de Educación a Distancia (UNED). Madrid.
[32]. Aha, David W. and Kibler, Dennis and Albert, Marc K. (1991). Instance-Based Learning
Algorithms. Machine Learning. 37-66.
[33]. Zuniga, C, and Abgar, N. (2015). Breve aproximación a la Técnica de Árbol de
Decisiones. 1-11.
[34]. MATHWORKS. (s.f.). MATHWORKS. Obtenido de Find classification error for suport
vector machine:
https://la.mathworks.com/help/stats/compactclassificationsvm.loss.html#bu7iyjl.
[35]. M. Delgado. (2012). Extracción automática de caras en imágenes captadas con
móviles Android. Universidad Politécnica de Cataluña. Barcelona.
90
[36]. B. Claudio. (s.f). Implementacion del algoritmo de detección de caras de Viola y Jones
sobre una FPGA. Universidad Carlos III de Madrid. Madrid.
[37]. M. Martinez. (2008). Introducción a los métodos Kernel. Departamento de Teoría de la
Señal y Comunicaciones. Madrid.
[38]. F. Herrera. (s.f.). Ciencias de Datos y Deep Learning: Neuronas artificiales para
aprender. Universidad de Granada. España.
[39]. M. Gomez. (2016). APRENDIZAJE PROFUNDO El poder del aprendizaje automático
unido al poder de cálculo de las computadoras actuales. Consejo Nacional de Ciencia
y Tecnología. 1-37.
[40]. Goodfellow, I, Bengio, Y and Courville, A. (2016). Deep Learning. MIT Press.
[41]. Quintero, Carlos & Merchan, Fernando & Cornejo, Aydeé & Sanchez Galan F, Javier.
(2018). Uso de Redes Neuronales Convolucionales para el Reconocimiento Automático
de Imágenes de Macro invertebrados para el Biomonitoreo Participativo. KnE
Engineering. 3. 585.
[42]. Calvo D. (2017). Obtenido de Red neuronal Convolucional CNN:
http://www.diegocalvo.es/red-neuronal-convolucional-cnn/
[43]. Grupo Caltech. (s.f.) Obtenido de CALIFORNIA INSTITUTE OF TECHNOLOGY:
http://www.caltech.edu/
91
12. ANEXOS
Anexo 1. Tabla HOG V&J.
Muestras (614 (positive)/ 614 (negative))
Viola&jones
FalseAlarmRate NumCascadeStages TruePositiveRate NegativesamplesFactor
Porcentaje de
eficacia con las
imágenes de
prueba
Tiempo de
procesamiento
(s)
0,1 100 0,99 2 43,25153 61,5751
0,2 100 0,99 2 36,1963 88,0851
0,3 100 0,99 2 35,8895 70,6830
0,4 100 0,99 2 38,9570 150,2854
0,5 100 0,99 2 46,9325 106,2471
0,1 100 0,5 2 23,3128 51,4136
0,1 100 0,6 2 33,4355 420,0699
0,1 100 0,7 2 36,1963 75,5746
0,1 100 0,8 2 44,4785 75,1875
0,1 100 0,9 2 54,2944 72,0291
0,1 10 0,99 2 35,8895 66,9376
0,1 20 0,99 2 43,2515 88,7044
0,1 40 0,99 2 39,8773 73,3675
0,1 60 0,99 2 39,5705 128,4089
0,1 80 0,99 2 43,8650 295,2562
0,1 100 0,99 3 33,1288 58,7256
92
Anexo 2. Tabla HOG V&J.
Muestras (859 (positive)/ 859 (negative))
Viola&jones
FalseAlarmRate NumCascadeStages TruePositiveRate NegativesamplesFactor
Porcentaje de
eficacia con las
imágenes de
prueba
Tiempo de
procesamiento(s)
0,1 100 0,99 2 44,1717 40,5798
0,2 100 0,99 2 46,3190 189,2789
0,3 100 0,99 2 57,3619 87,3320
0,4 100 0,99 2 44,7852 214,1594
0,5 100 0,99 2 44,1717 91,2868
0,1 100 0,5 2 13,4969 37,8625
0,1 100 0,6 2 8,2822 102,9659
0,1 100 0,7 2 12,5766 127,3891
0,1 100 0,8 2 17,1779 55,5345
0,1 100 0,9 2 42,6380 129,2321
0,1 10 0,99 2 32,5153 42,7122
0,1 20 0,99 2 46,9325 60,2624
0,1 40 0,99 2 36,1963 199,8397
0,1 60 0,99 2 38,0368 442,0488
0,1 80 0,99 2 45,7055 59,2377
0,1 100 0,99 3 39,2638 37,8094
93
Anexo 3. Tabla HOG SVM 1.
HOG SVM
Kernel
Porcentaje de
muestras para
entrenamiento
0,6 0,7 0,8 0,9
Polynomial(1)
Tiempo 127,745591 167,1647 168 244,920738
tabla 82,9656863 81,372549 74,3202 74,5098039
Error
cuadrático 1,10390459 1,10034766 1,1357 1,10242157
Polynomial(2)
Tiempo 118,964413 126,16318 144 222,539517
Porcentaje 85,4166667 83,0065359 77,3414 74,0196078
Error
cuadrático 1,00273062 1,00247619 1,003 1,00259602
Polynomial(3)
Tiempo 124,21401 146,451662 148,060056 233,006593
Porcentaje 86,6421569 83,3333333 77,3414 75,4901961
Error
cuadrático 1,00286565 1,00267134 1,003 1,00230824
Polynomial(4)
Tiempo 127,328116 155,550222 151855047 242,358563
Porcentaje 85,9068627 83,6601307 77,6435 74,5098039
Error
cuadrático 1,00233681 1,00236769 1,0027 1,002077
Polynomial(5)
Tiempo 126,056228 143,248198 159,085638 248,891141
Porcentaje 85,9068627 83,496732 76,435 74,5098039
Error
cuadrático 1,00209537 1,00199753 1,0023 1,00177801
Gaussian
Tiempo 75,51636400 165.851.643 180,777945 276,116836
Porcentaje 84,92647059 83,6601307 79,1541 75,9803922
Error
cuadrático 1,04407812 1.04581808 1,0629 1,04652656
94
Anexo 4. Tabla HOG SVM 2.
HOG SVM
Kernel Porcentaje de muestras para entrenamiento
0,6 0,7 0,8 0,9
Polynomial(1)
Tiempo 11,36094929 11,66396776 12 16,32279561
Porcentaje 100 100 100 100
Error cuadrático 1,004393962 1,004451795 1,0044 1,00320397
Polynomial(2)
Tiempo 10,26695005 12,65864467 12 16,13853273
Porcentaje 100 100 100 100
Error cuadrático 1,003130232 1,003014158 1,0044 1,002470929
Polynomial(3)
Tiempo 10,27310002 12,98185699 12,551088 16,6531802
Porcentaje 100 100 100 100
Error cuadrático 1,002721106 1,002717391 1,003 1,002341674
Polynomial(4)
Tiempo 10,53105708 13,13353134 12,525191 19,17215009
Porcentaje 100 100 100 100
Error cuadrático 1,002620238 1,002709775 1,0026 1,002515156
Polynomial(5)
Tiempo 10,74826972 13,63304438 12,922987 18,20369698
Porcentaje 100 100 100 100
Error cuadrático 1,00242983 1,002467217 1,0024 1,002034247
Gaussian
Tiempo 13,161951 15,963267 13,397104 21,785268
Porcentaje 100 100 100 100
Error cuadrático 1,002800723 1,00281214 1,0026 1,002312988
95
Anexo 5. Tabla LBP SVM 1.
LBP SVM
Accuracy 0,6 0,7 0,8 0,9
Box Poly Tiempo Porcentaje Tiempo Porcentaje Tiempo Porcentaje Tiempo Porcentaje
2
1 3,2023455 87,1323529 4,5131059 84,313725 6,08065993 78,9215686 7,0878922 74,509804
2 3,3755395 86,6421569 4,6208404 85,294118 6,01364111 79,1666667 7,1630859 76,470588
3 3,4666243 84,1911765 4,4628511 83,823529 5,64348065 76,9607843 25,289995 74,019608
5 10,509413 59,5588235 12,279376 59,313725 13,9332443 59,3137255 15,429833 61,27451
3
1 3,2213495 87,1323529 4,5403164 84,313725 5,36461265 78,9215686 6,6717449 74,509804
2 3,4435701 86,6421569 5,1084726 85,294118 6,03490732 79,1666667 6,9183872 76,470588
3 3,6427025 84,1911765 4,8114111 83,823529 5,22191565 76,9607843 25,483142 74,019608
5 10,627544 59,5588235 11,858243 59,313725 13,0035132 59,3137255 15,331091 61,27451
5
1 3,2278141 87,1323529 4,1413714 84,313725 4,74088839 78,9215686 6,5715954 74,509804
2 3,3798204 86,6421569 4,177602 85,294118 5,00717938 79,1666667 6,9595529 76,470588
3 3,7027701 84,1911765 4,9451307 83,823529 5,17295735 76,9607843 26,002805 74,019608
5 10,543078 59,5588235 11,801322 59,313725 12,9265789 59,3137255 15,641112 61,27451
96
Anexo 6. Tabla LBP SVM 2.
LBP SVM
Accuracy 0,6 0,7 0,8 0,9
Box Poly Tiempo Porcentaje Tiempo Porcentaje Tiempo Porcentaje Tiempo Porcentaje
2
1 1,76103 100 0,137552 100 1,986712 100 0,20087 100
2 0,17702 100 0,155259 100 0,313456 100 0,21557 100
3 0,17345 100 0,135373 100 0,252409 100 0,23611 100
5 2,57159 50 2,907559 50 3,756716 50 3,61556 50
3
1 0,2357 100 0,145367 100 0,279416 100 0,18032 100
2 0,12201 100 0,148398 100 0,230992 100 0,16343 100
3 0,12744 100 0,146638 100 0,213794 100 0,18299 100
5 2,57676 50 2,925049 50 3,69053 50 3,66049 50
5
1 0,12718 100 0,14939 100 0,196064 100 0,16371 100
2 0,14159 100 0,143375 100 0,223757 100 0,19558 100
3 0,10779 100 0,147599 100 0,226879 100 0,16239 100
5 2,58558 50 2,946393 50 3,629394 50 3,63966 50
97
Anexo 7. Tabla BOF SVM 1.
BOF SVM
Accuracy 0,6 0,7 0,8 0,9
Words Caja kernelFunction Tiempo(s) %
training Tiempo(s)
%
training Tiempo(s)
%
training Tiempo(s)
%
training
25
2
Polynomial(1) 102,138 0,85994 121,041 0,8587 146,42 0,883 170,602 0,879
Polynomial(2) 110,809 0,96517 124,6512 0,9596 147,54 0,963 157,099 0,962
Polynomial(3) 122,887 0,99932 135,5646 0,9971 154,76 0,997 156,393 0,999
Polynomial(5) 106,06 1 126,4868 1 141,96 1 164,051 1
3
Polynomial(1) 101,778 0,86646 138,315 0,8814 139,45 0,884 178,623 0,877
Polynomial(2) 110,892 0,96826 143,8249 0,964 146,27 0,965 160,529 0,96
Polynomial(3) 116,65 1 135,9293 1 152,96 1 158,699 1
Polynomial(5) 113,33 1 134,3368 1 141,7 1 158,797 1
5
Polynomial(1) 112,495 0,86408 125,0511 0,856 144,37 0,88 171,204 0,879
Polynomial(2) 115,183 0,97608 130,964 0,9746 145,34 0,971 169,803 0,971
Polynomial(3) 115,762 1 139,4864 1 146,44 1 168,399 1
Polynomial(5) 108,996 1 127,0511 1 137,37 1 159,189 1
50
2
Polynomial(1) 104,621 0,88853 123,6699 0,8888 134,51 0,901 152,033 0,892
Polynomial(2) 113,004 0,98564 127,6806 0,9775 136,44 0,986 157,113 0,983
Polynomial(3) 108,889 1 128,9128 1 139,43 1 161,165 1
Polynomial(5) 106,856 1 134,4528 1 147,96 1 159,147 1
3
Polynomial(1) 105,53 0,88249 129,1303 0,8849 135,43 0,911 157,074 0,893
Polynomial(2) 116,908 0,99283 132,7936 0,988 144,27 0,989 153,82 0,99
Polynomial(3) 110,348 1 143,1026 1 138,27 1 162,613 1
Polynomial(5) 113,826 1 136,0637 1 151 1 156,833 1
5
Polynomial(1) 111,916 0,88689 126,5582 0,9054 139,78 0,915 152,217 0,897
Polynomial(2) 110,914 0,99316 135,5442 0,9959 131,32 0,991 159,164 0,994
Polynomial(3) 114,431 1 134,6399 1 136,59 1 166,34 1
98
Polynomial(5) 105,495 1 129,2694 1 140,02 1 158,327 1
100
2
Polynomial(1) 107,572 0,91309 128,9246 0,9226 136,21 0,927 162,769 0,929
Polynomial(2) 130,148 0,99521 145,8058 0,995 133,86 0,991 149,789 0,993
Polynomial(3) 118,235 1 138,4999 1 131 1 160,295 1
Polynomial(5) 107,807 1 129,1618 1 129,46 1 183,663 1
3
Polynomial(1) 128,601 0,91618 134,525 0,9325 142,54 0,939 151,609 0,928
Polynomial(2) 115,046 0,99488 135,0314 0,9977 129,68 0,992 158,18 0,995
Polynomial(3) 110,673 1 145,3888 1 131,84 1 153,325 1
Polynomial(5) 106,025 1 126,8542 1 139,65 1 182,258 1
5
Polynomial(1) 123,909 0,92669 118,0399 0,9223 129,26 0,928 166,148 0,934
Polynomial(2) 115,058 0,99932 127,5667 1 136,4 0,999 167,953 1
Polynomial(3) 109,216 1 136,591 1 138,71 1 178,719 1
Polynomial(5) 116,08 1 134,8744 1 132,23 1 154,618 1
99
Anexo 8. Tabla BOF SVM 2.
BOF SVM
Accuracy 0,6 0,7 0,8 0,9
Words Caja kernelFunction Tiempo(s) %
training Tiempo(s)
%
training Tiempo(s)
%
training Tiempo(s)
%
training
25
2
Polynomial(1) 13,6882 0,9875 13,6882 0,9857 19,27408 0,984375 18,2368 0,983333
Polynomial(2) 13,3777 1 13,3777 0,9964 17,2847 1 18,4217 1
Polynomial(3) 12,7588 1 12,7588 1 18,34695 1 19,2129 1
Polynomial(5) 12,4788 1 12,4788 1 16,75155 1 18,6087 1
3
Polynomial(1) 11,993 0,99583 11,993 0,9857 17,16147 0,984375 18,9685 0,986111
Polynomial(2) 12,9196 1 12,9196 1 18,82899 1 18,8098 1
Polynomial(3) 12,1793 1 12,1793 1 17,70512 1 18,6796 1
Polynomial(5) 12,6047 1 12,6047 1 16,92553 1 18,2095 1
5
Polynomial(1) 14,3345 0,98333 14,3345 0,9857 17,00624 0,99375 19,8323 0,986111
Polynomial(2) 13,5201 1 13,5201 1 17,69988 1 18,4081 1
Polynomial(3) 13,2117 1 13,2117 1 16,40087 1 19,0947 1
Polynomial(5) 14,0529 1 14,0529 1 16,3853 1 18,4254 1
50
2
Polynomial(1) 13,6264 0,99167 13,6264 0,9964 17,22247 1 19,2783 1
Polynomial(2) 13,8456 1 13,8456 1 16,67287 1 18,9036 1
Polynomial(3) 13,5059 1 13,5059 1 16,3634 1 19,3285 1
Polynomial(5) 13,3093 1 13,3093 1 17,19999 1 19,189 1
3
Polynomial(1) 13,1898 1 13,1898 1 16,53119 0,996875 20,2616 1
Polynomial(2) 13,6164 1 13,6164 1 18,25798 1 19,408 1
Polynomial(3) 13,3237 1 13,3237 1 17,44254 1 18,917 1
Polynomial(5) 13,0781 1 13,0781 1 17,85531 1 18,7045 1
5
Polynomial(1) 13,8955 1 13,8955 1 16,71887 1 18,7609 1
Polynomial(2) 13,145 1 13,145 1 17,17753 1 19,2096 1
Polynomial(3) 12,8899 1 12,8899 1 16,85327 1 19,5304 1
100
Polynomial(5) 12,9688 1 12,9688 1 15,46322 1 19,805 1
100
2
Polynomial(1) 12,8342 1 12,8342 1 16,46107 1 18,7754 1
Polynomial(2) 12,4156 1 12,4156 1 16,82026 1 19,5914 1
Polynomial(3) 12,3142 1 12,3142 1 16,25306 1 19,477 1
Polynomial(5) 11,8129 1 11,8129 1 16,78458 1 19,4531 1
3
Polynomial(1) 12,7182 1 12,7182 1 16,61801 1 20,3245 1
Polynomial(2) 12,9325 1 12,9325 1 17,57612 1 19,6252 1
Polynomial(3) 13,2941 1 13,2941 1 17,85951 1 18,7732 1
Polynomial(5) 13,1617 1 13,1617 1 17,36065 1 18,6507 1
5
Polynomial(1) 13,8219 1 13,8219 1 18,32778 1 21,6288 1
Polynomial(2) 13,6059 1 13,6059 1 16,61828 1 21,2289 1
Polynomial(3) 12,4368 1 12,4368 1 18,89959 1 19,6616 1
Polynomial(5) 13,0523 1 13,0523 1 17,16978 1 18,7196 1
101
Anexo 9. Tabla BOF SVM (Banco de imágenes grande).
Paramétros BIGFACE FACEDATA4
No Words BoxConstraint kernelFunction % Training Tiempo (s) % Training Tiempo(s)
1 25 2 polynomial (1) 0.74943789 3862.88153 0.88269465 146.423067
2 25 2 polynomial (2) 0.80390286 4267.33019 0.96286976 147.535951
3 25 2 polynomial (3) 0.79901023 8433.18349 0.99692308 154.762948
4 25 2 polynomial (5) 0.90641857 8788.17174 1 141.956601
5 25 3 polynomial (1) 0.74539472 3810.92836 0.88449656 139.447402
6 25 3 polynomial (2) 0.79170253 4497.93906 0.96543386 146.265708
7 25 3 polynomial (3) 0.77035635 10760.9867 1 152.961708
8 25 3 polynomial (5) 0.90062724 9771.52076 1 141.696926
9 25 5 polynomial (1) 0.7419812 4120.65931 0.8798671 144.370412
10 25 5 polynomial (2) 0.79354004 5349.42153 0.97108896 145.344891
11 25 5 polynomial (3) 0.70346048 17880.5179 1 146.441094
12 25 5 polynomial (5) 0.93069363 8007.17089 1 137.372664
13 50 2 polynomial (1) 0.76506515 3884.84574 0.90054487 134.511329
14 50 2 polynomial (2) 0.85469955 3917.07163 0.98615385 136.442831
15 50 2 polynomial (3) 0.95867164 4301.51293 1 139.430913
16 50 2 polynomial (5) 0.99993437 3958.79853 1 147.960301
17 50 3 polynomial (1) 0.763122 3714.07666 0.91134225 135.427508
18 50 3 polynomial (2) 0.86047504 4012.17514 0.98898139 144.272506
19 50 3 polynomial (3) 0.96795652 4361.99884 1 138.27257
20 50 3 polynomial (5) 0.99993437 4095.37181 1 150.999747
21 50 5 polynomial (1) 0.76592992 3849.88929 0.91490385 139.776961
22 50 5 polynomial (2) 0.85576165 4449.70607 0.99128205 131.320791
23 50 5 polynomial (3) 0.97860092 4690.01383 1 136.58648
24 50 5 polynomial (5) 0.99993437 3950.24893 1 140.017249
25 100 2 polynomial (1) 0.78755283 3794.08255 0.92662836 136.212581
102
26 100 2 polynomial (2) 0.90955427 3766.01649 0.99051986 133.861019
27 100 2 polynomial (3) 0.99218681 3990.71068 1 131.001218
28 100 2 polynomial (5) 0.99993437 3930.17772 1 129.463546
29 100 3 polynomial (1) 0.79224992 3787.17881 0.93915729 142.538111
30 100 3 polynomial (2) 0.92020144 3776.66928 0.99230769 129.677491
31 100 3 polynomial (3) 0.99646599 4478.44493 1 131.843338
32 100 3 polynomial (5) 0.99993437 4087.03269 1 139.645139
33 100 5 polynomial (1) 0.78906731 3830.95277 0.92844434 129.262411
34 100 5 polynomial (2) 0.9305708 4027.50078 0.99897436 136.404539
35 100 5 polynomial (3) 0.99793069 4117.804 1 138.705058
36 100 5 polynomial (5) 0.99993437 4052.52729 1 132.233433
103
Anexo 10. Tabla HOG TREE 1.
HOG TREE
MaxNumSplits Accuracy 0,6 0,7 0,8 0,9
5
Tiempo 37,6876548 46,2981005 46,618483 62,8131784
Porcentaje 62,254902 61,7647059 61,0272 59,8039216
Error
cuadrático 1,81963415 1,89329303 1,9762 1,89624513
20
Tiempo 60,5516284 71,5428811 67,810637 104,79544
Porcentaje 67,6470588 64,7058824 64,0483 61,7647059
Error
cuadrático 1,34678074 1,43026973 1,4951 1,49059618
50
Tiempo 66,811408 92,3211033 96,587401 133,844941
Porcentaje 66,9117647 64,5424837 63,4441 61,7647059
Error
cuadrático 1,00863087 1,01120767 1,0152 1,07074551
80
Tiempo 65,6036549 91,8122178 99,487203 137,768934
Porcentaje 66,9117647 64,5424837 63,4441 60,7843137
Error
cuadrático 1,00863087 1,01120767 1,0152 1,02042864
100
Tiempo 71,9772618 92,0918952 91,461071 135,113312
Porcentaje 66,9117647 64,5424837 63,4441 60,7843137
Error
cuadrático 1,00863087 1,01120767 1,0152 1,02042864
500
Tiempo 74,5230531 91,2604993 98,683184 137,022847
Porcentaje 66,9117647 64,5424837 63,4441 60,7843137
Error
cuadrático 1,00863087 1,01120767 1,0152 1,02042864
104
Anexo 11. Tabla HOG TREE 2.
HOG TREE
MaxNumSplits Accuracy 0,6 0,7 0,8 0,9
5
Tiempo 6,645493375 9,110339445 7,104019 8,749885938
Porcentaje 90,625 89,16666667 89,1667 77,5
Error cuadrático 1 1 1 1
20
Tiempo 6,584194442 7,58092333 6,383768 8,66176929
Porcentaje 90,625 89,16666667 89,1667 77,5
Error cuadrático 1 1 1 1
50
Tiempo 6,125621511 6,251203769 6,881725 8,267600574
Porcentaje 90,625 89,16666667 89,1667 77,5
Error cuadrático 1 1 1 1
80
Tiempo 6,109570022 6,144533659 6,547146 8,071456731
Porcentaje 90,625 89,16666667 89,1667 77,5
Error cuadrático 1 1 1 1
100
Tiempo 6,45641997 6,132959896 6,994119 8,270082921
Porcentaje 90,625 89,16666667 89,1667 77,5
Error cuadrático 1 1 1 1
500
Tiempo 6,528205804 6,096401947 6,769683 8,652323741
Porcentaje 90,625 89,16666667 89,1667 77,5
Error cuadrático 1 1 1 1
105
Anexo 12. Tabla HOG KNN 1.
HOG KNN
NumNeighbors Accuracy 0,6 0,7 0,8 0,9
5
Tiempo 156,719214 217,862113 194,826272 437,590619
Porcentaje 65,5637255 65,1960784 74,3202 52,4509804
Error
cuadrático 1,74870057 1,67786181 1,9155 1,66121243
20
Tiempo 155,509751 219,802363 203,421352 422,495296
Porcentaje 74,2647059 69,6078431 77,3414 55,3921569
Error
cuadrático 1,67768285 1,62690417 1,8645 1,66854717
50
Tiempo 155,23135 220,709327 198,783277 419,752579
Porcentaje 78,9215686 77,2875817 77,3414 62,745098
Error
cuadrático 1,73789694 1,69782944 1,8194 1,66130558
80
Tiempo 156,761807 219,017898 196,035423 408,941773
Porcentaje 70,8333333 71,2418301 77,6435 68,627451
Error
cuadrático 1,84314815 1,79770648 1,8843 1,71734814
100
Tiempo 180,157974 224,653068 199,124479 382,104867
Porcentaje 69,4852941 68,627451 76,435 63,2352941
Error
cuadrático 1,87246265 1,82689078 1,9047 1,73516309
500
Tiempo 177,111303 220,764825 196,242333 382,682711
Porcentaje 63,9705882 65,6862745 79,1541 61,7647059
Error
cuadrático 2,09316434 2,04488555 2,0937 1,95255034
106
Anexo 13. Tabla HOG KNN 2.
HOG KNN
NumNeighbors Accuracy 0,6 0,7 0,8 0,9
5
Tiempo 9,80044453 10,10324966 10,569263 16,73131996
Porcentaje 93,125 91,66666667 91,6667 100
Error cuadrático 1,043253333 1,037668571 1,0377 1,006435556
20
Tiempo 8,017989694 10,98123832 10,203183 16,0074095
Porcentaje 80 74,16666667 74,1667 100
Error cuadrático 1,203111042 1,161700089 1,1617 1,042036667
50
Tiempo 7,466363866 10,33096543 10,422243 16,16139581
Porcentaje 76,25 70,83333333 70,8333 97,5
Error cuadrático 1,604796187 1,427773982 1,4278 1,231949671
80
Tiempo 8,220953663 10,16302426 10,192078 16,15393569
Porcentaje 76,25 85 85 85
Error cuadrático 1,728537982 1,512287791 1,5123 1,352504036
100
Tiempo 8,123705493 11,07523927 10,472644 15,25513109
Porcentaje 80 92,5 92,5 95
Error cuadrático 1,767119962 1,59095973 1,591 1,396426739
500
Tiempo 7,836767242 10,8151122 10,31513 16,00880896
Porcentaje 50 50 50 50
Error cuadrático 2,25 2,25 2,25 2,25