scieee AI-readable full text Open interactive document viewer

Reconocimiento eficiente de caras mediante Deep Learning a partir de imágenes en el espectro visible

Pérez Rodríguez, Mario

Abstract

Grado en Ingeniería de Tecnologías de Telecomunicación

Full text

UNIVERSIDAD DE VALLADOLID ESCUELA TÉCNICA SUPERIOR INGENIEROS DE TELECOMUNICACIÓN TRABAJO DE FIN DE GRADO GRADO EN INGENIERÍA DE TECNOLOGÍAS DE TELECOMUNICACIÓN: Reconocimiento eficiente de caras mediante Deep Learning a partir de imágenes en el espectro visible Autor: D. Mario Pérez Rodríguez Tutores: Dr. D. Juan Pablo Casaseca de la Higuera Dr. D. Javier Manuel Aguiar Pérez Valladolid, Julio 2021 TÍTULO:Reconocimiento eficiente de caras mediante Deep Learning a partir de imágenes en el espectro visible AUTOR:D. Mario Pérez Rodríguez TUTORES:Dr. D. Juan Pablo Casaseca de la Higuera Dr. D. Javier Manuel Aguiar Pérez DEPARTAMENTO:Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática Tribunal PRESIDENTE:Dr. D. Javier Manuel Aguiar Pérez VOCAL:Dr. D. Pablo Casaseca de la Higuera SECRETARIO:Dr. D. F. J. Simmross Wattenberg FECHA:Julio 2021 CALIFICACIÓN: Agradecimientos Quiero agradecer en gran medida a mis tutores de TFG, a Juan Pablo Casaseca de la Higuera y a Javier Manuel Aguiar Pérez por su ayuda a lo largo del desarrollo de este trabajo de fin de grado, por su constancia y apoyo y por ponerme los pies en la tierra, ya que sin ellos, no podría haber desarrollado semejante trabajo. A un gran amigo, David Arévalo, por permitirme utilizar su plantilla de L A T E Xpara realizar este trabajo y también a mi mejor amigo, Diego Ruíz, por su ayuda en la explicación de las funciones principales de este editor de texto así como la resolución de dudas que surgieron por el camino. Gracias a Federico Simmross Wattenberg por su ayuda en la conexión con los servidores de tanis y tebas de la UVa, desde los que se llevó a cabo el 90 % del proyecto, y su posterior apoyo cuando surgían problemas con las redes. Muchas gracias también a Javier del Pozo por su apoyo en la realización del TFG, no le conocía previamente, ni me debía nada e hizo todo lo posible por ayudarme sin pedir nada a cambio o sin que pareciera que se cansara de responder. Quiero agradecer a todos mis amigos por estar ahí, a los de toda la vida y a los nuevos, a los que pensé que desaparecerían pero lucharon por quedarse y a todos los que alguna vez pusieron un hombro sobre el que pudiera llorar, habéis sido mi salvación en muchas ocasiones y quizás ni lo sabíais. Gracias a todos. A mi novia, Elsa, que ha sido mi apoyo todo este tiempo, me ha dado los ánimos y el cariño que varias veces he necesitado y que siempre ha estado ahí aguantando y dándome todo su amor. Muchas gracias cariño. Por último, y con mayor importancia, me gustaría agradecer de corazón a mi familia por todo su apoyo emocional y personal, gracias a ellos soy quien soy hoy día y me han permitido alcanzar todas mis metas. A mi hermano Pablo por ser el sol que ha iluminado mi vida en tiempos de oscuridad y penumbra, a mi madre Cayetana por darme la alegría de ver cada día una maravilla diferente y enseñarme lo que es la bondad y la alegría y a mi padre Manuel por ser mi pilar y enseñarme y dirigirme a ser como soy hoy. Muchas gracias desde lo más profundo de mi ser. I Resumen La detección facial está presente en múltiples ámbitos de la vida cotidiana hoy en día, ya sea para desbloquear nuestro teléfono móvil o como medida de seguridad en una empresa. Ahondando en esta idea, el objetivo de este Proyecto Fin de Carrera es estudiar el rendimiento de los detectores genéricos y específicos para un reconocimiento facial eficiente. Para ello, primero se entrenaron los detectores genéricos de forma específica para utilizarlos como detectores faciales y se utilizó la misma base de datos para los específicos. Después, los modelos se simplificaron utilizando herramientas estándar para su posterior análisis y evaluación. Se evaluó el rendimiento tanto en términos de velocidad (medida en fotogramas por segundo) como de precisión (utilizando la precisión media). A la vista de los resultados, tanto los modelos genéricos como los específicos pueden utilizarse para la detección facial, si bien los diseñados específicamente dan lugar a un mejor equilibrio entre precisión y eficacia. Palabras Clave Aprendizaje Profundo, detección facial, análisis comparativo, mean Average Precision, fotogramas por segundo, TensorFlow. II Abstract Nowadays, facial detection is present in multiple aspects of daily life, whether it is for unlocking our phones or as a company’s security measurement. Delving into this idea, the aim of this Final Year Project is to study the performance of both generic and specific detectors for efficient facial recognition. To this end, the generic ones were first specifically trained to use them as facial detectors and the same database was used for the specific ones. Afterwards, the models were simplified using standard tools for subsequent analysis and evaluation. Performance in terms of both speed (measured in frames per second) and accuracy (using average precision) was assessed. In view of the results, both generic and specific models can be used for facial detection, although specifically designed result in a better trade off between accuracy and efficiency. Keywords Deep Learning, face detection, comparative analysis, mean Average Precision, frames per second, TensorFlow. III Índice general 1. Introducción 1 1.1. ContextoyMotivación .............................. 1 1.2. Objetivos ..................................... 3 1.3. FasesyProcedimiento .............................. 4 1.4. Organización de la Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5. Medios materiales empleados . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5.1. Hardware................................. 6 1.5.2. Software y lenguajes de programación . . . . . . . . . . . . . . . . . . 6 2. Revisión del Estado del Arte 8 2.1. Historia del Machine Learning y su aplicación en la detección de objetos . . . . 8 2.2. Aprendizaje Profundo y su aplicación en detección de objetos . . . . . . . . . 14 2.2.1. Convolutional Neural Networks . . . . . . . . . . . . . . . . . . . . . 16 2.2.2. Backbone................................. 19 2.2.3. Feature Pyramid Networks . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.4. ReLU................................... 22 2.3. Historia y Estado del Arte de la Detección de Objetos . . . . . . . . . . . . . . 22 2.3.1. Detectores tradicionales . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.2. Detectores de dos etapas basados en CNN . . . . . . . . . . . . . . . . 23 2.3.3. Detectores de una etapa basados en CNN . . . . . . . . . . . . . . . . 25 2.4. Historia y Estado del Arte de la Detección Facial . . . . . . . . . . . . . . . . 26 IV Capítulo 1 Introducción Este capítulo tiene como objeto servir como una descripción del marco de trabajo y desarrollo de este Trabajo de Fin de Grado. A lo largo del mismo se expondrán los objetivos, métodos y resultados obtenidos a lo largo de la realización del proyecto. 1.1. Contexto y Motivación La principal motivación para la elección y elaboración de este trabajo de Fin de Grado se sustenta en el interés como futuro profesional en conocer y profundizar en el funcionamiento de los detectores de objetos y la teoría que conforma el Deep Learning o aprendizaje profundo. Más concretamente, el funcionamiento y aplicación de detectores faciales para su posterior implementación en proyectos de electrónica permitiendo así una fusión de software y hardware. Este TFG supone por tanto la primera fase de la elaboración de un proyecto de aplicación al ámbito cotidiano. La detección de caras en imágenes es objeto de un extenso estudio a día de hoy, ya no solo por el afán de descubrir cosas nuevas y avanzar en el aprendizaje, sino gracias a sus múltiples aplicaciones en el ámbito cotidiano y empresarial. Esta puede servir para mejorar el reconocimiento facial, cuyo objetivo es identificar automáticamente a una persona por sus rasgos faciales. Puede ser utilizada con múltiples objetivos también, ya sea en empresas de seguridad con objeto de localizar criminales y encontrar gente desaparecida, o permitir el acceso solo a aquellas personas autorizadas en establecimientos gubernamentales. Igualmente pueden servir como factor extra de autenticación a la hora de iniciar sesión en cualquier aplicación o en accesos a servicios en línea. Y en el futuro podría servir como método de pago en tiendas online y físicas, como control de acceso en instalaciones, evitar robos y suplantaciones de identidad, etc. 1 CAPÍTULO 1. INTRODUCCIÓN Hasta hace unos años, la detección facial se había llevado a cabo con el algoritmo de Viola & Jones [ 1 ], el cual, creado en el año 2001, permitía la detección de imágenes trabajando exclusivamente con imágenes en escala de grises para después aplicar la localización de la cara detectada en la imagen coloreada. Previo a este, el detector Eigenfaces fue un hito gracias a sus increíbles resultados, inigualados hasta la fecha. 2014 fue un año que marcó un antes y un después en la detección en general, ya fuera detección de objetos o facial, gracias a la aplicación del Deep Learning en múltiples algoritmos. En 2014 se llevó a cabo el primer y mayor salto hacia adelante en la utilización del Deep Learning para la detección facial, consiguiendo resultados que estaban casi a la altura del ojo humano, conseguido en el sistema DeepFace de Yi Sun, et al. [ 2 ]. Hasta la fecha y con la aplicación de las redes convolucionales profundas, se podrían clasificar los métodos de detección de caras en cuatro tipos [3]: Métodos basados en la apariencia: Los modelos son aprendidos a partir de un set de imágenes de entrenamiento el cual debería capturar la variabilidad representativa del aspecto de las caras. Este tipo de métodos son usados en su mayoría para la detección facial. Métodos basados en el conocimiento: Estos métodos eran muy típicos antes de la aparición del Deep Learning y las GPUs debido a que, por la falta de capacidad computacional, se trataba de métodos basados en la escritura manual de reglas que englobaban el conocimiento humano de las partes que constituyen una cara típica. Son diseñados actualmente para localización de las partes de una cara. Métodos de coincidencias con plantillas: Se almacenan varios patrones de caras para comparar los datos nuevos con los almacenados. Se computan las relaciones entre patrones guardados e imágenes de entrada para detectar la cara. Estos métodos se utilizan mayoritariamente en localización y detección de caras. Aproximaciones de características invariantes: Estos algoritmos apuntan a encontrar características estructurales que existen incluso cuando la pose, el punto de vista y las condiciones de luz varían. Estos métodos son utilizados para localización facial. En mayor o menor medida, estos cuatro métodos nombrados son los seguidos por la mayoría de detectores faciales que hacen uso de las herramientas de Deep Learning. Además de que el Deep Learning tiene cuantiosos aspectos positivos, es innegable que posee ciertos aspectos negativos. Lógicamente, la disminución de la velocidad de ejecución a la hora de la detección está entre ellos, esto es debido a que, si para que una imagen pueda ser procesada se le deben aplicar multitud de procesos y operaciones matemáticas, el tiempo necesario para que un modelo pueda llevar a cabo estas operaciones, será superior a uno que no necesite hacerlo. Como se explica en [ 4 ], a pesar de reaccionar adecuadamente en imágenes similares a las utilizadas durante el entrenamiento, variaciones del contraste, brillo, adición de 2 CAPÍTULO 1. INTRODUCCIÓN borrosidad o ruidos gaussianos y salt&pepper y la compresión JPG, suelen hacer que un modelo que funcionaba muy bien para un cierto tipo de imágenes, de repente no sea tan viable. Este es un factor a tener en cuenta ya que el entrenamiento de modelos puede ser llevado a cabo con un set de imágenes “cotidiano”, pero si el dispositivo utilizado capta un tipo de imágenes menos nítidas, el desempeño puede verse severamente empeorado en comparación. Teniendo en cuenta todo lo anterior, la idea del proyecto que se desarrolla, se enfoca entre otras cuestiones a la realización de una comparativa sobre los diferentes modelos de detección de objetos genéricos tras su entrenamiento para la detección de caras. Esta comparativa tiene como objetivo llegar a un resultado final, a partir del cual poder obtener varios modelos de entre los elegidos, los cuales serán, supuestamente, los modelo más rápidos y precisos o una fusión equitativa de ambos parámetros. El objeto es concluir cuales son los modelos más eficientes a la hora de llevar a cabo la detección facial y comprobar la viabilidad de los detectores en un trabajo concreto. 1.2. Objetivos El presente TFG parte del hecho de que los detectores de objetos basado en DL habituales necesitan una cantidad masiva de operaciones computacionales y de características del modelo para poder clasificar cada caja delimitadora a su clase apropiada. Esto se traduce en una gran cantidad de parámetros a manejar, muchísimos filtros y una gran cantidad de capas. Es decir, son redes grandes que pueden ser entrenadas con la finalidad de obtener mayor precisión en la detección. Desde esta perspectiva, el objetivo general de este proyecto es estudiar la viabilidad de detectores de objetos genéricos basados en Deep Learning para el reconocimiento facial eficiente mediante su simplificación y entrenamiento y comparar con detectores desarrollados de manera específica para esta tarea. Este objetivo general se desglosa en 3 objetivos específicos: Entrenar modelos genéricos de detección de objetos para su utilización como detectores de caras. Comparar los detectores de objetos entrenados para la detección de caras y modelos específicos de detección facial. Comprobar la mejoría de estos modelos tras su simplificación mediante la herramienta TensorFlow Lite. Determinar cuál es la selección óptima sobre la base del estudio. 3 CAPÍTULO 1. INTRODUCCIÓN 1.3. Fases y Procedimiento El presente proyecto se divide en dos fases: Fase preparatoria e implementación del proyecto. 1. Fase preparatoria: Previa a la investigación como tal, se realiza un estudio bibliográfico sobre el tema al objeto de recopilar los conceptos necesarios para la posterior realización del mismo. Se profundiza en los siguientes conceptos claves: Inteligencia Artificial, Machine Learning y Deep Learning. Posteriormente se lleva a cabo la adaptación y creación del entorno de trabajo necesario para la puesta en marcha del proyecto. 2. Fase de implementación del proyecto: Abarca, a grandes rasgos, la comparativa entre detectores de caras optimizados y sin optimizar, siendo estos últimos, los primeros a comprobar. La fase de la comparativa de detectores de caras sin optimizar, se subdivide a su vez en dos apartados: Comparativa entre modelos de detección de objetos genéricos entrenados para la detección de caras. Estos modelos son los ofrecidos por la API (interfaz de programación de aplicaciones) de TensorFlow [ 5 ] y el detector de objetos del estado del arte, YOLO [6]. Comparativa de modelos específicos de detección facial. De todas las posibilidades en el mercado, se han escogido dos modelos que destacan por su pequeño tamaño y velocidad de inferencia en imágenes y vídeos. Por último se llevará a cabo la simplificación de los modelos de detección utilizados, ya sean genéricos o específicos, mediante las herramientas ofrecidas por TensorFlow Lite para su posterior análisis, evaluación y comparación. Para la consecución de los objetivos del proyecto se pone en marcha el siguiente procedimiento a partir de la revisión de la literatura y el estudio del arte tanto de la detección de objetos como la detección facial. Comparación de los modelos de la API de TensorFlow [ 7 ] con los valores existentes en el Model-Zoo [5]. Entrenamiento de estos modelos genéricos para su mejor desempeño en la tarea de la mejor detección del contorno de una cara empleando para ello el dataset de imágenes disponible en WIDER FACE [8]. Adición de los detectores faciales específicos a la comparativa mediante su entrenamiento y evaluación. 4 CAPÍTULO 1. INTRODUCCIÓN Por último, se procede a la simplificación de estos modelos con la herramienta de Tensor- Flow [7], TensorFlow Lite [9]. La figura 1 recoge de forma esquemática el proceso llevado a cabo en el presente documento. Figura 1: Procedimiento de elaboración del TFG. 1.4. Organización de la Memoria La presente memoria se estructura en 5 capítulos: El primer capítulo de la memoria tiene un carácter introductorio en el que se recoge el marco de trabajo. Se plantea la motivación para la búsqueda y selección de la temática a desarrollar, así como los objetivos y la metodología seguida a lo largo de todo el TFG. En el segundo capítulo se aborda una revisión del Estado del Arte tanto en relación con la detección de objetos, a nivel genérico, como en la detección facial de manera más específica. En este capítulo se expone el estado actual de estas tecnologías, así como los avances más relevantes que se han ido viendo en ellas. 5 CAPÍTULO 1. INTRODUCCIÓN El tercer capítulo se centra en los requisitos previos a la comparativa de modelos de cara a conseguir los mejores resultados sin que lleguen a producirse problemas de memoria durante la fase de entrenamiento. Para esta comparativa, se utiliza un mismo modelo de detección con diferente cantidad de imágenes para el entrenamiento. El cuarto capítulo contiene una descripción acerca del procedimiento realizado para la toma de decisiones de los modelos genéricos a comparar. En él se incluye una explicación en detalle de los modelos de detección utilizados, el entrenamiento llevado a cabo en cada uno de ellos y su simplificación. Al mismo tiempo se lleva a cabo una evaluación de los resultados obtenidos y una reflexión sobre estos objeto del presente TFG. Por último, en el quinto capítulo se recogen las conclusiones tras el análisis de los resultados, así como una prospectiva de futuro. 1.5. Medios materiales empleados Para la realización de este proyecto se han empleado los siguientes medios materiales: 1.5.1. Hardware Servidor con distribución Ubuntu basada en Linux [10]: Procesadores: Intel(R) Xeon(R) CPU E5-2697 v4 @ 2.30GHz (x2) RAM: 512GB Tarjeta Gráfica 1: Quadro RTX 5000, 16GB Tarjeta Gráfica 2: GeForce GTX 1070, 8GB 1.5.2. Software y lenguajes de programación Anaconda: Administrador de paquetes gratuito, libre y de código abierto así como un administrador de entorno y distribución de Python. Está orientado a simplificar el despliegue y administración de los paquetes de software. [11]. Python: Lenguaje de programación interpretado de alto nivel orientado a objetos con semántica dinámica. Es muy utilizado para el desarrollo web en la parte backend, el 6 CAPÍTULO 1. INTRODUCCIÓN desarrollo de software, aplicaciones matemáticas y especialmente en el campo de la inteligencia artificial gracias a las múltiples bibliotecas enfocadas a este cometido [ 12 , 13 ]. TensorFlow: “Plataforma de código abierto de extremo a extremo para el aprendizaje automático. Cuenta con un ecosistema integral y flexible de herramientas, bibliotecas y recursos de la comunidad que permite que los investigadores innoven con el aprendizaje automático y los desarrolladores creen e implementen aplicaciones fácilmente” [7]. TensorFlow Lite: Conjunto de herramientas cuya finalidad es ayudar a los desarrolladores a ejecutar modelos de TensorFlow en dispositivos incorporados, móviles o de IoT (Internet of Things). Permite la inferencia de aprendizaje automático en dispositivos con una latencia baja y un tamaño de objeto binario pequeño [9]. Keras: Biblioteca gratuita de Python de código abierto potente y fácil de usar para desarrollar y evaluar modelos de aprendizaje profundo. Engloba las bibliotecas TensorFlow y Theano [14]. Pycharm Community Version: Entorno de desarrollo integrado (IDE) utilizado en programación [ 15 ], específicamente para el lenguaje Python. Según [ 16 ], en 2020 y según [17], en 2021, Pycharm fue el IDE más utilizado para Python. MATLAB R2019a: “Plataforma de programación diseñada específicamente para ingenieros y científicos para analizar y diseñar sistemas y productos que transformen nuestro mundo. El corazón de MATLAB es el lenguaje MATLAB, un lenguaje basado en matrices que permite la expresión más natural de las matemáticas computacionales” [18]. L A TEX: Sistema de composición tipográfica de alta calidad; incluye características diseñadas para la producción de documentación técnica y científica. LaTeX es el estándar de facto para la comunicación y publicación de documentos científicos. [19] Putty: “Desarrollado originalmente por Simon Tatham para la plataforma Windows, PuTTY es un cliente SSH y telnet de código abierto”. Es muy utilizado para hacer túneles SSH entre clientes y servidores y permite su utilización conjuntamente con herramientas gráficas [20]. TigerVNC: Aplicación cliente/servidor que permite a los usuarios iniciar e interactuar con aplicaciones gráficas en máquinas remotas. TigerVNC, como implementación de alto rendimiento y plataforma neutral de VNC (Virtual Network Computing) proporciona los niveles de rendimiento necesarios para ejecutar aplicaciones 3D y de vídeo [21]. En este proyecto se ha empleado MATLAB para la generación de gráficas. El resto ha sido desarrollado en el IDE de Pycharm y codificado en Python. Se han utilizado además, las herramientas Putty y TigerVNC para llevar a cabo la conexión virtual con las máquinas disponibles del servidor de la escuela desde el que se ha llevado a cabo la mayoría de este trabajo. 7 Capítulo 2 Revisión del Estado del Arte Este segundo capítulo de la memoria del Trabajo de fin de Grado está enfocado en el estudio y entendimiento de la IA, el Machine Learning y el Deep Learning, además de una breve revisión del Estado del Arte de la detección de objetos, es decir, en qué estado se encuentra actualmente esta tecnología y cuáles son los avances más recientes. Se incluye igualmente la historia de los detectores faciales y como han ido evolucionando desde sus comienzos hasta su estado actual. Por último se plantea una reflexión en torno a las potenciales ventajas e inconvenientes. 2.1. Historia del Machine Learning y su aplicación en la detección de objetos La Inteligencia Artificial, como campo de estudio, engloba el campo del Machine Learning, el cual, a su vez engloba al Deep Learning. En la figura 2 se puede observar una representación de esta afirmación. Pero antes de entrar en materia conviene saber a qué nos referimos cuando hablamos de Machine Learning y para qué sirve. Figura 2: Agrupación de la Inteligencia Artificial, el Machine Learning y el Deep Learning [ 22 ]. 8 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE Darle un cerebro artificial a un robot, hacerlo aprender a caminar o que aprenda a reconocer voces, crear un filtro anti-spam, mejorar los antivirus, vehículos autónomos, etc. Esas son solo algunas de las posibles aplicaciones que tiene el Machine Learning. A continuación se describen algunos hitos en la historia de esta rama de la inteligencia artificial. En 1943, el matemático Walter Pitts y el neurofisiólogo Warren McCulloch propusieron una teoría en la que se pretendía analizar el cerebro como un organismo computacional y proponían, para ello, la creación de computadoras que funcionaran de manera igual o mejor que la red neuronal humana [23]. Años después, en 1950, Alan Turing creó el mundialmente conocido test de Turing, que se consideraba logrado si una máquina era capaz de engañar a un humano haciéndole creer que se encontraba delante de un humano en vez de un ordenador. Arthur Samuel escribió el primer programa de aprendizaje informático a finales de 1952. Este consistía en un software con la capacidad de jugar a las damas que mejoraba su respuesta dependiendo del nivel de juego, volviéndose mejor tras cada juego. Y en 1956, Martin Minsky, John McCarthy y otro grupo de profesionales acuñaron el nombre de Inteligencia Artificial en medio de una conferencia en Darthmouth. Un par de años más tarde, en 1958, un psicólogo innovador conocido como Frank Rosenblatt diseñó la primera red neuronal artificial, a la que llamó “Perceptron” [24]. Finalmente, se acuñó el término de Machine Learning (ML) en 1967 gracias a la creación del algoritmo Nearest Neighbor [ 25 ], puesto que este algoritmo le brindaba a una máquina la capacidad de aprender patrones por primera vez. Después de esto llegó una época de muy altas expectativas y pocos avances, hasta que en la segunda mitad de los años setenta apareció la primera época conocida como “El primer invierno de la Inteligencia Artificial”. Época que no terminó hasta 1979 cuando unos estudiantes de la universidad de Stanford inventaron el Stanford Cart, un robot capaz de desplazarse por una habitación sorteando los obstáculos que hubiera en ella. Seguido del nacimiento de los sistemas basados en reglas, que generó gran interés en el ML, en 1981, se introdujo el concepto EBL (Explanation Based Learning) donde, a partir del análisis de datos de entrenamiento, un computador era capaz de crear reglas generales que permitían descartar datos menos importantes. 9 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE Y en 1985, el programa NetTalk del profesor Terry Sejnowski, que constituyó el último gran avance de la década, precedió al segundo AI Winter (Segundo invierno de la IA) que duró desde 1987 hasta 1993. Dicha etapa, permitió al Machine Learning desvincularse como herramienta de la Inteligencia Artificial, lo que la impulsó al estatus de materia propia a finales de los años 90 [ 23 ]. Esta década obtuvo como hito la creación del ordenador Deep Blue, el cual, por primera vez en la historia, fue capaz de vencer al campeón mundial de ajedrez, Gary Kaspárov. Una de las razones del segundo AI Winter, fue el abandono de la idea de entrenar una red neural profunda (Deep Learning), pues se consideraba una tarea imposible en 1990. El ML quedó en varado hasta que en 2006, Geoffrey Hinton junto con un grupo de investigadores, publicaron un artículo mostrando como entrenar este tipo de redes, demostrando que volvía a ser posible continuar con los avances tecnológicos de este campo. Desde ese punto en adelante, la comunidad científica recuperó el interés y unos cuantos años después, el Machine Learning ya había conquistado la industria [26]. En la década de 2010 hubo cuantiosos avances en este campo, entre los que se pueden destacar: La creación del ordenador Watson de IBM. Cuya capacidad de aprendizaje, permitió su victoria ante varios competidores humanos en el concurso Jeopardy, el cual consistía en responder a preguntas en su lengua natural. El desarrollo del proyecto GoogleBrain de Jeff Dean y Andrew Ng, que consistía en una red neuronal la cual, por medio de Google, era capaz de detectar patrones en vídeos e imágenes. Desarrollo de DeepFace por Facebook, cuyo algoritmo basado en redes neuronales profundas, era capaz de reconocer personas con una precisión cercana a la del ojo humano. En 2014 Google compra DeepMind, una startup inglesa de Deep Learning que recientemente había demostrado las capacidades de las redes neuronales profundas con un algoritmo capaz de jugar a juegos de la consola Atari simplemente viendo los píxeles de la pantalla, tal y como lo haría una persona. Dicho algoritmo fue capaz de vencer a algunos jugadores expertos. El año 2015 vino acompañado de 3 avances importantes: El lanzamiento de Amazon de su propia plataforma de ML, el despliegue del “Distributed Machine Learning Toolkit” de Microsoft, cuya finalidad era compartir programas y problemas de machine learning entre equipos manera eficiente, y la fundación de una organización sin ánimo de lucro llamada Open AI. Esta compañía, creada por un grupo en el que se encontraban Elon Musk y Sam Altman, buscaba promover investigaciones que permitieran avances en el campo de la IA en pro de un impacto positivo en la humanidad. 10 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE Estas redes son especialmente útiles en el procesado de imágenes debido a su capacidad de capturar las dependencias espaciales de los datos. Habitualmente se pueden encontrar 3 tipos de capas en la arquitectura CNN. Capas convolucionales: Como su nombre indican, son las encargadas de llevar a cabo una convolución, que consisten en tomar “grupos de pixeles cercanos” de la imagen de entrada e ir operando haciendo el producto escalar de estos píxeles contra una pequeña matriz que se llama kernel. El kernel habitualmente es de tamaño 3x3 y recorre toda la imagen de entrada de izquierda a derecha por cada fila hasta terminar en la parte inferior derecha. El procedimiento es llevado tantas veces como sea necesario hasta cubrir toda la superficie de la imagen de entrada. La metodología con la que se lleva a cabo esta convolución viene determinada por dos parámetros: el stride (desplazamiento) y el zero padding (término generalmente utilizado para la inclusión de ceros alrededor de algún valor con la finalidad de que las dimensiones sean las adecuadas). El stride controla cómo el filtro se mueve alrededor de la imagen de entrada. Como se puede observar en las figuras 10 y 11, a mayor stride, menor será la dimesión de salida. La figura 10 tiene un desplazamiento de 1, mientras que la figura 11 tiene un desplazamiento de 2. Figura 10: Entrada y salida correspondientes tras aplicar un kernel con stride de 1 [33]. Figura 11: Entrada y salida correspondientes tras aplicar un kernel con stride de 2 [33]. 17 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE Cabe destacar que habitualmente el stride es elegido de manera que el volumen de salida es un valor entero y no una fracción. Para la explicación del padding hay que pensar que, cuando se aplica un kernel, el tamaño final sufre un decrecimiento. A medida que esto se siga aplicando a las diferentes capas convolucionales, el tamaño del volumen disminuirá más rápido de lo buscado, debido a que en las primeras capas de una red, se busca preservar la mayor cantidad de información sobre el volumen de entrada original para poder extraer esas características de bajo nivel. Por lo que, para mantener el tamaño original, se suele emplear el Zero padding, que rellena el volumen de entrada con ceros alrededor del borde. Por lo que, tras el relleno correspondiente, y la aplicación del kernel, el tamaño original se mantendría. Esto se ve ilustrado en la figura 12. Figura 12: Aplicación de un padding de ceros al tamaño de entrada original [33]. Capa de pooling: Esta capa también conocida como capa de agrupación es utilizada para reducir el tamaño de los mapa de características. La finalidad buscada es la obtención de eficiencia computacional, gracias a su menor tamaño de procesamiento; la mejor obtención de características dominantes, y una mayor robustez frente al ruido. Hay muchos métodos diferentes de pooling, pero de todos ellos se van a destacar dos: el Max pooling y el Average pooling [34]. •Max Pooling: Es utilizado mayormente para reducir la variabilidad de las muestras. De las regiones de pooling escogidas, toma el mayor de los valores para formar el nuevo mapa de características como se puede observar en la figura 13 18 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE Figura 13: Operación llevada a cabo en el max pooling [34]. •Average Pooling: Este método lleva a cabo un submuestreo al dividir la entrada en regiones de pooling rectangulares (o cuadradas) y tomar el valor medio de cada región. La figura 14 muestra un ejemplo la operación llevada a cabo. Figura 14: Operación llevada a cabo en el average pooling [34]. Capa completamente conectada: Las fully connected layers son las encargadas de combinar la información local recogida en las capas anteriores para la identificación de patrones más generales. Estas conforman las últimas capas de la red habitualmente. La entrada de una capa completamente conectada es la salida de las capas de pooling o las capas convolucionales, la cual es aplanada e introducida a esta capa. El término “aplanar” hace referencia a la conversión de una matriz tridimensional en un vector unidimensional con el que poder trabajar. 2.2.2. Backbone Según viene definido en el diccionario de Oxford, “un backbone es la parte más importante de un sistema, organización, etc. Esta da soporte y potencia”. Los backbones juegan un rol muy importante en la detección de objetos, puesto que su desempeño recae en gran medida en las características extraídas por estos. En este trabajo, uno de los backbones más utilizados es el conocido como ResNet [35]. No obstante, muchos detectores de objetos directamente utilizan redes diseñadas para la clasificación de imágenes como backbones. Un ejemplo que se puede encontrar en este documento es el modelo SSD MobileNet, el cual utiliza la CNN MobileNet como un backbone para mejorar su obtención de características. 19 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE ResNet Las redes residuales, o ResNets [ 35 , 36 ], aprenden funciones residuales las cuales hacen referencia a la capa de entrada, en lugar de aprender funciones sin referenciar. En lugar de esperar que unas pocas capas agrupadas coincidan directamente con el mapeado subyacente esperado, las ResNets hacen que las capas coincidan explícitamente con el mapeado residual. Y, mayoritariamente, agrupan bloques residuales, los cuales se pueden ver en la figura 15, para formar la red. Por ejemplo, algunos de los modelos utilizados en esa comparativa utilizan diferente cantidad de capas gracias a estos bloques, este es el caso de los SSD Resnet50/101/152 o los Faster R-CNN Resnet50/101/152. La función F(x, Wi) representa el mapeado residual a aprender. Hay evidencias empíricas de que este tipo de redes son más simples a la hora de realizar optimizaciones y que pueden ganar mayor precisión a medida que se aumenta la profundidad. Todo esto, a costa de memoria y velocidad de procesado. Figura 15: Esquema básico del aprendizaje residual [36]. MobileNet Las Mobile Networks [ 37 ] son especialmente útiles para dispositivos móviles o aplicaciones de visión embebidas. Se basan en la optimización de la latencia, pero también en la utilización de redes pequeñas. El modelo de MobileNet se basa en convoluciones en profundidad, cuya función primordial es factorizar convoluciones estándar en 2 tipos: convoluciones en profundidad, y una única convolución puntual (1 × 1). Este tipo de proceso aplica un único filtro para cada canal de entrada. La factorización llevada a cabo por este modelo, reduce drásticamente la computación y el tamaño del modelo. En la figura 16 podemos ver como una convolución estándar (a) es factorizada en una convolución en profundidad (b) y una convolución puntual (c). Todas las capas están seguidas de una batchnorm (normalización de los bloques de imágenes tomados) [ 38 ] y una ReLU (Rectified Linear Unit) no lineal, con la excepción de la capa final, la 20 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE cual no tiene no linealidad y es alimentada a una capa que aplica una función softmax para su clasificación. (a) Convolución estándar (b) Convolución en profundidad (c) Convolución puntual Figura 16: Procesamiento de una imagen en los modelos MobileNet [37]. 2.2.3. Feature Pyramid Networks Una FPN, o Feature Pyramid Network, [ 39 ] es un extractor de características que toma de entrada una imagen con un tamaño arbitrario y a la salida saca mapas de características a múltiples niveles de manera completamente convolucional como se puede ver en la figura 17. Este proceso es independiente de las arquitecturas convolucionales troncales (backbone). Tiene una amplia utilidad en ramas como la detección de objetos ya que actúa como solución genérica para la construcción de pirámides de características dentro de redes convolucionales profundas. Figura 17: Estructura de un extractor FPN [39]. 21 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE 2.2.4. ReLU Una función de activación lineal rectificada es una función lineal por partes que dará como resultado la entrada en caso de esta sea positiva, o, cero en caso contrario. Las ReLU se han convertido en la función de activación predeterminada para muchos tipos de redes neuronales, debido a que los modelos que la utilizan son más fáciles de entrenar y, a menudo, logran un mejor rendimiento [40]. La función de activación es una “puerta” matemática entre la entrada que alimenta la neurona actual y su salida que va a la siguiente capa. Básicamente deciden si la neurona debe activarse o no [41]. 2.3. Historia y Estado del Arte de la Detección de Objetos La detección de objetos tiene como objetivo localizar cada instancia de un objeto y asignarle una clase en una imagen. En general, un detector de objetos puede dividirse en dos partes, un backbone y una “cabeza”, siendo esta última la motivadora de múltiples avances en los últimos años. El término “cabeza” se refiere a la parte del detector encargado de la tarea específica a llevar a cabo, es decir, detección, segmentación, clasificación, etc. La manera de hacer esto es mediante la aplicación de la cabeza al mapa de características generado por la salida del backbone. La historia de la detección de objetos se puede dividir justo en el año 2014 en dos periodos históricos [42]: Periodo de la detección de objetos tradicional (antes de 2014): Detectores HOG (Histogram of Oriented Gradients) y DPM (Deformable Part Model). Periodo de la detección basada en aprendizaje profundo (después de 2014), dividida en dos subetapas: • Detectores de dos etapas basados en CNN • Detectores de una etapa basados en CNN A continuación se nombran y describen los principales detectores desarrollados a lo largo de las etapas históricas mencionadas, y en la figura 18, se puede ver un diagrama de estos agrupados en los diferentes grupos de detectores. 22 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE 2.3.1. Detectores tradicionales Detector HOG El histograma de gradientes orientados, o según sus siglas en inglés, HOG, fue propuesto en 2005 por N.Dalal y B. Triggs [ 43 ]. Este detector supuso una gran mejora en cuanto a la transformación de características de escala invariante y a los shape contexts en ese tiempo. Este podía ser utilizado como detector de objetos genérico, pero inicialmente fue creado con la idea de detectar viandantes. Además, ha sido la base de muchos detectores de objetos o aplicaciones de computer vision. Para obtener las características, primero se introduce una imagen de la que se preprocesa la información, después, se calculan los gradientes en las direcciones X e Y mediante los valores de cada píxel y sus vecinos, y por último, con estos gradientes, se determina la magnitud y dirección para cada valor de píxel. Con estos datos, se genera el histograma utilizado para llevar a cabo la detección. DPM El modelo basado en partes deformables era el pináculo de los métodos de detección de objetos tradicionales [ 44 ], tal fue así que consiguió ser ganador 3 años consecutivos del concurso de detección de VOC que consiste, básicamente en un concurso anual dividido en 3 categorías: detección, clasificación y segmentación. El ganador de cada categoría es el grupo de personas que muestre el método con los mejores resultados en un dataset de imágenes concreto. Propuesto por Pedro Felzenszwalb en 2008 [ 44 ] como una extensión del ya comentado detector HOG fue posteriormente mejorado por una serie de correcciones hechas por R. Girshick [ 45 , 46 ]. Este modelo típicamente consiste en un filtro raíz y un número de filtros adicionales encargados de separar las partes del objeto, cuyas configuraciones pueden ser aprendidas automáticamente como variables por un método de aprendizaje supervisado. La detección se basa ampliamente en el “divide y vencerás”, por ejemplo, la detección de un coche se podría considerar como la suma de detecciones de las ventanas, el chásis y las ruedas. Este modelo, aunque algo obsoleto y superado de lejos por los demás, sigue influenciando enormemente a algunos detectores de objetos a día de hoy. [42] 2.3.2. Detectores de dos etapas basados en CNN En 2012 nacieron las redes neuronales convolucionales [ 31 ] y al igual que éstas, este tipo de detectores pueden aprender características robustas y de alto nivel a partir de una imagen. El equipo de R. Girshick propuso en 2014 lo que hoy es conocido como regiones con características de las redes neuronales convolucionales o, por sus siglas en inglés, R-CNN [47]. 23 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE R-CNN El funcionamiento de este detector parte de la extracción de un conjunto de posibles detecciones por búsqueda selectiva, estas son reescaladas a un tamaño fijo y pasadas como parámetros de entrada a un modelo CNN entrenado. Por último, se utilizan clasificadores SVM (máquinas de vectores de soporte) lineales para predecir la presencia de un posible objeto en cada región y para reconocer la categoría de cada uno [ 48 ]. El problema de este detector es el gran número de posibles detecciones solapadas, lo que supone una gran reducción en la velocidad de detección. SPPNet Propuesto por Kaiming He y su equipo en 2014 [ 49 ], introdujo las capas de Spatial Pyramid Pooling, que permitía a las CNN generar representaciones de tamaño fijo independientemente del tamaño de la imagen o la region de interés sin la necesidad de reescalarlos. Gracias a esto se evitó el problema de la repetición computacional de características convolucionales, aunque aún tenía ciertos inconvenientes, los cuales se intenaron solucionar con el modelo Fast R-CNN. Fast R-CNN Nuevamente Ross Girshick apareció con un nuevo modelo revolucionario en 2015 [ 50 ], el cual mejoraba en gran medida a los anteriores R-CNN y al SPPNet y conseguía integrar las ventajas de ambos dos. Este modelo permite entrenar un detector y un regresor de cajas delimitadoras bajo la misma configuración de red. Pero seguía siendo bastante lento debido a que estaba limitado a la detección de propuestas de objeto, lo cual fue solucionado algo más tarde ese mismo año. Faster R-CNN En 2015 un equipo junto con R. Girshick propusieron el que para la época sería un modelo del estado del arte llamado Faster R-CNN [ 51 ]. Fue el primer detector end-to-end y también el primer detector que consiguió una detección de aprendizaje profundo casi en tiempo real. Su mayor aporte fue la introducción de las RPN o Region Proposal Network: que permitían obtener propuestas de regiones con un coste más bajo que antes. Este modelo no quedó aquí ya que posteriormente ha sufrido una serie de mejoras incluyendo el R-FCN [ 52 ] o el Light head R-CNN . Feature Pyramid Networks En 2017, Tsung-Yi Lin y un grupo de investigadores entre los que se encontraba Ross Girshick, propusieron las redes piramidales de características [ 39 ] sobre una base de Faster R- 24 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE CNN. Previo a las FPN, muchos de los detectores basados en aprendizaje profundo se ejecutaban en la capa más superficial de la red, cualidad que dejó de ser necesaria gracias a la creación de este extractor de características. Una vez se aplicó a algunos modelos como Faster R-CNN, se consiguieron resultados sorprendentes para esa época, tanto como para considerar Faster R-CNN, un detector del estado del arte nuevamente. Las FPN son a día de hoy un bloque de construcción básico para la mayoría de los detectores. 2.3.3. Detectores de una etapa basados en CNN YOLO You Only Look Once o mejor conocido como YOLO, fue el primer modelo de detección de una etapa creado hasta la fecha [53]. Fue desarrollado en 2015 por Redmon, Divval, Girshic y Farhad. Este modelo sigue la filosofía de aplicar solamente una red neuronal a la imagen completa. El modelo divide la imagen en regiones y predice donde caerá la caja delimitadora y su probabilidad al mismo tiempo. El mayor problema de la primera versión de este detector, a pesar de su gran velocidad, es la falta de precisión en comparación con los detectores de dos etapas sobre todo en objetos de menor tamaño, problema que fue mejor estudiado en las siguientes versiones YOLOv2 y v3. YOLO ha recibido varias actualizaciones hasta el punto de crear 4 nuevos modelos: YOLOv2 (el cual, como curiosidad, se llamó inicialmente YOLO9000), v3, v4 y v5 [ 54 , 55 , 6 , 56 ]. Todos ellos han sido modelos del estado del arte a medida que iban saliendo debido a sus correcciones y mejoras. Actualmente, en 2021, el modelo puntero en detección de objetos es YOLOv5, desarrollado este mismo año. SSD Fue propuesto en 2015 por Wei Liu et al. el año 2015 [ 57 ]. Sus siglas significan Single Shot MultiBox Detector y fue el segundo detector de una etapa (detrás de YOLO). Su mayor contribución fue la introducción de dos técnicas de detección: multi referencia y multi resolución, las cuales mejoraban la precisión de la detección de este tipo de detectores sobre todo en pequeños objetos, que era precisamente el detalle en el que el YOLO más flaqueaba. RetinaNet Tsung-Yi Lin et al. descubrieron las razones por las cuales los modelos de una etapa estaban siempre por detrás de los de dos etapas en cuanto a precisión, y con eso, creó una nueva función de perdidas llamada Focal Loss, la cual fue introducida en el modelo RetinaNet [ 58 ] con la finalidad de que el detector se fijara más en ejemplos difíciles y sin clasificar durante el entrenamiento. 25 CAPÍTULO 2. REVISIÓN DEL ESTADO DEL ARTE Con esto, se pudo obtener resultados muy similares a los buscados en los detectores de dos etapas. Figura 18: Diagrama temporal ordenado de los detectores de objetos unidos mediante flechas, indicando el orden de aparición de los modelos. 2.4. Historia y Estado del Arte de la Detección Facial Antes de comenzar con la historia de la detección facial, resulta adecuado recordar qué partes forman concretamente una cara, y que debe ser buscado cuando se esté detectando una. Según el capítulo 2 del Manual de Disecciones de Gonzalo López et al. [59], “la cara o rostro representa una región que abarca desde las cejas hasta la barbilla, y la componen los músculos que permiten la transmisión de las emociones de las personas. Incluye las cejas, los ojos, la nariz, las mejillas, los labios, la boca y el menton”. Estas son las características buscadas, y como podemos ver en la figura 19, obtenida de los ejemplos aportados en el dataset de WIDER FACE [ 8 ], están todas las partes nombradas. A mayores, WIDER FACE añade la frente a todas las imágenes en las que esto resulta posible. (a) (b) Figura 19: Ejemplos de las partes de una cara del dataset de WIDER FACE [8]. 26 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Figura 22: Ejemplos del dataset de PASCAL VOC [69]. 3.1.3. Microsoft COCO Common Objects in Context es un conjunto de datos de detección, segmentación y etiquetado de objetos a gran escala. Posee un conjunto de 328000 imágenes con más de 2500000 etiquetas, 91 categorías de objetos comunes y segmentación semántica de imágenes. Cada anotación de objetos contiene un conjunto de campos, incluyendo la identificación de la categoría y la máscara de segmentación del objeto. El formato de segmentación depende de si la instancia representa un único objeto o una colección de estos. La imagen 23 muestra varios ejemplos de este conjunto de datos. Figura 23: Ejemplos del dataset de Microsoft COCO [70]. 3.2. Metodología de entrenamiento 3.2.1. Transfer Learning Previo a mostrar los métodos seguidos para llegar a los dataset de entrenamiento utilizados, es necesario repasar el término de Transfer Learning puesto que su importancia en el entrenamiento de redes neuronales es muy alta. 33 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Un error común que había hace unos años en la comunidad del DL era que se creía que se necesitaban enormes cantidades de datos sin los cuales, no se puede esperar crear un modelo de aprendizaje efectivo de Deep Learning. Si bien es cierto que la cantidad de datos es muy importante para crear una red, la idea del Transfer Learning ha ayudado a disminuir la necesidad de la gran cantidad de datos. El Transfer Learning es el proceso de tomar un modelo preentrenado (por otra persona con sus propios parámetros y pesos) y afinarlo con otro dataset escogido por el usuario. La idea es que el modelo preentrenado funcionará como un extractor de características, y de él, se reemplaza la última capa con el clasificador a utilizar (dependiendo del problema para el que se utilice el modelo). Después, se “congelan” los pesos de todas las demás capas y se entrena la red de manera normal. El término “congelar” significa mantener los pesos durante la optimización [33, 71]. Gracias a este método, en lugar de entrenar toda la red mediante una inicialización aleatoria de los pesos, podemos utilizar los pesos del modelo preentrenado (y congelarlos) y centrarnos en las capas más importantes (las que están más arriba) para el entrenamiento. Si el conjunto de datos a utilizar difiere en gran medida frente al dataset base, entonces habría que llevar a cabo un entrenamiento más en profundidad, entrenar más capas y congelar sólo un par de las capas bajas. Un ejemplo de esto se puede observar en la figura 24. Figura 24: Ejemplo de Transfer Learning con congelación de pocas capas [72]. 3.2.2. Elección de los conjuntos de entrenamiento, validación y test. Es muy importante definir un buen conjunto de entrenamiento puesto que, gracias a él, la red convolucional de nuestro modelo irá aprendiendo a diferenciar entre imágenes. Esta es la razón por la que se recomienda entrenar los modelos con imágenes similares a las que va a ser sometido una vez llevado a una situación real. Por ello no puede haber una cantidad de imágenes 34 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA de entrenamiento demasiado pequeña (puesto que no aprenderá suficiente), ni demasiado grande (puesto que sufrirá de overfitting, y no aprenderá a diferenciar imágenes sino que las clasificará de memoria). Para ello se utilizó el dataset proporcionado por WIDER FACE [ 8 ]. Cabe señalar que un entrenamiento correcto suele necesitar 3 conjuntos de imágenes en total: Set de entrenamiento: a partir del cual se irá enseñando a la red convolucional los objetos que debe buscar. Set de validación: con el que el modelo irá viendo cada cierto tiempo como de bien se está comportando, comparándolo con imágenes no utilizadas en el entrenamiento. Set de test: sobre el que se comprueba los resultados finales del modelo tras el aprendizaje. Por como funciona la API de TensorFlow, el conjunto de validación ya viene incluido en el conjunto de test, ya que, citando con palabras textuales de la página de la API de TensorFlow, “Mientras el proceso de entrenamiento está activo, ocasionalmente, se generará un checkpoint dentro del directorio training_demo/training, el cual corresponde a capturas del modelo en algunos de los pasos por los que ha ido avanzando el modelo en su entrenamiento. Cuando un set de nuevos checkpoint es generado, el proceso de evaluación emplea dichos archivos para evaluar cuán bien está desempeñando el modelo en la detección de los objetos en el conjunto de test. Los resultados de esta evaluación están resumidos en forma de una serie de métricas, las cuales pueden ser examinadas a lo largo del tiempo de ejecución del programa”. Un parámetro de entrenamiento relevante en esta comparativa es el llamado batch_size, que es indicativo del número de imágenes entregado al modelo en cada paso del entrenamiento, por lo que, a menor batch_size, más rápido se podrá entrenar el modelo, pero si el número de pasos dados no es acorde, tendrá peor precisión. En la comparativa, el batch_size utilizado para entrenar los modelos es de 8 imágenes por cada paso de entrenamiento. Para la decisión del conjunto de imágenes utilizados en la comparativa, se decidió utilizar 1000 imágenes de test para la comprobación inicial de resultados, y se llevó a cabo una comparativa previa para encontrar la cantidad óptima de imágenes en el entrenamiento. Tras los entrenamientos y comprobaciones pertinentes, el tamaño del conjunto de entrenamiento fue decidido en 3000 imágenes con un batch_size de 8, y el conjunto de test será de 1000 imágenes. Al no utilizar en su totalidad el dataset disponible por problemas computacionales de memoria, este conjunto posee de una proporción 60 %/20 %/20 %, diferente del 40/10/50 de WIDER FACE. La razón está fundamentada en una serie de experimentos llevados a cabo con diferentes conjuntos de entrenamiento, test y validación, cuyo resultado final demostraba mejores resultados con esta proporción. 35 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA 3.3. Métricas utilizadas a lo largo de la comparativa Para medir la velocidad se utilizan los fps, o frames per second, es decir, fotogramas procesados en 1 segundo. Este parámetro es calculado de una manera muy simple con la expresión matemática Frecuencia =Numero de fotogramas Tiempo total (1) mediante la cual, si obtienes el tiempo de inferencia de una imagen (es decir, el tiempo necesario para detectar todas las caras y mostrar la salida), se puede obtener la frecuencia de imágenes procesadas por segundo. La velocidad es medida en tiempo total de ejecución, desde que se comienza a procesar la imagen hasta que se terminan los cálculos necesarios. Antes de ir con el segundo parámetro, por simplicidad, se explicará el término de recall, el cual se calcula como: Recall =T P TP +FN (2) Donde TP representa los verdaderos positivos y FN los falsos negativos. Un TP (verdadero positivo) es utilizado para mostrar que el detector ha categorizado correctamente la imagen, es decir, ha mostrado la imagen de un gato como un gato. Un FP (falso positivo) se utiliza cuando se categoriza una imagen que no debería haber sido. Por ejemplo, etiquetar la imagen de un gato como un perro. Un TN (verdadero negativo) consiste en no cometer un error en el etiquetado. Es decir, no etiquetar una imagen de un gato como un caballo. Esta métrica no es utilizada en la detección de objetos. Un FN (falso negativo) no categoriza una imagen que debería haber sido etiquetada. Por ejemplo, no etiquetar una imagen de un gato como un gato. El siguiente parámetro es el mAP, o mean Average Precision, pero antes de eso, se hará una breve explicación de como se computa la precisión y un concepto conocido como IoU (Intersection over Union). • La precisión es calculada como Precision =T P TP +FP (3) Siendo FP los falsos positivos. • La IoU calcula la superposición de 2 cajas delimitadoras: la predicha, frente a la real (que suele ser conocida también como ground truth). Un ejemplo es mostrado en la figura 25. En algunos datasets se predefine un umbral de IoU, generalmente de 0.5, a partir del cual se considera si el objeto detectado es TP (IoU ≥ 0.5) o FP (IoU < 0.5) [ 73 ]. Por otro lado, si el ground truth está presente en la imagen y el modelo ha fallado a la hora de detectarlo, se clasifica como FN. 36 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Figura 25: Cálculo de la IoU [74]. • AP o Average Precision: Aquí hace falta hacer distinción entre la evaluación hecha por COCO y la hecha por PASCAL, que son las dos principales evaluaciones que empleadas en esta comparativa. Para COCO, mAP y AP son lo mismo, no hacen distinción: “El AP es promediado entre todas las categorías. Tradicionalmente, es llamado mAP. No hacemos distinción entre AP y mAP (a diferencia de AR y mAR) y se asume que la diferencia es clara dependiendo del contexto” [ 75 ]. El mAP se calcula haciendo la media entre todas las categorías de objetos, y 10 umbrales IoU, los cuales abarcan desde 0.5 a 0.95 con saltos de 0.05 cada uno. Habitualmente viene representado como mAP(0.5:0.05:0.95). En el caso de la evaluación de PASCAL VOC, se calcula la precisión y recall de las imágenes. Una vez obtenidos estos parámetros, estos suelen ser organizados en una tabla similar a la mostrada en la figura 26. Figura 26: Tabla con los valores de precisión y recall obtenidos de una serie de imagenes procesadas. 37 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Una vez generada la tabla anterior, si se dibujara una gráfica con los valores de la precisión en el eje Y, y los del recall en el eje X, la gráfica resultante, será similar a la que se puede ver en la figura 27, debido a que los valores de la precisión provocan un patrón en zig-zag. Figura 27: Curva precisión vs recall [76]. El valor buscado, es decir, el Average Precision, es el área bajo la curva de la figura 27, cuyo valor viene dado por la siguiente expresión matemática AP =R1 0p(r)dr . Generalmente, la curva es ligeramente alisada antes de calcular el AP, reemplazando cada valor de precisión con el máximo valor de precisión a su derecha en ese nivel de recall como se puede observar en la figura 28. De esa manera, la curva decrecerá de manera monótona en lugar de con patrón zig-zagueante y el AP calculado será menos susceptible a pequeñas variaciones. Matemáticamente, se sustituye el valor de precisión por recall (er) con el mayor valor de precisión para cualquier recall ≥er. Figura 28: Curva precisión vs recall alisada [76]. En PASCAL VOC2008, se calcula una media de 11 puntos interpolados en el AP. Primero se divide la curva anterior en 11 valores (0, 0.1, 0.2, ..., 1) y se computa la 38 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA media de los máximos valores de precisión para estos 11 valores de recall mediante la siguiente expresión: AP =1 11 ×X {r∈0,0,...,1,0} APr=1 11 ×X {r∈0,0,...,1,0} pinterp(r)(4) El problema de este método para calcular el AP es que es menos preciso con valores relativamente bajos de precisión. Por esa razón, las últimas competiciones de PASCAL VOC (2010-2012) calculan exactamente el área bajo la curva una vez eliminados los zig-zags. En lugar de muestrear 11 puntos, se muestrea p(ri) cada vez que cae la gráfica, lo cual se puede ver en la figura 29. Figura 29: Curva precisión vs recall con muestreo p(ri)[76]. Además, se computa el Average Precision como el sumatorio de los bloques rectangulares con la expresión: AP =X n (rn+1 −rn)pinterp(rn+1)(5) Donde pinterp(rn+1) = m´ax p(er) er≥r (6) Para terminar con todo lo dicho anteriormente, hay que dejar claro que COCO, como se ha dicho anteriormente, no hace diferenciación entre AP y mAP, y PASCAL VOC, una vez calculado el AP de una clase, lleva a cabo un promediado de los distintos AP para todas las clases, obteniendo así un valor final de mAP. 39 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Para este trabajo, se ha utilizado una única clase (caras) en lugar de las recomendadas por COCO y PASCAL, por lo que el AP calculado de la clase utilizada, coincide a su vez con el mean Average Precision (en la métrica de PASCAL). Total Loss es un parámetro calculado como la suma de las pérdidas de clasificación y las pérdidas de localización. Generalmente estas tres son mostrados en gráficas, las cuales suelen decrecer a medida que aumenta el número de pasos en el entrenamiento del modelo de detección y el valor que toman es el del último valor de la gráfica tras completar el entrenamiento (en esta comparativa, el valor se toma en el paso 25000). Estas funciones de pérdidas indican cómo de bueno es el modelo en una tarea determinada. Y, dependiendo de la tarea concreta, casi todos los modelos tienen como objetivo, minimizar las pérdidas. • Las pérdidas de clasificación están indicadas para cualquier tarea que requiera clasificación. A partir de k categorías se comprueba como de bien trabaja el modelo en cuestión en la clasificación de x número de objetos en k categorías. • Las pérdidas de localización hacen referencia a cómo de bien es capaz de localizar el modelo una serie de objetos detectados en una imagen, por ello suele ir de la mano con el término IoU, ya que se necesita saber la posición de las cajas delimitadoras ground truth y de las cajas delimitadoras detectadas. Idealmente, el resultado final de la gráfica de pérdidas totales se busca que esté en torno al 1 %. 3.4. Explicación en detalle de los modelos de detección utilizados 3.4.1. Modelos genéricos de detección EfficientDet Este detector [ 77 ] surgió en el año 2019 y proponía 2 retos con su salida: la fusión multiescalada y eficiente de características y el escalado del modelo. Ambas se pueden observar en la figura 30. Primer reto: Fusión multiescalada y eficiente de características. Al fusionar diferentes características de entrada, la mayoría de detectores previos simplemente las suman sin distinción, sin embargo, teniendo en cuenta que estas características de entrada están a diferentes resoluciones, observamos que generalmente contribuyen a las características salida de manera desigual. Para 40 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA atajar este problema, se propuso una Feature Pyramid Network bidireccional (BiFPN). Segundo reto: Escalado del modelo. Mientras trabajos previos utilizan redes backbone mayores, cuyo propósito es mejorar el desempeño del modelo [ 78 ], o imágenes de entrada de mayores dimensiones, inspirado en recientes trabajos como [ 79 ], se propuso un método de escalado combinado para detectores de objetos. Este método escala conjuntamente la resolución de todos los backbone, FPNs, y redes de predicción de cajas y clases. Por esto, combinando las Efficient- Nets [ 79 ] con el propuesto BiFPN y el escalado combinado, desarrollaron una nueva familia de detectores de objetos: EfficientDet, que consigue mejor precisión con un menor número de parámetros y FLOPs (Floating Point Operations) que previos detectores. Los EfficientDet son un tipo de detectores de una sola etapa, los cuales destacan por su gran eficiencia, debido a sus arquitecturas directas, frente a los modelos de dos etapas, los cuales mantienen una firme ventaja en cuanto a precisión se refiere [ 80 ]. Este, además, mantiene el ratio inicial de la imagen a la hora de hacer el redimensionado. Figura 30: Esquema de detección del modelo EfficientDet [81]. SSD La aproximación del modelo Single Shot Multibox Detector [ 57 ] está basada en una red convolucional hacia adelante que produce una colección de cajas delimitadoras y puntuaciones dependiendo del objeto detectado en las cajas. Un ejemplo de este tipo de modelo se puede observar en la figura 31. Las primeras capas de la red están basadas en una arquitectura VGG-16 [ 82 ] a la cual se suele referir como backbone y que es empleada para una clasificación de alta calidad de las imágenes. Posteriormente, se añade la estructura auxiliar de la red que permite detectar objetos con las siguientes características. Mapas de características multi-escala para la detección: Se utilizan capas convolucionales al final del backbone (VGG-16) las cuales decrecen progresivamente de tamaño y permiten predicciones a múltiples escalas. El modelo convolucional de predicción de detecciones es diferente para cada una de las capas. 41 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Predictores convolucionales para detección: Cada capa añadida puede producir un set fijo de predicciones usando un set de filtros convolucionales. Estos se indican en la parte más externa de la arquitectura de red en la figura 31. Para cada capa de tamaño m × n con p canales, el elemento básico para la predicción de parámetros de una posible detección es un pequeño kernel de tamaño 3 × 3 × p que produce, o una puntuación (score) por categoría, o una forma compensada de tamaño relativo a las coordenadas por defecto de la caja. En cada lugar de los que se aplica el kernel, se obtiene un valor de salida, los cuales están medidos de manera relativa a la posición de una caja, que a su vez es también relativa a la localización de cada mapa. Figura 31: Esquema de detección del modelo SSD [57]. Para el entrenamiento se sigue una técnica diferente, ya que la clave reside en que, a diferencia de otros detectores típicos, para SSD (al igual que en YOLO, Faster R-CNN y MultiBox) la información acertada debe ser asignada a salidas específicas del detector. Una vez hecho esto, la función de pérdidas y propagación hacia atrás (recall), es aplicada end-to-end. Faster R-CNN Este modelo ha ido sufriendo varias mejorías a lo largo del tiempo, por ello, se explicarán brevemente cada uno de los pasos que se han dado. R-CNN: La idea de los creadores de las Region Based Convolutional Neural Networks [ 48 ] fue combinar dos factores clave. Aplicar Redes Neuronales Convolucionales (CNN) de gran capacidad sobre las propuestas de regiones para localizar y segmentar objetos. Y que, cuando los datos etiquetados de entrenamiento fueran escasos, se pudiera conseguir una mejora significativa del desempeño gracias al preentrenamiento supervisado para llevar a cabo tareas auxiliares y gracias a ajustes específicos de dominios. Además, debido a que combinan regiones propuestas con CNNs, llamaron a su método, R-CNN, es decir, regiones con características de las CNN. 42 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Ofrece un ecosistema completo para ayudar al usuario a resolver problemas complejos del mundo real. TensorFlow ofrece varios niveles de abstracción al usuario y mediante la API de Keras, se pueden crear y entrenar modelos de manera sencilla en servidores, dispositivos perimetrales o en la web de independientemente del lenguaje utilizado o la plataforma de ejecución. A su vez, posee varias herramientas: TensorFlow Extended (TFX): Para conseguir la canalización del aprendizaje automático de producción completa. TensorFlow Lite: Para ejecutar la inferencia en dispositivos móviles y perimetrales. TensorFlow.js: Permite el entrenamiento e implementación de modelos en entornos de JavaScript. 3.5.2. TensorFlow Lite TensorFlow Lite es un conjunto de herramientas de que pretenden permitir a los usuarios, ejecutar sus modelos de TensorFlow en dispositivos móviles, incorporados o programables. Este consta de dos componentes principales: El intérprete, que ejecuta modelos optimizados en varios dispositivos hardware diferentes, destacando entre ellos teléfonos móviles, dispositivos Linux incorporados y microcontroladores. Y el conversor, cuyo objetivo es “convertir modelos de TensorFlow en un formato eficiente para que los use el intérprete y además, puede implementar optimizaciones para mejorar el tamaño y el rendimiento de los objetos binarios” [9]. TensorFlow Lite se diseñó con la intención de mejorar los métodos de aprendizaje automático de los dispositivos en “el perímetro” de la red, ya que a menudo tienen memoria o potencia computacional limitada, y así evitar su dependencia con los servidor. A mayores, permite mejorar los modelos en varios aspectos: Latencia: debido a que, si no se necesita un llevar a cabo la conexión con un servidor, no habrá envío y recibimiento de datos. Privacidad: al no enviar dichos datos, la información no sale del dispositivo y no hay posibilidad de interceptarla. Conectividad: no se requiere una conexión a Internet. Consumo de energía: si bien es cierto que las conexiones de red necesitan mucha energía, al no estar manteniendo una, no habrá problemas de consumos extra. A los modelos se les puede aplicar varias optimizaciones para que sean ejecutados con estas restricciones. Hay varias razones por las que se deberían optimizar: 49 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Para reducir el tamaño: Los modelos más pequeños tienen algunos beneficios como un tamaño de almacenamiento menor, un menor tiempo necesario para su descarga o un menor uso de la memoria RAM al ejecutarse. [88] La reducción de latencia en este caso se refiere al tiempo necesario en ejecutar una única inferencia. Algunas formas de optimización permiten reducir la cantidad de cálculo necesario para ejecutar la inferencia mediante un modelo. Esta también puede ser una de las causas de un mayor consumo energético. Para conseguir una mejor compatibilidad con el acelerador. Esto puede ser necesario para aceleradores de hardware como Edge TPU1[89]. Las compensaciones pueden provocar cambios en la precisión del modelo. Por ejemplo, un modelo entrenado para la reducción del tamaño o la latencia, perderá una pequeña cantidad de precisión o, en casos poco habituales, podría suponer una pequeña mejora de esta. 3.5.3. DarkNet Darknet es un entorno de trabajo para redes neuronales de código abierto para C y CUDA. Es rápido, fácil de instalar y permite la computación en CPU y GPU. Algunas de sus herramientas son: YOLO: Algoritmo de detección de objetos en tiempo real. Clasificación en ImageNet: Permite clasificar imágenes con modelos populares como ResNext. Tiny Darknet: Es una versión simplificada de Darknet, utilizada para la clasificación de imágenes. 3.6. Técnicas de simplificación Actualmente, TensorFlow Lite admite la optimización de modelos a través de la cuantificación, la poda y la agrupación en clústeres. Estos son parte del kit de herramientas de optimización de modelos de TensorFlow, que proporciona recursos para técnicas de optimización de modelos que son compatibles con TensorFlow Lite. Las técnicas principales de simplificación son: 1 La aceleración por hardware se refiere al proceso por el cual una aplicación descarga ciertas tareas de computación en componentes de hardware especializados dentro del sistema. Esto que permite una mayor eficiencia que si se ejecutara en una CPU de propósito general. 50 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA Cuantificación: Funciona reduciendo la precisión de los números utilizados para representar los parámetros de un modelo, que por defecto son números de coma flotante de 32 bits. Esto supone como resultado un tamaño de modelo menor y una velocidad de cálculo mayor. Poda: Funciona eliminando parámetros dentro de un modelo que solo tienen un impacto menor en sus predicciones. Los modelos podados tienen el mismo tamaño en disco y poseen la misma latencia en tiempo de ejecución, pero su compresión es más eficaz. Esto hace que la poda sea una técnica bastante útil para reducir el tamaño de descarga del modelo. Agrupación: Funciona agrupando los pesos de cada capa en un modelo en un número predefinido de grupos y luego compartiendo los valores de centrales para los pesos que pertenecen a cada grupo individual. Esto reduce el número de valores de peso únicos en un modelo, reduciendo así su complejidad. Como resultado, los modelos agrupados se pueden comprimir de manera más eficaz, proporcionando beneficios de implementación similares a la poda. Naturalmente, ante semejantes cambios, es habitual ver un compromiso de velocidad y tamaño a cambio de algo de precisión. Este compromiso será diferente para cada modelo ya que cada uno posee una estructura de capas diferente y es muy difícil pensar cómo afectará al modelo a priori. De hecho, en algunos casos no muy comunes, se puede observar una mejoría muy pequeña en cuanto a precisión se refiere. En este TFG se ha utilizado la cuantificación como optimizador, dejando los otros tipos para líneas futuras de investigación. 3.7. Metodología general La metodología para llevar a cabo la comparativa ha sido la siguiente: Una vez elegidos los modelos y tras ser entrenados con 3000 imágenes en 2 GPUs de Nvidia nombradas en el apartado 1.5, han sido evaluados con un conjunto de 1000 imágenes del dataset de WIDER FACE [ 8 ]. Posteriormente, se repitió el procedimiento con los modelos de detección simplificados, utilizando las mismas métricas y aplicando diferentes optimizaciones. De la evaluación se ha obtenido la puntuación o “score” de la detección (la confianza con la que el detector considera que el objeto recuadrado es una cara) y los extremos laterales y superior e inferior del recuadro. Con estos parámetros, se ha evaluado el Average Precision del modelo tanto en PASCAL-VOC [ 90 , 68 , 91 ] como en el COCO dataset [ 75 ] (con la medida 0.5:0.05:0.95). Estos valores de precisión se han podido obtener a partir de una herramienta de 51 CAPÍTULO 3. METODOLOGÍA DE LA COMPARATIVA obtención de métricas de detección de objetos disponible en [ 92 ], cuya primera versión [ 93 ] solo aporta el mAP obtenido por PASCAL VOC. En cuanto al otro parámetro, la media de los fps o frames (fotogramas) por segundo, ha sido obtenida al utilizar el detector de caras en un mismo vídeo para todos los modelos. La medida se ha calculado en cada uno de los frames dependiendo del tiempo de inferencia sobre la imagen, lo cual incluye la obtención de la imagen, su procesamiento, la obtención de las bounding boxes o cajas delimitadoras y la aplicación de estas en el fotograma de salida. De esta manera se han obtenido las dos métricas principales utilizadas a lo largo de este Trabajo de Fin de Grado: Velocidad y precisión. 52 Capítulo 4 Comparativa de modelos de detección Tras la elección de los datasets a utilizar en la comparativa, se pretende en este capítulo analizar qué modelos de detección de objetos serán utilizados para su entrenamiento como detectores faciales atendiendo a sus características. Este capítulo ilustra la toma de decisiones para tal fin y algunos de los problemas que ello ha supuesto. Se comienza con la toma de decisión de los modelos a utilizar y por último, se muestran los resultados obtenidos de cada uno de ellos tras su entrenamiento y simplificación. 4.1. Justificación de la decisión de los modelos genéricos a comparar Los modelos disponibles para este trabajo y los que han sido empleados para hacer esta comparativa pertenecen en su mayoría al Zoo de modelos de detección de TensorFlow 2 [ 5 ]. Estos modelos han sido entrenados previamente con el dataset de COCO 2017 [ 75 ] y en este caso se reentrenarán para su uso como detectores de caras. En [ 5 ] aparecen varios modelos repetidos con la diferencia de que algunos de ellos poseen dimensiones de entrada diferentes, a partir de las cuales, los valores de fps y mAP mostrados varían. Estas dimensiones afectan sólo a las imágenes de entrada, por lo que, una vez introducida una imagen en el detector, éste la redimensionará para poder trabajar correctamente con ella. Dicha redimensión será llevada a cabo mediante una interpolación y/o un diezmado bidimensional. Parece lógico pensar que cuanto mayores sean las dimensiones de la imagen una vez llevado a cabo el procesamiento, menos rápido será el modelo. Esto será debido a que tendrá que trabajar con un mayor número de valores, y por consiguiente, llevar a cabo un número aún más grande de operaciones en punto flotante o FLOPS. También se puede pensar que con imágenes más grandes la precisión será mayor debido a que será más sencillo encontrar los objetos a detectar. Esto último es lógico, ya que las propias métricas de precisión proporcionan valores de AP para tamaños de objeto grandes, medianos y pequeños, siendo estos últimos los que tienen peor 53 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN precisión en la mayoría de ocasiones. Para ayudar en la elección de los métodos a emplear, se generó un diagrama de dispersión a partir de todos los datos de precisión y velocidad encontrados en [ 5 ]. Este diagrama se muestra en la figura 37. Figura 37: Diagrama de dispersión con los diferentes modelos del zoo de TF. En la leyenda los diferentes colores hacen referencia a las dimensiones de los modelos añadiendo un color exclusivo para EfficientDet [ 77 ] debido a que no entraban agrupados en ningún otro conjunto de dimensiones. Las diferentes formas hacen referencia a los diferentes modelos. En la figura anterior se debe indicar de cara a su interpretación que los valores de velocidad serán mejores hacia la derecha del gráfico y la precisión será mejor hacia arriba. La mayor cantidad de modelos está agrupada entre los 5 y los 30 fotogramas por segundo, de los cuales, los modelos con dimensión 640x640 parecen tener buena combinación de velocidad y precisión. Los modelos con dimensión de imagen 512x512 son algo más rápidos, pero tienen peor precisión, mientras que los de 1024x1024, aunque algo más precisos en general, son bastante más lentos. Con la finalidad de comparar la mayor cantidad de modelos y sus diferentes backbones, se decidió escoger los modelos con dimensiones 640x640. Con los modelos ya escogidos, se elaboró otro diagrama de dispersión que muestra los diferentes modelos más en detalle. Este diagrama se muestra en la figura 38. 54 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN Figura 38: Diagrama de dispersión con los datos teóricos de los modelos de [ 5 ] de tamaño 640x640. Los modelos genéricos obtenidos de [5] son los siguientes: EfficientDet D1 640x640 SSD MobileNet V1 FPN 640x640 SSD MobileNet V2 FPNLite 640x640 SSD ResNet50 V1 FPN 640x640 (RetinaNet50) SSD ResNet101 V1 FPN 640x640 (RetinaNet101) SSD ResNet152 V1 FPN 640x640 (RetinaNet152) Faster R-CNN ResNet50 V1 640x640 Faster R-CNN ResNet101 V1 640x640 Faster R-CNN ResNet152 V1 640x640 Faster R-CNN Inception ResNet V2 640x640 Además de todos estos modelos, se incluirá YOLOv4 en la comparativa de los modelos de detección genéricos por ser uno de los modelos más eficientes y uno de los más utilizados en la actualidad. 55 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN 4.2. Entrenamiento y comparativa de los modelos de detección genéricos Para todos y cada uno de los modelos genéricos entrenados, se utilizó la API de detección de objetos de TensorFlow 2, a partir de la cual se obtienen las herramientas necesarias para el entrenamiento de los modelos a excepción del modelo YOLOv4, cuyo entrenamiento fue a través de Darknet. Pero antes de dar los resultados finales se debe indicar cuál es el procedimiento de cálculo de las métricas de velocidad y precisión. La propia API de detección de objetos de TensorFlow, permite disponer de herramientas para la evaluación de la precisión de los modelos entrenados de esa manera, pero, debido a que ciertos modelos no disponían de la capacidad de llevar a cabo esa evaluación concreta, fue necesario buscar otro método. Este nuevo método consiste en una interfaz gráfica creada por Rafael Padilla en 2021 [ 92 ]. Dicha herramienta permite obtener una serie muy amplia de métricas de evaluación entre las que se incluyen la métrica principal utilizada para los desafíos de COCO: AP@(0.5:0.05:0.95) y la métrica para los desafíos de PASCAL VOC: mAP con un umbral de 0.5. Para que funcione correctamente esta herramienta, se debe disponer de las imágenes a evaluar y sus anotaciones ground truth, es decir, las anotaciones que servirán como referencia para medir los resultados. Después de llevar a cabo la detección y obtener correctamente sus anotaciones, el programa puede calcular estas métricas como se indica en el apartado 3.3. En cuanto a la medida de la velocidad de ejecución, el método seguido para evaluar los modelos de detección, ha sido igual para todos. Primeramente se modifica el script correspondiente de cada uno de los modelos para que estos sean capaces de procesar un vídeo, y una vez hecho eso, se ejecuta el script. Este inicialmente carga el modelo y, para cada uno de los frames, marca el instante de tiempo inicial, obtiene la imagen, la procesa e intenta detectar todas las caras de la imagen, después mide el tiempo nuevamente. Una vez hecho esto, se calcula el tiempo de procesado por imagen para cada uno de los fotogramas del vídeo. Por último, se espera a que termine el vídeo y se calcula la media de las frecuencias como: FPS =Numero de frames Tiempo total (7) para posteriormente mostrarlo por pantalla. En la tabla 1 se ven los resultados de los modelos entrenados empleando las 2 GPUs nombradas en el apartado 1.5: Nvidia Quadro RTX 5000 y Nvidia GeForce GTX 1070 de 16 y 8 GB respectívamente. Cabe destacar que, para el cálculo de las diferentes métricas, se han utilizado paralelamente las 2 GPUs disponibles. 56 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN Postentrenamiento Preentrenamiento Modelo Fps COCO AP ( %) PASCAL AP ( %) COCO AP ( %) SSD MobileNet V1 FPN 9.09 19.39 29.63 29.1 SSD MobileNet V2 FPNLite 9.48 18.87 29.39 28.2 SSD ResNet50 V1 FPN 7.81 16.79 25.28 34.3 SSD ResNet101 V1 FPN 6.64 16.19 24.55 35..6 EfficientDet D1 640x640 6.77 1.77 3.40 38.4 Faster R-CNN ResNet50 V1 4.60 18.72 37.46 29.3 Faster R-CNN ResNet101 V1 4.24 23.12 40.96 31.8 Faster R-CNN Inception ResNet V2 1.35 22.26 45.31 37.7 YOLOv4 8.37 32.26 57.96 – Tabla 1: Resultados de la comparativa entre modelos genéricos entrenados para detección de caras. Tanto en la tabla 1 como en el diagrama de dispersión que se muestra en la figura 39 se puede observar como la mayoría de modelos de la API de TensorFlow que pertenecen a una misma familia, comparten una precisión muy similar en cualquiera de las dos métricas, ya sea PASCAL [68], o COCO [75]. Las diferencias de valores entre los resultados de COCO y PASCAL tienen sentido debido a que, para que PASCAL acepte una detección como válida, solo tiene que superar el umbral de 0.5. Mientras que para COCO, se tienen que superar 10 umbrales: desde 0.5 hasta 0.95 con intervalos crecientes de 0.05 y después llevar a cabo la media de estos valores resultantes, obteniendo unos valores de precisión por debajo de los del otro método. 57 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN La figura 39 presenta los resultados de la tabla 1 en un diagrama de dispersión. Figura 39: Diagrama de dispersión con los modelos del zoo de TF antes de su entrenamiento (indicados con rombos) y después de él (indicados con círculos y triángulos dependiendo de la métrica). También aparecen incluidos los resultados de YOLOv4. En la figura 39 se toma de referencia la velocidad de ejecución de los modelos después del entrenamiento de detección de caras para que las diferencias de precisión se vean claramente. Las diferencias de velocidad no se comparan debido a que el método utilizado para la medición de este parámetro llevado a cabo en [ 5 ] no queda claro, por lo que a cabo una comparativa no sería justo. La figura 39, muestra como la precisión se ha visto algo reducida tras el entrenamiento. En este aspecto destaca el modelo EfficientDet, el cual ha sufrido la mayor reducción de precisión. Los demás modelos, poseen una precisión similar en el preentrenamiento y en la métrica PASCAL del postentrenamiento, mientras que está ligeramente empeorada en la métrica COCO del postentrenamiento. Las figuras 40(a) a 40(i) muestran la detección de los diferentes modelos en una imagen arbitraria después de su entrenamiento. 58 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN Debido a esto, la conversión de [ 5 ] se llevó a cabo únicamente en las variantes de los modelos SSD, con backbones ResNet y MobileNet, a los que, por simplicidad, se les denominará de ahora en adelante SSD ResNet101/50 Lite o SSD MobileNet v1/2 Lite. También se simplificaron los modelos YOLOv4 y las 2 variantes de UltraLight Face Detection. El formato resultante de la conversión es float32. Este formato es el empleado por defecto en las conversiones al formato de TensorFlow Lite y por consiguiente, es la simplificación menos profunda. Cabe destacar que, a diferencia de los modelos sin simplificar, los simplificados necesitan ser invocados para su aplicación en una imagen o vídeo. Dicha invocación será más o menos costosa dependiendo del tamaño del objeto invocado, por lo que, modelos de 100 MB, serán mucho más lentos que aquellos que pesen 10 MB. Esta información hay que tenerla en cuenta desde este punto en adelante, debido a que la velocidad de estos modelos viene determinada por este factor, por el formato del modelo y por el tipo de optimización. Posteriormente se procedió a la optimización de estos modelos. Dicha optimización fue llevada a cabo mediante una cuantificación posterior al entrenamiento, que funciona reduciendo la precisión de los números utilizados para representar los parámetros de un modelo. Se llevaron a cabo dos optimizaciones: Float16: La conversión de pesos a valores de punto flotante de 16 bits da como resultado una reducción a la mitad en el tamaño del modelo. Algunos hardware, como las GPU, pueden computar de forma nativa en esta aritmética de precisión reducida, logrando una aceleración con respecto a la ejecución tradicional de punto flotante. Un modelo convertido a pesos float16 aún se puede ejecutar en la CPU sin modificaciones adicionales: los pesos float16 se muestrean a float32 antes de la primera inferencia, lo que permite una reducción significativa en el tamaño del modelo a cambio de un impacto mínimo en la latencia y la precisión. Int8: Es una estrategia de optimización que convierte números de coma flotante de 32 bits (como pesos y salidas de activación) a los números de coma fija de 8 bits más cercanos. Esto da como resultado un modelo más pequeño y una mayor velocidad de inferencia, lo que es valioso para dispositivos de baja potencia como los microcontroladores. La única diferencia es que este modelo está optimizado para ejecutarse en CPU en lugar de GPU, por lo que algunos resultados podrían ser peores que el original. Se debe recordar que este tipo de optimización, no tiene como objetivo reducir la velocidad de inferencia en GPU, sino permitir que los dispositivos funcionen en dispositivos con poca capacidad de procesamiento, puesto que a un procesador le será más sencillo trabajar antes con valores enteros que con coma flotante. Esto es debido a cómo son utilizados los valores enteros o de punto flotante dentro del ordenador. Un entero es utilizado como un valor binario verdadero potencia de 2, generalmente reservando un valor para el signo. 65 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN Mientras que un número en coma flotante necesita el bit de signo, un exponente y una mantisa para ser formado [94]. Tras la conversión al formato TF Lite, los modelos sufrieron cambios en su peso, precisión y velocidad. Estos valores se pueden observar en las tablas 3 y 4. No simplificados float32 float16 int8 No simplificados float32 float16 int8 Modelo COCO AP ( %) PASCAL AP ( %) SSD MobileNet v1 19.39 15.56 15.56 15.33 29.63 26.50 23.51 23.50 SSD MobileNet v2 18.87 15.25 15.26 15.24 29.39 23.17 23.16 23.16 SSD ResNet50 16.79 12.12 12.12 12.12 25.28 18.39 18.37 18.19 SSD ResNet101 16.19 11.44 11.43 11.38 24.55 17.40 17.39 17.38 YOLOv4 32.26 32.25 32.25 31.96 57.96 57.96 57.93 57.58 UL Face Det RFB 17.72 16.58 16.59 16.75 38.37 33.72 33.74 33.69 UL Face Det Slim 15.93 14.75 14.76 14.73 34.29 30.01 30.09 30.28 Tabla 3: Tabla comparativa de la precisión de los modelos antes y después de su simplificación. La tabla 3 muestra un descenso generalizado de la precisión de los modelos entrenados tras la simplificación. Los modelos más afectados son los pertenecientes a [ 5 ], mientras que YOLO no ha resultado afectado prácticamente nada en ninguna de las métricas para ninguna de las simplificaciones. Los modelos de UltraLight Face Detection no han sufrido apenas disminución de la precisión de una simplificación a la siguiente, no obstante, sí que se observa una diferencia notable de los modelos sin simplificar a los simplificados. Por lo observado en la tabla 3, queda demostrado que, al simplificar un modelo, apenas se va a ver afectada su precisión. La tabla 4 muestra las diferentes velocidades de ejecución de los modelos tras su simplificación y en comparación muestra también sus pesos. 66 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN No simplificados float32 float16 int8 No simplificados float32 float16 int8 Modelo Fps Peso en MB SSD MobileNet v1 9.09 1.00 0.94 0.0063 7.5 114.2 57.2 29.7 SSD MobileNet v2 9.48 3.15 2.93 0.10 10.5 11.6 5.9 4.0 SSD ResNet50 7.81 0.61 0.62 0.0043 11.0 193.3 96.7 49.8 SSD ResNet101 6.64 0.45 0.49 0.0032 18.1 265.7 133.0 68.5 YOLOv4 8.37 0.25 0.25 0.15 11.0 244.1 122.2 61.4 UL Face Det RFB 10.11 32.96 31.04 4.60 4.8 1.1 0.6 0.41 UL Face Det Slim 10.62 35.80 34.23 6.15 4.4 1.0 0.55 0.38 Tabla 4: Tabla comparativa de la velocidad y peso de los modelos antes y después de su simplificación. Se puede observar en la tabla 4 como los modelos sin simplificar no tienen una dependencia clara entre el peso y la velocidad, pero si se miran con detenimiento los valores de peso y velocidad de los modelos simplificados en float32, se puede intuir una relación. A mayor peso del modelo, menor velocidad, y viceversa. Los modelos que más destacan son las variantes de UltraLight Face Detection por su increíble velocidad. Por otro lado, una vez se lleva a cabo la conversión a float16, se esperaría un aumento de velocidad acompañando a la disminución del tamaño de los modelos, pero esto no parece suceder, sino que en algunos casos, incluso disminuye. Por último, cabe recordar que la optimización en int8 no está pensada para ser ejecutada en GPU, por lo que esas velocidades son las relativas a la ejecución de los detectores de caras en la CPU del equipo (Intel(R) Xeon(R) CPU E5-2697 v4 @ 2.30GHz), por lo que sus resultados tan bajos al medir la velocidad tienen sentido. La figura 43 muestra una comparativa gráfica de los modelos de detección simplificados y sin simplificar, tras las optimizaciones pertinentes. 67 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN (a) Diagrama de dispersión de los modelos sin simplificar. (b) Diagrama de dispersión de los modelos simplificados en el formato float32. (c) Diagrama de dispersión de los modelos en el formato float16. (d) Diagrama de dispersión de los modelos en el formato int8. Figura 43: Comparativa de los diferentes modelos antes de la simplificación y después de esta para las diferentes optimizaciones. 68 CAPÍTULO 4. COMPARATIVA DE MODELOS DE DETECCIÓN En la figura 43 se puede observar, al igual que se comentó previamente, como la precisión permanece casi intacta para todos los detectores mientras que la velocidad es la gran afectada. Se observa mejor como, los modelos de UltraLight Face Detection, poseen una velocidad muy superior a los demás una vez han sido simplificados y optimizados. Por ello, para cualquier dispositivo computacionalmente poco potente, la recomendación sería emplear cualquiera de las versiones del detector de caras ultraligero. 69 Capítulo 5 Conclusiones En relación al objetivo general comentado, en este trabajo de fin de grado se ha presentado una comparativa de modelos de detección genéricos y específicos entrenados para el reconocimiento facial eficiente en el espectro visible. Así como una comparativa de los mismos modelos tras su simplificación y posterior optimización. Para ello, inicialmente se ha realizado un estudio de los algoritmos basados en Deep Learning, empleados habitualmente en tareas de detección de objetos. Tras su análisis, se ha optado por la comparación de estos modelos para la obtención de un grupo final sobre el que realizar los experimentos objeto del presente TFG. Posteriormente, se ha llevado a cabo el entrenamiento de estos algoritmos de la manera más justa posible con las herramientas disponibles en la Object Detection API de TensorFlow para finalmente llevar a cabo la simplificación de los modelos disponibles. Por último, se han evaluado estos algoritmos de reconocimiento facial mediante una serie de pruebas con la finalidad de anotar los resultados fruto de la evaluación, y proceder al análisis final de estos. El entrenamiento llevado a cabo en los modelos de detección ha aportado un conjunto de resultados a partir de los cuales se puede percibir cuales de los modelos pueden funcionar como mejores detectores. De los modelos entrenados destaca la versión 4 del modelo YOLO por su gran precisión en la inferencia, y el modelo FACED por su gran velocidad en comparación con los demás. Y, aunque la diferencia de velocidad es algo grande entre estos dos, YOLO sobresale ante los demás por ser el modelo más completo de todos, consiguiendo resultados destacables en los dos parámetros 70 CAPÍTULO 5. CONCLUSIONES medidos: Velocidad y exactitud en la detección. De la simplificación de los modelos al formato float32 con las herramientas de TensorFlow Lite, destacan claramente los modelos de UltraLight Face Detection por su gran velocidad de inferencia, la cual, gracias a su baja latencia, pueden procesar imágenes en tiempo real. A su vez, la precisión de YOLO destaca por encima de todos los demás, esta vez siendo altamente empeorado por su tiempo de procesamiento por imagen. Por ello, la comparativa de los modelos optimizados en float32 muestra que el modelo más eficiente para la detección facial en dispositivos computacionalmente poco potentes, es posiblemente el modelo UltraLight Face Detection versión RFB, ya que, a tales velocidades se busca más una precisión mayor que la posibilidad de procesar unos pocos más frames por segundo. La simplificación al formato float16 devuelve unos resultados bastante similares a float32 siendo la reducción de los tamaños de modelos, el parámetro a destacar. Al igual que el anterior caso, el modelo UltraLight Face Detection sobresale de entre todos los demás gracias a su gran velocidad de inferencia que, tras la optimización, apenas ha perdido precisión. Los resultados tras la simplificación de los modelos a int8 reflejan la velocidad a la que un microcontrolador o un dispositivo poco potente procesarían las imágenes de las cuales detectar una cara. Nuevamente UltraLight Face Detection sería el modelo óptimo para utilizar bajo estas características, ya que, aunque su velocidad de inferencia se haya visto reducida, sigue poseyendo unos resultados bastante mejores que los demás. A pesar de todo ello, se pueden destacar las siguientes conclusiones sobre los procesamientos llevados a cabo en los modelos de detección: Entrenamiento: A pesar de ser el paso más largo de todos, es el más importante, puesto que será el que permita que un modelo obtenga unos resultados buenos o mediocres. Es importante entrenar con un batch_size grande, para así obtener mejores resultados siempre sin perder de vista las gráficas de pérdidas totales. Conjuntos de imágenes: Obtener un buen set de entrenamiento y evaluación es clave para conseguir buenos resultados. Generalmente, a mayor similitud entre el dataset de entrenamiento escogido y las imágenes que se encontrará el modelo en situaciones reales, mejores resultados se obtendrán. Por ello se concluye que la correcta elección de los sets de entrenamiento y validación son muy relevantes para un buen desempeño. Detectores genéricos frente a específicos: Los resultados muestran claramente que los modelos creados para una tarea concreta, tienen generalmente un mejor desempeño que los demás en cuanto a velocidad se refiere. No obstante, el paso más importante para obtener los mejores resultados posibles es el entrenamiento del modelo. En esto se incluye 71 CAPÍTULO 5. CONCLUSIONES el asegurar que se evitan las situaciones de overfitting y controlar que no se detenga el entrenamiento prematuramente. Por otro lado, un modelo genérico bien entrenado, como se ha podido observar, puede poseer una precisión mayor que un modelo creado para ese fin. Optimización: La optimización utilizada es muy útil para reducir el tamaño del modelo sin perder apenas precisión de detección. El formato float32 es el estándar utilizado en la simplificación del modelo a la versión Lite, no obstante, el formato float16 presenta unos resultados casi iguales con tamaños en el modelo la mitad de grandes. Por otro lado, el formato int8 está pensado concretamente para dispositivos en los que los cálculos con punto flotante sean muy costosos. En caso de tener un dispositivo algo potente, float16 sería el formato ideal para la simplificación del modelo escogido. En caso contrario, int8 deberá ser el formato escogido para que el dispositivo pueda llevar a cabo la detección. Modelos finales: Los detectores que mejores resultados han presentado son YOLOv4 por su gran precisión, FACED por su velocidad y UltraLight Face Detection en los modelos optimizados por su gran velocidad de procesamiento y precisión aceptable. Finalmente, observando el desempeño de los algoritmos con una visión global, se puede concluir que, aunque existe cierto margen de mejora, todos los modelos son funcionales y cumplen su labor correctamente en la mayoría de ocasiones. Si bien es cierto que hay algunos modelos con un mejor desempeño que otros, cualquier modelo de los presentes en este documento serviría aceptablemente para un trabajo de exigencia media. 5.1. Líneas futuras A continuación se esbozan algunas líneas futuras cuyo desarrollo podría llevarse a cabo en un estudio futuro debido a que no se han podido explorar con suficiente detenimiento durante el desarrollo de este documento: Optimización de los modelos con los tipos restantes nombrados en el apartado 3.6. Combinación de los diferentes tipos de optimización en un mismo modelo con objeto de determinar cual es la combinación más eficiente. Estudio en profundidad de la combinación óptima entre pasos en el entrenamiento de los modelos y el batch_size introducido para diferentes hardwares. Comparativa en detalle de los modelos de detección de una misma familia con diferentes tamaños de entrada. Aplicación de los modelos utilizados en el espectro infrarrojo. Aplicación de los mejores modelos en microcontroladores para conseguir una detección eficiente. 72 CAPÍTULO 5. CONCLUSIONES Pruebas de los modelos en escenarios reales. 73 Bibliografía [1] P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. CVPR 2001, volume 1, pages I–I, 2001. [2] Yaniv Taigman, Ming Yang, Marc’Aurelio Ranzato, and Lior Wolf. DeepFace: Closing the Gap to Human-Level Performance in Face Verification. In 2014 IEEE Conference on Computer Vision and Pattern Recognition, pages 1701–1708, 2014. [3] Dr Qaim Rizvi. A review on face detection methods. Journal of Management Development and Information Technology, 11, 02 2011. [4] Klemen Grm, Vitomir Štruc, Anaïs Artiges, Matthieu Caron, and Hazim Ekenel. Strengths and weaknesses of deep learning models for face recognition against image degradations. IET Biometrics, 7, 09 2017. [5] Vighnesh Birodkar. Tensorflow Object Detection Model Zoo. https: //github.com/tensorflow/models/blob/master/research/object_ detection/g3doc/tf2_detection_zoo.md, 2021. [6] Alexey Bochkovskiy, Chien-Yao Wang, and Hong-Yuan Mark Liao. YOLOv4: Optimal Speed and Accuracy of Object Detection. arXiv, 2020. [7] Martín Abadi, Ashish Agarwal, Paul Barham, Eugene Brevdo, Zhifeng Chen, Craig Citro, Greg S. Corrado, Andy Davis, Jeffrey Dean, Matthieu Devin, Sanjay Ghemawat, Ian Goodfellow, Andrew Harp, Geoffrey Irving, Michael Isard, Yangqing Jia, Rafal Jozefowicz, Lukasz Kaiser, Manjunath Kudlur, Josh Levenberg, Dandelion Mané, Rajat Monga, Sherry Moore, Derek Murray, Chris Olah, Mike Schuster, Jonathon Shlens, Benoit Steiner, Ilya Sutskever, Kunal Talwar, Paul Tucker, Vincent Vanhoucke, Vijay Vasudevan, Fernanda Viégas, Oriol Vinyals, Pete Warden, Martin Wattenberg, Martin Wicke, Yuan Yu, and Xiaoqiang Zheng. TensorFlow: Large-Scale Machine Learning on Heterogeneous Systems, 2015. Software available from tensorflow.org. [8] Shuo Yang, Ping Luo, Chen Change Loy, and Xiaoou Tang. WIDER FACE: A Face Detection Benchmark. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016. 74