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.
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
10 Responses
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.
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
Hola, disculpe la carpeta drive está vacía me podría pasar el proyecto a mi correo victor.galvez56@gmail.com Muchas gracias
Hola Victor.
Ya puedes descargar el codigo fuente del algoritmo de la mascarilla. desde la página del “post”
Te pido disculpas por haberlo borrado pero la gente habia dejado de visitar esa página por lo que hace unas semanas decidi borrarla, PERO ya está de nuevo disponible.
Gracias por visitar el proyecto.
Juan Ignacio
Gracias por tu aporte a la humanidad
Buenas tardes,
Podría compartir el código fuente. En el enlace del drive la carpeta figura como vacía.
A la espera de su respuesta.
Gracias!!!
Hola Axel. Disculpas por haber borrado la carpeta. Poca gehte la ha visitado y hace algunos dias decidi borrarla PERO siguien visitandola y por tanto decidi restaurarla
ya está de nuevo a tu disposición. Disculpas por responder hasta ahora !
Gracias
Juan
Hola, Juan, que pena molestarte, la carpeta con los archivos dice que está en la papelera, ¿hay posibilidad de restaurarla?. De ante mano te agradezco el tiempo.
Hola Diego:
Ya puedes descargar el codigo fuente del algoritmo de la mascarilla. desde la pagina del “post”
Te pido disculpas por haberlo borrado pero la gente habia dejado de visitar esa página por lo que hace unas semanas decidi borrarla, PERO ya está
de nuevo disponible.
Gracias por visitar el proyecto.
Juan Ignacio
Hola, Juan
Quiero agradecerte por compartir el proyecto y tu conocimiento, de verdad. Es un excelente trabajo.
Un abrazo desde Colombia.