desarrollo de un sistema de detecciÓn e …

112
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

Upload: others

Post on 13-Nov-2021

4 views

Category:

Documents


0 download

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].

31

Figura 11. Ejemplo de Convolució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.

33

Figura 12. Desarrollo de proyecto.

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.

45

Figura 18. Diagrama de flujo de construcción de modelos.

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.

64

Figura 23. Capas red propia.

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

107

Anexo 14. Curva de entrenamiento (70 entrenamiento, 30 prueba).

108

Anexo 15. Curva de entrenamiento (80 entrenamiento, 20 prueba).

109

Anexo 16. Curva de entrenamiento (90 entrenamiento, 10 prueba).

110

Anexo 17. Curva de entrenamiento modelo 2 (80 entrenamiento, 20 prueba).

111

Anexo 18. Curva de entrenamiento modelo 2 (90 entrenamiento, 10 prueba).

112

Anexo 19. Curva de entrenamiento modelo 2 (70 entrenamiento, 30 prueba).