Está en la página 1de 10

Introducción a los sistemas de reconocimiento facial

utilizando Deep learning

Marco López-Sánchez[0000-0003-0644-5441]

División Académica de Ciencias y Tecnologías de la Información, Universidad Juárez


Autónoma de Tabasco. Cunduacán, Tabasco, México.

Resumen.

La detección de rostros ha sido un tema destacado entre los temas de la literatura


sobre visión por computadora, la detección de rostros es una tecnología
informática que determina la ubicación y el tamaño de un rostro humano en una
imagen digital.Aunque reconocer rostros es una tarea sin mucho esfuerzo para
los seres humanos, no es fácil para los sistemas computacionales. En los últimos
años el Deep learning ha demostrado ser un enfoque altamente eficiente para el
reconocimiento facial, en este trabajo se resume el método y las técnicas
utilizadas para la construcción de un sistema de reconocimiento facial destacando
el uso de la arquitectura de Redes Neuronales de Convolución(CNN), mismas
que han sido utilizadas debido a su alta eficacia, además, al utilizar las CNN se
ahorra el paso de la extracción de características brindando de esta manera
optimización en los tiempos dedicados al entrenamiento de los modelos de Deep
learning. Este documento también explora los conceptos básicos relacionados
con el flujo de trabajo que de manera general conlleva la creación de un sistema
de reconocimiento facial.

Palabras clave: Deep learning, CNN,Tensor Flow, python, visión por computadora.

1 Introducción

La visión computacional es un área tecnológica que ha avanzado rápidamente gracias


a los grandes avances en inteligencia artificial y Deep learning que se han producido en
los últimos años. Las redes neuronales ahora ayudan a los vehículos autónomos a
esquivar otros vehículos, peatones y otros obstáculos. Las tecnologías de
reconocimiento facial también se están volviendo más sofisticadas, lo que permite que
los teléfonos inteligentes puedan reconocer rostros para desbloquear, también es
utilizado por aplicaciones de gestión y almacenamiento de fotografías para ordenar y
buscar imágenes de acuerdo a las personas que aparece retratadas, o que algunas
aerolíneas utilizan el reconocimiento facial para que sus pasajeros realicen el abordaje
sin necesidad de mostrar su pasaporte o pase de abordar.

Las aplicaciones de visión computacional como las antes mencionadas se han


convertido en elementos básicos en nuestra vida diaria. Sin embargo, al ir más allá del
2

simple reconocimiento de objetos, el Deep learning les ha dado a las computadoras el


poder de crear cosas nuevas, como arte que no existía anteriormente, o creación de
apariencias artificiales de rostros humanos.

2 Deep learning = Redes neuronales profundas

El Deep learning es una clase de métodos de aprendizaje automático de representación


con múltiples niveles de representación. Se compone de varios módulos simples pero
no lineales, cada uno de los cuales transforma la representación de niveles anteriores
(comenzando con la entrada sin procesar) en una representación en un nivel superior,
un poco más abstracto. Con la composición de suficientes transformaciones de este
tipo, se pueden aprender características e inferencias muy complejas.

Esa capacidad de una red neuronal para ingerir datos y extraer representaciones
útiles sobre la base de ejemplos es lo que hace que el Deep learning sea tan poderoso.
El reconocimiento facial ha sido uno de los casos más famosos y estudiados, en
donde recientemente las técnicas de Deep learning son utilizadas para este fin, siendo
la arquitectura de Redes Neuronales de Convolución (CNN por sus siglas del inglés
Convolutional Neural Network) la más utilizadas, obteniendo resultados sobresalientes
superando incluso el desempeño humano [20].

En general, todos los métodos de aprendizaje profundo se pueden clasificar en una


de tres categorías diferentes, que son Redes Neuronales de Convolución (CNN), Redes
no Supervisadas Previamente Entrenadas (PUN) y Redes Neuronales Recurrentes
(RNN) [6].

Debido a que el Deep learning sigue el enfoque de arquitecturas de redes neuronales,


se le denomina también redes neuronales profundas Deep Neural Networks.

2.1 Redes Neuronales

Una Red Neuronal Artificial, es un modelo computacional y una arquitectura que


simula las neuronas biológicas y la forma en que funcionan en nuestro cerebro.
Normalmente, tiene capas de nodos interconectados. Una Red neuronal artificial típica
tiene una capa de entrada, una capa de salida y al menos una capa oculta entre la entrada
y la salida con interconexiones [18], (ver Fig. 1). Aunque existen varios tipos de Redes
neuronales, los tipos tradicionales son el perceptrón y el perceptrón multicapa [3].
3

Fig 1. Arquitectura típica de una red neuronal

2.2 Redes Neuronales de Convolución

Se considera que la red neuronal de convolución (CNN) está inspirada en la evidencia


biológica encontrada en la corteza visual del cerebro de los mamíferos. En la corteza
visual existe la presencia de pequeñas regiones de células que son sensibles a regiones
particulares del campo visual. Un experimento de Hubel y Wisel mostró además que
algunas células neuronales particulares presentes en el cerebro se activan solo cuando
notan los bordes de una determinada orientación. Por ejemplo, algunas se activan en
los bordes diagonales u horizontales, donde las neuronas se colocan juntas para ejecutar
la percepción visual. Este concepto es a base de las CNN [21].

Las CNN se introdujeron por primera vez en la década de 1980 y 1990, pero se
descuidó debido a su complejidad en las aplicaciones del mundo real. Sin embargo, se
han retomado gracias al interés dentro de los científicos y desde entonces ha mostrado
resultados sobresalientes en el campo de visión computacional mientras sigue creciendo
en un ritmo acelerado [5].Desde un punto de vista estructural, las CNN se componen
de tres diferentes capas: capas de convolución, capas de agrupación y capas
completamente conectadas.

Capa de convolución: a veces llamada capa extractora de características porque las


características de la imagen se extraen dentro de esta capa. La convolución aprende las
características de la imagen usando pequeños cuadrados de la imagen de entrada
conservando la relación espacial entre píxeles. Esto produce un mapa de características
como imagen de salida, que alimentará los datos de entrada a la siguiente capa de
convolución. La capa de convolución también contiene la activación de la unidad lineal
rectificada (ReLU) para convertir todos valor negativo a cero. Esto lo hace muy
eficiente desde el punto de vista computacional, ya que cada vez se activan pocas
neuronas.
4

Pooling o Capa de agrupación: se utiliza para reducir las dimensiones, con el


objetivo de reducir los tiempos de procesamiento al retener la información más
importante después de la convolución. Esta capa básicamente reduce el número de
parámetros y cálculo en la red, controlando el ajuste mediante la reducción progresiva
del tamaño espacial de la red.

Hay dos operaciones en esta capa: agrupación promedio y agrupación máxima:

▪ La agrupación promedios toma todos los elementos de la sub-matriz,


calcula su promedio y almacena el valor en la matriz de salida.
▪ La agrupación máxima busca el valor más alto encontrado en la sub-matriz
y lo guarda en la matriz de salida

Capa completamente conectada: en esta capa, las neuronas tienen una conexión
completa con todas las activaciones de las capas anteriores. Conecta neuronas en una
capa con neuronas en otra capa.

En la (Fig. 2) se puede apreciar un ejemplo de la arquitectura de una CNN.

Fig 2. Ejemplo de arquitectura de CNN

3 Plataformas de Deep learning

Python se considera un lenguaje popular para Deep learning, python es un sencillo y


elegante lenguaje de programación que cuenta con una sintaxis clara. También python
ha sido equipado con tipos de datos de alto nivel como son: listas, colas, tuplas,
5

diccionarios, etc., que facilitan la implementación de conceptos abstractos muchos de


los cuales son empleados en Machine learning y Deep learning [12].

3.1 Tensor Flow


Tensor Flow es un framework para el cálculo numérico distribuido que permite entrenar
y ejecutar redes neuronales muy grandes de manera eficiente. Tensor Flow se creó en
Google y es compatible con muchas de sus aplicaciones de aprendizaje automático a
gran escala[5]. Brinda un buen soporte para operaciones de nivel superior, que facilita
el proceso de aprendizaje automático, se enfoca en la creación rápida de prototipos y
construcciones de implementación de modelos[18]

Tensor Flow ha sido elegido como paquete de aprendizaje profundo debido a su


flexibilidad para fines de investigación y su facilidad de uso. Otra razón para elegir
Tensor Flow es su capacidad para cargar modelos con facilidad, en un entorno de
producción utilizando sus capacidades de servicio[9]

3.2 PyTorch
El framework PyTorch es una herramienta para el aprendizaje profundo desarrollada
por la división de inteligencia artificial de Facebook para procesa análisis de imágenes
a gran escala, incluida la detección, segmentación y clasificación de objetos, PyTorch
también permite escribir funciones que se ejecuten automáticamente en un entorno
GPU[10].

3.3 MXNet

MxNet es una herramienta de aprendizaje profundo altamente escalable que se puede


utilizar en una amplia variedad de dispositivos. Aunque no parece ser tan ampliamente
utilizado hasta ahora en comparación con Tensor Flow. Compatible con los principales
proveedores de servicios en la nube, como AWS y Azure[9]

4 Construyendo un sistema de reconocimiento de rostros


personalizado

Se utilizan tres pasos básicos para desarrollar un sistema de reconocimiento de rostros


robusto: detección de rostros, extracción de características y reconocimiento de rostros
(ver Fig. 3) [16].
6

Fig 3. Pasos básicos para un sistema de reconocimiento de rostros

El paso de detección de rostros se utiliza para detectar y localizar la imagen del


rostro humano obtenida por el sistema. El paso de extracción de características se
emplea para extraer los vectores de características de cualquier rostro humano ubicado
en el primer paso. Finalmente, el paso de reconocimiento de rostros incluye las
características extraídas del rostro humano para compararlo con todas las bases de datos
de rostros de plantilla para decidir la identidad del rostro humano.

En la mayoría de los casos se utiliza el enfoque de aprendizaje supervisado, uno de


los objetivos estandarizados del aprendizaje supervisado es hacer que la computadora
aprenda un sistema de clasificación; por lo tanto, se usa comúnmente para resolver
problemas de clasificación mediante el cual la computadora recibe datos etiquetados
tanto para la entrada como para la salida esperada durante su entrenamiento y el
algoritmo de aprendizaje supervisado genera una función de mapeo que puede
identificar la salida esperada para una entrada determinada. El proceso de
entrenamiento continúa hasta que el algoritmo alcanza el nivel de precisión preferido.

Para construir un modelo de Deep learning son necesarios cuatro pasos fundamentales:

● Reunir los datos. El primer componente de la construcción de una red de Deep


learning es recopilar nuestro conjunto de datos inicial. Necesitamos las
imágenes en sí, así como las etiquetas asociadas con cada imagen. Estas
etiquetas deben provenir de un conjunto finito de categorías, como: categorías
= perro, gato, auto, persona 1, etc. Además, el número de imágenes para cada
categoría debe ser aproximadamente uniforme (es decir, el mismo número de
ejemplos por categoría).

● Dividir el conjunto de datos. Ahora que tenemos nuestro conjunto de datos


inicial, debemos dividirlo en tres partes: 1. Un conjunto de entrenamiento, 2.
Un conjunto de validación y 3. Un conjunto de pruebas.

Para construir el modelo, se utiliza un conjunto de entrenamiento para "aprender"


cómo se ve cada categoría haciendo predicciones en los datos de entrada y luego se
corrige cuando las predicciones son incorrectas. Una vez que se ha entrenado al
clasificador hacemos uso del conjunto de validación para poder saber que tan eficaz es
el modelo y por último podemos evaluar el rendimiento en un conjunto de validación.
7

Es importante que los tres conjuntos sean independientes entre sí y no se


superpongan. Si los datos para cada conjunto son los mismos, entonces el modelo tiene
una ventaja injusta, ya que ya ha visto los ejemplos de validación y prueba antes y ha
"aprendido" de ellos. En su lugar, deben mantenerse estos conjunto completamente
separados de su proceso de entrenamiento y usarlos sólo para evaluar el rendimiento de
la red.

● Entrenar la red. Dado nuestro conjunto de imágenes de entrenamiento, ahora


se puede entrenar la red. El objetivo aquí es que la red aprenda a reconocer
cada una de las categorías de los datos etiquetados. Cuando el modelo comete
un error, aprende de este error y se mejora a sí mismo.

● Evaluar. Finalmente, estas predicciones del modelo se comparan con las


etiquetas de verdaderos positivos del conjunto de pruebas. Las etiquetas de
verdaderos positivos representan lo que realmente es la categoría de imagen.
A partir de ahí, se puede calcular la cantidad de predicciones que el modelo de
detección obtuvo correctamente y realizar informes de rendimiento tales como
accuracy, precision, recall, and f-measure por mencionar algunos.

Al construir redes neuronales convolucionales, se omite el paso de extracción de


características, la razón de este esque las CNN son modelos de extremo a extremo, por
lo cual solo presentamos los datos de entrada a la red, luego la red aprenderá de los
filtros dentro de sus capas ocultas que son utilizadas para discriminar entre clases de
objetos y la salida de la red es una distribución de probabilidades sobre etiquetas de
clase.

5 Estado del arte

En el campo de la visión por computadora, el reconocimiento facial ha sido un tema de


investigación predominante en el reconocimiento de patrones, que consta de dos etapas:
detección facial y reconocimiento facial. Se han desarrollado varias técnicas de
reconocimiento para capturar características discriminatorias para un mejor
desempeño. Los enfoques tradicionales generalmente incluyen dos pasos: extracción
de características de alta dimensión y un diseño de clasificador.

Los modelos de CNN ya integran el extractor de características y el clasificador de


un extremo a otro. Recientemente, las aplicaciones basadas en CNN, que recuerdan a
FaceNet [11], DeepFace [15] y DeepID [13], se utilizan ampliamente en tareas de
reconocimiento facial y han mostrado resultados sobresalientes en diferentes entornos.

En comparación con los métodos de reconocimiento facial convencionales, los


modelos de reconocimiento facial basados en Deep learning siempre pueden lograr
mejores rendimientos. Por ejemplo, FaceNet [11] opera redes muy profundas para
realizar el reconocimiento facial, este sistema alcanza el 99,63% de precisión. Desde
8

2012, las CNN se han vuelto frecuentes. Esto se debe a la gran cantidad de datos de
entrenamiento y a los recursos informáticos adaptables, como las GPU. Siguiendo esta
misma línea, Krizhevsky [7] entrenó una red convolucional para clasificar imágenes en
la competencia ILSVRC-2012 y obtuvo una precisión de reconocimiento atractiva.
Mientras tanto, las arquitecturas basadas en CNN como GoogLeNet [14] y VGG [2],
han sido mucho más amplias y profundas, dando lugar a enormes parámetros de red y
buenos rendimientos.

También se han sugerido muchos enfoques para mejorar el rendimiento de la


verificación facial en un entorno sin restricciones, y algunos de ellos han mostrado
resultados impresionantes. En el trabajo de [4] propuso un modelo de Deep learning
que tenía en cuenta tanto la luz visible como las imágenes del infrarrojo cercano para
realizar el reconocimiento facial. Los resultados experimentales demostraron que el
modelo era muy efectivo en escenarios del mundo real y se desempeñó mucho mejor
en términos de cambio de iluminación que otros modelos de última generación.

Los autores en [1] desarrollaron un algoritmo de reconocimiento de expresiones


faciales basado en Deep learning, los experimentos demostraron que el método de
reconocimiento de expresiones faciales identificaría con precisión varias expresiones y
tendría una buena capacidad de adaptación. Jiang-Jing [8] presentó un enfoque simple
y eficiente, que utiliza una gran cantidad de imágenes faciales desalineadas, para
entrenar el modelo de Deep learning, los autores en [19] presentan un marco CNN
ligero para aprender una incrustación compacta en datos faciales a gran escala con
etiquetas ruidosas masivas. Los resultados experimentales mostraron que el marco
propuesto era eficiente en costos computacionales y espacios de almacenamiento.

En [22], los autores introdujeron una nueva capa para incrustar la estrategia del
parche en la arquitectura convolucional para mejorar la eficacia de la representación
facial, este enfoque hizo un mejor uso de las interacciones entre las características
globales y locales en el modelo. El trabajo de [17] supervisó una CNN mediante una
nueva pérdida de centro de señal y obtuvo la precisión de vanguardia en tres
importantes puntos de referencia de reconocimiento facial.

6 Conclusiones

El sistema de reconocimiento facial es una tarea de estudio popular en el campo del


procesamiento de imágenes y la visión por computadora, debido a su potencial, así
como a su valor teórico. Este sistema se implementa ampliamente en muchas
aplicaciones del mundo real, como seguridad, vigilancia, control de acceso, búsqueda
de imágenes y entretenimiento.

Este artículo destaca la creación de un sistema de reconocimiento facial, centrándose


principalmente en enfoques basados en Deep learning, destacando el uso de CNN para
9

la generación de modelos, una de las grandes ventajas que tiene el uso de Deep learning
sobre los modelos tradicionales de aprendizaje automático,es que la red puede aprender
a diseñar las características que necesita para resolver el problema.

Referencias

[1] An, F., Liu, Z.: Facial expression recognition algorithm based on parameter
adaptive initialization of CNN and LSTM. Vis. Com- put. 35, 1–16 (2019).
https://doi.org/10.1007/s00371-019-01635 -4.

[2] Chatfield, K., Simonyan, K., Vedaldi, A., Zisserman, A.: Return of the devil in the
details: delving deep into convolutional nets, 2014. arXiv:1405.3531.

[3] Fatma S Abousaleh, Tekoing Lim, Wen-Huang Cheng, Neng-Hao Yu, M Anwar
Hossain, and Mohammed F Alhamid. A novel comparative deep learning framework
for facial age estimation. EURASIP Journal on Image and Video Processing,
2016(1):1–13, 2016.

[4] Guo, K., Wu, S., Xu, Y.F.: Face recognition using both visible light image and near-
infrared image and a deep network. CAAI Trans. Intell. Technol. 2(1), 39–47 (2017)

[5] Hijazi S, Kumar R, and Rowen C (2015) Using convolutional neural networks for
image recognition, ed.

[6] Hosseini, M. P., Lu, S., Kamaraj, K., Slowikowski, A., & Venkatesh, H. C. (2020).
Deep learning architectures. In Deep learning: concepts and architectures (pp. 1-24).
Springer, Cham.

[7] Krizhevsky, A., Sutskever, I., Hinton, G.E.: Imagenet classifica- tion with deep
convolutional neural networks. In: Advances in Neural Information Processing
Systems, pp. 1097–1105 (2012).
[8] Lv, J.J., Cheng, C., Tian, G.D., Zhou, X.D., Zhou, X.: Landmark perturbation-based
data augmentation for unconstrained face rec- ognition. Sig. Process. Image Commun.
47, 465–475 (2016).

[9] Santanu Pattanayak. Pro deep learning with TensorFlow: a mathematical approach
to ad- vanced artificial intelligence in Python. Apress, 2017.

[10] Satya Mallick. A brief history of image recognition and object detection. https:
//learnopencv.com/image-recognition-and-object-detection-part1/, 2016.

[11] Schroff, F., Kalenichenko, D., Philbin, J.: Facenet: a unified embedding for face
recognition and clustering. In: Proceedings of the IEEE Conference on Computer
Vision and Pattern Recogni- tion, pp. 815–823 (2015).

[12] Sodhi, Pinky, Naman Awasthi, and Vishal Sharma. "Introduction to machine
learning and its basic application in Python." Proceedings of 10th International
Conference on Digital Strategies for Organizational Success. 2019.
10

[13] Sun, Y., Wang, X., Tang, X.: Deep learning face representation from predicting
10,000 classes. In: Proceedings of the IEEE Conference on Computer Vision and
Pattern Recognition, pp. 1891–1898 (2014).

[14] Szegedy, C., Liu, W., Jia, Y., et al.: Going deeper with convo- lutions. In:
Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp.
1–9 (2015).

[15] Taigman, Y., Yang, M., Ranzato, M.A., Wolf, L.: Deepface: clos- ing the gap to
human-level performance in face verification. In: Proceedings of the IEEE Conference
on Computer Vision and Pattern Recognition, pp. 1701–1708 (2014).

[16] Vinay, A.; Hebbar, D.; Shekhar, V.S.; Murthy, K.B.; Natarajan, S. Two novel
detector-descriptor based approaches for face recognition using sift and surf. Procedia
Comput. Sci. 2015, 70, 185–197.

[17] Wen, Y., Zhang, K., Li, Z., Qiao, Y.: A discriminative feature learning approach
for deep face recognition. In: European Conference on Computer Vision, pp. 499–515.
Springer, Cham (2016).

[18] Witold Pedrycz and Shyi-Ming Chen. Deep Learning Concepts and Architectures.
Springer, (2020).

[19] Wu, X., He, R., Sun, Z., Tan, T.: A light cnn for deep face rep- resentation with
noisy labels. IEEE Trans. Inf. Forensics Secur. 13(11), 2884–2896 (2018).

[20] Yann LeCun, Yoshua Bengio, and Geoffrey Hinton. Deep learning. Nature,
521(7553):436– 444, (2015).

[21] Zhang Y, Lu Y, Wu H, Wen C, and Ge C (2016) Face occlusion detection using


cascaded convolutional neural network, in Chinese Conference on Biometric
Recognition, pp. 720–727.

[22] Zhang, Y., Shang, K., Wang, J., Li, N., Zhang, M.M.: Patch strat- egy for deep
face recognition. IET Image Proc. 12(5), 819–825 (2018).

También podría gustarte