Algoritmo para la detección de mascarilla

Consultores estratégicos en Ciencia de Datos

Algoritmo para la detección de mascarilla

En tiempos de Pandemia es recomendable el uso de mascarilla.  Inicialmente OMS había recomendado que se utilizase únicamente para las personas enfermas,  pero recientemente ha cambiado su posición y recomienda su uso mas generalizado.  Por ese motivo me di a la tarea de poner a disposición de mis lectores el presente artículo que incluye un  Algoritmo de Inteligencia Artificial para la detección del uso de la mascarilla en tiempo real, para épocas de Pandemia.  Este algoritmo se puede instalar en un computador con una simple cámara web a la entrada de una oficina, de un comercio, de un sitio público o de cualquier sitio donde se quiere verificar el uso de este dispositivo de protección individual.

Algoritmos de aprendizaje profundo

Este algoritmo para la detección del uso de la mascarilla en tiempo real, esta elaborado utilizando herramientas de aprendizaje automático dentro de una disciplina que  se conoce como Visión por computador. El objetivo es que la aplicación que contiene este algoritmo pueda   detectar si una persona lleva  no la mascarilla puesta.  Algo que podría resultar para nuestro cerebro una tarea bastante simple,  reviste de alguna complejidad, y lo hacemos utilizando una tecnología conocida como Aprendizaje Profundo (Deep Learning) donde resaltan las CNN.  En términos de procesos  primero  enseñamos  a nuestro algoritmo a que “aprenda”  ( por eso se llama Inteligencia Artificial)   y logre distinguir  si lo que ve es una persona y luego si una persona lleva o no puesta la mascarilla.  Como lo hace ?  Esto se hace con imágenes o fotografías de personas con y sin mascarilla, luego de ver una y mil veces las imágenes nuestro sistema habrá capturado las características de las imágenes tal y como  como lo explico de forma muy detallada en el artículo sobre las redes neuronales convolucionales .

Descripción del Proyecto:

Titulo:  Sistema para la detección del uso de mascarillas  faciales construido con OpenCV, Keras  y TensorFlow utilizando conceptos de aprendizaje profundo (deep Learning)  y visión por computadora a través de cámaras en tiempo real. Todas estas herramientas antes mencionadas fueron desarrolladas en su momento por Google, para mas información sobre estas,  haga clic en este enlace

Plataformas empleadas:

Nuestro set de Datos:

Recordemos que vamos a utilizar un algoritmo de aprendizaje automático SUPERVISADO y por tanto nuestra red neuronal aprenderá de imágenes previamente etiquetadas donde ya se han clasificado “de previo”  las características que a futuro vamos a querer que el algoritmo reconozca.   Como lo hará ? Utilizando imágenes de personas con y sin mascarilla.  Le diremos al algoritmos cuales imágenes tienen mascarilla y cuales no.

Este conjunto de datos consta de  3835 imágenes que  pertenecen a dos clases:

  • con mascarilla: 1916 imágenes
  • sin mascarilla: 1919 imágenes

Las imágenes utilizadas fueron imágenes reales de rostros con y sin mascarilla. Las imágenes fueron recolectadas de las siguientes fuentes:

  • API de Bing Search con este script se recolectan las imágenes de las web directamente, en este caso con el buscador de Microsoft “BING”
  • Conjuntos de datos de Kaggle

Plataforma principal

La plataforma base para poder trabajar con este algoritmo es Python

Puede descargar Python desde este enlace , también puede descargar el ambiente completo de de Anaconda que incluye Python y además es el ambiente preferido de los Científicos de Datos desde este otro enlace

Instalar el conjunto de programas y otros requisitos:

Sugerencia:

Haga un directorio dentro de su máquina Ej. detector de mascarillas

Descargue el conjunto de programas, modelos  y datos del siguiente enlace. que componen Algoritmo para la detección del uso de la mascarilla en tiempo real. de este enlace

Una vez descargado el archivo puede extraer los diferentes archivos y carpetas con ayuda de un programa unzip ó  unrar

y deberá llegar a obtener una estructura similar a esta:

 

Instalar las librerías especializadas de  Python

Python es una plataforma modular y va a requerir de un conjunto de librerías adicionales para poder trabajar con este algoritmo.

Las librerías requeridas en este caso son estos con sus respectivas versiones son:.  ( estas librerías están en el archivo requirements.txt que usted ya descargó )

tensorflow>=1.15.2
keras==2.3.1
imutils==0.5.3
numpy==1.18.2
opencv-python==4.2.0.*
matplotlib==3.2.1
argparse==1.1
scipy==1.4.1

El primer paso será instalar estas librerías.   (Ingrese al  Windows Power Shell ( Hágalo en modo administrador usando el clic derecho del ratón, para tener derechos de “Administrador” )


Instalación de las librerías

verifique que usted está localizado en el directorio de trabajo del proyecto y que todos los archivos que acabamos de descargar están ahí . Las librerías necesarias se pueden instalar todas de una sola vez con el comando:

pip install -r requirements.txt  

 

al final tendremos algo similar a esto :  (los mensajes de WARNING en este caso alertan de instalaciones previas de Python) si los mensajes aparecen en ROJO tendremos verificar que ocurre. y resolverle en primer lugar estas deficiencias.

 

Una vez instaladas las librerías tendremos que realizar unos pasos adicionales para tener nuestro ambiente de trabajo preparado .

a.) Proceda a crear un entorno virtual  (por ejemplo a este  entorno virtual, le llamaremos prueba )

Primero instalar la librería de ambientes ó entornos virtuales ( Virtual environments)  “virtualenv” .    Vaya a Windows PowerShell PERO asegúrese que está en el directorio donde descargó los programas , etc.) y ahora escriba los siguientes comandos:

 pip install virtualenv, si recibe un mensaje de error es que aún su versión de Paython no está debidamente instalada

y luego para crear el ambiente escribimos el comando:

 Python -m venv mascarilla   Si está en Windows escriba el comando /Scripts/activate para activar el ambiente virtual verifique que al crear el ambiente virtual se haya creado el directorio Scripts
 

Luego instale las siguientes librerías adicionales,  que no están en el requirements.txt y que son necesarias :

pip install sklearn

pip install Pillow

En ocasiones es necesario actual adicionalmente otras herramientas:  (recomiendo)

python -m pip install –upgrade pip setuptools

En ciertos procesadores utilizando Windows 10 es posible que también sea necesario instalar el modulo GPU de Tensorflow, y el protobuf.

Segunda opción, Jupyter Notebooks de Anaconda Navigator

Sin duda la forma mas simple de configurar el ambiente de desarrollo Python es hacerlo instalando “Anaconda Navigator”  y usar el módulo llamado “Jupyter Notebook” que viene incluido en la suite Anaconda.  Jupyter Notebook es la herramienta posiblemente  mas usada por los científicos de datos, es intuitiva , fácil de instalar y totalmente gratuita.  Si desea irse por este opción , Instale anaconda desde este enlace . Luego haga un ambiente virtual y seleccione los módulos de tensorflow básico y el modulo de Machine Learning.  Instale también en ese ambiente  la librería de “keras”.  Luego ingrese al módulo de Jupyter Notebooks.

Para nuestro propósito se van a utilizar  dos programas en Python  ( estos son los que tienen extensión    .py  y que  nuestro caso son: train_mask_detector.py    ( que es el que va a crear el modelo con el aprendizaje ) y luego detect_mask_video.py ( que es el  programa principal que va detectar las personas que tienen puesta la mascarilla)

Entonces, Ahora  para iniciar el proceso de entrenamiento escriba el siguiente comando:  (OJO esto puede tardar mas de 40 minutos, dependiendo de la memoria RAM y del procesador de su equipo)   esto es porque en este paso,  el algoritmo va a aprender de las imágenes 20 veces seguidas para aumentar la precisión del modelo:  ( ATENCIÓN: esto solo se realiza una vez )  Una vez creado el modelo ya no es necesario “entrenarlo”  nuevamente excepto que usted quiera incluir nuevas imágenes.

python train_mask_detector.py --dataset dataset

El algoritmo de detección

Luego ejecute el programa que detecta las imágenes en tiempo real (prepare su Webcam) y podrá ver como en la pantalla se muestran las caras de las personas enmarcadas con una etiqueta que dice Mask( Con mascara)  o No_mask ( sin máscara) y con un % del nivel de precisión con el que el algoritmo esta clasificando esa imagen.  Note  que este programa a su vez tiene dos funciones  incorporadas:   el algoritmo de detección de las caras de las personas  (este ya es una librería de dominio público )   y el algoritmo que acabamos de entrenar que una vez detectada una cara,  verifica si la persona tiene o no puesta la mascarilla.

python detect_mask_video.py

Una vez que usted comprueba que la aplicación funcionó puede crear un archivo .EXE con todo el algoritmo (librerías, modelos, etc,) que luego puede instalar en cualquier otro computador sin necesidad de instalar Python.

Esta conversión de Python a .EXE la puede realizar con un utilitario conocido como :  Auto PY to EXE

se instala con este comando de la misma forma que todo lo anterior desde el terminal o desde Windows Power Shell :

pip install auto-py-to-exe

y para ejecutarlo se hace con el comando:

auto-py-to-exe

La operación es muy simple: se selecciona nuestro programa en Python que queremos convertir en .exe ( en este caso detect_mask_video.py ) dejamos luego todas las opciones que vienen por defecto y a los minutos va a generar una carpeta con un conjunto de programas , y librerías y un archivo .exe , en ese caso el programa resultante se llamará:     detect_mask_video.EXE  y quedará en nuestra carpeta personal de documentos.  Si desea descargar el conjunto final del archivo ejecutable siga este enlace (actualizado  al 9-6-2020)

Sobre la base del Algoritmo para la detección del uso de la mascarilla en tiempo real, se pueden crear otro conjunto de aplicaciones relacionadas.

 

La libreria de programas y modelos se puede descargar desde este enlace

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 Responses

  1. Sergio Miranda dice:

    Hola buenas tardes, podrias compartir el link para descargar el codigo fuente o los ejemplos? No llego a encontrar ese link en el post.
    Gracias.

  2. Juan Ignacio Barrios Arce dice:

    Disculpe Don Sergio que hasta ahora veo su mensaje. Aca le anexo en enlace. cualquier cosa me escribe a mi correo personal.

    https://drive.google.com/drive/folders/15WKGMhVmv6h7OsJ-YzJU26C7F4GQY0fu?usp=sharing

  3. Pablo Cevallos dice:

    Gracias por tu aporte a la humanidad

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *