Artículos originales
Sistema de reconocimiento facial para el control de accesos mediante Inteligencia Artificial
Facial recognition system for access control through Artificial Intelligence
Sistema de reconocimiento facial para el control de accesos mediante Inteligencia Artificial
Innovación y Software, vol. 4, núm. 1, 2023
Universidad La Salle

Recepción: 22 Septiembre 2022
Aprobación: 05 Noviembre 2022
Publicación: 30 Marzo 2023
Resumen: El presente artículo tiene como objetivo principal el desarrollo de un sistema que permita el reconocimiento facial de una persona para el control de accesos mediante Inteligencia Artificial. Para el desarrollo del sistema se tuvo como algoritmo Redes Neuronales Convolucionales, el cual es un modelo de reconocimiento. Así mismo se utilizó el lenguaje de programación Python y las librerías siguientes como Numpy, Os, OpenCV e Imutils para su implementación. Los resultados obtenidos según el acierto y utilizando un dataset de 450 imágenes por individuo son de un 88% aproximadamente en cuanto la predicción por persona, concluyendo que el sistema de reconocimiento es eficaz y tiene mayor eficiencia incrementando el tamaño de datasets generados por individuos.
Palabras clave: Control de acceso, Inteligencia Artificial, Redes Neuronales Convolucionales.
Abstract: The main objective of this article is the development of a system that allows the facial recognition of a person for access control through Artificial Intelligence. For the development of the system, the Convolutional Neural Networks algorithm was used, which is a recognition model. Likewise, the Python programming language and the following libraries such as Numpy, Os, OpenCV and Imutils were used for its implementation. The results obtained according to the hit and using a dataset of 4500 images are approximately 88% in terms of the prediction per person, concluding that the recognition system is effective and has greater efficiency by increasing the size of datasets generated by individuals.
Keywords: Access Control, Artificial Intelligence, Convolutional Neural Networks..
Introducción
Actualmente la relación entre computadora y humano va reduciendo brechas, lo cual genera consigo una gran necesidad en implementación de seguridad informática. La seguridad informática es considerada un tema de gestión alineado a estándares y buenas prácticas [13], por lo cual requiere de un sistema de autenticación para restringir el acceso de los usuarios a cierta información almacenada en computadores.
Dentro de los diferentes tipos de autenticación se encuentra la autenticación biométrica que incluye la detección de una señal biométrica, la extracción de diversas características contenidas en la señal biométrica, y el uso de clasificadores para manejar las características extraídas [14]. La autenticación biométrica es aplicable a distintas características genéticas de los individuos, tales como: iris de los ojos [15], huellas dactilares [16] y el rostro [1].
Los diferentes tipos de software cuentan con una autenticación débil que puede ser vulnerada si se consiguen las credenciales necesarias, es decir que cualquier individuo puede acceder al sistema si cuenta con el usuario y contraseña correctos para ser admitido, debido a que la autenticación se realiza bajo un solo factor[7].Por otra parte se pudo identificar información relevante que debe ser tomada en cuenta para el desarrollo de un sistema de autenticación biométrico facial, elementos como el nivel de iluminación, nivel de brillo del ambiente y perspectiva de la imagen afectan a la recopilación de características de las imágenes, sobre todo si se trabaja bajo un concepto de reconocimiento facial automatizado 2D[1].
En este artículo se tratará de abordar un sistema que permita el reconocimiento facial de una persona para el control de accesos mediante Inteligencia Artificial captados por una videocámara, cubriendo las brechas o limitaciones como son el nivel de iluminación, nivel de brillo del ambiente [1], mediante un trabajo en 3D, además que vamos a realizar múltiples capturas de imagen para incrementar el reconocimiento facial [10] y reducir la repercusión del ambiente.
Materiales y métodos o Metodología computacional
Estado del arte:
Un sistema de reconocimiento facial integrado de bajo costo para el control de acceso a puertas mediante Deep Learning
El presente artículo [2] presenta cómo se utiliza un procesador Neural Compute Stick 2 junto con una placa Raspberry Pi 3 B+ para controlar una cerradura electromagnética usando técnicas de aprendizaje profundo para generar un sistema de control de acceso con capacidades de reconocimiento facial integradas desarrollado en el lenguaje de programación Python.
Automatizado basado en redes neuronales convolucionales Sistema de Asistencia mediante Reconocimiento Facial Dominio
El presente artículo [7] tiene como finalidad lograr el reconocimiento de rostros en imágenes de video, videos pregrabados o a través de una cámara en vivo para la implementación de un sistema de asistencia automático desarrollado con lenguaje de programación Python que marcará la asistencia solo a los alumnos que hayan asistido a más del 60% de las clases, dejando al resto con inasistencia. Los métodos que implementados son: Análisis de Componentes, análisis de discriminante lineal, patrón binario local y el clasificador de gabo; los cuales reducen la cantidad de cálculos, reducen la complejidad y aumentan la precisión en el reconocimiento facial.
Fundamentación Teórica
Reconocimiento Facial
Identificación de rostros con bajos niveles de sesgo mediante la aplicación de la Inteligencia artificial.[9]
El reconocimiento biométrico facial es definido como una tecnología de inteligencia artificial que implementa comparaciones automáticas de diversos rasgos faciales.[10]
Inteligencia Artificial
La inteligencia artificial (IA) es un conjunto de algoritmos (reglas que definen con precisión un conjunto de operaciones) que permiten realizar cálculos para percibir, razonar y actuar. La IA es usada para llevar a cabo la realización de múltiples tareas, pero puede usarse para brindar mejoras a la inteligencia humana.[8]
Machine learning
Machine learning es definido como aprendizaje automático, y su uso está enfocado en el análisis masivo de datos [19]. Dentro de sus algoritmos más usados tenemos: SVM, BOSQUE ALEATORIO, Árbol de decisiones KNN y Adaboost clasificadores [20].
Deep Learning
Definido como aprendizaje profundo, ofrece una estrategia de optimización global. Dentro de sus usos tenemos: Procesamiento de información, reducción de ruido en imágenes [21], procesamiento del lenguaje natural [22], máquina de traducción [24] e ingeniería de software [25].
Además, el aprendizaje profundo es una rama derivada del aprendizaje automático (Machine learning) [23].
Redes Neuronales
Es un algoritmo inspirado en el cerebro humano diseñado para reconocer patrones en conjuntos de datos numéricos. Los datos del mundo real, por ejemplo, imagen, audio de texto, video, etc. necesita ser transformado en vectores numéricos para usar redes neuronales. Una red neuronal se compone de diferentes capas y una capa se compone de múltiples nodos.
Según el tipo de patrón que la red neuronal está tratando de aprender, a cada dato de entrada que ingresa a un nodo se le asigna cierto peso. Estos pesos determinan la importancia de los datos de entrada para producir el resultado final. Se calcula la suma ponderada de los datos de entrada y, dependiendo de algunos sesgos de umbral, se determina la salida para el nodo. La asignación de entrada a salida se realiza mediante alguna función de activación. [17]
Redes Neuronales convolucionales
Son un tipo de red neuronal que se utiliza principalmente en el campo de clasificación de imágenes, particularmente en el reconocimiento facial. Las redes neuronales convolucionales toman una imagen de entrada y modifican los pesos de la red en función de la imagen de entrada para que pueda diferenciarla de otras imágenes. Esto permite que la red aprenda e identifique las características importantes por sí misma. Por la tanto, se minimiza la necesidad de supervisión humana, reducen la necesidad de procesamiento requerido para entrenar el modelo.[7]
Seguridad de la información
Es la disciplina que, con base en políticas y normas internas y externas de la empresa, se encarga de proteger la integridad y privacidad de la información almacenada en un sistema informático, contra cualquier tipo de amenaza, minimizando los riesgos tanto físicos como físicos. lógica, a la que está expuesto.[18]
Control de Accesos
Es implementado como un método de seguridad para delimitar un conjunto de usuarios autorizados para acceder a una determinada información [2].
Herramientas y elementos
Visual Studio Code Visual Studio Code es definido como una plataforma de código abierto, un editor de código de multiplataforma que pertenece a Microsoft y proporciona todos los componentes necesarios de un IDE como: IntelliSense, depuración, control de versiones, creación de plantillas y API de extensiones que brindan muchas facilidades a los desarrolladores.[11]
Python Python es un lenguaje de programación ampliamente utilizado en las aplicaciones web, el desarrollo de software, la ciencia de datos y el machine learning (ML). Los desarrolladores utilizan Python porque es eficiente y fácil de aprender, además de que se puede ejecutar en muchas plataformas diferentes.[6]
Las librerías utilizadas en este lenguaje de programación para este proyecto fueron las siguientes:
Numpy NumPy es un módulo de Python. El nombre es un acrónimo de Python Numérico. Es una librería que consiste en objetos de matrices multidimensionales y una colección de rutinas para procesar esas matrices. Es un módulo de extensión para Python, escrito en su mayor parte en C. Esto asegura que las funciones y funcionalidades matemáticas y numéricas recompiladas de NumPy garantizan una gran velocidad de ejecución.[3]
Os Este módulo provee una manera versátil de usar funcionalidades dependientes del sistema operativo, algunas como leer, escribir, manipular archivos y demás.[4]
OpenCV Es una biblioteca de código abierto que incluye varios cientos de algoritmos de visión artificial.[5]
Imutils Es un paquete de OpenCV que evita la pérdida de fotogramas en el procesamiento de imágenes mediante el uso de múltiples subprocesos que llevan a cabo la lectura y procesamiento de las imágenes en forma simultánea.[12]
Uso del Sistema de detección
Creación de los Datasets
Se usó un dataset creado por un script escrito en python que podemos apreciar en la Figura 1, el cual se encarga de primero trabajar con el frame que es capturado por la cámara para luego evaluarlo por “haarcascade” y detectar la presencia de un rostro, de existir la presencia de algún rostro, es extraído, redimensionado a 720x720 y almacenado como un archivo de formato JPG en una carpeta con el nombre de la persona que estamos registrando, el cual definimos en la línea 3 como personCode, se mantendrá en un bucle hasta alcanzar la cantidad de 450 imágenes registradas para posteriormente finalizar el proceso.

Entrenamiento
Se ejecuta un script en python el cual se encarga de usar el algoritmo que será usado para el reconocimiento facial es el conocido como “Local Binary Pattern Histogram”, el cual nos ayuda con el reconocimiento de una persona Figura 2.

Lo que haremos es brindarle la data (imágenes generadas anteriormente) junto a sus respectivos labels que no son más que valores asignados a cada persona registrada, que van desde el 0 hasta donde sea necesario, todo esto con el fin de que el algoritmo pueda ser entrenado y finalmente nos genere un “Modelo” en formato xml que contenga todos los valores necesarios para que sea capaz de reconocer a las personas que protagonizan las imágenes entregadas anteriormente.
El modelo generado contiene los valores de los pesos y sesgos necesarios en la red para que ésta sea capaz de reconocer a las personas que han sido registradas en el entrenamiento, no es necesario que comprendamos cada valor que está incluido en este modelo, simplemente con comprender que en su conjunto está personalizado para el reconocimiento facial de aquellos individuos ue registramos con su respectivo dataset. Figura 3.

Predicción
Una vez entrenado, el modelo está listo para realizar predicciones, para ello desarrollamos un script de python el cual se encarga de primero trabajar con el frame que es capturado por la cámara para luego evaluarlo por “haarcascade” y detectar la presencia de un rostro, de existir la presencia de algún rostro, es extraído, redimensionado a 720x720, y este último será el frame que ingresará al modelo para poder predecir y que este nos devuelva su predicción. Figura 4.

La predicción del modelo nos devuelve 2 valores, primero el número del label con el cual tiene mejor coincidencia y en segundo lugar, la distancia o que tan alejado se encuentra el frame actual de los registrado para el entrenamiento que pertenecen a dicho label, el nivel de confiabilidad puede ser personalizado dependiendo del nivel de confianza que se desea en el momento de la autenticación, en la línea 37 se estipula la lejanía máxima a la que se puede encontrar la imagen de entrada de la predicción para ser aceptado como reconocido, mientras que en la línea 17, el valor de maxTime indica la cantidad de frames máximos que se evaluarán para la predicción, por su parte en la línea 32 se establece que el mínimo de frames en los que debe ser reconocido el individuo para considerarlo como tal, reconocido, 0.8(80%), luego de que se cumpla el maxTime, se pinta en pantalla el resultado, sea positivo o negativo durante unos segundos para luego finalizar su ejecución.

En la Figura 5 podemos visualizar la apariencia de la ejecución del script de reconocimiento tanto cuando reconoce cuando al individuo, como cuando no.

En la Figura 6 podemos observar cómo se muestran los resultados finales de autenticación, tanto positiva como negativa.
Resultados y discusión
Los parámetros que usa el sistema pueden ser perfectamente ajustados de acuerdo a lo que uno necesite, en este caso se usaron 450 imágenes por persona registrada, pero a mayor este número, mayor será la precisión del sistema.
Respecto a la precisión, al realizar pruebas se obtiene como segundo valor devuelto, que tan alejado está el frame de la predicción hecha por el sistema, al sacar una media de estos valores devueltos, se obtuvo como resultado el valor de 12.070609534085545, esto se traduce en un porcentaje de acierto de un 88% aproximadamente en cuanto a las predicciones por persona se refiere, Figura 8.

Mientras que el porcentaje de aciertos totales dentro de una prueba unitaria fue considerado como un valor mínimo a alcanzar para validar la autenticación de la persona, en este caso como se indicó previamente, es del 80%, al igual el tamaño unitario de los datasets, se puede ajustar manualmente.
Conclusiones
El sistema de reconocimiento se puede ajustar para una mayor eficiencia siempre y cuando se incremente el tamaño de los datasets generados por individuo para un posterior más robusto entrenamiento.
El lenguaje de programación Python brinda muchas facilidades para la programación de este tipo, refiriéndonos a Visión Artificial como a Inteligencia artificial, con la gran cantidad de librerías que ofrecen métodos para una mejor experiencia en estos campos.
Algunos rasgos faciales pueden ser compartidos por una o más personas, para ello es mejor ampliar el tamaño de los datasets y así poder ser más específicos al entrenar a la red neuronal. Los datasets de imágenes solo son usados para crear el modelo, una vez esto esté hecho ya no es necesario mantenerlos, puede deshacerse de ellos o almacenarlos, de aquí en adelante para las predicciones sólo es necesario usar los valores que están dentro del modelo generado.
Referencias
[1] "Facial Expression Recognition Using Machine Learning Techniques", International Journal of Advance Engineering and Research Development, vol. 1, n.º 06, junio de 2020. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.21090/ijaerd.010633
[2] R. F. Rahmat, E. N. Zai, I. Fawwaz y I. Aulia, "Facial Recognition-Based Automatic Door Access System Using Extreme Learning Machine", IOP Conference Series: Materials Science and Engineering, vol. 851, p. 012065, mayo de 2020. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1088/1757-899x/851/1/012065
[3] "Librería NumPy - 🤖 Aprende IA". 🤖 Aprende IA. https://aprendeia.com/libreria-de-python-numpy-machine-learning/ (accedido el 17 de noviembre de 2022).
[4] "os - Interfaces miscelíneas del sistema operativo — documentación de Python - 3.10.8". 3.11.0 Documentation. https://docs.python.org/es/3.10/library/os.html (accedido el 17 de noviembre de 2022).
[5] "OpenCV: OpenCV modules". OpenCV documentation index. https://docs.opencv.org/4.x/ (accedido el 17 de noviembre de 2022).
[6] "¿Qué es Python? | Guía de Python para principiantes de la nube | AWS". Amazon Web Services, Inc. https://aws.amazon.com/es/what-is/python/ (accedido el 17 de noviembre de 2022).
[7] Anuja Jadhav, Yash Joshi y Vishakha Kalambe, "Face Based Attendance System Using Convolutional Neural Network", International Journal of Advanced Research in Science, Communication and Technology, pp. 51–54, febrero de 2022. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.48175/ijarsct-2506
[8] O. Niel y P. Bastard, "Artificial Intelligence in Nephrology: Core Concepts, Clinical Applications, and Perspectives", American Journal of Kidney Diseases, vol. 74, n.º 6, pp. 803–810, diciembre de 2019. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1053/j.ajkd.2019.05.020
[9] T. Walsh, "The troubling future for facial recognition software", Communications of the ACM, vol. 65, n.º 3, pp. 35–36, marzo de 2022. Accedido el 15 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1145/3474096
[10] M. Smith y S. Miller, "The ethical application of biometric facial recognition technology", AI & SOCIETY, abril de 2021. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1007/s00146-021-01199-9
[11] S. Latifi, Ed., 17th International Conference on Information Technology–New Generations (ITNG 2020). Cham: Springer International Publishing, 2020. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1007/978-3-030-43020-7
[12] S. K. Shammi, S. Sultana, M. S. Islam y A. Chakrabarty, "Low Latency Image Processing of Transportation System Using Parallel Processing co-incident Multithreading (PPcM)", en 2018 Joint 7th International Conference on Informatics, Electronics & Vision (ICIEV) and 2018 2nd International Conference on Imaging, Vision & Pattern Recognition (icIVPR), Kitakyushu, Japan, 25–29 de junio de 2018. IEEE, 2018. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1109/iciev.2018.8640957
[13] M. Nicho, S. Khan y M. S. M. K. Rahman, "Managing Information Security Risk Using Integrated Governance Risk and Compliance", en 2017 International Conference on Computer and Applications (ICCA), Doha, United Arab Emirates, 6–7 de septiembre de 2017. IEEE, 2017. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1109/comapp.2017.8079741
[14] S. Rasnayaka, S. Saha y T. Sim, "Making the most of what you have! Profiling biometric authentication on mobile devices", en 2019 International Conference on Biometrics (ICB), Crete, Greece, 4–7 de junio de 2019. IEEE, 2019. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1109/icb45273.2019.8987402
[15] I. Sluganovic, M. Roeschlin, K. B. Rasmussen y I. Martinovic, "Analysis of Reflexive Eye Movements for Fast Replay-Resistant Biometric Authentication", ACM Transactions on Privacy and Security, vol. 22, n.º 1, pp. 1–30, enero de 2019. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1145/3281745
[16] L. Monastyrskii, V. Lozynskii, Y. Boyko y B. Sokolovskii, "Fingerprint recognition in inexpensive biometric system", Electronics and Information Technologies, vol. 9, 2018. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.30970/eli.9.120
[17] P. Gupta, N. Saxena, M. Sharma y J. Tripathi, "Deep Neural Network for Human Face Recognition", International Journal of Engineering and Manufacturing, vol. 8, n.º 1, pp. 63–71, enero de 2018. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.5815/ijem.2018.01.06
[18] H. AYDIN, "The Importance of Cyber Security in Management Information Systems (MIS)", Bilgisayar Bilimleri ve Teknolojileri Dergisi, octubre de 2022. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.54047/bibted.1138252
[19] M. Meroni, F. Waldner, L. Seguini, H. Kerdiles y F. Rembold, "Yield forecasting with machine learning and small data: What gains for grains?", Agricultural and Forest Meteorology, vol. 308-309, p. 108555, octubre de 2021. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1016/j.agrformet.2021.108555
[20] M. S. Bouzakraoui, A. Sadiq y A. Y. Alaoui, "Customer Satisfaction Recognition Based on Facial Expression and Machine Learning Techniques", Advances in Science, Technology and Engineering Systems Journal, vol. 5, n.º 4, p. 594, agosto de 2020. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.25046/aj050470
[21] B. Liu et al., "Unsupervised Deep Learning for Random Noise Attenuation of Seismic Data", IEEE Geoscience and Remote Sensing Letters, pp. 1–5, 2021. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1109/lgrs.2021.3057631
[22] A. Bazaga, N. Gunwant y G. Micklem, "Translating synthetic natural language to database queries with a polyglot deep learning framework", Scientific Reports, vol. 11, n.º 1, septiembre de 2021. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1038/s41598-021-98019-3
[23] J. Han, E. Shihab, Z. Wan, S. Deng y X. Xia, "What do Programmers Discuss about Deep Learning Frameworks", Empirical Software Engineering, vol. 25, n.º 4, pp. 2694–2747, abril de 2020. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1007/s10664-020-09819-6
[24] X. Wang, Z. Tu y M. Zhang, "Incorporating Statistical Machine Translation Word Knowledge Into Neural Machine Translation", IEEE/ACM Transactions on Audio, Speech, and Language Processing, vol. 26, n.º 12, pp. 2255–2266, diciembre de 2018. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.1109/taslp.2018.2860287
[25] S.-H. Kim, C.-B. Moon, J.-W. Kim y D.-S. Kim, "Design of Automatic Modulation Classification Based on Deep Learning Technique Applying Extended Frame", The Journal of Korean Institute of Communications and Information Sciences, vol. 46, n.º 8, pp. 1227–1236, agosto de 2021. Accedido el 17 de noviembre de 2022. [En línea]. Disponible: https://doi.org/10.7840/kics.2021.46.8.1227
Roles de Autoría
Jean Elias Manuel Reyes Campos: Conceptualización, Curación de datos, Investigación, Metodología, Software, Validación, Redacción - borrador original.
Christian Stephano Castañeda Rodríguez: Conceptualización, Curación de datos, Investigación, Metodología, Software, Validación, Redacción - borrador original.
Luis Daniel Alva Luján: Conceptualización, Curación de datos, Investigación, Metodología, Software, Validación, Redacción - borrador original.
Alberto Carlos Mendoza de los Santos:Investigación, Metodología, Software, Supervisión, Validación, Redacción - borrador original.
Información adicional
Tipo de artículo:: Artículos originales
Temática:: Inteligencia artificial
Enlace alternativo
https://revistas.ulasalle.edu.pe/innosoft/article/view/78 (html)
https://revistas.ulasalle.edu.pe/innosoft/article/view/78/91 (pdf)
https://revistas.ulasalle.edu.pe/innosoft/article/view/78/92 (html)