Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
PROYECTO DE GRADO Presentado a LA UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA Para obtener el t́ıtulo de INGENIERO ELECTRÓNICO por Sergio Daniel Diaz Ortiz DETERMINACIÓN AUTOMÁTICA DE EDAD APARENTE PROMEDIO EN GRUPOS DE PERSONAS USANDO MACHINE LEARNING Sustentado el 17 de 12 de 2019 frente al jurado: - Asesor: Fernando Enrique Lozano Mart́ınez PhD, Profesor Asociado, Universidad de Los Andes Carolina Higuera Arias, Profesor instructor, Universidad de Los Andes - Jurados : Luis Felipe Giraldo Trujillo PhD, Profesor Asociado, Universidad de Los Andes . A mi familia por ser mi apoyo en cada instante de mi vida... Agradecimientos Agradezco principalmente a mi mamá, papá y hermano por estar a mi lado apoyándome siempre que los necesité, siendo mi motivación para terminar este proyecto y ayudándome con las dificultades que se presentaron durante toda mi vida universitaria. También agradezco a mis asesores Fernando Lozano y Carolina Higuera quienes me guiaron en la realización de cada una de las partes del proyecto. Por último, agradezco a mis compañeros y profesores de carrera quienes, a lo largo de la misma, me brindaron apoyo académico y psicológico indispensable para mi formación universitaria. i Índice general 1. Introducción 1 1.1. Descripción de la problemática y justificación del trabajo . . . . . . . . . . . . . . . . . 1 1.2. Alcance y productos finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.1. Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.2. Objetivos Espećıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Marco teórico, conceptual e histórico 3 2.1. Marco teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1. Aprendizaje supervisado: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2. Transfer learning: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.3. Regresión lineal: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.4. Redes neuronales: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.5. Redes neuronales convolucionales (CNN): . . . . . . . . . . . . . . . . . . . . . . 5 2.1.6. Multi-task cascade convolutional neural network (MTCNN): . . . . . . . . . . . . 6 2.1.7. Sintonización fina: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3. Definición y especificación del trabajo 9 3.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2. Especificaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4. Metodoloǵıa del trabajo 11 4.1. Plan de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2. Alternativas de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2.1. Alternativas al método de detección y extracción facial . . . . . . . . . . . . . . . 11 4.2.2. Alternativas al método de estimación de la edad aparente . . . . . . . . . . . . . 12 4.3. Normativas, leyes, reglamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.3.1. Ley 1581 de 2012 [13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.3.2. Formato de autorización de datos para realizar pruebas: . . . . . . . . . . . . . . 13 5. Trabajo realizado 15 5.1. Elección de base de datos y preprocesamiento: . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2. Detección y extracción de rostros en imagenes y videos: . . . . . . . . . . . . . . . . . . 16 5.3. Determinación de la edad aparente basándose en rasgos faciales: . . . . . . . . . . . . . 17 5.4. Construcción de la arquitectura final del sistema: . . . . . . . . . . . . . . . . . . . . . . 18 6. Validación del trabajo 21 6.1. Metodoloǵıa de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2. Validación de los resultados del trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7. Discusión 24 8. Conclusiones y trabajos futuros 25 8.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.2. Trabajo Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Bibliograf́ıa 25 ii Índice de figuras 2.1. Esquema general de una neurona artificial. Tomado de [15] . . . . . . . . . . . . . . . . 5 2.2. Esquema red neuronal con una sola capa oculta. Tomado de [4] . . . . . . . . . . . . . . 5 2.3. Esquema red neuronal convolucional para el problema de clasificación . . . . . . . . . . 6 2.4. Esquema general redes P-net, R-net y O-net en MTCNN . . . . . . . . . . . . . . . . . . 7 4.1. Comparación en la detección de los 4 métodos probados . . . . . . . . . . . . . . . . . . 12 4.2. Formato de autorización de uso de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.1. Esquema general sistema final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2. Distribución de edades en la base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.3. tiempos medios por frame y velocidad de video en tiempo real usando MTCNN. . . . . 17 5.4. Cambios en el error de entrenamiento a medida que avanzan las épocas. . . . . . . . . . 18 5.5. Apariencia de la aplicación generalmente. . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.6. modo de visualización de las imágenes subidas en la interfaz. . . . . . . . . . . . . . . . 20 6.1. Rostros detectados en algunas imágenes usando MTCNN. . . . . . . . . . . . . . . . . . 22 6.2. Edades estimadas para algunos rostros usando la red neuronal. . . . . . . . . . . . . . . 22 6.3. Edades calculadas para algunas personas usando el sistema completo. . . . . . . . . . . 23 iii Índice de cuadros 3.1. Versiones de software necesarias para poder ejecutar el sistema . . . . . . . . . . . . . . 10 3.2. Requerimiento de Hadware para poder ejecutar el sistema . . . . . . . . . . . . . . . . . 10 iv 1. Introducción 1.1. Descripción de la problemática y justificación del trabajo En los últimos años, la automatización de procesos de identificación y recolección de información ha venido cobrando una especial importancia en las áreas gubernamentales, de mercadeo y hasta en el área de entretenimiento. Del mismo modo, dada la utilidad del machine learning para todo tipo de tareas, que van desde procesos como la solución de problemas de regresión o clasificación simple, hasta tareas sofisticadas como la conducción automática de automóviles, este se convierte en una buena herramienta para cumplir, también, la tarea mencionada. En este sentido, si una empresa desea saber caracteŕısticas especificas de su mercado, como son la afluencia de clientes hacia ciertas tiendas especificas, las zonas donde se puede concentrar su mercado o la edad predominante de las personas que se interesan por sus productos, es poco eficaz, en térmi- nos económicos y temporales, realizar la recolección de información de forma manual, lo cual se hace actualmente, y es aqúı donde se pueden plantear métodos de aprendizaje automático que reduzcan los tiempos y los costos de realizar estas operaciones. Una aplicación especifica en los que los métodos de machine learning puedan ayudar a entes priva- dos, gubernamentales o personas comunes a realizar tareas de este tipo, es la determinación de edad aparente en fotograf́ıas o videos. Esto puede ayudar a una empresa a determinar productos espećıficos para sus clientes, ayudar a entes del gobierno a determinar necesidades puntuales de ciertos sectores o simplemente dar a conocer a una personasu edad aparente para satisfacer su curiosidad. Por este motivo, este proyecto pretende usar métodos de aprendizaje supervisado y “transfer learning” para determinar la edad aparente promedio de grupos de personas en fotograf́ıas o videos, minimizado suficientemente el error y el tiempo necesario para que el sistema pueda funcionar correctamente sin necesidad de contar con sistemas computacionales excesivamente poderosos. 1.2. Alcance y productos finales Al inicio de este proyecto se esperaba que en su finalización fuera posible presentar una arquitectura, de aprendizaje automático, funcional probada en distintas situaciones, cuyas funcionalidades sean inclui- das en una aplicación que pueda trabajar en un computador convencional y que permita la detección de edad promedio en una foto elegida por el usuario, con un tiempo de procesamiento razonablemente corto y que no necesite de muchos recursos computacionales para su funcionamiento. En este momento, se puede decir que los objetivos fueron cumplidos de forma aceptable, ya que aunque se logró crear la aplicación deseada y esta funciona en muchas situaciones, identificando la edad promedio de un grupo de personas en imágenes y videos, los requerimientos computacionales necesarios para lograr que esta pueda funcionar con tiempos de procesamiento cortos, no pueden ser cumplidos por equipos convencionales que no posean GPUS (Graphic processor unit). Sin embargo, se puede decir que estas limitaciones están dadas por las tecnoloǵıas actuales y que las funciones de la aplicación son satisfactorias para el problema que se trató de resolver. 1 CAPÍTULO 1. INTRODUCCIÓN 2 1.3. Objetivos 1.3.1. Objetivo General Construir un modelo basado en machine learning que permita determinar la edad aparente promedio de un grupo de personas, presentes en una foto o video, basándose únicamente en el análisis de carac- teŕısticas faciales propias de ciertas edades. 1.3.2. Objetivos Espećıficos Encontrar una base de datos, con información suficiente, que permita caracterizar la edad de un grupo de personas basado en sus rasgos faciales. Elegir una red neuronal que sea capaz de realizar la extracción de los rostros presentes una ima- gen o video con la velocidad y capacidad de procesamiento que debe tener el sistema para su correcto funcionamiento. Elegir y entrenar una red neuronal para que sea capaz de realizar la estimación de la edad de un rostro en una imagen o video con la velocidad y capacidad de procesamiento que debe tener el sistema para su correcto funcionamiento. Usar los desarrollos de los items anteriores para estimar la edad promedio de un grupo de per- sonas en una imagen o video, basándose en sus rasgos faciales. Crear una aplicación que permita realizar la funcionalidad del proyecto en un entorno de fácil ejecución, sin necesidad de tener conocimientos en programación. 2.Marco teórico, conceptual e histórico 2.1. Marco teórico A continuación se describen los conceptos teóricos más importantes a comprender, los cuales llevaron a encontrar una solución al problema: 2.1.1. Aprendizaje supervisado: Es un tipo de aprendizaje de máquina en el cual se desea que un modelo aprenda a predecir una ca- racteŕıstica dada de un ambiente a partir de otras caracteŕısticas del mismo[1]. A estas caracteŕısticas se las llama descriptores y de estos depende en gran medida que tan bien se ajusten los parámetros del modelo a nuevos datos. Los parámetros del modelo, en aprendizaje supervisado, se ajustan realizando un “entrenamiento” del modelo. Este entrenamiento consiste en dar al modelo un set de ejemplos en los cuales se encuentra, para todos ellos, la respuesta correcta (etiqueta) y se espera que si estas variables tienen relación con el modelo el error en estos datos se termine reduciendo y se ajusten los parámetros de tal forma que el error también sea mı́nimo en datos futuros. Este tipo de aprendizaje de maquina se diferencia en el aprendizaje no supervisado en que, en este último, no se tienen etiquetas de los datos por lo que no se pueden usar técnicas comunes y se busca solucionar otro tipo de problemas. Existen 2 tipos de aprendizaje supervisado, El aprendizaje en valores continuos o “ajuste por regre- sión” y el aprendizaje discreto de “clasificación”. En el primero, se busca ajustar los descriptores de entrada a un valor de salida de manera que el modelo generado sea una función numérica definida en un dominio amplio. Por otra parte, en clasificación se busca separar los datos de entrada en diferentes conjuntos según ciertas caracteŕısticas y el modelo de salida es una función que env́ıa los valores de entrada a un dominio x entre -1 y 1. Por último, se debe aclarar que en este tipo de aprendizaje, a menudo se tienen 3 tipos de conjuntos de datos. Los datos de entrenamiento, los cuales son usados en la etapa de entrenamiento para ajustar los parámetros del modelo. Los datos de validación, los cuales son usados para elegir diferentes opciones de arquitecturas cuando se está realizando un proceso de diseño. Al final, se tiene el conjunto de test, este conjunto permite encontrar la precisión esperada del modelo en datos futuros. 2.1.2. Transfer learning: Generalmente a lo largo de la histora humana, el conocimiento encontrado para realizar alguna tarea o solucionar algun problema es “heredado” a otros campos del conocimiento y es usado para solucionar otros tipos de problemas. Sin embargo, comúnmente los algoritmos de machine learning trabajan aisla- damente de desarrollos en otras tareas y usualmente necesitan de un gran trabajo de diseño y tiempos de entrenamiento. Por esta razón, En los últimos años se han desarrollado métodos de Transfer lear- ning[2], en los cuales, se usan desarrollos en algunas tareas para minimizar el esfuerzo solucionando tareas relacionadas, logrando aśı que nuevas investigaciones puedan centrarse en problemas diferentes y aśı se logre solucionar efectivamente muchos más problemas. En este sentido, es posible usar modelos creados, por ejemplo, para tareas de reconocimiento facial, en tareas de reconocimiento de emociones o determinación del genero basándose en rasgos faciales. De esta forma, grupos interesados en solucio- nar estas últimas tareas pueden invertir más tiempo en perfeccionar sus datasets o elegir un conjunto correcto de descriptores, más que por la arquitectura que va a tener su modelo. 3 CAPÍTULO 2. MARCO TEÓRICO, CONCEPTUAL E HISTÓRICO 4 2.1.3. Regresión lineal: En este problema se desea ajustar un conjunto de datos {x1, x2, ...xn} a una función y = f(x) donde: f(x) = w1x1 + w2x2 + w2x3 + ... + wnxn + b (2.1) lo que implica que las entradas y las salidas están relacionadas linealmente por un vector de pesos W y un termino de sesgo b [3]. Sin embargo, estos valores están definidos en todo Rn+1 con n igual al número de dimensiones de los datos de entrada, por lo que sus valores deben ser ajustados usando alguna técnica especifica ya sea de machine learning o a través de métodos estocásticos. En el campo de machine learning se usan diferentes técnicas dependiendo de la complejidad de la tarea y las restricciones impuestas por el problema. Sin embargo, una constante en regresión lineal es la minimización de la “función de error cuadrático medio”. En esta función se tienen en cuenta los datos del set de entrenamiento, para calcular una medida de error entre el valor esperado de la evaluación de un dato determinado y su valor real, dado en el set de entrenamiento. La función se muestra en la ecuación 2.2. L(x) = n∑ i=1 (yi − f(xi))2 (2.2) Donde yi, xi representa la i-ésima etiqueta del i-ésimo dato respectivamente. Generalmente en apren- dizaje supervisado se trata de usar algoritmos iterativos que dependen de los datos de entrenamiento para lograr reducir este error tanto como sea posible, por lo cual, la solución al problema de regresión lineal es altamente dependiente de los datos. Espećıficamente,tiene alta dependencia del número de datos y el número de descriptores. En conclusión, en regresión lineal se trata de ajustar un conjunto de datos de entrenamiento a una función lineal en múltiples variables minimizando una función de error, y se espera que datos futuros se ajusten también a esta función lineal y permitan predecir valores desconocidos. 2.1.4. Redes neuronales: Las redes neuronales[4] son un concepto que engloba una gran cantidad de métodos de aprendizaje automático. Estos métodos tratan de procesar la información que reciben en unidades puntuales y, usando cascadas de funciones no lineales, tratar de ajustarse a las entradas y predecir valores futuros. estos modelos reciben su nombre de una vaga relación con el cerebro, más espećıficamente con su unidad mı́nima, la neurona. Una neurona artificial se muestra en la figura 2.1. En esta se puede describir como una unidad que realiza la suma ponderada de sus entradas {x1, x2, x3, ..., xn} y aplica a este resultado una función de activación no lineal la cual se transforma en su salida. CAPÍTULO 2. MARCO TEÓRICO, CONCEPTUAL E HISTÓRICO 5 Figura 2.1: Esquema general de una neurona artificial. Tomado de [15] La salida de cada una de las neuronas se conecta a otras unidades similares y al final el sistema resulta como una interconexión de estas unidades, las cuales se ajustan de tal manera que puedan generar distintos valores y puedan aplicar distintas funciones a sus entradas con el fin de producir salidas espećıficas. En una red neuronal, el entrenamiento se realiza con el fin de ajustar los vectores de pesos W de cada una de las neuronas presentes en la red con el fin de obtener valores distintos a la salida. De esta forma, con diferentes configuraciones de redes neuronales es posible solucionar una gran cantidad de problemas tanto continuos como discretos en grandes números de variables por lo cual actualmente se está estudiando su uso en múltiples campos de las ciencias. La arquitectura más común de redes neuronales es la arquitectura por capas. En esta, se agrupan las neuronas en 3 tipos de capas, capas de entrada, capas ocultas y capa de salida, en las cuales se realizan diferentes procesos, se tienen diferentes números de neuronas y en el caso de las capas ocultas, diferentes números de capas. Figura 2.2: Esquema red neuronal con una sola capa oculta. Tomado de [4] 2.1.5. Redes neuronales convolucionales (CNN): En el área de procesamiento de imágenes y visión artificial, actualmente se usan muchos tipos de redes neuronales y algoritmos de machine learning. Sin embargo entre estas, las redes neuronales convolucio- nales[5] han empezado a cobrar especial importancia, ya que estas permiten, gracias a su arquitectura, reducir el número de parámetros necesarios para extraer información de diferentes tipos de imágenes CAPÍTULO 2. MARCO TEÓRICO, CONCEPTUAL E HISTÓRICO 6 y arrays bidimensionales y aumentar la extracción de caracteristicas de las entradas. La arquitectura de estas redes neuronales se puede dividir en 2 partes principales, las capas convolucio- nales y la capa softmax de clasificación/regresión. La primera, capa convolucional se basa en el uso de filtros basados en kernels, que dependiendo su tamaño y valores permiten la extracción de diferentes caracteŕısticas de las imágenes de entrada. En la mayoŕıa de casos, se tienen múltiples kernels que permiten extraer diferentes descriptores del mismo objeto de entrada, Además, esta parte de la arqui- tectura presenta capas ”pooling”las cuales se encargan de reducir el tamaño de los arrays de salida de las capas convolucionales y aśı reducir el número de parámetros de la red. Figura 2.3: Esquema red neuronal convolucional para el problema de clasificación En la figura 2.3 se muestra el esquema general de una red neuronal convolucional en la cual se in- dican los pasos generales que llevan a estas redes a identificar un objeto en una imagen. En esta se muestran 2 etapas de filtrado y pooling en la cual se extraen las caracteŕısticas de la imagen usando múltiples filtros, y una etapa convencional de clasificación en la cual generalmente recibe el nombre de capa “softmax” conteniendo tantas neuronas como clases se desee evaluar y con activación no lineal. En caso que se desee usar una CNN para solucionar el problema de regresión, se debe modificar solo la última etapa del proceso reemplazando la capa softmax por una única neurona con una activación lineal. Además, se debe ajustar toda la función de perdidas y el algoritmo de descenso para que el entrenamiento ajuste la red en el dominio continuo. 2.1.6. Multi-task cascade convolutional neural network (MTCNN): Es una arquitectura de aprendizaje automático creada para realizar identificación y alineación facial. Para realizar esta tarea, MTCNN [6] usa un conjunto de filtros convolucionales que recrean una de- tección en cascada de rostros en la imagen, variando el tamaño del kernel con el fin de detectar el contorno del rostro, los ojos y la sonrisa para reducir la tasa de falsos positivos y verdaderos negativos. Esta arquitectura está compuesta principalmente por 3 redes neuronales convolucionales: Proposal network (P-net), Refine network (R-net) y Output network (O-net), cada una de estas representa una etapa en la detección de un rostro y sus respectivos puntos de referencia (ojos y boca). CAPÍTULO 2. MARCO TEÓRICO, CONCEPTUAL E HISTÓRICO 7 Inicialmente en la fase 1, P-net se encarga de seleccionar todos los candidatos a rostros de manera rápi- da en una imagen, determinando su respectivo “bounding box” y teniendo como proposito principal reducir la tasa de verdaderos negativos. Al final esta red retorna todos los vectores de los candidatos a rostros y los vectores de candidatos a puntos de referencia. La segunda etapa se basa en el uso de R-net para la reducción de los falsos positivos lo cual, como lo describen los creadores, era uno de los problemas más grandes en arquitecturas como viola jones, de este modo esta red recibe todos los candidatos a rostros y puntos de referencia de P-net y descarta la mayoria quedandose solo con los que tengan un alto nivel de “confianza”. Por último, la tercera etapa usa O-net para realizar un proceso similar al de las 2 etapas anteriores dando los candidatos finales a rostros y descartando landmarks sin sentido que se hayan detectado, generalmente en esta capa existe un procesamiento detallado aunque generalmente no se realizan mu- chos cambios en las detecciones realizadas por las redes anteriores. Para este proyecto se usará una implementación de la red creada por David Sandberg para python [9], la cual está optimizada para funcionar con tensor-flow y tiene código libre para modificaciones y cuya estructura se muestra en la figura 2.4 Figura 2.4: Esquema general redes P-net, R-net y O-net en MTCNN En esta imagen se puede apreciar que las redes son redes complejas con grandes cantidades de filtros y capas convolucionales por lo cual, los tiempos de procesamiento por imagen suelen ser altos usando solamente cpu. 2.1.7. Sintonización fina: Como ya se mencionó en secciones anteriores, en el área del machine learning, redes neuronales y el transfer learning, espećıficamente en el área de visión artificial, existen distintos tipos de modelos que cumplen con un gran número de tareas, las cuales pueden ser muy diferentes entre śı o muy similares, dependiendo del enfoque que se de a un determinado problema. De este modo, es natural pensar que lo que una red neuronal aprende para un problema espećıfico puede ser aplicado para un problema similar y que solo es necesario realizar unas pequeñas modificaciones a dicha red para lograr que esta cumpla con un nuevo objetivo[7]. En este caso se piensa que solo es necesario modificar algunos parámetros de CAPÍTULO 2. MARCO TEÓRICO, CONCEPTUAL E HISTÓRICO 8 los modelos para cumplir con los nuevos requerimientos. Un ejemplo clarode este proceso es la sintonización fina aplicada a redes neuronales convoluciona- les. En estas redes, como se mencionó anteriormente, se tienen 2 partes definidas, la primera son las capas convolucionales y la segunda es una red neuronal convencional (totalmente conectada), En un entrenamiento normal se modifican los parámetros de toda la red y se encuentra la “mejor” estimación para el problema dado. Sin embargo, estos procesos ocupan una gran cantidad de tiempo, recursos computacionales y necesitan muchos datos. Por esta razón se han planteado una solución basada en transfer learning, modificando solo las capas totalmente conectadas y asumiendo que las caracteŕısticas dadas por las capas convolucionales si extraen suficiente información para el problema dado. 3.Definición y especificación del trabajo 3.1. Definición Este proyecto tiene la finalidad de crear un aplicación computacional capaz de determinar automáti- camente la edad promedio de las personas en una imagen o video, basándose únicamente en sus caracteŕısticas faciales, siempre y cuando se trabaje con una resolución de imagen aceptable, la cual va a ser definida más adelante, y unas condiciones de luz óptimas que permitan ubicar, de manera suficientemente precisa, los rasgos de un rostro humano. En la etapa actual del proyecto, y de muchas de las tecnoloǵıas basadas en machine learning, este no tiene gran aplicabilidad comercial, ya que el error para nuevos datos es alto y este debe reducirse antes de tratar comercializarlo para aśı brindar una confianza suficiente a los estudios. Sin embargo, en un futuro modelos como el creado en este proyecto pueden facilitar en gran medida la recolección de información y serán una nueva forma de ahorrar costos en procesos como el mencionado. Del mismo modo, el proyecto tiene que ser usado siempre con consentimiento informado de las personas a las cuales se trata de realizar la identificación de edad, ya que de no hacerlo es posible incurrir en problemas legales por uso indebido de la información. En este sentido, los modelos entrenados para este tipo de aplicaciones tienen que contar con bases de datos libres o autorizadas por los creadores. Por esta razón, la base de datos puede ser un limitante en la aplicabilidad del proyecto y en este caso limitó los rangos de edad en los cuales se puede aplicar el sistema, estableciéndose en un rango de edad de 10 a 85 años, donde tanto el error como los tiempos de procesamiento se mantienen en un rango normal. De este modo, se sabe que no se tuvieron muchos datos disponibles en los que la edad de las personas estuvieron entre los rangos excluidos y por esta razón el modelo no pudo ajustar sus parámetros correctamente en rangos diferentes a los tratados. Por último se debe tener en cuenta que es necesario cumplir con unos requerimientos mı́nimos, tanto de hadware como de software, para poder replicar los resultados encontrados en este documento. De no contar con dichos requerimientos puede no ser posible poder ejecutar la aplicación o lograr un fun- cionamiento incorrecto de la misma. En este sentido, en la sección “especificaciones” se listan dichos requerimientos mı́nimos. 3.2. Especificaciones Teniendo en cuenta que el proyecto está desarrollado en el lenguaje de programación python, para poder ejecutar la interfaz del programa satisfactoriamente, se debe instalar una versión de python ≥ 3.5. Del mismo modo, se tienen que tener instaladas las libreŕıas mostradas en la tabla 1 con sus respectivas versiones: 9 CAPÍTULO 3. DEFINICIÓN Y ESPECIFICACIÓN DEL TRABAJO 10 Cuadro 3.1: Versiones de software necesarias para poder ejecutar el sistema Libreŕıa Versión OpenCV ≥ 3.4.0 Tensorflow ≥ 1.10.0 dlib ≥ 19.18.0 Pillow ≥ 4.3.0 Numba ≥ 0.40.1 tkinter ≥ 1.0.3 keras ≥ 2.2.5 Además, para poder replicar los resultados de este documento, se deben tener unas especificaciones de software y calidad de imagen, ya que en equipos con poca capacidad computacional la velocidad de pro- cesamiento puede ser baja, hasta el punto en el cual el sistema pueda ser completamente ineficiente. Del mismo modo, el error en la estimación de la edad promedio puede llegar a ser muy alto si se ingresan al sistema imágenes con poca resolución donde, a pesar de reconocer un rostro, las caracteŕısticas faciales no puedan ser reconocidas claramente. Estas especificaciones técnicas se muestran en la siguiente tabla: Cuadro 3.2: Requerimiento de Hadware para poder ejecutar el sistema Requerimiento Mı́nimo aceptable Resolución del archivo de entrada 640x480 ṕıxeles Formato del archivo de entrada .JPG, .PNG, .MP4, .AVI Memoria RAM 4 GB GPU ≥ Śı versión del sistema operativo compatible con google chrome En este sentido, se entiende que es necesario el uso de una gpu para poder ejecutar el sistema, esto se debe a que las cpu no tienen recursos suficientes para realizar las operaciones necesarias de manera concurrente y toman mucho más tiempo en ejecutarse. 4.Metodoloǵıa del trabajo 4.1. Plan de trabajo Con el fin de cumplir con los objetivos plasmados en este proyecto, se siguieron una serie de pasos claros los cuales van a ser plasmados a continuación: – Obtención de la base de datos para la determinación de la edad basado en caracteŕısticas faciales. – Elección del software y libreŕıas a usar en las etapas siguientes del proyecto e instalación de estos. – Búsqueda y selección de una primera red capaz de identificar rostros en imágenes y videos. – Realizar pruebas de la red seleccionada en una base de datos creada con este fin, además, realizar la medición de tiempos y fijar restricciones a esta red. – Búsqueda y selección de la segunda red capaz de extraer caracteŕısticas espećıficas de un rostro y con ellas determinar una cualidad especifica de dicho rostro. – Modificar la red seleccionada con el fin de reemplazar en esta funcionalidad anterior y crear la fun- cionalidad de detección de edad aparente de un rostro basándose únicamente en sus caracteŕısticas. – Realizar pruebas de la red seleccionada en la base de datos usada en la primera actividad, además, realizar la medición de tiempos y fijar restricciones a esta red. – Creación del sistema completo basado en los módulos de detección facial y determinación de edad aparente. – Realización de pruebas en campo del sistema entero y determinación de restricciones del sistema. Complementariamente a estas actividades se realizó una asistencia semanal a un seminario dirigido a compartir avances del proyecto con el asesor, cosasesor y estudiantes que estuvieran realizando pro- yectos similares, en este se realizaban exposiciones cada 2 semanas para determinar cuanto se hab́ıa avanzado en los objetivos y reportar posibles problemas que trataban de ser solucionados por los asis- tentes, de esta manera, se trataba de cumplir con unas metas cortas y se correǵıan errores que no eran vistos por la persona a cargo del proyecto. 4.2. Alternativas de desarrollo En el transcurso del proyecto se tuvieron en cuenta diversas alternativas para el desarrollo tanto de la etapa de detección y extracción de rostros, como para la etapa de estimación de la edad. La mayoŕıa de estas alternativas se terminaron descartando por múltiples factores. Sin embargo, cada una contribuyo a entender el problema que se estaba tratando y aśı mejorar el resultado final. 4.2.1. Alternativas al método de detección y extracción facial El problema de detección facial ha sido tratado ampliamente en múltiples estudios y de estos se han derivado distintos tipos de técnicas que pueden ser usadas libremente para tratar de solucionar este problema. Entre las más conocidas están Multi-task cascade convolutional neural network (MTCNN), Viola-Jones[9], Convolutional neural network by dlib, deep neural network de Opencv [10]. 11 CAPÍTULO 4. METODOLOGÍA DEL TRABAJO 12 Como opciones alternativas se implementó el extractor de rostros usando las 3 últimas técnicasmen- cionadas anteriormente que basan su detección en support vector machines (Viola Jones) y redes neuronales (dlib y Opencv) estas ofrece teóricamente una buena precisión con tiempos de procesa- miento bajos. Sin embargo, cuando se trató de probar estos algoritmos usando 10,000 ejemplos del dataset “WIDER dataset” creado por la universidad de Hong Kong[11], el cual cuenta con cerca de 32,000 imágenes de grupos de personas, se notó que aunque los tiempos de procesamiento se mantenian bajos, 120 ms, 150 ms y 160 ms respectivamente, la precisión era muy baja comparada con MTCNN siendo estos cerca de 68 %, 78 % y 82 % respectivamente. Esto hizo que se terminen descartando estas opciones ya que para el problema que se está tratando este resultado no es suficiente. Figura 4.1: Comparación en la detección de los 4 métodos probados 4.2.2. Alternativas al método de estimación de la edad aparente En esta etapa se queŕıan aplicar métodos de transfer learning para crear un modelo que permitiera estimar la edad promedio de un rostro a partir de sus caracteŕısticas, El primer paso fue encontrar un modelo para solucionar un problema similar al mencionado anteriormente, para esto, inicialmente se trató de ajustar y entrenar modelos diseñados para la estimación del género y las emociones de una persona a partir de su rostro. Dada la dificultad de encontrar varios tipos de modelos que permitieran la estimación del género de un rostro y por la simplicidad de las pocas redes que cumplen esta labor, se terminó por descartar esta opción. Sin embargo, estas redes pueden sintonizarse añadiendo filtros convolucionales y capas convencionales para mejorar la extracción de caracteŕısticas y de esta forma mejorar la precisión. El inconveniente con este proceso es el tiempo que toma diseñar la red y entrenarla, lo cual va en contra del propósito de realizar la transferencia de aprendizaje. Esto llevó a que se descartara esta opción totalmente. La segunda alternativa a la que se recurrió fue una red creada para la determinación de emociones a partir de rasgos faciales, Con estas redes no se producian muchos problemas al momento de buscar modelos ya que se contaban con varios de estos debido al reto creado por Kaggle. El reto llamado Face CAPÍTULO 4. METODOLOGÍA DEL TRABAJO 13 Emotion Recogntion challenge (FERC) reuńıo a varios grupos de diferentes partes del mundo para que realicen la tarea de interés y los modelos producto de este reto son libres para uso y modificación por lo que se realizó la modificación de estos para la estimación de la edad. La red eleǵıda fue la red creada por Maurya Ritesh[12] para clasificar 7 emociones, alegŕıa, enojo, disgusto, tristeza, neutral, asustado y sorprendido. Posteriormente, se modificó la red y se reentrenó con un conjunto de 50 mil datos de la base de datos principal pero la salida de esta siempre fue un valor constante por lo que de igual forma se terminó descartando. 4.3. Normativas, leyes, reglamentos El estado colombiano en su constitución presenta un conjunto de normativas y leyes respecto a la manipulación de datos y uso de información personal que deben ser tenidos en cuenta cuando se realizan proyectos de aprendizaje automático aplicados a personas que, naturalmente, deben trabajar con datos de diferentes personales y su uso desautorizado puede terminar en problemas legales. 4.3.1. Ley 1581 de 2012 [13] la Ley 1581 de 2012 estipula un marco legal en el tratamiento de datos personales en Colombia, esta- bleciendo los usos que se puede dar a la información privada de una persona bajo su consentimiento, como dicha persona puede rectificar la información que se da en una base de datos y como se debe castigar a quienes usan la información personal sin autorización. En este sentido, la ley enuncia que: Recolección de los datos personales. En desarrollo de los principios de finalidad y libertad, la recolección de datos deberá limitarse a aquellos datos personales que son pertinentes y adecuados para la finali- dad para la cual son recolectados o requeridos conforme a la normatividad vigente. Salvo en los casos expresamente previstos en la Ley, no se podrán recolectar datos personales sin autorización del Titular. El responsable del Tratamiento deberá adoptar procedimientos para solicitar, a más tardar en el mo- mento de la recolección de sus datos, la autorización del Titular para el Tratamiento de los mismos e informarle los datos personales que serán recolectados aśı como todas las finalidades espećıficas del Tratamiento para las cuales se obtiene el consentimiento. Los datos personales que se encuentren en fuentes de acceso público, con independencia del medio por el cual se tenga acceso, entendiéndose por tales aquellos datos o bases de datos que se encuentren a disposición del público, pueden ser tratados por cualquier persona siempre y cuando, por su naturaleza, sean datos públicos. 4.3.2. Formato de autorización de datos para realizar pruebas: El siguiente formato fue entregado a los participantes de las pruebas realizadas en este proyecto con el fin de poder contar con sus imágenes libremente para todos los propósitos académicos que fueran concernientes. CAPÍTULO 4. METODOLOGÍA DEL TRABAJO 14 Figura 4.2: Formato de autorización de uso de datos 5.Trabajo realizado El proyecto, se planeó para desarrollarse en 4 etapas principales. La primer etapa es encontrar una base de datos creada con el objetivo de determinar la edad aparente de una sola persona basada en sus rasgos faciales, la segunda etapa es la creación de un módulo de extracción de rostros en una imagen o frame de video, la tercera etapa es la creación de una red capaz de extraer la edad aparente de un rostro de entrada siempre y cuando de este se puedan extraer caracteŕısticas y la cuarta, y última, es la creación de la arquitectura total del sistema y la realización de las pruebas.Por este motivo, a continuación se describen cada uno de los pasos realizados, desde la elección de la base de datos hasta la creación de la arquitectura, los cuales llevaron al resultado final del proyecto. En la figura 5.1 la arquitectura general del sistema, la cual es esperada como resultado de la última etapa del proyecto. Además, se tiene que esta va a ser la ruta que debe ser seguida por un archivo para encontrar las caracteŕısticas de edad de las personas presentes en dicho archivo. El esquema so- lo especifica el funcionamiento en imágenes pero se espera poder generalizar el funcionamiento a videos. Figura 5.1: Esquema general sistema final 5.1. Elección de base de datos y preprocesamiento: La base de datos elegida como base para realizar el entrenamiento de los algoritmos de aprendizaje automático usados es la base de datos “IMDB-WIKI – 500k+ face images with age and gender labels” [14] la cual fue creada por Rasmus Rothe, Radu Timofte, Luc Van Gool para el reto ”Lap challenge”. Esta base de datos contiene cerca de 500.000 imágenes de personas famosas en distintos campos y están etiquetadas manualmente con: El nombre de la persona, la fecha de nacimiento, la fecha de captura de la fotograf́ıa, el genero de la persona y su id en imdb. En este sentido, para este proyecto se decidió ignorar los datos correspondientes al nombre, id y genero ya que para este caso no toman ninguna relevancia. Los personajes famosos presentes en la base de datos pertenecen a varias etnias y distintas épocas que van desde 1940 hasta 2015, los cuales están en diferentes ángulos, distancias, tienen diferentes condiciones de iluminación y diferentes resoluciones, además, presentan rangos de edad muy variados que van desde los 0 años hasta los 112 años. Es importante mencionar que las imágenes de esta base de datos fueron extráıdas de 2 sitios web de biograf́ıas de este tipo de personas, wikipedia e IMDB (internet movie data base). En la figura 2.6 se muestra la distribución de edades de la base de datos para la secciónde imágenes extráıda de wikipedia, imdb y para el total de imágenes. 15 CAPÍTULO 5. TRABAJO REALIZADO 16 Figura 5.2: Distribución de edades en la base de datos. La base de datos tiene un total de 523.051 imágenes de las cuales 460.723 fueron extráıdas de imdb y 62.328 fueron extráıdas de wikipedia. En la figura 5.2 se puede observar que las edades están dis- tribuidas alrededor de los 34 años por lo que se espera que el sistema a desarrollar funcione bien en vecindades cercanas a este punto, aunque dada la cantidad de datos no se espera que el error sea tan grande en puntos lejanos a la moda de los datos. Por último respecto al dataset, se manipularon los datos para convertirlos de formato “estructura de matlab” a un formato base de datos (.csv) más amigable para trabajar con redes neuronales en python y más simple de tratar con libreŕıas como “pandas”. Del mismo modo, se determinó usar solo la sección de los datos correspondiente a IMDB, esto debido a que los datos de wikipedia teńıa muchos archivos dañados y realizar la eliminación manual era muy costosos en términos de tiempo y no exist́ıa manera de hacerlo automáticamente. De todas formas, la porción de datos correspondientes a wikipedia solo representaba el 10 por ciento de los datos y no se espera que afecten el resultado final. 5.2. Detección y extracción de rostros en imagenes y videos: Para el módulo de detección y extracción de rostros se realizó la búsqueda de múltiples algoritmos de aprendizaje automático como son Viola Jones, “deep neural network” con opencv, dlib y MT- CNN. Sin embargo, después de realizar algunas pruebas usando el dataset ”Wider dataset”, usando aproximadamente 10,000 imágenes de personas en rangos de edad variados y con diferentes ángulos y distancias, se encontró que la red que presentaba mejor precisión fue MTCNN y dado que sus tiempos de ejecución en cpu eran aceptables, se eligió esta red la cual fue descrita en el marco teórico. En las pruebas realizadas con esta red, se encontró una precisión del 93,4 por ciento y un tiempo de procesamiento de 200 ms por imagen. Sin embargo, para poder obtener resultados más aproximados en condiciones reales se optó por restarle importancia al tiempo de procesamiento y aumentarla a la precisión, de otro modo se habŕıa optado por usar Viola Jones con tiempos de procesamiento mucho más bajos pero de igual manera con una precisión menor. En python, se usó la implementación de esta red presentada por David Sandberg. Esta implementación usa la misma arquitectura diseñada inicialmente usando como base tensor flow 2 de google, esto permi- te instalarla fácilmente en python usando un comando en consola y usar sus métodos predeterminados CAPÍTULO 5. TRABAJO REALIZADO 17 con mucha facilidad también, teóricamente, Sandberg brinda al usuario una gúıa sobre la velocidad de esta implementación en video, esta gúıa se muestra en la figura 5.3. Figura 5.3: tiempos medios por frame y velocidad de video en tiempo real usando MTCNN. En esta se puede observar que aunque esta red puede ser usada en video, su velocidad es muy baja y puede generar problemas al momento de tratar de usarla en aplicaciones de tiempo real. Sin embargo, se tiene que un video subido por una persona o un video de seguridad, las personas no desaparecen instantáneamente y es posible medirlas antes de que se pierdan en dichos videos por lo que el funcio- namiento de esta red puede ser el deseado en este contexto. En este sentido, el objetivo final del módulo es la extracción de todas los rostros presentes en la imagen en imágenes separadas y etiquetadas. En este momento, MTCNN nos arroja las coordenadas de cada rostro en la imagen por lo que el siguiente paso fue interpretar estas coordenadas con el fin de marcar los bounding boxes en los rostros en la imagen de entrada y recortar las zonas de la imagen señaladas por cada una de las coordenadas, esto se realizó usando algunos métodos de opencv para el tratamiento de imágenes. Por último, hasta el momento ya se realizó un proceso con esta red, con el fin de entrenar de una manera más simple la red de la etapa 3 de determinación de la edad, se recortaron 30.000 rostros de las fotograf́ıas del dataset “IMDB-WIKI – 500k+ face images with age and gender labels” con los que se planea realizar las primeras pruebas de entrenamiento de la siguiente etapa y aśı estudiar el funcionamiento del sistema entero. Dado que aun no se conoce la velocidad de la siguiente red ni como esta puede retrasar al sistema entero, se deja esta red sujeta a cambios o a su completo reemplazo. 5.3. Determinación de la edad aparente basándose en rasgos faciales: En este punto se deseó encontrar un modelo diseñado para cumplir una tarea similar a la detección de la edad. Para esto se investigaron diferentes tipos de redes neuronales que cumplieran distintos tipos de funciones, esto llevó a que se considerara la idea inicial de buscar redes neuronales entrenadas para detección de emociones en rostro puesto que se consideró que estas redes, al analizar caracteŕısticas faciales, pueden extraer en su parte convolucional las caracteŕısticas necesarias para también estimar la edad de un rostro. Sin embargo, en los primeros ensayos de la sintonización fina fue fácil determinar que esta redes, poco profundas, no lograŕıan reducir el error y por este motivo fueron descartadas. Teniendo esto en cuenta se busco una red más profunda y que extraiga más caracteŕısticas en sus capas convolucionales. La red elegida fue VGGFACE, creada por la universidad de oxford, la cual cuenta con una gran cantidad de filtros convolucionales y fue entrenada con un conjunto amplio de CAPÍTULO 5. TRABAJO REALIZADO 18 datos con el fin de realizar reconocimiento facial. De este modo, teniendo como premisa que una red de reconocimiento facial si extrae los descriptores necesarios para realizar estimación de la edad se procedió a realizar modificaciones a esta red para que pudiera solucionar un problema de regresión en vez de uno de clasificación. Inicialmente se agregó a la capa de salida de la red (2622 neuronas) una única neurona totalmente conectada con activación lineal y se procedió a realizar sintonización fina en las capas totalmente conectadas. Es decir, se tomaron 2622 descriptores a un modelo de regresión. Dado que se obtuvo un error demasiado alto para el propósito del proyecto, se procedió a modificar los parámetros de la red obteniendo un error cuadrático medio en el set de entrenamiento de 20.9764 y en validación de 71.502. El entrenamiento fue realizado durante 25 épocas con un total de 50.203 imágenes que emulan apro- ximadamente a la distribución original de los datos. Del mismo modo, la validación fue realizada con 9.989 datos provenientes del mismo dataset. Los resultados del entrenamiento en función del número de épocas se muestran en la siguiente figura: Figura 5.4: Cambios en el error de entrenamiento a medida que avanzan las épocas. En esta imagen se puede apreciar que el entrenamiento se realizó correctamente reduciéndose asintóti- camente al valor indicado. Del mismo modo, esto indica que el error en validación es bajo igual que el reportado. 5.4. Construcción de la arquitectura final del sistema: Para la etapa final del sistema se procedió a unir los modelos encontrados en las etapas anteriores en un solo sistema que sea capaz de recibir una imagen de múltiples rostros y entregue como salida las edades de todas las personas presentes en esa imagen. para cumplir este objetivo no fue suficiente unir los sistemas creados si no que, fue necesario pensar en una manera de que el sistema ubicara correctamente las edades de las personas en la imagen y, además, pensar en la mejor manera de ilustrar la edad de cada persona en la imagen de salida. Para solucionar estos problemas se hizo uso de la libreŕıa opencv la cual permite dibujar un texto espećıfico dentro de una imagensiempre y cuando se sepan las coordenadas de este. Por este motivo, se modificó la salida de la red de detección facial para entregar, además de los rostros extráıdos de la imagen, las coordenadas de estos rostros en el mismo orden en los que se extrajeron los rostros y de esta manera poder ubicar cada una de las coordenadas en estas. Por último en esta etapa se procedió a eliminar el recuadro de salida que se dibujaba en cada rostro con el fin de reducir el tiempo de CAPÍTULO 5. TRABAJO REALIZADO 19 procesamiento. En la etapa de estimación de la edad aparente de un rostro, se modificó la forma de funcionamiento para que ahora tome cada una de las imagenes de un array de entrada y, en orden de entrada, estime la edad de cada uno de los rostros. De esta forma, es posible dibujar la edad de cada persona en el lugar correcto ya sea en una imagen o un frame de un video. Finalmente se creó una interfaz que permitiera ejecutar cada parte del código de manera fácil e intuiti- va de tal forma que cualquier persona pueda usar el sistema sin necesidad de contar con conocimientos en machine learning. Para esto, se usó la herramienta de Python TKINTER con la que se creó una interfaz sencilla y fácil de usar en unos pocos pasos. En TKINTER se definieron las funciones de calcular la edad en una imagen determinada y calcular edad en un video determinado, los cuales pueden ser subidos libremente por el usuario, siempre y cuando se esté trabajando con los formatos establecidos en las especificaciones. En este sentido, la herramienta es valida para archivos de imagen y video presentes en disco y no permite la captura de imagen o video en la propia aplicación. Esto último sucede por las restricciones de tiempo que se tuvieron al desarrollar la aplicación. Como función adicional se añadió la posibilidad de usar diferentes tipos de detectores faciales los cua- les fueron mencionados en las alternativas de diseño.Sin embargo, aunque estos pueden ser usados libremente, se tiene como detector por defecto MTCNN y el funcionamiento de la aplicación va a ser óptimo siempre y cuando se tenga este detector elegido. A continuación se muestran algunas imágenes donde se puede apreciar la apariencia de la aplicación creada y como se pueden subir archivos a esta: Figura 5.5: Apariencia de la aplicación generalmente. CAPÍTULO 5. TRABAJO REALIZADO 20 Figura 5.6: modo de visualización de las imágenes subidas en la interfaz. 6.Validación del trabajo 6.1. Metodoloǵıa de prueba Para probar la validez de los resultados se recurrió a probar cada una de las partes independientemente y validar sus resultados en solitario. Para esto se recurrió a bases de datos diferentes a la usada para los procesos de entrenamiento del modelo y se midió el error en cada caso con el fin de comprobar que se tienen los resultados esperados de cada módulo. Para el módulo de detección facial se procedió a usar la base de datos “WIDER Dataset” para validar los resultados encontrados, usando 9967 datos aleatorios del dataset para realizar la identificación fa- cial y encontrar el error de detección en un gran número de datos. Esta aproximación sirve como un estimativo del error global del modelo de detección y permitió descartar otros tipos de modelos. En este sentido, para el módulo de estimación de la edad se validaron los resultados usando la base de datos de entrenamiento y la base de datos “UTKFace dataset”. Este dataset contiene cerca de 20,000 ejemplos de rostros etiquetados con edades que se encuentran en un rango entre 0 y 116 años. Sin embargo, dadas las limitaciones del set de entrenamiento se acortó el rango en el que se iba a realizar la validación a un rango de 10 a 85 años. Por último, en la etapa final no se pudo realizar una validación con un gran número de datos de la arquitectura final, porque no se encontró una base de datos suficiente que permitiera realizar este pro- cedimiento. Sin embargo, se hicieron pruebas con una base de datos pequeña creada con este objetivo, además, se realizaron pruebas con el “UTK dataset” y el dataset inicial para comprobar su correcto funcionamiento. La base de datos consta de 38 fotograf́ıas de 12 personas las que autorizaron mediante un formato de uso de datos el uso de sus imágenes para estas pruebas. 6.2. Validación de los resultados del trabajo En la primera etapa de la validación se encontró que la red MTCNN presenta una precisión del 87 % en datos de validación, siendo este el más alto alcanzado entre los métodos realizados. De este modo, se puede ver que en imágenes tan complejas como las presentes en el ”WIDER dataset”, el cual cuenta en algunos casos con rostros casi irreconocibles u objetos con imágenes muy similares a rostros, como se puede observar en la figura 6.1, este resultado es totalmente satisfactorio y el método de detección facial es confiable y permitirá cumplir los objetivos del proyecto. Como información adicional se tiene que los tiempos de procesamiento promedio por imagen en el dataset elegido fueron de cerca de 250 ms y pueden ser un problema al momento de realizar pruebas con videos en tiempo real. Sin embargo, para la aplicación actual se optó por restar importancia al tiempo de procesamiento de la red y aumentarla la precisión de los modelos. Esto se hizo teniendo en cuenta que la siguiente red va a ser entrenada asumiendo que toda la información que va a recibir son rostros y esta tendrá problemas al tratar de determinar rasgos de falsos positivos. Por último en esta etapa, se puede decir que esta red requiere de un gran poder computacional para poder ejecutarse normalmente y esto se evidenció en gran medida en la validación del modelo, ya que, para ejecutarse a una velocidad aceptable es necesario usar una GPU que permita realizar procesa- miento distribuido. A continuación se presentan algunas imágenes en las cuales se puede apreciar el nivel de detección de MTCNN: 21 CAPÍTULO 6. VALIDACIÓN DEL TRABAJO 22 Figura 6.1: Rostros detectados en algunas imágenes usando MTCNN. En la etapa de estimación de la edad de un rostro a partir de sus caracteŕısticas, se validó el modelo con 10,000 rostros provenientes de la base de datos estándar para el proyecto obteniendo un error cuadrático medio de 67.345 lo cual significa que el error medio en la estimación de la edad es de apro- ximadamente más/menos 8.21 años. Este error es mayor al del estado del arte actual que se encuentra entre 6 y 7 años pero es un buen punto de partida para un modelo de este tipo. En la base de datos ÜTKFace dataset”, usando 10,000 datos, se realizó el mismo proceso de validación, esta vez el error se encontró en un error cuadratico medio de 71.50 es decir 8.456 años. Lo que estos resultados indican es que el error es muy similar para datos tanto antiguos como nuevos por lo que el modelo debeŕıa predecir también datos reales. Del mismo modo que en el caso de detección facial, en este caso también se realizó un análisis de tiempo de ejecución promedio de la red encontrando que para los 10,000 datos de prueba del segundo dataset, el tiempo promedio de ejecución fue de 60 ms el cual es muy bajo y permite la generalización del problema a varios rostros sin afectar en gran medida el tiempo de funcionamiento. En este punto el tiempo de procesamiento por imagen está dado por el algoritmo de detección el cual es muy superior al de estimación de edad por rostro. Como última observación se tiene que gracias a las capas dropout del sistema, este presenta ligeras variaciones en su salida ante una misma entrada. Para lograr estabilizar este valor una alternativa puede ser calcular un promedio de varias mediciones. Sin embargo, debido a la poca varianza de la salida se ignoró esta opción y se probó la red con la salida variante. A continuación se muestran algunos ejemplos de salidas de la red cuando se da a esta un rostro como entrada: Figura 6.2: Edades estimadas para algunosrostros usando la red neuronal. Por último se procedió a evaluar el sistema completo y determinar si este funcionaba de acuerdo al error esperado. Este error está dado por la precisión del modelo de detección facial y el de estimación CAPÍTULO 6. VALIDACIÓN DEL TRABAJO 23 de edad. Sin embargo, dado que no se tuvo una base de datos suficiente para la tarea se creó un pequeño dataset, insuficiente para dar algún estimativo de precisión, pero suficiente para brindar una idea de como está funcionando el sistema. De los 12 participantes fotografiados 8 estaban entre 18 y 22 años, 2 estaban en el rango de 40-70 años y 1 tenia 15 años, algunos de los resultados arrojados por el sistema completo se muestran en las siguiente imágenes: Figura 6.3: Edades calculadas para algunas personas usando el sistema completo. También se hicieron algunas pruebas con algunos videos públicos de internet y no se encontraron evi- dencias que hicieran pensar que exist́ıan problemas en la detección de edades aparentes en imagenes o videos. Por este motivo se concluyó que el sistema funcionaba de acuerdo a los requerimientos. Del mismo modo se pudo concluir que el tiempo promedio de ejecución es de aproximadamente 280 ms usando MTCNN por lo que se concluye que, aunque es posible usar el sistema en tiempo real este no puede alcanzar velocidades grandes de recepción de datos. Un ejemplo de estas pruebas puede ser visto en el siguiente link de youtube: https://www.youtube.com/watch?v=cwwNWlMLoxg 7.Discusión El producto final obtenido en este proyecto cumple los requerimientos propuestos en los objetivos, puesto que es un sistema capaz de encontrar la edad de las personas presentes en una imagen y de ese modo encontrar la edad promedio de las personas presentes. Para lograr este objetivo se tuvieron que seguir una serie de pasos parciales que pudieran llevar a completar la meta global. El primero de estos pasos fue la obtención y preprocesamiento de una base de datos con información sobre edades y los rostros de una gran variedad de personas. Este objetivo fue completado satisfacto- riamente, aunque dada la baja cantidad de ejemplos para los rangos de edades menores a 10 años y mayores a 85 años se terminaron descartando estos rangos limitando el rango de acción del proyecto a 10-85 años. Posteriormente, se creó un sistema capaz de extraer los rostros de una imagen o frame de video basan- dose en Multi-task cascade convolutional neural network. Esta etapa presentó limitaciones de tiempo teóricas dificiles de superar a las que el sistema debió adaptarse y con las cuales se pudo desarrollar una arquitectura funcional completa. Sin embargo, este también arrojó una precisión alta de cerca del 89 % en el dataset de prueba y que fue suficiente para los objetivos del proyecto. En la etapa de estimación de la edad aparente a partir de rasgos faciales, se pudo completar el objetivo con un error más alto que el del estado del arte actual por lo que se puede decir que aunque el resultado es bueno, este puede ser mejorado mucho más. La solución a este problema puede ser usar muchos más datos de los usados para entrenar el modelo y aśı reducir el error en datos futuros. Por último, se tiene que la creación de la aplicación fue un objetivo completado satisfactoriamente ya que hasta el momento se tiene una interfaz funcional que permite realizar el calculo de la edad promedio en imágenes y videos elegidos por el usuario. En conclusión, todos los objetivos planteados al principio del proyecto fueron cumplidos pero se espera poder reducir el error como trabajo futuro para aśı lograr crear un impacto mayor de la aplicación. 24 8.Conclusiones y trabajos futuros 8.1. Conclusiones – Se desarrolló un sistema capaz de extraer, con una precisión del 87 %, los rostros en un video y guardarlos en imágenes separadas en un directorio especifico. – Se encontró una base de datos con la que es posible construir un modelo de regresión lineal para encontrar la edad aparente de un rostro tanto en imágenes como en video, determinando que para entrenar correctamente un modelo de red neuronal convolucional es necesario usar mı́nimo decenas de miles de datos con una estructura definida. – Todos los objetivos del proyecto fueron completados con un nivel aceptable aunque algunos fueron satisfactorios. – Usar modelos preentrenados para cumplir tareas similares a las planteadas inicialmente para estos modelos (transfer learning) reduce en gran medida los tiempos de diseño y permite perfeccionar otros aspectos del proceso de solución de un problema determinado. – Actualmente dado el auge de las redes neuronales y el deep learning, existen varios modelos encar- gados de realizar detección facial, muchos de estos están diseñados para cumplir con especificaciones distintas tanto de tiempo de procesamiento como de precisión por lo que es importante realizar un estudio de varias de estas alternativas cuando se desarrolla un sistema personalizado. – Entrenar un modelo de aprendizaje supervisado, como son las redes neuronales convolucionales, im- plica altos costos computacionales y de tiempo, además de una base de datos extensa por lo que no es posible solucionar algunos problemas usando metodoloǵıas similares la seguida en este proyecto. – Con el sistema realizado hasta el momento no es posible realizar identificación de videos en tiempo real de manera natural, por este motivo se plantea esta mejora como trabajo futuro. – Se espera que modelos futuros entrenados con muchas más imágenes y un poder computacional mayor permitan reducir el error de estimación encontrado en este proyecto. 8.2. Trabajo Futuros Como trabajo futuro se tienen principalmente 2 tareas principales: – La reducción del tiempo de procesamiento empleado en realizar la detección de rostros y su respectiva extracción. – La reducción del error en la estimación de edad a partir de caracteŕısticas faciales. Para realizar la primera tarea es valido evaluar como evoluciona el estado del arte en el problema de detección de rostros, esto con el fin de probar nuevas alternativas que puedan ayudar a solucionar el problema de reducción de tiempos. Del mismo modo, para solucionar la segunda tarea es importante aumentar el número de datos con los que se van a entrenar los modelos, para lo que es necesario tener un poder computacional y un recurso de tiempo mayor al disponible al realizar este proyecto. 25 Bibliograf́ıa [1] Hastie, T., Tibshirani, R., Friedman, J. (2008). The elements of statistical learning (2.a ed., Vol. 1). Recuperado de https://web.stanford.edu/ hastie/Papers/ESLII.pdf [2] Torrey, L., Shavlik , J. (2015). Transfer learning (University of Wisconsin). Recuperado de http://ftp.cs.wisc.edu/machine- learning/shavlik-group/torrey.handbook09.pdf [3] Mauricio, José. Modelo de Regresión Lineal Simple . 2016, https://www.uv.es/uriel/material/Morelisi.pdf. [4] Conceptos básicos sobre RNA. (s. f.). Recuperado 9 de octubre de 2019, de https://www.ibiblio.org/pub/linux/docs/LuCaS/Presentaciones/200304curso- glisa/redes neuronales/curso-glisa-redes neuronales-html/x38.html [5] Saha, S. (2018). A Comprehensive Guide to Convolutional Neural Networks . Recuperado 9 de octubre de 2019, de Towards data science website: https://towardsdatascience.com/a-comprehensive- guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53 [6] Sandberg, D. (2015). Multi-task Cascade Convolutional Neural Network for Python. Recuperado de https://github.com/ipazc/mtcnn [7] Matich, D. (s. f.). Redes Neuronales: Conceptos Básicos y Aplicaciones. . 2001. Recuperado a partir de https://www.frro.utn.edu.ar/repositorio/catedras/quimica/5anio/orientadora1/monograias/matich− redesneuronales.pdf [8] Omhkar, P. (s. f.). Deep Face Recognition. Recuperado noviembre 9, 2019, a partir de https://www.robots.ox.ac.uk/ vg- g/publications/2015/Parkhi15/parkhi15.pdf [9] Viola, P., Jones , M. (s. f.). Rapid Object Detection usinga Boosted Cascade of Simple Features. Re- cuperado noviembre 9, 2019, a partir de https://www.cs.cmu.edu/ efros/courses/LBMV07/Papers/viola- cvpr-01.pdf [10] Rosebrock, A. (2018, febrero 26). Face detection with OpenCV and deep learning. PyImage- Search. Recuperado diciembre 10, 2019, a partir de https://www.pyimagesearch.com/2018/02/26/face- detection-with-opencv-and-deep-learning/ [11] Wider face: A face detection benchmark. (s. f.). . Recuperado diciembre 10, 2019, a partir de http://shuoyang1213.me/WIDERFACE/ [12] Ritesh, M. (2019). Facial Expression Detection with Deep Learning (Keras) V.2. Recuperado 7 de octubre de 2019, de https://github.com/MauryaRitesh/Facial-Expression-Detection-V2 [13] https://www.mintic.gov.co/portal/604/articles-4274documento.pdf [14] othe, R., Timofte, R., Van Gool, L. (2015). IMDB-WIKI - 500k+ face images with age and gender labels. Recuperado 8 de octubre de 2019, de https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/ [15] La neurona artificial. (s. f.). . Recuperado diciembre 13, 2019, a partir de https://www.ibiblio.org/pub/linux/docs/LuCaS/Presentaciones/200304curso- glisa/redes neuronales/curso-glisa-redes neuronales-html/x38.html 26 Introducción Descripción de la problemática y justificación del trabajo Alcance y productos finales Objetivos Objetivo General Objetivos Específicos Marco teórico, conceptual e histórico Marco teórico Aprendizaje supervisado: Transfer learning: Regresión lineal: Redes neuronales: Redes neuronales convolucionales (CNN): Multi-task cascade convolutional neural network (MTCNN): Sintonización fina: Definición y especificación del trabajo Definición Especificaciones Metodología del trabajo Plan de trabajo Alternativas de desarrollo Alternativas al método de detección y extracción facial Alternativas al método de estimación de la edad aparente Normativas, leyes, reglamentos Ley 1581 de 2012 [13] Formato de autorización de datos para realizar pruebas: Trabajo realizado Elección de base de datos y preprocesamiento: Detección y extracción de rostros en imagenes y videos: Determinación de la edad aparente basándose en rasgos faciales: Construcción de la arquitectura final del sistema: Validación del trabajo Metodología de prueba Validación de los resultados del trabajo Discusión Conclusiones y trabajos futuros Conclusiones Trabajo Futuros Bibliografía
Compartir