Logo Studenta

u831168

¡Este material tiene más páginas!

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

Continuar navegando