En la lucha que lleva el mundo para detener la pandemia COVID-19 (o pandemia de coronavirus) contamos con muy pocas herramientas en lo que ha sido una batalla desigual. Si bien se avizoran mejoras a partir del lanzamiento y distribución de vacunas, el proceso es lento y tomará un largo tiempo.

Se ha identificado que el coronavirus se transmite principalmente por el aire en forma de aerosoles.

El problema para lugares cerrados, es que muchas veces resulta imposible, garantizar las medidas de prevención de distancia y ventilación, por la misma naturaleza de los establecimientos. Por este motivo, es de suma importancia, garantizar el uso de mascarillas.

Como herramienta para este control, hemos desarrollado un proyecto de inteligencia artificial para la detección del uso de mascarillas, que puede ser usado como control automático de cumplimiento de las normas requeridas.

Estructura de la solución

El objetivo principal del producto es, a partir la captura de video, detectar si en él, se encuentran personas que no llevan puesta su mascarilla de protección.

Para esto se realizará el procesamiento en tiempo real de dicha información, que podemos resumir de forma esquemática en los siguientes pasos:

  1. Se realiza la captura de video mediante un dispositivo físico, el cual envía dicha información a alguna central programable para su procesamiento.
  2. El video recibido se separa en frames o cuadros que representan fotografías de lo que ocurre en el video.
  3. Ahora podemos procesar cada imagen con nuestro sistema de análisis.
  4. Por cada imagen, se detecta mediante el uso de IA, si incluye personas. Por cada persona, se detecta el área (en forma de rectángulo) asociada a su rostro.
  5. Cada rectángulo es analizado usando IA, para determinar si se está usando o no una mascarilla.

Este proceso lo podemos visualizar en el siguiente gráfico:

solucion

Detección de Rostros

Existen dos técnicas para la detección de rostros:

  • Basada en Características. Los objetos son reconocidos por sus características únicas. Un rostro tiene varias de estas, como pueden ser, ojos, nariz, boca y otros.
  • Basada en Imágenes. Usan técnicas de análisis estadístico y machine learning para encontrar las principales características para imágenes con y sin rostros.

Un ejemplo de la detección por características, son los Clasificadores Haar, que fueron usados en el primer detector de rostros en tiempo real. Se trata de programas de detección de objetos usando Machine learning. Su definición y funcionamiento fueron presentados en el documento Rapid Object Detection using a Boosted Cascade of Simple Features escrito por Paul Viola y Michael Jones. Por este motivo, a estos clasificadores también se les conoce como Algoritmo Viola Jones. El algoritmo fue inventado en el año 2001, y si bien existen alternativas más modernas, su rendimiento es excelente.

rostros

Aprendiendo como niños

Lo que parece una simple tarea como determinar si una persona lleva puesta mascarilla o no, se vuelve todo un desafío cuando queremos que un computador la realice. Imaginen programar una forma, no sólo de detectar su uso, sino que hacerlo bajo distintas condiciones de luz, ángulo de la cara, etc.

Para esto, vamos a hacer uso de la inteligencia artificial, en particular, de su campo de estudio Deep Learning.

Para explicar la forma de trabajo de estas técnicas, muchas veces se hace un paralelismo con la educación de un niño en sus primeros años. Es común que sus primeros contactos con animales, sean perros y gatos, identificándolos con su particular sonido, GUAU o MIAU en cada caso. Sin embargo, no se le explica al niño las diferencias biológicas de cada uno, o la presencia de hocico y bigotes en uno u otro. Simplemente se le va indicando, cada vez que nos cruzamos con uno, si se trata de un perro o gato, y el niño irá detectando sus características y usando ese entrenamiento para distinguirlos.

Con Deep Learning es algo similar, trata de realizar la asignación de entradas (por ejemplo, imágenes) a salidas objetivo (Por ejemplo, la etiqueta gato), mediante la observación de un gran número de ejemplos de entradas y salidas.

El Deep Learning realiza este mapeo de entrada-a-objetivo por medio de una red neuronal artificial.

Modelos y su entrenamiento

La solución informática que realizará las predicciones solicitadas, recibe el nombre de modelo.

El proceso de construcción del modelo incluye distintos pasos, como son la selección del algoritmo a utilizar, la selección de sus componentes, la configuración y ajuste de sus parámetros y por último, su entrenamiento.

Para éste último paso, es indispensable contar con un gran volumen de datos, factor que afectará directamente la calidad de las predicciones.

Una vez terminados estos pasos, podemos empezar a utlilizar el modelo para realizar predicciones.

Detección de Mascarillas

Nos encontramos ante un problema de clasificación binaria. Dada la imagen del rostro de una persona, queremos identificar si el mismo se encuentra Con Mascarilla, o Sin Mascarilla.

Una de las mejores herramientas para este tipo de tareas, son el uso de Deep Learning y en particular, el uso de Redes Neuronales de Convolución (Convolutional Neural Networks en inglés, también abreviadas como CNN o ConvNet).

propio

Una red neural de convolución para la clasificación de imágenes consiste en dos partes, una base de convolución y una cabecera densa. La base se usa para extraer las características de una imagen, mientras que la cabecera se usa para determinar la clasificación de la imagen.

El objetivo durante el entrenamiento del modelo es aprender dos cosas:

  1. Que características extraer de la imagen (base)
  2. Que clase corresponde a qué características (cabecera)

Origen de los datos

Para la identificación de mascarillas, se usaron los datos disponibles en el sitio kaggle, bajo el dataset Face Mask Detection ~12K Images Dataset.

El grupo de datos consiste en casi 12.000 imágenes.

Todas las imágenes de rostros con mascarilla fueron tomadas de los resultados de búsquedas por google, y todas las imágenes de rostros sin mascarilla fueron pre-procesadas con el conjunto de datos CelebFace, creado por Jessica Li

con-mascarilla sin-mascarilla

Construcción de la Solución

Para la construcción de nuestra solución, utilizamos dos técnicas y medimos luego sus resultados.

Por un lado, construimos un modelo propio de aprendizaje, donde a partir de la base de datos con la que contamos, se hizo su entrenamiento para la detección de mascarillas.

Como alternativa, usamos modelos pre-entrenados. Esta metodología es parte del llamado transfer learning, el cual persigue la transferencia de conocimiento. Se trata de utilizar los conocimientos adquiridos por un modelo ya entrenado en un nuevo problema. Muchas veces se busca utilizar el conocimiento adquirido mediante grandes cantidades de datos, en otras tareas para las que no se cuenta con tanta información. En lugar de empezar un proceso de aprendizaje desde cero, iniciamos con patrones aprendidos en una tarea similar.

Existen diversas librerías que proveen este tipo de soluciones. En nuestro caso elegimos 4 de las más populares y sumado a nuestro modelo propio, tuvimos los siguientes resultados:

  • Modelo Propio, exactitud 0.955645.
  • InceptionV3, exactitud 0.981351.
  • MobileNet, exactitud 0.991431.
  • DenseNet, exactitud 0.991935.
  • VGG19, exactitud 0.975302.

Como vemos, todos tienen un porcentaje mayor a 95% de exactitud. Es decir que, dada la imagen de un rostro, se tiene casi la certeza al afirmar si lleva o no mascarilla.

Conclusiones

Se cuenta con un producto para identificación del uso de mascarilla al cual se le puede dar variedad de usos.

En particular, algunas de sus características son:

  • Sencilla de implementar, a partir de cualquier entrada de video o imagen.
  • De rápida ejecución. Una vez entrenada la solución, su ejecución es rápida y eficiente. Lo veíamos para la detección de rostros y luego la implementación de detección de mascarilla.
  • Excelente rendimiento. Sus valores de evaluación han sido excelentes, por encima del 95%.
  • Alta compatibilidad. Al estar implementada en un lenguaje de uso general y de gran distribución entre ambientes de ejecución y dispositivos.
  • Bajo costo. Se hace uso de dispositivos físicos de bajo costo, por ejemplo, en el uso de cámaras web o tabletas electrónicas.

Esto la hace una solución de gran aplicación en el área de Internet of Things (IOT).

iot

Su sencillo circuito de funcionamiento lo hace fácil de incluir con diversos sistemas existentes de captura de video. Por otro lado, su rápida ejecución permite el uso de dispositivos físicos programables, como pueden ser los célebres Arduino y Raspberry Pi y de esta forma formar parte de su rico ecosistema de dispositivos satélite. Las posibilidades son inmensas:

  • Encendido de alarmas sonoras / visuales.
  • Apertura / Cierre de puertas.
  • Envío de notificaciones / mensajes, en caso de incumplimiento de protocolo.

En IDEATI estamos a tu disposición para ayudarte a construir tus proyectos de Inteligencia Artificial.