scieee AI-readable full text Open interactive document viewer

Diseño de un umbral dinámico para la mejora de algoritmos de verificación facial a diferentes distancias

Díez Tomillo, Julio

Abstract

Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática

Full text

UNIVERSIDAD DE VALLADOLID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS DE TELECOMUNICACIÓN TRABAJO FIN DE MÁSTER MÁSTER UNIVERSITARIO EN INGENIERÍA DE TELECOMUNICACIÓN Diseño de un umbral dinámico para la mejora de algoritmos de verificación facial a diferentes distancias Autor: D. Julio Díez Tomillo Tutor: Dr. D. Juan Carlos Aguado Manzano VALLADOLID, SEPTIEMBRE 2022 II TRABAJO FIN DE GRADO TÍTULO: Diseño de un umbral dinámico para la mejora de algoritmos de verificación facial a diferentes distancias AUTOR: D. Julio Díez Tomillo TUTOR: Dr. D. Juan Carlos Aguado Manzano DEPARTAMENTO: Teoría de la Señal y Comunicaciones e Ingeniería Telemática TRIBUNAL PRESIDENTE: Ignacio de Miguel Jiménez VOCAL: Ramón José Durán Barroso SECRETARIO: Ramón de la Rosa Steinz SUPLENTE: Patricia Fernández Reguero SUPLENTE: Javier Aguiar Pérez SUPLENTE: María Jesús Verdú Pérez III RESUMEN Los sistemas de verificación facial están presentes en multitud de situaciones cotidianas que se encuentran en el día a día como por ejemplo desbloquear el teléfono móvil. Las verificaciones faciales desde drones son una posibilidad para no interferir o invadir la privacidad de la persona siendo verificada. Pero para ello, hace falta un sistema que pueda realizarlas desde largas distancias, lo que conlleva una resolución muy baja de la cara de la persona. En este proyecto se propone un sistema con umbrales dinámicos que varían en función de la distancia del dron a la persona para mejorar la precisión de los algoritmos de verificación facial sin tener que reentrenarlos. Se ha conseguido mejorar la precisión de todos los algoritmos de verificación facial comparados hasta en un 30% en distancias entre 2 y 30 metros, alcanzando como máximo un 96,8%. Además, se han usado dos métricas diferentes para poder compararlas y analizar cuál funciona mejor con cada algoritmo y a qué distancias. Con ello se ha logrado un sistema de verificación facial que puede funcionar en drones de bajo presupuesto sin tener que usar una cámara de muy alta resolución y coste. Con nuestro sistema se pueden realizar verificaciones de una cara teniendo una resolución únicamente de aproximadamente 15 pixeles de tamaño. PALABRAS CLAVE Verificación facial, Reconocimiento facial, Detección facial, Distancia de coseno, Distancia euclídea, Umbral, Dron ABSTRACT Face verification systems are used in everyday situations such as unlocking a smartphone. Face verifications from drones are a possibility to avoid invading the privacy of the person being verified. For that, a system that can verify at long distances with low resolution faces is needed. This project proposes a system with dynamic thresholds that vary according to the distance from the drone to the person to improve the accuracy of the face verification algorithms without further training. The accuracy has been improved by 30% in some cases between 2 and 30 meters achieving a maximum of 96.8%. Two metrics has been used to compare which one is better for each distance and algorithm. A face verification system has been achieved that can work in low-cost drones without a high resolution and expensive camera. Our system can perform face verification with a face resolution of only 15 pixels. KEYWORDS Face verification, Face recognition, Face detection, Cosine distance, Euclidean distance, Threshold, UAV IV AGRADECIMIENTOS En primer lugar, me gustaría agradecer a mi tutor Juan Carlos por su paciencia conmigo durante el tiempo que he estado trabajando en este proyecto. Además de todas las correcciones y consejos que me ha dado para mejorar no solo en esta memoria, sino también en futuras. En segundo lugar, a mis tutores de la University of the West of Scotland (UWS), Jose María Alcaraz y Qi Wang por darme la idea de este trabajo, además de proporcionarme los medios materiales para poder realizarlo. También me gustaría agradecer a mis compañeros Ignacio y Gelayol por su ayuda en la realización de este proyecto, además de proporcionarme todas las explicaciones y consejos que podían darme. Quiero agradecer a mi familia por su apoyo y ánimos durante el tiempo que estuve trabajando en este proyecto. En especial mis padres Elisa y Carlos, y mis hermanos Patricia y Javier. Finalmente, me gustaría dar un agradecimiento especial también a todos mis amigos que han estado apoyándome, que me comprendían cuando no podía quedar por tener que escribir la memoria y que me ofrecieron toda la ayuda que podían: Ángel, Jimena, Moha, Kike, Nacho y Luis. A todos ellos, muchas gracias. V ÍNDICE CAPÍTULO I - INTRODUCCIÓN ............................................................................... 1 Motivación del proyecto ............................................................................................... 1 Objetivos ....................................................................................................................... 2 Metodología .................................................................................................................. 2 Medios .......................................................................................................................... 3 Organización del documento ........................................................................................ 4 CAPÍTULO II - MARCO TEÓRICO .......................................................................... 5 Reconocimiento facial y Verificación Facial ................................................................ 5 Pipeline usado para verificación facial ......................................................................... 7 CAPÍTULO III – ESTADO DEL ARTE - COMPARATIVA ................................. 12 Datasets disponibles ................................................................................................... 12 a) Labelled Faces in the Wild (LFW) [9] ............................................................ 12 b) YouTube Faces (YTF) [10] ............................................................................. 13 c) DroneSURF [11] .............................................................................................. 14 d) VGG-Face 2 ..................................................................................................... 15 e) DroneFace [13] ................................................................................................ 15 f) WiderFace [14] ................................................................................................ 16 Algoritmos de detección facial ................................................................................... 17 a) Viola Jones [15] ............................................................................................... 17 b) RetinaFace [16] ................................................................................................ 18 c) MTCNN [17] ................................................................................................... 18 d) Dlib [18] ........................................................................................................... 18 e) SSD [19] .......................................................................................................... 18 Algoritmos de extracción de características ............................................................... 19 a) FaceNet [23] .................................................................................................... 20 b) OpenFace [24] .................................................................................................. 20 c) ArcFace [27] .................................................................................................... 20 VI d) VGG-Face [29] ................................................................................................ 20 Métricas de cálculo de distancias ................................................................................ 21 a) Coseno [30] ...................................................................................................... 21 b) Euclídea [31] .................................................................................................... 21 c) Manhattan [31] ................................................................................................. 22 CAPÍTULO IV - NUEVO DISEÑO PROPUESTO .................................................. 23 Nuevo pipeline ............................................................................................................ 23 a) Detección de caras ........................................................................................... 23 b) Preprocesamiento ............................................................................................. 24 c) Red siamesa ..................................................................................................... 25 d) Cálculo de distancias ....................................................................................... 25 e) Toma de decisiones .......................................................................................... 26 Diseño del umbral dinámico ....................................................................................... 28 a) Dataset ............................................................................................................. 28 b) Definición de una escala .................................................................................. 32 c) Algoritmo desarrollado .................................................................................... 35 CAPÍTULO V – CÁLCULO DE LOS UMBRALES ................................................ 39 Aplicación del nuevo pipeline .................................................................................... 39 a) Distancia de coseno ......................................................................................... 39 b) Distancia euclídea ............................................................................................ 52 Umbrales recomendados ............................................................................................. 64 CAPÍTULO VI – ANÁLISIS DE LOS RESULTADOS OBTENIDOS .................. 66 Evaluación de la precisión .......................................................................................... 66 a) Distancia de coseno ......................................................................................... 66 b) Distancia euclídea ............................................................................................ 70 Evaluación empírica de la mejor métrica para cada algoritmo ................................... 74 Evaluación del tiempo de inferencia ........................................................................... 74 CAPÍTULO VII – CONCLUSIONES Y LÍNEAS FUTURAS ................................ 77 BIBLIOGRAFÍA .......................................................................................................... 79 VII LISTA DE FIGURAS FIG. 1. PROCESO SIMPLIFICADO DE VERIFICACIÓN FACIAL........................................................... 6 FIG. 2. PROCESO SIMPLIFICADO DE RECONOCIMIENTO FACIAL .................................................... 6 FIG. 3. PROCESO DE VERIFICACIÓN FACIAL CON LAS CUATRO ETAPAS EXPLICADAS ................... 8 FIG. 4. EJEMPLO DE RECORTE Y ALINEACIÓN FACIAL. .................................................................. 9 FIG. 5. EJEMPLO DE USO DE ESRGAN EN DOS IMÁGENES DE BAJA RESOLUCIÓN. ..................... 10 FIG. 6. ÚLTIMAS ETAPAS SIMPLIFICAS DEL PROCESO DE VERIFICACIÓN FACIAL ........................ 11 FIG. 7. EJEMPLOS DE IMÁGENES EN EL DATASET LFW ............................................................... 13 FIG. 8. EJEMPLOS DE FRAMES EN LOS VIDEOS DE YTF DATASET ............................................... 14 FIG. 9. EJEMPLOS DE IMÁGENES CONTENIDAS EN EL DATASET VGG-FACE 2 ............................ 15 FIG. 10. EJEMPLO DE IMÁGENES DEL DATASET WIDERFACE MOSTRANDO DIFERENTES SITUACIONES COMPLEJAS QUE PUEDEN DIFICULTAR LA DETECCIÓN FACIAL ..................... 16 FIG. 11. COMPARATIVA DE LOS ALGORITMOS DE DETECCIÓN FACIAL ....................................... 19 FIG. 12. DISEÑO PROPUESTO PARA REALIZAR VERIFICACIÓN FACIAL USANDO UMBRALES DINÁMICOS EN FUNCIÓN DE LA DISTANCIA ......................................................................... 27 FIG. 13. DISTANCIAS DE LA CÁMARA DEL DRON A LA CARA DEL USUARIO DE LOS VIDEOS CONTENIDOS EN EL DATASET CREADO ................................................................................ 29 FIG. 14. FRAMES OBTENIDOS DE VIDEOS DEL DATASET CREADO A CUATRO DISTANCIAS DIFERENTES (2, 7, 15 Y 30 METROS) .................................................................................... 32 FIG 15. ROSTROS RECORTADOS A LAS OCHO DIFERENTES DISTANCIAS GRABADAS EN EL DATASET .............................................................................................................................. 34 FIG 16. ESCALA PARA EL UMBRAL DINÁMICO EN FUNCIÓN DE LA ANCHURA DE LA CARA RECORTADA EN PIXELES ...................................................................................................... 35 FIG. 17. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE FACENET. LA MÉTRICA USADA ES DISTANCIA DE COSENO .... 41 FIG. 18. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE FACENET512. LA MÉTRICA USADA ES DISTANCIA DE COSENO ............................................................................................................................................. 42 FIG. 19. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE OPENFACE. LA MÉTRICA USADA ES DISTANCIA DE COSENO.. 43 FIG 20. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE ARCFACE. LA MÉTRICA USADA ES DISTANCIA DE COSENO ... 44 FIG 21. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE VGG-FACE. LA MÉTRICA USADA ES DISTANCIA DE COSENO . 45 FIG 22. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE FACENET. LA MÉTRICA USADA ES DISTANCIA DE COSENO .... 47 FIG 23. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE FACENET512. LA MÉTRICA USADA ES DISTANCIA DE COSENO ............................................................................................................................................. 48 FIG 24. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE OPENFACE. LA MÉTRICA USADA ES DISTANCIA DE COSENO.. 49 VIII FIG 25. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE ARCFACE. LA MÉTRICA USADA ES DISTANCIA DE COSENO ... 50 FIG 26. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE VGG-FACE. LA MÉTRICA USADA ES DISTANCIA DE COSENO . 51 FIG 27. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE FACENET. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA ...... 53 FIG 28. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE FACENET512 EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 54 FIG 29. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE OPENFACE EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 55 FIG 30. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE ARCFACE EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 56 FIG 31. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 5 METROS DE DISTANCIA DE VGG-FACE EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 57 FIG 32. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE FACENET EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 59 FIG 33. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE FACENET512 EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 60 FIG 34. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE OPENFACE EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 61 FIG 35. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE ARCFACE EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 62 FIG 36. DISTRIBUCIÓN DE DISTANCIAS Y LA PRECISIÓN EN FUNCIÓN DEL UMBRAL USADO A 15 METROS DE DISTANCIA DE VGG-FACE EVALUADOS. LA MÉTRICA USADA ES DISTANCIA EUCLÍDEA............................................................................................................................ 63 FIG. 37. PRECISIÓN DE LOS ALGORITMOS A DIFERENTES DISTANCIAS USANDO LOS UMBRALES PREDEFINIDOS Y LOS DINÁMICOS USANDO DISTANCIA DE COSENO COMO MÉTRICA ......... 69 FIG. 38. PRECISIÓN DE LOS ALGORITMOS A DIFERENTES DISTANCIAS USANDO LOS UMBRALES PREDEFINIDOS Y LOS DINÁMICOS USANDO DISTANCIA DE EUCLÍDEA COMO MÉTRICA ..... 73 FIG. 39. TIEMPO DE INFERENCIA DE LOS ALGORITMOS COMPARADOS ....................................... 75 IX LISTA DE TABLAS TABLA 1. COMPARATIVA DE LOS DIFERENTES DATASETS EXISTENTES ........................................................ 17 TABLA 2. COMPARATIVA DE LOS DIFERENTES ALGORITMOS DE EXTRACCIÓN DE CARACTERÍSTICAS FACIALES ............................................................................................................................................ 21 TABLA 3. CARACTERÍSTICAS DEL DATASET CREADO .................................................................................. 29 TABLA 4. DISTANCIA DE LA CÁMARA DEL DRON A LA CARA FRENTE AL TAMAÑO DEL ROSTRO DETECTADO EN PIXELES ......................................................................................................................................... 33 TABLA 5. UMBRALES PREDEFINIDOS PARA LOS ALGORITMOS SELECCIONADOS USANDO LA DISTANCIA DE COSENO ............................................................................................................................................. 64 TABLA 6. UMBRALES PREDEFINIDOS PARA LOS ALGORITMOS SELECCIONADOS USANDO LA DISTANCIA EUCLÍDEA .......................................................................................................................................... 64 TABLA 7. UMBRALES RECOMENDADOS PARA LOS ALGORITMOS SELECCIONADOS USANDO LA DISTANCIA DE COSENO ............................................................................................................................................. 65 TABLA 8. UMBRALES RECOMENDADOS PARA LOS ALGORITMOS SELECCIONADOS USANDO LA DISTANCIA EUCLÍDEA .......................................................................................................................................... 65 TABLA 9. PRECISIÓN DE LOS DIFERENTES ALGORITMOS USANDO LOS UMBRALES DINÁMICOS Y DISTANCIA DE COSENO ........................................................................................................................................ 70 TABLA 10. PRECISIÓN DE LOS DIFERENTES ALGORITMOS USANDO LOS UMBRALES DINÁMICOS Y DISTANCIA EUCLÍDEA .......................................................................................................................................... 73 TABLA 11. RANGOS DE LA ESCALA DONDE SE CONSIGUEN LAS MEJORES MEJORAS CON EL UMBRAL DINÁMICO PARA CADA ALGORITMO Y CUÁL ES LA MÉTRICA RECOMENDADA PARA CADA UNO DE ELLOS ................................................................................................................................................. 74 7 El reconocimiento facial además es un proceso mucho más lento que la verificación facial, ya que hay que comparar con todas las imágenes presentes en la base de datos. A mayor tamaño de la base de datos mayor será el tiempo que llevará hacer el reconocimiento facial, por lo que el tiempo que se tarda en realizar el reconocimiento facial es variable en función de la base de datos. Por otro lado, en la verificación facial, al solo tener que comparar con una cara, el tiempo que tarda es más o menos estable, variando únicamente en función del preprocesamiento que hay que hacer en la imagen de entrada. Con ello es más fácil conseguir el objetivo de realizar verificación facial en tiempo real, ya que es un proceso más rápido que el reconocimiento y con un tiempo más o menos constante. Otra diferencia entre los dos métodos es la manera en la que se toma la decisión final para obtener los resultados. En el reconocimiento facial se puede usar un algoritmo KNN (K Nearest Neighbour o K vecinas más cercanas en español) [3]. Este almacena todas las clases disponibles (todas las caras disponibles en la base de datos) y clasifica los datos (las nuevas caras) en función de su similaridad. Es decir, asocia la cara que queremos reconocer con la cara más cercana en nuestra base de datos. A eso se puede añadir un umbral mínimo para el caso en el que la cara a identificar no está contenida en la base de datos. Por otro lado, en la verificación facial el procedimiento para obtener el resultado suele ser más sencillo. Para ello, únicamente se calcula la distancia entre las características de las dos caras a comparar mediante alguna métrica y si supera un umbral mínimo se identifican como la misma persona y si se encuentra por debajo serán personas diferentes. Por ello, es crítico encontrar un umbral óptimo, ya que nos permitirá minimizar el número de falsos positivos de nuestros algoritmos a la vez que aumentamos su precisión. Si el umbral no se elige de forma correcta puede llevar a que se verifique erróneamente a muchos usuarios, ya sea por falsos positivos (al poner un umbral muy laxo) o falsos negativos (al poner un umbral demasiado restrictivo). Pipeline usado para verificación facial Este proyecto se va a centrar únicamente en la verificación facial, por lo que solo trataremos de identificar si dos caras pertenecen a la misma persona o no. El proceso de verificación facial necesita unas etapas previas para preprocesar las imágenes que van a ser utilizadas para maximizar la precisión de los algoritmos. En función de qué algoritmos se usen, los pipelines (el proceso) de verificación facial pueden cambiar. Además, cada autor usa uno diferente pudiendo añadir, quitar o unir etapas en función de lo que se necesite. A pesar de ello, en la Fig. 3 se puede ver un pipeline básico completo de verificación facial con las etapas típicas más usadas. Este pipeline se puede dividir en cuatro partes básicas bien diferenciadas [4]: • Detección facial: La primera etapa casi siempre será la de detección facial. Su objetivo, como bien dice su nombre es detectar una cara en la imagen. Habitualmente, en las imágenes que se usan para verificación facial, la cara 8 representa únicamente una pequeña parte de toda la imagen. Por ello, lo primero que hay que hacer es detectar la cara. En una imagen se pueden encontrar más de una cara, por ejemplo, si es una cámara en un aeropuerto o situada en la calle. Todas las caras detectadas en una imagen habrá que verificarlas para ver si coinciden con la persona objetivo. Para realizar la detección facial, en imágenes muy lejanas o de baja resolución, donde la cara es muy pequeña en pixeles, a veces es conveniente usar previamente un algoritmo de detección de personas, y a continuación detectar la cara usando solo el recorte de la persona. Con ello se puede aumentar notablemente el número de caras localizadas en una imagen. En el siguiente capítulo se analizarán los algoritmos más usados para realizar detecciones faciales. Fig. 3. Ejemplo de proceso de verificación facial en cuatro etapas • Recorte y alineación facial: La siguiente etapa será procesar la detección facial anterior. Para ello, lo primero que se debe hacer es realizar un recorte de la cara. Se cogen las coordenadas obtenidas por el algoritmo de detección facial que dice donde se encuentra la cara y se recortan esas coordenadas de la imagen completa. Con ello, se consigue tener únicamente una imagen de la cara. A continuación, para mejorar la precisión de la verificación facial se puede realizar un alineamiento facial. Si la cara está torcida o girada se pueden usar algoritmos para colocar correctamente la cara, y que sea más similar a la que queremos comparar. En la Fig. 4 se puede ver un ejemplo de alineamiento facial, en el que una cara torcida se transforma en la misma pero bien posicionada y recta para lograr una mejor verificación facial. Se puede ver como primero se gira la imagen para ponerla recta y después se realiza el recorte de la cara únicamente. Estos dos pasos Detección Facial •Se detectan las caras contenidas en la imagen Recorte y alineación facial •Se recortan todas las caras detectadas y se alinean Técnicas de superresolución •Se puede añadir para aumentar la resolución de la cara Verificación facial •Se compara la cara de la persona a verificar con las detectadas 9 se pueden realizar también de forma inversa, realizando primero el recorte y después el alineamiento. Fig. 4. Ejemplo de recorte y alineación facial. [5] • Técnicas de super resolución: Una vez tenemos la cara recortada y alineada se puede añadir una etapa intermedia opcional antes de la verificación facial para aumentar la calidad de la imagen. Si la cara que hemos detectado estaba a bastante distancia o la cámara no tenía mucha resolución, la imagen recortada estará muy pixelada y será muy difícil realizar verificación facial con ella. Por ello, se pueden aplicar técnicas de super resolución para aumentar la calidad de la imagen y mejorar el número de pixeles de la cara para poder realizar una verificación más precisa. Un ejemplo de técnica que se puede aplicar es una red GAN (Generative Adversarial Network) llamada SRGAN (Super Resolution GAN) [6] o el mejorado ESRGAN (Enhanced Super Resolution GAN) [7]. Partiendo de una imagen con baja resolución, usando esta red se puede conseguir la misma imagen, pero con una resolución mayor, como se puede ver en el ejemplo de la Fig. 5. [8] El problema de utilizar este tipo de técnicas es que suelen tener un tiempo de inferencia muy alto, por lo que el tiempo de procesamiento de nuestro pipeline aumentaría notablemente. Por ello, habrá que tener un compromiso entre la velocidad y la precisión que queremos que tenga nuestro algoritmo. • Verificación facial: La última etapa del proceso será realizar finalmente la verificación facial. Como entrada a esta etapa tendremos el rostro de una persona recortada, alineada y con una resolución adecuada gracias a las etapas anteriores. Dentro de esta etapa se realizará el proceso de verificación facial que consistirá en comparar esta cara que se ha preprocesado junto con otra previamente almacenada y como resultado obtendremos si ambas corresponden a la misma persona o no. En la Fig. 6 se puede ver en qué consistiría la etapa de verificación de forma simplificada. Cada una de las caras se pasará por una red neuronal convolucional (CNN) para obtener sus características (a partir de ahora features). Esto nos dará como resultado un vector para cada una de ellas. Después se calcula la distancia entre ambos vectores usando una métrica, algunas de las cuales se 10 desarrollarán en el próximo capítulo. Después el valor de distancia se comparará con un umbral predefinido. Si la distancia es menor que el umbral se concluirá que son la misma persona, si la distancia es mayor, serán dos personas diferentes. Fig. 5. Ejemplo de uso de ESRGAN en dos imágenes de baja resolución. [8] Cabe destacar, además, que el conjunto de las dos CNN se le conoce como red siamesa o siamese network [9]. Esto se debe a que son dos CNN exactamente iguales, utilizan el mismo backbone y los mismos pesos. Por lo que, si introducimos la misma imagen de entrada para las dos, la distancia de los vectores resultantes será nula. Esto es así para poder obtener un valor de cero al comparar la misma imagen. Además, las dos imágenes que vamos a comparar deberán haber pasado el mismo preprocesamiento para poder obtener un resultado correcto, tanto la cara a verificar como la que usamos como base. Con ello, se ha conseguido explicar el proceso completo que se sigue para poder verificar una cara. Si en una imagen hay más de una cara, se deberá realizar el preprocesamiento para cada una de ellas. Normalmente, como se ha comentado previamente, la etapa de super resolución se suele omitir del proceso ya que tiene un coste computacional y tiempo de inferencia alto. Por lo que, si se quiere priorizar tener una verificación facial rápida, se omitirá esta etapa a costa de empeorar la precisión de nuestro algoritmo. 11 Fig. 6. Últimas etapas simplificas del proceso de verificación facial 12 CAPÍTULO III ESTADO DEL ARTE - COMPARATIVA En este tercer capítulo se analizará el estado del arte actual de la verificación facial. Para ello primero se tratarán los datasets disponibles. A continuación, se hablará sobre los algoritmos de detección facial y algoritmos de extracción de features más utilizados. Además, se analizarán las métricas más usadas para el cálculo de distancias. Datasets disponibles Para poder entrenar correctamente una CNN es necesario tener un dataset completo y suficientemente grande. Normalmente deberán contener imágenes de personas que abarquen estadísticamente todas las etnias para entrenar al algoritmo para verificar y detectar a todas las personas. Además, se pueden añadir imágenes en situaciones complejas como por ejemplo baja luminosidad, bajas resolución o poses faciales raras para poder entrenar en más situaciones a los algoritmos. Los datasets para realizar verificación facial deberán estar compuestos de imágenes personas donde se les vea el rostro y que estén correctamente etiquetados con un ID para poder identificar a cada una de ellas. Es decir, para etiquetar estos datasets solo hará falta etiquetar cada una de las imágenes con un ID para identificar a cada persona. Para los datasets de detección facial harán falta imágenes donde aparezcan caras y que estén etiquetadas mediante las coordenadas en la imagen donde está la cara. Cada una de las imágenes tendrá unas coordenadas asociadas que corresponderán a cada una de las caras dentro de cada imagen. A continuación, se van a explicar algunos de los datasets más usados para entrenar o testear algoritmos de detección y verificación facial. a) Labelled Faces in the Wild (LFW) [9] Es un dataset público para verificación facial. Está compuesto de 13.233 imágenes de caras realizadas a una distancia cercana. 1.680 de las personas en el dataset tienen más de una imagen en el dataset y hay un total de 5.749 personas en él. Existen tres variantes de este dataset aparte del original, con diferentes métodos de alineamiento de las imágenes para ayudar en la verificación facial. Es uno de los datasets más usados para testear los algoritmos de verificación y reconocimiento facial. Siempre que se diseña un nuevo algoritmo se compara con el resto usando este dataset. En la Fig. 7 se pueden ver algunos ejemplos de las imágenes que contiene. 13 Como se puede ver en la figura, las imágenes en este dataset son desde una distancia bastante cercana, abarcando la cara la mayoría de la imagen. Por ello, este dataset no es útil para el objetivo de poder verificar a personas desde varias distancias. Pero servirá para comparar nuestro sistema con otros a distancias cercanas. Fig. 7. Ejemplos de imágenes en el dataset LFW [9] b) YouTube Faces (YTF) [10] Este dataset junto con LFW es también muy usado para el testeo y comparativa de los algoritmos de verificación y reconocimiento facial. Consiste en videos descargados de la plataforma YouTube. Contiene 3.425 videos con 1.595 personas diferentes en ellos. El video más corto del dataset tiene una duración de únicamente 48 frames, mientras que el más largo es de 6.070 frames. La duración media de los videos es de 181,3 frames. Los videos están etiquetados para identificar que personas salen en cada uno de ellos. También se pueden encontrar variantes de este dataset, incluyendo uno con la detección facial ya realizada y con las caras alineadas, para facilitar el proceso de verificación facial y podernos concentrar únicamente en esta última etapa. En Fig. 8 se pueden ver algunos ejemplos de frames de este dataset. La fila inferior representa algunas de las imágenes más complicadas, incluyendo baja resolución, baja luminosidad o posiciones complejas de la cara para la verificación facial. Como se puede ver, este dataset también se compone principalmente de imágenes a cortas distancias, por 14 lo que la cara ocupa la mayoría del frame. Por ello, tampoco nos será muy útil para el objetivo de verificar a varias distancias. Fig. 8. Ejemplos de frames en los videos de YTF dataset [10] c) DroneSURF [11] Este es el primer dataset para verificación facial que contiene imágenes grabadas desde un dron. Se compone de 200 videos de 58 personas diferentes, capturadas en 411.000 frames. Contiene más de 786.000 anotaciones faciales. Al ser grabado desde un dron contiene imágenes a diferentes distancias lo que le hace útil para nuestro estudio. El problema con este dataset es que es privado por lo que no se ha podido acceder a él. Se divide en dos partes diferentes. La primera consiste en vigilancia activa, y se basa en cuando se quiere seguir a un sujeto concreto usando el dron. Por ello los videos son siguiendo a unos metros de distancia a una persona concreta que se le pidió que caminara de un punto a otro. Los videos se graban de frente para poder coger correctamente la cara de la persona. El otro consiste en vigilancia pasiva. Usando el dron se graba un área sin seguir a una persona específicamente. El movimiento del dron es independiente del de las personas y su único objetivo es grabar lo que sucede en una zona concreta y no seguir a determinadas personas. En el dataset también se incluyen situaciones complejas para la verificación facial como por ejemplo baja o muy alta iluminación, obstáculos que impiden ver correctamente la cara de una persona o posiciones de la cara complejas. Todos los sujetos en este dataset tenían entre 18 y 40 años mezclando hombres y mujeres. Por ello, un problema que tiene es que no se ha abarcado un rango más grande de edades 15 por lo que el dataset puede quedar incompleto. Por ello, y por ser un dataset privado, no se ha podido usar para el proyecto. d) VGG-Face 2 Este dataset desarrollado por un grupo de la universidad de Oxford contiene 3,31 millones de imágenes de 9131 personas diferentes. Teniendo una media de 362,6 imágenes de cada persona. El dataset se obtuvo descargando las imágenes mediante búsquedas en Google Imágenes. Además, contiene grandes variaciones en posiciones, edades, luminosidad y etnias por lo que lo hace un dataset muy completo para realizar verificación y reconocimiento facial. Está completamente etiquetado cada una de las identidades de forma manual. Es una mejora del dataset creado por el mismo grupo en 2015, pero que tenía cinco veces menos de personas. El problema de este dataset es que las imágenes han sido tomadas a cortas distancias como se puede ver en Fig. 9. Por lo que no es un dataset completo para poder evaluar los algoritmos a diferentes distancias de una persona. Fig. 9. Ejemplos de imágenes contenidas en el dataset VGG-Face 2 [12] e) DroneFace [13] Este dataset se basa en imágenes que simulan ser grabadas desde un dron. Para ello se usó una cámara GoPro Hero3+ y un móvil HTC One M8 para las fotos cercanas. Se compone de personas (7 hombres y 4 mujeres) de las que se han tomado en total 2.057 imágenes. El objetivo de la creación del dataset es poder comprobar como las diferencias distancias y ángulos afectan a la hora de realizar reconocimiento o detección facial, además de cómo de buenas son estas técnicas en videos grabados desde drones. 16 Este dataset es útil para poder ver el efecto a diferentes distancias de los algoritmos y con diferentes ángulos de incidencia. El problema que tiene el dataset es que todos los sujetos eran personas entre 23 y 36 años, lo que es un rango muy acotado, además, de no incluir personas de diferentes etnias. Por todo ello, este dataset tampoco ha sido usado para este proyecto. f) WiderFace [14] Este es uno de los datasets más completos para entrenar algoritmos de detección facial. Se compone de 32.203 imágenes con un total de 393.703 caras etiquetadas con una gran variedad de posiciones, obstáculos y escalas. Incluye numerosas imágenes grabadas a largas distancias y con muchas personas en ellas por lo que es un dataset muy útil para poder detectar caras a diferentes distancias, como por ejemplo mediante videos grabados con un dron. Usando este dataset se han entrenado muchos algoritmos de detección facial como por ejemplo RetinaFace, que se desarrollará más adelante. El dataset está dividido en 61 clases diferentes en función de los eventos o situaciones que muestran cada una de ellas. Está dividido en tres partes, el 40% para entrenamiento, un 10% para validación y un 50% para testing. En la Fig. 10 se pueden ver algunos ejemplos de imágenes del dataset con las caras etiquetadas mostrando diferentes situaciones complejas que lo hacen un dataset muy completo para la detección facial. Fig. 10. Ejemplo de imágenes del dataset WiderFace mostrando diferentes situaciones complejas que pueden dificultar la detección facial [14] 23 CAPÍTULO IV NUEVO DISEÑO PROPUESTO En este capítulo se va a desarrollar el diseño propuesto para mejorar la precisión de diferentes algoritmos de verificación facial. Para ello, primero se explicará el nuevo pipeline usado y cuál es la nueva contribución en él. Después se explicará cómo se ha diseñado el umbral dinámico y como se han calculado los umbrales nuevos que se van a usar. Nuevo pipeline Como pipeline se va a usar una modificación del visto en el capítulo 2, pero basado plenamente en él. El pipeline diseñado se puede ver en la Fig. 12. Como se ha querido realizar todo el procesamiento de forma rápida, para acercarse a procesamiento en tiempo real (24 fps), se han omitido las etapas que más tiempo consumían, como por ejemplo el alineamiento o las técnicas de super resolución. Como se ha venido comentando, hay que encontrar un compromiso entre tiempo de inferencia y precisión, y se ha decidido que las mejoras de precisión que aportan estas etapas no compensan el tiempo que lleva realizarlas. Por eso, se ha reducido el pipeline a únicamente cinco etapas. La primera es la detección de caras, a continuación, tenemos el preprocesamiento. Justo después tenemos ya la red siamesa y a sus salidas se realiza el cálculo de distancias y en función de eso se toma la decisión. El pipeline tiene dos parámetros de entrada, el video en el cual se quiere verificar la persona y la cara de la persona que se quiere verificar. La salida de la red es si esa persona ha sido verificada o no. A continuación, se va a explicar cada una de las etapas de forma más detallada incluyendo la principal contribución de este proyecto. a) Detección de caras La primera etapa es la detección facial. Para ello, introducimos las dos imágenes de entrada del pipeline en una red neuronal para detectar las caras. El algoritmo que se va a usar para la detección facial es RetinaFace, del que se ha hablado en el capítulo 3. Se usará este ya que consigue muy buenos resultados tanto a largas distancias como a cortas, por lo que lo hace ideal para nuestro caso en el que tendremos que detectar a varias distancias. La salida de esta red neuronal será el número de caras que se han detectado en esa imagen y las coordenadas de cada una de ellas para poder preprocesarlas. Además, se ha modificado el umbral predefinido de este algoritmo para poder reconocer caras a distancias más lejanas de hasta 30 metros. A esta distancia, una cara tiene un 24 tamaño aproximado de 14x19 pixeles. Al modificar el umbral, lograremos detectar más caras, pero también tendremos más falsos positivos. Esto no nos supone un problema ya que posteriormente, en la red siamesa y el cálculo de distancias, estas falsas caras se descartarán al no superar el umbral con la persona a verificar. En este caso de uso se ha optado por tener el mayor número de positivos verdaderos, aunque sea a costa de tener más falsos positivos. Para este proyecto se ha supuesto además que solo habrá una persona por cada imagen, por lo que el algoritmo solo debería detectar una cara. Si más de una cara es detectada se asumirá que en esa imagen se han detectado falsos positivos. Esta etapa es la más lenta de nuestro pipeline. Detectar caras en cada una de las imágenes tarda aproximadamente una media de 170 milisegundos, por lo que la máxima velocidad de nuestro pipeline estará siempre limitada a como mucho 6 fps. A pesar de ello, este algoritmo es muy útil ya que permite detectar caras a muy baja resolución, como son a más de 15 metros de distancia. Como para este proyecto solo se van a usar videos pregrabados, no es tan importante conseguir el procesamiento en tiempo real. Como lo que nos interesa es conseguir detectar todas las caras en los videos, se ha decidido usar este algoritmo más lento. Para aplicaciones reales en las que se quiera usar este pipeline, se podrá cambiar este algoritmo por uno más rápido, aunque tenga una precisión menor y detecte menos caras o tengo más falsos positivos. b) Preprocesamiento La segunda etapa de nuestro diseño es el preprocesamiento de la imagen. Está dividida en dos componentes diferentes. Primero, la cara detectada se recorta de la imagen completa en la que se ha detectado. Para ello, el algoritmo de detección manda a la siguiente etapa las coordenadas de la cara en la imagen junto con la imagen en la que ha sido detectada. Las coordenadas las provee RetinaFace y el recorte se realiza con la librería OpenCV de Python, la cual tiene muchas funcionalidades para tratamiento de imágenes. Las coordenadas de una cara se pueden dar de diversas maneras. Como lo que se está detectando es en realidad un rectángulo en una imagen, necesitaremos cuatro valores para poder ubicarlo correctamente. RetinaFace nos da las coordenadas de la imagen como (x, y, w, h). Siendo x e y la ubicación de la esquina superior izquierda del rectángulo, y luego w es el ancho (width) de la imagen y h la altura (height). En la siguiente etapa se redimensiona la imagen de la cara recortada al tamaño requerido por la entrada de la red neuronal siamesa. Por ejemplo, si se está usando ArcFace, habrá que redimensionar la imagen hasta 112x112 pixeles, que es la entrada requerida por este algoritmo. Para hacer este redimensionamiento se usa también OpenCV ya que tiene una función explicita para hacerlo. Esta etapa de nuestro diseño es una de las más rápidas ya que solo se tarda aproximadamente 0,3 milisegundos en realizarla por completo. Todos los algoritmos requieren como entrada una imagen cuadrada. Prácticamente nunca las caras detectadas serán cuadradas por lo que para no distorsionar la cara modificando la ratio de la imagen se añadirán pixeles negros a los lados para mantener la ratio de la imagen de la cara y obtener una imagen rectangular para las redes neuronales. 25 En este punto es donde se realiza la mayor contribución del nuevo diseño: se guardará el valor del tamaño de la cara detectada en pixeles ya que se usará más adelante en la última etapa del pipeline. c) Red siamesa La tercera etapa es de las más importantes del pipeline ya que es donde se extraen las características faciales de la cara. Se compone de una red siamesa, es decir, dos redes neuronales convolucionales exactamente iguales. No hay ninguna diferencia entre las dos redes, tienen la misma arquitectura, backbone y los mismos pesos. Por lo que, si a las dos redes les introducimos las mismas imágenes nos darán como resultado dos vectores exactamente iguales. La red siamesa se puede usar con cualquier algoritmo de verificación facial, pero en este estudio solo se va a trabajar con los cuatro algoritmos que se han mencionado en el capítulo anterior: FaceNet, OpenFace, VGG-Face y ArcFace. La entrada a la red siamesa son las dos imágenes recortadas y redimensionadas al tamaño de entrada determinado por cada uno de los algoritmos. La primera imagen será la imagen que se quiere verificar, mientras que la segunda es la identidad confirmada de la persona que se quiere verificar. La salida de la red siamesa serán dos vectores, uno para cada imagen, que contienen las características de esa cara. La longitud de cada vector será diferente en función del algoritmo que se está usando como se ha podido ver en el capítulo anterior. El tiempo que consuma esta etapa depende del algoritmo que se está usando. Más adelante se analizarán los tiempos de inferencia de cada uno de los algoritmos para poderlos comparar y se podrá ver el tiempo real que lleva realizar esta tercera etapa de nuestro pipeline. d) Cálculo de distancias La cuarta etapa del pipeline es el cálculo de la distancia entre los dos vectores de características faciales. Para ello se van a usar dos métricas diferentes de las tres que se han explicado en el capítulo anterior: Distancia de coseno y distancia euclídea. La distancia Manhattan no se va a usar ya que según el estado del arte no es una distancia muy utilizada para la verificación facial ya que la distancia euclídea suele obtener mejores resultados en la mayoría de los casos. Por eso, nos centraremos solamente en dos tipos de distancias, una de ángulos que es la del coseno y otra de longitudes que es la euclídea. Para el análisis de los diferentes algoritmos se usarán las dos métricas, pero como se comprobará en el último capítulo, al final cada una de las métricas funciona mejor para algoritmos diferentes, en función de cómo obtengan estos las características faciales. Esta es una etapa también muy rápida ya que solo hay que realizar un cálculo sencillo entre dos vectores. Aun así, hay pequeñas diferencias de tiempos entre los diferentes algoritmos al tener cada uno de ellos una longitud de vector diferente. Pero estos tiempos son muy pequeños comparados con los de otras etapas del algoritmo como la detección facial o la red siamesa. 26 e) Toma de decisiones Finalmente, se tiene la última etapa de nuestro pipeline que es donde se toma la decisión de si las dos personas que se están comparando son la misma persona o diferentes. Esta decisión se toma en base a un umbral previamente definido. Si la distancia entre los dos vectores faciales es inferior al umbral, se concluye que son la misma persona, si la distancia es superior, serán dos personas diferentes. Por ello, es muy importante elegir un umbral adecuado para lograr minimizar los falsos positivos y maximizar los verdaderos. Se suele usar un umbral estático previamente definido que no varía. La principal contribución de este proyecto es la introducción de un umbral dinámico que varía en función de la distancia de la persona al dron. A medida que la distancia del dron a la cara varía, también lo hace el vector de características faciales, por lo que la distancia entre los vectores variará también. Si esto cambia, es lógico pensar que, variando el umbral acorde con esto, se conseguirán unos mejores resultados a la hora de verificar. Si el dron está muy cerca de la persona, se apreciarán perfectamente todas las características faciales de la persona, por lo que la distancia será menor entre los vectores, por ello habrá que imponer un umbral estricto. Mientras que si el dron está lejos de la persona la cara tendrá muy poca resolución y las características serán difíciles de sacar, por lo que habrá que poner un umbral más laxo para no bajar la precisión de nuestro algoritmo. Además, el umbral usado también variará en función del algoritmo y la distancia que se estén usando, ya que cada uno de ellos da unos resultados diferentes. Finalmente, la salida de nuestro pipeline será si las dos imágenes introducidas corresponden a la misma persona dando únicamente como salida un booleano: true (si son la misma persona) o false (si son personas diferentes). Todo el pipeline con las etapas que se acaban de explicar se puede ver en Fig. 12. 27 Fig. 12. Diseño propuesto para realizar verificación facial usando umbrales dinámicos en función de la distancia 28 Diseño del umbral dinámico Una vez explicado el nuevo pipeline, se va a explicar cómo se ha diseñado este nuevo umbral dinámico y cómo se han obtenido los valores de los umbrales que se van a usar. Para ello, primero se va a explicar el dataset que se ha usado, después se explicará en sí cómo se obtienen los umbrales dinámicos y finalmente se mostrarán los valores de los umbrales que se han calculado. a) Dataset Para este proyecto se ha obtenido un nuevo dataset compuesto de imágenes grabadas desde un dron, para poder tener imágenes de rostros desde una variedad de distancias y desde un ángulo concreto, no en horizontal como se suelen sacar desde el suelo. Se ha decidido crear un nuevo dataset debido a la ausencia de ellos con imágenes grabadas desde drones para verificación facial, como se ha discutido en el capítulo 3. La mayoría de datasets existentes ahora mismo en la literatura son incompletos, o no tienen las imágenes que se buscan en este proyecto. Debido a esto se ha creado este nuevo dataset. El dron usado para grabar las imágenes es un DJI Mini 2. Las imágenes que se obtienen con la cámara de este tienen una resolución de 4K (3840x2160 px) y los videos son a 30 fps. El terreno que se ha usado de fondo en todos los videos ha sido césped, por lo que el fondo es verde, salvo en algunos vídeos donde se puede apreciar también el cielo, asfalto o edificios. El fondo de nuestro dataset es muy importante ya que el algoritmo de detección facial va a tener que reconocer caras en él, por lo que se ha elegido un fondo no muy complicado para que se puedan detectar de forma fácil. Ya que el objetivo de nuestro proyecto es mejorar la precisión de los algoritmos de verificación facial, no de detección facial, por lo que se quiere facilitar el trabajo de estos para poder centrarnos en la verificación. Los videos se han grabado desde ocho distancias diferentes desde la cara a la cámara del dron: 2, 5, 7, 10, 15, 20, 25, 30 metros. En total se ha grabado a veinticinco personas diferentes de diferentes edades, géneros y etnias para poder tener un dataset completo, obteniendo unos resultados variados y estadísticamente apropiados. Cada uno de los videos dura 30 segundos, durante los cuales se le pidió al sujeto que hiciera varios movimientos con la cabeza para poder obtener varias perspectivas de la cara y tener aún más datos. Los movimientos que se solicitaron fue girar la cabeza hacia la izquierda, después hacia la derecha, para después hacer un giro completo con la cabeza, y finalmente quedarse mirando a la cámara del dron el resto del tiempo. Los videos también fueron grabados a horas diferentes del día, para tener más datos con diferente iluminación, teniendo el sol de frente, por los lados y por detrás, además de tener videos con el cielo nublado, es decir, iluminación no muy alta. 29 Tabla 3. Características del dataset creado N.º Personas Géneros Etnias Rango de edad 25 Masculino Femenino Caucásica Africana Asiática Persa India 16-55 En los videos que se han grabado solo se encuentra una persona en cada uno de ellos, por lo que si se detecta más de una cara se asumirá que hay falsos positivos en él. Las imágenes obtenidas se han grabado con una inclinación de 30 grados del dron sobre la cara del usuario. Por lo que las distancias de la cara al dron representan la diagonal que los une. Pero la altura máxima que alcanza el dron es de 15 metros sobre la cara de la persona. Las distancias que se han usado para grabar los videos se pueden ver en Fig. 13, incluyendo la altura del dron sobre la persona y la distancia horizontal al usuario. Fig. 13. Distancias de la cámara del dron a la cara del usuario de los videos contenidos en el dataset creado También en la Fig. 14 se pueden ver varias imágenes correspondientes al dataset, como ejemplo de cómo son los videos que contiene y los rasgos faciales que se pueden obtener de él. 30 a) 2 metros b) 5 metros c) 7 metros 31 d) 10 metros e) 15 metros f) 20 metros 32 g) 25 metros h) 30 metros Fig. 14. Frames obtenidos de videos del dataset creado a las 8 distancias (2, 5, 7, 10, 15, 20, 25 y 30 metros) b) Definición de una escala Como se ha explicado, nuestro umbral dinámico se basa en modificar los umbrales de verificación en función de la distancia a la que esté el dron de la cara del usuario. Si está muy lejos se pondrá un umbral más laxo, mientras que si está muy cerca se pondrá uno más restrictivo. Para poder implementar el umbral dinámico lo primero que se tiene que hacer es definir unos rangos dentro de una escala para cambiar de un umbral dinámico. Es decir, si estamos a una distancia del usuario usamos un umbral, pero si nos alejamos 39 CAPÍTULO V CÁLCULO DE LOS UMBRALES En este capítulo se van a calcular los nuevos umbrales para nuestro diseño dinámico en función de la distancia a la cara. Para ello, se va a usar el algoritmo desarrollado en el apartado anterior y se calculará usando el programa Octave. A continuación, se mostrarán los valores de umbrales recomendados según el cálculo realizado con nuestro dataset. Aplicación del nuevo pipeline Para el cálculo de los umbrales dinámicos se ha implementado el algoritmo explicado en el capítulo anterior usando Matlab. Además, para obtener los índices de similaridad de los pares positivos y negativos se ha usado el framework DeepFace junto con el dataset y el set de verificación obtenidos. Como se ha mencionado previamente, los umbrales son calculados para lograr maximizar la precisión de los algoritmos en cada rango de la escala que se ha definido en el capítulo anterior. A continuación, se va a explicar de forma gráfica como el algoritmo calcula los umbrales óptimos. a) Distancia de coseno Primero se van a analizar las gráficas obtenidas usando como métrica la distancia de coseno. Para explicar de forma gráfica el algoritmo se han obtenido dos gráficas para cada uno de los algoritmos, la primera es la distribución de los índices de similaridad. Y muestra dos curvas diferentes: una para los pares positivos y otra para los pares negativos. La segunda gráfica representa la precisión obtenida en función del umbral seleccionado. Estas gráficas se han obtenido para dos distancias diferentes, 5 y 15 metros, que corresponden a distancias cercanas y lejanas, respectivamente para poder apreciar como varía la distribución de los índices de similaridad normalizados para cada algoritmo en función de la distancia. En las siguientes páginas se muestran cinco figuras que corresponden con cada uno de los algoritmos de verificación facial a 5 metros de distancia y usando la distancia de coseno: FaceNet (Fig. 17), FaceNet512 (Fig. 18), OpenFace (Fig. 19), ArcFace (Fig 20), VGG-Face (Fig 21). Al haber usado nuestro propio dataset incluyendo diferentes etnias y rangos de edad se ha conseguido obtener unos índices de similaridad bien distribuidos abarcando unas muestras estadísticamente apropiadas. Respecto a las gráficas, los índices de similaridad de los pares positivos se han obtenido ejecutando el pipeline diseñado y comparando la imagen del set de verificación de una 40 persona con los frames de esa misma persona en el dataset. Los índices de los pares negativos se han obtenido comparando la imagen del set de verificación de una persona con los frames del dataset en los que no sale esa persona. Cuanto más separados estén las distribuciones de los pares positivos y negativos, se conseguirá una mejor precisión y será más fácil obtener el umbral óptimo. Mientras que, si las distribuciones están muy juntas o mezclándose la precisión será muy baja al ser muy parecidos los índices de similaridad de los pares positivos y negativos, obteniendo numerosos falsos positivos y falsos negativos. Centrémonos, por ejemplo, en la Fig. 17 que muestra las gráficas para FaceNet a 5 metros usando distancia de coseno como métrica. Se puede observar que los índices de similaridad están separados uno del otro, y es fácil separarlos, hasta manualmente se podría definir un umbral en el punto de cruce de las dos curvas. En la siguiente gráfica se puede ver la distribución de la precisión en función del umbral. Se puede ver que cercano al punto de cruce de las curvas es donde se maximiza, por ello, ese será el umbral escogido. Al escoger este umbral habrá algunos falsos positivos como se puede ver, ya que parte de la curva de los pares negativos cae en el lado izquierdo del umbral. Pero como el objetivo es maximizar la precisión, esto no supone un problema. Si se hubiera escogido el umbral predefinido no habría ningún falso positivo, pero la precisión del algoritmo sería muy baja, por lo que tendríamos numerosos falsos negativos. Si se observan el resto de las figuras, se puede apreciar que todos los algoritmos consiguen curvas bien separadas excepto OpenFace. En esta gráfica se solapan ligeramente las dos curvas, pero se sigue pudiendo establecer una división entre ambas, aunque el número de falsos positivos será mayor al resto de algoritmos. Por ello, su precisión es la más baja de todos los algoritmos comparados. 41 Fig. 17. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de FaceNet. La métrica usada es distancia de coseno 42 Fig. 18. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de FaceNet512. La métrica usada es distancia de coseno 43 Fig. 19. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de OpenFace. La métrica usada es distancia de coseno 44 Fig 20. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de ArcFace. La métrica usada es distancia de coseno 45 Fig 21. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de VGG-Face. La métrica usada es distancia de coseno 46 A continuación, se pueden ver las mismas gráficas, pero a una distancia de 15 metros para los cinco algoritmos: FaceNet (Fig 22), FaceNet512 (Fig 23), OpenFace (Fig 24), ArcFace (Fig 25), VGG-Face (Fig 26). Como se puede observar y cabía esperar, todas las curvas están más solapadas que en las gráficas anteriores. Esto se debe a que a medida que nos alejamos, las caras tienen peor resolución, por lo que el índice de similaridad de los pares positivos será cada vez más alto, lo que significa que son más diferentes, y por lo tanto los índices de similaridad de los pares positivos serán cada vez más parecidos a los negativos. Aun así, en todos los algoritmos se pueden seguir separando ambas curvas o al menos una parte de ellas, por lo que la precisión obtenida por cada uno de los algoritmos sigue teniendo valores altos. Siendo la más baja FaceNet con un 65%. Es importante destacar que, como se puede ver en algunas gráficas, el umbral escogido no es el mismo que maximiza la precisión. Por ejemplo, fijémonos en la gráfica de VGG- Face (Fig 26). El umbral escogido es 4,628, mientras que el que maximizaría la precisión sería 4,3. Esta diferencia se debe a que no maximiza la precisión de una sola distancia, sino de un rango de distancias. Es decir, en este caso que nos situamos a 15 metros, estamos maximizando las distancias lejanas, que abarcan 15 y 20 metros. Por lo que, lo que se está maximizando es la precisión en este rango de distancias, no únicamente a 15 metros. Por lo que, a esta distancia no se consigue la máxima precisión, como tampoco sucederá a 20 metros, pero se consigue la máxima precisión para el conjunto de ambas distancias. 47 Fig 22. Distribución de distancias y la precisión en función del umbral usado a 15 metros de distancia de FaceNet. La métrica usada es distancia de coseno 48 Fig 23. Distribución de distancias y la precisión en función del umbral usado a 15 metros de distancia de FaceNet512. La métrica usada es distancia de coseno 55 Fig 29. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de OpenFace evaluados. La métrica usada es distancia euclídea 56 Fig 30. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de ArcFace evaluados. La métrica usada es distancia euclídea 57 Fig 31. Distribución de distancias y la precisión en función del umbral usado a 5 metros de distancia de VGG-Face evaluados. La métrica usada es distancia euclídea 58 Por último, se han obtenido las mismas gráficas, pero usando una distancia de 15 metros para los cinco algoritmos de verificación facial: FaceNet (Fig 32), FaceNet512 (Fig 33), OpenFace (Fig 34), ArcFace (Fig 35), VGG-Face (Fig 36). Al igual que ocurría con la distancia de coseno, las curvas a esta distancia están mucho más solapadas, ya que los índices de similaridad de los pares positivos y negativos son más parecidos al bajar la resolución de las caras. Esto se puede apreciar especialmente en la gráfica de FaceNet, donde ambas curvas están totalmente solapadas, por lo que es difícil obtener una alta precisión debido al gran número de falsos positivos que se obtendrán. El resto de los algoritmos, aunque las curvas estén algo más solapadas, se pueden seguir diferenciando claramente, por lo que su precisión no baja notablemente en comparación con las distancias medias y cercanas. Es curiosa además la gráfica de ArcFace, porque tanto la curva de pares positivos como la de negativos tienen un pico que representa el mayor número de índices de similaridad, pero después presentan unas colas que llegan a valores mayores a 20. 59 Fig 32. Distribución de distancias y la precisión en función del umbral usado a 15 metros de distancia de FaceNet evaluados. La métrica usada es distancia euclídea 60 Fig 33. Distribución de distancias y la precisión en función del umbral usado a 15 metros de distancia de FaceNet512 evaluados. La métrica usada es distancia euclídea 61 Fig 34. Distribución de distancias y la precisión en función del umbral usado a 15 metros de distancia de OpenFace evaluados. La métrica usada es distancia euclídea 62 Fig 35. Distribución de distancias y la precisión en función del umbral usado a 15 metros de distancia de ArcFace evaluados. La métrica usada es distancia euclídea 63 Fig 36. Distribución de distancias y la precisión en función del umbral usado a 15 metros de distancia de VGG-Face evaluados. La métrica usada es distancia euclídea 64 Umbrales recomendados En la Tabla 5 y Tabla 6 se pueden ver los umbrales predefinidos recomendados por el framework DeepFace [21] usado para la realización del proyecto usando como métricas la distancia de coseno y la distancia euclídea, respectivamente. Mientras que en la Tabla 7 y Tabla 8 se pueden observar los umbrales dinámicos recomendados calculados previamente para la distancia de coseno y euclídea respectivamente. Para todos los algoritmos se pueden apreciar diferencias notables entre el umbral predefinido y los dinámicos calculados. Esto se debe a que en nuestro caso se ha querido maximizar la precisión de los algoritmos mientras que en este framework se maximizó la ganancia de información usando un algoritmo de decisión en árbol. Además, los umbrales predefinidos están solo calculados para distancias muy cercanas donde se puede apreciar la cara de la persona con alta calidad. Mientras que, en nuestro caso de uso al usar distancias lejanas, los umbrales son más altos. Hasta la distancia más cercana usada en este proyecto (2 metros) es más alta que la distancia habitual de reconocimiento facial, que suele ser de centímetros, por ejemplo, al reconocer una cara en un teléfono móvil para desbloquearlo, pero por razones de seguridad no se puede grabar a menos de 2 metros de una persona con un dron, por lo que es lógico que los umbrales predefinidos y los calculados en este proyecto difieran en sus valores. Tabla 5. Umbrales predefinidos para los algoritmos seleccionados usando la distancia de Coseno Algoritmos Umbral Predefinido FaceNet 0.4 FaceNet512 0.3 OpenFace 0.1 ArcFace 0.68 VGG-Face 0.4 Tabla 6. Umbrales predefinidos para los algoritmos seleccionados usando la distancia Euclídea Algoritmos Umbral Predefinido FaceNet 10 FaceNet512 23.56 OpenFace 0.55 ArcFace 4.15 VGG-Face 0.6 71 a) FaceNet b) FaceNet512 72 c) OpenFace d) ArcFace 73 e) VGG-Face Fig. 38. Precisión de los algoritmos a diferentes distancias usando los umbrales predefinidos y los dinámicos usando distancia de euclídea como métrica Finalmente, Tabla 10 muestra la precisión de cada uno de los algoritmos de verificación facial usando los umbrales dinámicos calculados y siendo la métrica la distancia euclídea. Como se puede ver a cortas distancias los que mejores resultados consiguen son los dos FaceNet y ArcFace, mientras que a largas distancias Tabla 10. Precisión de los diferentes algoritmos usando los umbrales dinámicos y distancia euclídea Algoritmos 2 m 5 m 7 m 10 m 15 m 20 m 25 m 30 m FaceNet 95.3 93.86 91.49 85 67.29 58.23 54.82 56.25 FaceNet512 96.8 96.22 94.08 89.28 79.7 70.37 65.1 62.8 OpenFace 75.84 72.42 73 71 67.133 60.7 59.36 60.76 ArcFace 94.211 92.258 88.477 81.766 63.8 52.25 50.64 50.28 VGG-Face 80.96 80.71 77.5 73.89 66.62 62.588 59.98 54.22 74 Evaluación empírica de la mejor métrica para cada algoritmo En este apartado se va a analizar cuál es la mejor métrica que se puede aplicar para cada uno de los algoritmos de verificación facial. En la Tabla 11 se puede ver la métrica recomendada para cada uno de ellos y los rangos de mejora que hay para cada métrica. Como se puede apreciar, FaceNet, FaceNet512 y OpenFace mejoran en todas las distancias usando cualquiera de las dos métricas. No obstante, para los dos FaceNet se recomienda usar la distancia euclídea ya que las mejoras que se consiguen son mayores. Para OpenFace no se ha apreciado gran diferencia entre ambas métricas por lo que usando cualquiera de las dos se consiguen mejoras parecidas. Tabla 11. Rangos de la escala donde se consiguen las mejores mejoras con el umbral dinámico para cada algoritmo y cuál es la métrica recomendada para cada uno de ellos Algoritmo Rangos de mejora Métrica recomendada Distancia Coseno Distancia Euclídea FaceNet Todas Todas Euclídea FaceNet512 Todas Todas Euclídea OpenFace Todas Todas Ambas ArcFace Cerca, Medio y Lejos Todas Coseno VGG-Face Cerca y Medio Lejos y Muy lejos Coseno – Cercano Euclídea - Lejano Por otro lado, ArcFace mejora en todas las distancias con la distancia euclídea. Con la distancia de coseno no se logra mejorar a largas distancias (más de 25 metros). Aun así, la métrica recomendada es la distancia de coseno al conseguirse una mejora de la precisión para el resto de las distancias. Finalmente, con VGG-Face se consigue una mejora en distancias cercanas y medianas (menos de 10 metros) usando distancia de coseno. Mientras que para largas distancias (más de 10 metros) se consiguen mejores resultados usando la distancia euclídea. Por lo que la recomendación es si se intenta verificar una persona a cortas distancias se deberá usar distancia de coseno, mientras que si la persona está situada lejos se usará distancia euclídea. Evaluación del tiempo de inferencia Finalmente, se van a comparar los tiempos de inferencia de los algoritmos seleccionados. Para obtener los tiempos de inferencia se ha ejecutado el pipeline sobre un video compuesto de aproximadamente 900 frames y se ha obtenido el tiempo de procesamiento 75 de todo el pipeline para cada uno de ellos. Las features de la cara a comparar se han extraído previamente de la ejecución por lo que el tiempo obtenido consiste en una única ejecución del algoritmo de extracción de características y del detector facial. En la Fig. 39 se puede ver la comparativa de los tiempos de inferencia. Para obtener el resultado se ha realizado el promedio acumulado. Es decir, el valor del tiempo del último frame corresponde a la media de todos los tiempos de inferencia. En la gráfica vienen representados los cuatro algoritmos utilizados, incluyendo los dos diferentes backbones del algoritmo FaceNet. Los valores obtenidos corresponden al tiempo total de inferencia del pipeline, por lo que se incluyen las cinco etapas: detección facial, preprocesamiento, extracción de características, cálculo de distancias y toma de decisión. Como se puede apreciar en la figura, el algoritmo más lento con mucha diferencia es VGG-Face, teniendo una media de 275 ms de tiempo de ejecución. Esto significa que usando este algoritmo en nuestro pipeline podríamos obtener como máximo una velocidad de menos de 4 fps. Teniendo en cuenta que la detección facial con RetinaFace tarda aproximadamente 170 ms y que el tiempo del resto de etapas es cercano a los 5 ms, se puede deducir que VGG-Face extrae las características de una cara en 100 ms. Por lo que, si omitiéramos el resto de las etapas, obtendríamos igualmente una velocidad de 10 fps, muy alejado de los 25 fps de tiempo real. Fig. 39. Tiempo de inferencia de los algoritmos comparados El siguiente algoritmo más lento es FaceNet. Como se puede apreciar, no hay prácticamente diferencia de tiempos entre los dos backbones, por lo que usar uno u otro no supone una mejora en el tiempo de inferencia. Una ejecución con este algoritmo tarda aproximadamente 245 ms. Suponiendo lo mismo que con VGG-Face, la extracción de características supone 70 ms. Por lo que, ignorando el resto de las etapas, se podría 76 obtener como máximo una velocidad de 14 fps, todavía lejos del procesamiento en tiempo real. El siguiente algoritmo es ArcFace, que tiene un tiempo de inferencia total de 230 ms. Únicamente la extracción de características tarda unos 55 ms, lo que supone una velocidad máxima de 18 fps. Por lo que en relación precisión y velocidad, este algoritmo es uno de los mejores. Finalmente, el algoritmo más rápido de todos los evaluados es OpenFace, con un tiempo de inferencia de 220 ms. Lo que supone que el algoritmo tarda en extraer las features de una cara 45 ms. Con esto se conseguiría una velocidad de 22 fps como máximo. Muy cercano al procesamiento en tiempo real. Pero esta velocidad no es real ya que se han omitido el resto de las etapas del pipeline. Por todo ello se puede concluir que ArcFace es el algoritmo que tiene un mejor compromiso entre tiempo de inferencia y la precisión que consigue. OpenFace es el algoritmo más rápido, pero a la hora de obtener resultados no consigue una precisión muy alta, por lo que, si se usara este algoritmo, a pesar de ser muy rápido, se tendría muchos fallos. Por otro lado, VGG-Face es un algoritmo muy lento pero que consigue muy buenos resultados, por lo que si no nos importara la velocidad el algoritmo a usar seguramente fuera este. Como se ha podido comprobar, con ninguno de estos algoritmos se consigue procesamiento en tiempo real aun eliminando el resto de las etapas del pipeline. En consecuencia, para conseguir procesamiento en tiempo real hará falta realizar modificaciones a las redes neuronales de estos algoritmos para conseguir mejorar los tiempos y reducir el tiempo de inferencia, aunque con ello se reduzca también la precisión, ya que esta se puede aumentar de otras maneras, como, por ejemplo, el sistema que hemos introducido en este proyecto o con reentrenamientos de los algoritmos con datasets más completos y adecuados para nuestros casos de usos. 77 CAPÍTULO VII CONCLUSIONES Y LÍNEAS FUTURAS Como se ha comentado en el primer capítulo, el principal objetivo de este proyecto era mejorar la precisión de los algoritmos de verificación facial usando umbrales dinámicos que varían en función de la distancia a la que se encuentre la persona de la cámara. Para ello, se creó un dataset conteniendo imágenes de personas de diferentes etnias y edades para que fuera estadísticamente correcto. Como se ha podido ver en las curvas de los índices de similaridad se ha conseguido un dataset adecuado al ser las distribuciones óptimas para nuestro proyecto. En este proyecto se ha conseguido mejorar la precisión de los cinco algoritmos de verificación facial usados. Esta mejora es aún más importante ya que se ha conseguido en distancias de hasta 30 metros, en los que la resolución de la cara de la persona tiene de media 15 pixeles. Por ejemplo, el algoritmo FaceNet512 se ha logrado mejorar su precisión usando la distancia de coseno más de un 30% en algunas distancias. Y en todos los algoritmos se ha conseguido aumentar su precisión a 25 y 30 metros de distancia, considerado en este proyecto como muy lejano. También se ha dado una recomendación de cuáles son las mejores métricas de cálculo de distancias para cada uno de los algoritmos de verificación facial, así como los umbrales dinámicos recomendados para nuestro caso de uso. Habiendo analizado todos los resultados obtenidos, se puede llegar a la conclusión de que los dos algoritmos con la mejor relación precisión-tiempo de inferencia son ArcFace y FaceNet512, ya que ambos consiguen una gran precisión con un tiempo de inferencia no muy alto en comparación con los otros algoritmos. Entre ellos dos, FaceNet512 consigue una precisión algo mayor pero también su tiempo es menor, mientras que ArcFace es un algoritmo más rápido. El proyecto se podría continuar por varias vías que tienen opción de mejora. Por ejemplo, se podría crear un dataset más completo en el que se incluyan un mayor número de personas para tener una muestra mayor. También se podrían obtener más videos de cada persona, variando el ángulo de incidencia del dron con respecto a la persona. Además, se podrían conseguir imágenes en situaciones de baja visibilidad como por ejemplo de noche, con niebla o lloviendo. Otra opción interesante por explorar, debido a la reciente pandemia, es incluir en el dataset personas llevando mascarilla. En el futuro podría ser necesario verificar a personas llevando mascarillas por razones de seguridad sanitaria. Otra opción por explorar es añadir en el pipeline una técnica de super resolución como las vistas en el capítulo de estado del arte. Con ello se conseguiría mejorar notablemente 78 la precisión de los algoritmos, pero a costa de aumentar notablemente el tiempo de ejecución. En este proyecto se han calculado los umbrales dinámicos para maximizar la precisión de los algoritmos. Pero también se pueden calcular los umbrales maximizando otras métricas como por ejemplo F1-Score. También se podría definir una probabilidad máxima de obtener falsos positivos y calcular el umbral para nunca superar este valor, por lo que se podría minimizar su número hasta el valor que se quiera. La métrica a maximizar variará en función del caso de uso. Finalmente, se podría también buscar otros algoritmos de detección facial que consigan un menor tiempo de inferencia, aunque eso suponga perder precisión. El algoritmo de detección facial elegido variará también en función del caso de uso, si se prefiere alcanzar detección en tiempo real bajando el número de detecciones o si, por otro lado, se quiere detectar todas las personas sin importar el tiempo de ejecución. 79 BIBLIOGRAFÍA [1] M. Police, «Facial Recognition,» 2022. [En línea]. Available: https://www.met.police.uk/advice/advice-and-information/fr/facial-recognition. [2] Wired, «London is buying heaps of facial recognition tech,» 27 09 2021. [En línea]. Available: https://www.wired.co.uk/article/met-police-facial-recognition-new. [Último acceso: 23 06 2022]. [3] F. Chollet y others, «Keras,» GitHub, 2015. [En línea]. Available: https://github.com/fchollet/keras. [4] N. K. A. Wirdiani, P. Hidrayami, N. P. A. Widiari, K. D. Rismawan, P. B. Candradinatha y I. P. D. Jayantha, «Face Identification Based on K-Nearest Neighbor,» Scientific Journal of Informatics, vol. 6, nº 2, pp. 150-159, 2019. [5] I. Masi, Y. Wu, T. Hassner y P. Natarajan, «Deep Face Recognition: a Survey,» de 31st SIBGRAPI Conference on Graphics, Patterns and Images (SIBGRAPI), 2018. [6] S. I. Serengil, «Face Alignment for Face Recognition in Python within OpenCV,» 23 Febrero 2020. [En línea]. Available: https://sefiks.com/2020/02/23/facealignment-for-face-recognition-in-python-within-opencv/. [Último acceso: 26 Junio 2022]. [7] C. Ledig, L. Theis, F. Huszar, J. Caballero, A. Cunningham, A. Acosta, A. Aitken, A. Tejani, J. Totz, Z. Wang y W. Shi, «Photo-Realistic Single Image Super- Resolution Using a Generative Adversarial Network,» Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 4681-4690, 2017. [8] X. Wang, K. Yu, S. Wu, J. Gu, Y. Liu, C. Dong, C. C. Loy, Y. Qiao y X. Tang, «ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks,» Proceedings of the European conference on computer vision (ECCV) workshops, 2018. [9] eriklindernoren, «PyTorch-GAN,» 6 Enero 2021. [En línea]. Available: https://github.com/eriklindernoren/PyTorch-GAN#enhanced-super-resolution-gan. [Último acceso: 27 Junio 2022]. [10] D. Chicco, «Siamese Neural Networks: An overview,» de Artificial Neural Networks: An Overview, 2020, pp. 73-94. 80 [11] G. B. Huang, M. Ramesh, T. Berg y E. Learned-Miller, «Labeled Faces in the Wild: A Database for Studying Face Recognition in Unconstrained Environments.,» University of Massachusetts, Amherst, October, 2007. [12] L. Wolf, T. Hassner y I. Maoz, «Face Recognition in Unconstrained Videos with Matched Background Similarity.,» de IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2011. [13] I. Kalra, M. Singh, S. Nagpal, R. Singh, M. Vatsa y P. B. Sujit, «DroneSURF: Benchmark Dataset for Drone-based Face Recognition,» de 2019 14th IEEE International Conference on Automatic Face & Gesture Recognition (FG 2019), 2019. [14] Q. Cao, L. Shen, W. Xie, O. M. Parkhi y A. Zisserman, «VGGFace2: A dataset for recognising faces across pose and age,» de 13th IEEE International Conference on Automatic Face & Gesture Recognition, 2018. [15] H.-J. Hsu y K.-T. Chen, «DroneFace: An Open Dataset for Drone Research,» de 8th ACM on Multimedia Systems Conference, 2017. [16] Y. Shuo, P. Luo, C. C. Loy y T. Xiaoou, «WIDER FACE: A Face Detection Benchmark,» de IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016. [17] P. Viola y M. Jones, «Rapid Object Detection using a Boosted Cascade of Simple Features,» de Computer Vision and Pattern Recognition Conference (CVPR), 2001. [18] J. Deng, J. Guo, E. Ververas, I. Kotsia y S. Zafeiriou, «RetinaFace: Single-Shot Multi-Level Face Localisation in the Wild,» de Computer Vision and Pattern Recognition Conference (CVPR), 2020. [19] K. Zhang, Z. Zhang, Z. Li y Q. Yu, «Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks,» IEEE Signal Processing Letters, vol. 23, nº 10, pp. 1499-1503, 2016. [20] D. E. King, «Dlib-ml: A Machine Learning Toolkit,» Journal of Machine Learning Research, vol. 10, pp. 1755-1758, 2009. [21] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.-Y. Fu y A. C. Berg, «SSD: Single Shot MultiBox Detector,» de Computer Vision - ECCV, 2016. [22] J. Redmon, S. Divvala, R. Girshick y A. Farhadi, «You Only Look Once: Unified, Real-Time Object Detection,» de CVPR, 2016.