Arquitectura para la detección facial mediante técnicas de computación distribuida y visión por computador en entornos de ancho de banda reducido, implementada en un entorno kubernetes
RiuNet: Institutional repository of the Polithecnic University of Valencia
Arquitectura para la detección facial mediante técnicas de computación distribuida y visión por computador en entornos de ancho de banda reducido, implementada en un entorno kubernetes
Sánchez Mompó, CA. (2020). Arquitectura para la detección facial mediante técnicas de computación distribuida y visión por computador en entornos de ancho de banda reducido, implementada en un entorno kubernetes. http://hdl.handle.net/10251/152367
Por favor, use este identificador para citar o enlazar este ítem: http://hdl.handle.net/10251/152367
Arquitectura para la detección facial mediante técnicas de computación distribuida y visión por computador en entornos de ancho de banda reducido, implementada en un entorno kubernetes
[ES] En este proyecto se propone y desarrolla un sistema de reconocimiento facial basado en los conceptos de visión máquina con redes neuronales convolucionales (CNNs), aprendizaje máquina y computación distribuida. El ...[+]
[ES] En este proyecto se propone y desarrolla un sistema de reconocimiento facial basado en los conceptos de visión máquina con redes neuronales convolucionales (CNNs), aprendizaje máquina y computación distribuida. El proyecto está formado por tres partes: el diseño de una arquitectura centrada en la reducción del ancho de banda necesario para transportar las imágenes desde las cámaras a los servidores en la nube; el diseño e implementación del software que comprime los datos cerca de las cámaras; y el diseño e implementación de una API REST adaptable a grandes despliegues para el procesado de las imágenes en la nube.
La reducción del ancho de banda requerido para la transmisión de las imágenes de las cámaras a la nube se consigue mediante el preprocesado de los datos en un nodo intermedio cerca de su generación mediante el uso de técnicas de computación en el borde (edge computing).
En la etapa de preprocesado se identifican y extraen las caras contenidas en cada uno de los fotogramas capturados por las cámaras pertenecientes a ese nodo. Las imágenes que ya sólo contienen las caras son entonces enviadas a la nube, en la cual se clasifican entre las personas conocidas. Al sólo enviar las porciones que contienen caras en lugar de enviar los fotogramas enteros se consigue una reducción significativa del ancho de banda requerido.
En el extremo cloud, se ha diseñado e implementado una API REST en contenedores manejados por un despliegue de Kubernetes en la nube Azure. En estos contenedores se ejecuta el sistema que reconoce las caras recibidas desde el edge. La carga está distribuida entre los diferentes contenedores, cuyo número puede variarse para adaptarse a la carga de trabajo. En esta API no sólo se permite el reconocimiento de personas para las que el modelo se ha entrenado; también se puede incorporar personas al set de datos, eliminar personas del set de datos, así como reentrenar el modelo de reconocimiento para identificar las personas en el nuevo set de datos y empezar a usar el nuevo modelo de forma inmediata y sin downtime. Toda la información extraída en este proceso es almacenada en una base de datos que permite su posterior análisis.[-]
[EN] In this project, a facial recognition system based on the concepts of machine vision with convolutional neural networks (CNNs), machine learning and distributed computing is proposed, developed and deployed to Azure. ...[+]
[EN] In this project, a facial recognition system based on the concepts of machine vision with convolutional neural networks (CNNs), machine learning and distributed computing is proposed, developed and deployed to Azure. The project consists of three parts: the design of an architecture focused on reducing the bandwidth required to transport the images from the cameras to the cloud servers; the design and implementation of the software that compresses the data near the cameras; and the design and implementation of a REST API for image processing easily scalable to large deployments in the cloud.
The reduction of the bandwidth required for the transmission of images from the cameras to the cloud is achieved by pre-processing the data in an intermediate node near their generation through the use of edge computing techniques.
In the pre-processing stage, the faces contained in each of the frames captured by the cameras belonging to that node are identified and extracted. The new images that only contain the faces are then sent to the cloud, where they are classified among the known people. By only sending the portions containing faces instead of sending the entirety of the frames, a significant reduction in the required bandwidth is achieved.
At the cloud, a REST API has been designed and implemented in containers handled by a Kubernetes deployment in the Azure cloud. In these containers, the system that recognizes the faces received from the edge is executed. The load is distributed among the different containers, whose number can be scaled to suit the workload. This API not only allows the recognition of people for whom the model has been trained; it can also incorporate people into the dataset, remove people from the dataset, as well as retrain the recognition model to identify people in the new dataset and start using the new model immediately and without any downtime. All the information extracted in this process is stored in a database that allows its later analysis.[-]