Universidad Laica Eloy Alfaro de Manabí Carrera de Ingeniería Eléctrica PROGRAMACIÓN III Nombre del profesor WASHINGTON XAVIER GARCIA QUILACHAMIN Nombre del Estudiante: Jorge Luis Castillo Ibarra Semestre 4to Tema Ensayo: Detección de rostros utilizando algoritmo de viola jones y redes neuronales 30-05-2019 Fecha DETECCIÓN DE ROSTROS UTILIZANDO ALGORITMO DE VIOLA JONES Y REDES NEURONALES RESUMEN El rostro humano es un objeto dinámico que tiene un alto grado de variabilidad en su apariencia lo cual hace que su detección sea un problema difícil de tratar en visión por computador. El problema de detección del rostro en los sistemas de reconocimiento no recibió la atención necesaria y se partía de que el rostro ya había sido detectado, en la década de los ochenta surgieron los primeros algoritmos, basados en técnicas heurísticas y antropométricas, según el paso del tiempo, se propuso técnicas, desde algoritmos básicos de detección de bordes hasta algoritmos compuestos de alto nivel que utilizan métodos avanzados de reconocimiento de patrones. Partiendo de: Enfoques basados en rasgos faciales o características locales, en los que se buscan determinados elementos que componen el rostro, como los ojos, la nariz, Enfoques holísticos o basados en la imagen, en este caso los métodos trabajan con la imagen completa o zonas concretas de la misma de la cual se extraen características que puedan representar el objeto, Enfoques híbridos, estos métodos usan tanto la información local como la global para la detección, basándose en el hecho de que el sistema de percepción humano distingue tanto las características locales como globales del rostro. INTRODUCCIÓN La detección de rostros consiste en determinar si en una imagen arbitraria hay alguna cara y, en caso se haberla, en qué posición se encuentra. Un detector de rostros debería ser capaz de encontrar todas las caras de una imagen. Además, debe devolver para cada cara detectada en la imagen la posición y tamaño de una caja de inclusión en la que se encuentren los ojos, la nariz y la boca. Sería deseable que se devolviera otros datos como el ángulo de rotación de la cara y una puntuación que nos indique la fiabilidad de esa detección. (Nehru & Padmavathi, 2017) Existen algunos inconvenientes al momento de detectar un rostro como, por ejemplo: Poses, componentes estructurales, expresiones faciales, orientación de la imagen y condiciones de la captura de la imagen. En la actualidad existen varios algoritmos para la detección de caras. Cada uno de estos algoritmos está basado alguna técnica conocida de reconocimiento de formas como redes neuronales, vecino más próximo, etc. Cada detector tiene características que lo hacen diferente al resto. Por ejemplo, el detector de Viola-Jones es un detector muy rápido pero no es capaz de calcular la orientación de la cara ni darnos una estimación de lo seguro que está de la detección. (Vikram & Padmavathi, 2017) ANTECEDENTES Detección de caras basado en viola-jones Este detector trabaja con imágenes en escalas de grises alcanzando buenos resultados, esto lo diferencia de otros que utilizan más información como el color de los píxeles, etc. Este algoritmo hace la representación de las imágenes mediante el método de la imagen integral; esto permite evaluar de forma muy rápida las características utilizadas. Entonces no se trabaja con la intensidad de la imagen, sino con una representación de la misma. La gran ventaja es que se pueden calcular las características utilizadas en cualquier lugar de la imagen y en cualquier escala en el mismo lapso de tiempo y en forma sumamente eficiente desde el punto de vista del gasto computacional. (Putro, Adji, & Winduratna, 2015) Reconocimiento facial Los sistemas de reconocimiento facial permiten identificar a una persona analizando las características biométricas de su rostro. Aunque hace algunos años se usaban modelos geométricos simples para el análisis del rostro, la extracción de la información relativa a las características biométricas del rostro está actualmente ligada a sofisticados procesos matemáticos y algoritmos de coincidencia. Lo que ha propulsado el avance la tecnología de reconocimiento facial en diversas áreas del conocimiento. (Dmytro Peleshko, n.d.) Detección de rostros basado en proyecciones mediante eigen vectores Dentro del sistema de visión se ha utilizado para el reconocimiento e identificación de las caras el método basado en la proyección de las imágenes originales en un nuevo espacio. El algoritmo básico para identificar caras en diferentes subespacios es el siguiente: 1. Se calcula un subespacio (generado por las propias imágenes de las caras a reconocer) donde proyectar las imágenes. 2. Una vez generado el subespacio, todas las caras de entrenamiento son proyectadas en el subespacio 3. Cada nueva imagen se proyecta en el subespacio y es comparada con todas las proyecciones de las imágenes de entrenamiento por similitud o por medida de distancias, la imagen de entrenamiento más similar o más cercana a la nueva imagen se utiliza para identificar esa nueva cara. (Egorov, Alexey D. Mazurenko, 2018) METODOLOGÍA La metodología se basada en la propuesta que divide en tres etapas, en la primera se realiza una transformación de la imagen generando una nueva llamada imagen integral, en la segunda etapa se realiza la extracción de características usando filtros con base Haar, y por último se usa boosting para la construcción de clasificadores en cascada. (Rahman & Zayed, 2018) Adquisición de imágenes La toma de estos datos se los puede introducir mediante la cámara o manualmente. En el caso de que se desea reconocer los rostros en tiempo real, se debe hacer uso de frames, lo cual es capturar imágenes de la cámara cada cierto tiempo. Para cada captura se debe hacer el reconocimiento del rostro, mostrar el nombre de la persona identificada en la pantalla y seguir con la siguiente captura, por este motivo es que la toma de datos (imágenes) no es muy seguida, dado que requiere ciertos procesos en medio. (Rashidan & Mustafah, 2014) Entrenamiento de la red neuronal Lo primero a tener en cuenta son los elementos con los cuales se va a entrenar la red, ya que de esto depende su desempeño. Preprocesamiento Lo siguiente que se debe realizar es transformar las imágenes en escala de grises dado que si estuviera en formato RGB se necesitaría 3 matrices para interpretar las tonalidades de las mismas. A continuación, se procede a representar cada imagen en un solo vector, pero dado que dichas imágenes tienen resolución de 64x48 pixeles se debe implementar una red neuronal con 3072 entradas para avaluar cada imagen, esto es computacionalmente y temporalmente ineficiente, por lo cual se recurre a otra alternativa, que consiste en extraer solamente los valores característicos del conjunto de imágenes con el objetivo de reducir el número de entraras de la red neuronal. (Haneefl et al., 2019) Procesamiento La extracción de estas características importantes se lo realiza de la siguiente forma: 1. Se calcula la media de cada rostro. 2. Se hace un cálculo estadístico de la covarianza. 3. Se extrae los vectores. 4. Se proyecta los vectores con la covarianza, este resultado proporciona los componentes más importantes de cada rostro. De acuerdo al proceso descrito anteriormente se restringe el número de vectores evaluando los elementos más relevantes. Por ejemplo, si se muestra la proyección de los vectores con 17 elementos, pero son más notables los últimos 13 elementos de las columnas, por lo tanto serían más cercanos a cero, por este motivo para la implementación de la red neuronal solo se consideran los 4 primeros elementos de los vectores. (Kolsch & Turk, 2004) Red neuronal Una vez que se tiene las entradas listas para entrenar la red neuronal, se necesita saber qué tipo de red se va a implementar. Reconocimiento facial Pre-procesamiento: De la imagen adquirida previamente se procede a detectar el rostro mediante el algoritmo de Viola-Jones, este ya es una función implementada en matlab, se recorta el área del rostro y se cambia de tamaño (64x48 pixeles). (Dang & Sharma, 2017) Procesamiento: Se transforma el rostro a escala de grises, se hace un solo vector de pixeles, se proyecta con los vectores hallados y se normaliza los datos. Red neuronal: Como paso final se introduce los datos resultantes de la normalización en la red neuronal y se interpreta la salida. (Hasan, Ullah, Gupta, & Ahmad, 2016) Valores del vector de salida en donde tenga un máximo valor en la última posición corresponde a la persona uno, valores del vector de salidas en donde tenga un máximo valor en la posición tres corresponde a la persona dos y valores del vector de salidas en donde tenga un máximo valor en la posición uno corresponde a la persona tres. (Jin et al., 2017) Visualización En la pantalla se visualiza la imagen completa ingresada con anterioridad, pero además se grafica un rectángulo alrededor del rostro con su posible identificación. ANÁLISIS Los altos porcentajes de detección y bajos tiempos de procesamiento demuestran la efectividad de la combinación de técnicas de viola-jones, para la detección del rostro y características faciales y dan la posibilidad de llevar el sistema a una aplicación en tiempo real. La reducción del desempeño del método en la detección de ojos se atribuye a que el algoritmo debe realizar la búsqueda sobre toda la imagen. Esto se puede mejorar aplicado el método únicamente sobre la región que ha sido detectado como rostro, ya que se estaría descartando información del fondo, y además se disminuiría el tiempo de procesamiento. (Jin et al., 2017) RESULTADOS Tras la evaluación del sistema de detección con diferentes valores de los parámetros ajustables, se ha verificado que combinando distintos valores, es posible utilizar el sistema para la detección de caras en tiempo real (aprox. 2-3 segundos) para caras cercanas, con una probabilidad de detección aceptable de aproximadamente 0.8. Para caras lejanas el sistema de detección no es útil en tiempo real por su elevado tiempo de detección, aunque si se puede utilizar para imágenes estáticas. (Sikander, Anwar, & Djawad, 2017) Por otro lado la eficacia del sistema depende mucho de la frecuencia del reloj de la CPU (relacionado directamente con las instrucciones por segundo), el cual, al estar implementado en una FPGA de bajo coste, está muy limitada en este aspecto, siendo 85 MHz la frecuencia máxima alcanzada estable. El diseño es posible exportarlo a los dispositivos ASIC (circuitos integrados de aplicación específica) que requieren un menor coste de producción. Esto es conveniente para la comercialización del producto si no se prevé ninguna modificación de hardware ya que estos dispositivos no permiten una actualización en este sentido. (Dang & Sharma, 2017) Realizando diversos experimentos modificando los parámetros definidos por el usuario para la evaluación del detector, y añadiendo un banco de imágenes que incluyen caras de diversas características, se puede obtener una configuración óptima. La evaluación se realiza con un conjunto de fotografías donde todas contienen una cara. Los parámetros modificados para la realización del experimento son los siguientes: Etapas: Este parámetro modifica el porcentaje de etapas utilizadas por el clasificador. Ventanas: Se denominan ventanas a las sub-imagenes en las que se divide la imagen para su procesamiento. Este parámetro modifica el porcentaje de ventanas utilizadas por cada escala. El número máximo de ventanas por cada escala es calculado en tiempo de ejecución, y depende exclusivamente de las dimensiones de la imagen. Escalas: Este parámetro modifica el porcentaje de escalas utilizadas en el proceso de detección. El número máximo de escalas utilizadas es calculado en tiempo de ejecución, y depende al igual que el número máximo de ventanas, de las dimensiones de la imagen. Los análisis están orientados a conseguir unos valores razonables para dichos parámetros, que mantengan una alta probabilidad de detección y baja probabilidad de falsa alarma sin que el tiempo de detección sea relativamente alto. Se modificarán los parámetros de manera independiente dejando el resto en el valor principal (valor original). La probabilidad de falsa alarma únicamente aumentará disminuyendo el parámetro “Porcentaje de etapas”, ya que dicha probabilidad sólo depende de éste. (Sharma & Saurav, 2015) CONCLUSIÓN Cuando se hace el reconocimiento facial en tiempo real aplicando la técnica de viola-jones, el acertado o erróneo resultado de la red neuronal depende en gran medida del brillo con el cual las imágenes son capturadas, ya que el entrenamiento de la red neuronal con el conjunto de imágenes de entrenamiento tiene cierto límite de certeza. El cálculo de la covarianza depende del número de elementos de entrenamiento, se procura que los individuos detectados sean lo más diferente posible para que esta covarianza tome valores máximos y, por lo tanto, tener mayor certeza en los resultados de la red neuronal. Este trabajo está orientado a la identificación de rostros de posición frontal ya que el algoritmo que se usa para la detección de rostros tiene un mayor rango de detección en este posicionamiento de la imagen. REFERENCIAS Dang, K., & Sharma, S. (2017). Review and comparison of face detection algorithms. 2017 7th International Conference on Cloud Computing, Data Science & Engineering Confluence, 629–633. https://doi.org/10.1109/CONFLUENCE.2017.7943228 Dmytro Peleshko. (n.d.). 2013 12th International Conference The Experience of Designing and Application of CAD Systems in Microelectronics (CADSM). Retrieved from https://ieeexplore.ieee.org/document/6543266 Egorov, Alexey D. Mazurenko, G. A. (2018). Some cases of optimization face detection methodes on image (Using the Viola-Jones method as an example). 2018 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering (EIConRus), 1075–1078. https://doi.org/10.1109/EIConRus.2018.8317276 Haneefl, O., Maqbooll, S., Siddiquel, F., Mahmoodl, Z., Khattakl, S., & Khan, G. Z. (2019). Effects of Image Resolution on Automatic Face Detection. 2019 2nd International Conference on Communication, Computing and Digital Systems (CCODE), 231–236. https://doi.org/10.1109/C-CODE.2019.8680985 Hasan, M. K., Ullah, S. M. H., Gupta, S. Sen, & Ahmad, M. (2016). Drowsiness detection for the perfection of brain computer interface using Viola-jones algorithm. 2016 3rd International Conference on Electrical Engineering and Information Communication Technology (ICEEICT), 1–5. https://doi.org/10.1109/CEEICT.2016.7873106 Jin, X., Yuan, P., Li, X., Song, C., Ge, S., Zhao, G., & Chen, Y. (2017). Efficient privacy preserving Viola-Jones type object detection via random base image representation. 2017 IEEE International Conference on Multimedia and Expo (ICME), 673–678. https://doi.org/10.1109/ICME.2017.8019497 Kolsch, M., & Turk, M. (2004). Analysis of rotational robustness of hand detection with a Viola-Jones detector. Proceedings of the 17th International Conference on Pattern Recognition, 2004. ICPR 2004., 107-110 Vol.3. https://doi.org/10.1109/ICPR.2004.1334480 Nehru, M., & Padmavathi, S. (2017). Illumination invariant face detection using viola jones algorithm. 2017 4th International Conference on Advanced Computing and Communication Systems (ICACCS), 1–4. https://doi.org/10.1109/ICACCS.2017.8014571 Putro, M. D., Adji, T. B., & Winduratna, B. (2015). Adult image classifiers based on face detection using Viola-Jones method. 2015 1st International Conference on Wireless and Telematics (ICWT), 1–6. https://doi.org/10.1109/ICWT.2015.7449208 Rahman, M. A., & Zayed, T. (2018). Viola-Jones Algorithm for Automatic Detection of Hyperbolic Regions in GPR Profiles of Bridge Decks. 2018 IEEE Southwest Symposium on Image Analysis and Interpretation (SSIAI), 1–4. https://doi.org/10.1109/SSIAI.2018.8470374 Rashidan, M. A., & Mustafah, Y. M. (2014). Analysis of Artificial Neural Network and Viola-Jones Algorithm Based Moving Object Detection. 2014 International Conference on Computer and Communication Engineering, 251–254. https://doi.org/10.1109/ICCCE.2014.78 Sharma, H., & Saurav, S. (2015). Analyzing impact of image scaling algorithms on violajones face detection framework. 2015 International Conference on Advances in Computing, Communications and Informatics (ICACCI), 1715–1718. https://doi.org/10.1109/ICACCI.2015.7275860 Sikander, G., Anwar, S., & Djawad, Y. A. (2017). Facial feature detection: A facial symmetry approach. 2017 5th International Symposium on Computational and Business Intelligence (ISCBI), 26–31. https://doi.org/10.1109/ISCBI.2017.8053538 Vikram, K., & Padmavathi, S. (2017). Facial parts detection using Viola Jones algorithm. 2017 4th International Conference on Advanced Computing and Communication Systems (ICACCS), 1–4. https://doi.org/10.1109/ICACCS.2017.8014636