Detector de mascarilla con Raspberry Pi

Publicado por Loli Diéguez en

 En este artículo, te mostraremos cómo configurar un sistema de detección de máscarillas con Raspberry Pi, TensorFlow y OpenCV.

¿Cómo funciona el proyecto de un detector de mascarilla con Raspberry Pi? 

El funcionamiento es muy sencillo, la idea es detectar si una persona que pasa por delante de la cámara lleva o no la máscara puesta, en una pantalla se verá la imagen de la persona con un recuadro verde o rojo indicando si lleva o no la mascarilla puesta.

Esto se consigue con un modelo entrenado en detectar de mascarillas y los paquetes de TensorFlow , OpenCV e Imutils, todo esto detectará si un usuario está usando una mascarilla facial o no. 

Material necesario para el detector de mascarilla

Parte 1: Instalar dependencias para la detección de mascarillas faciales Raspberry Pi 

En este paso, instalaremos OpenCV , imutils y Tensorflow . 

  • OpenCV es una biblioteca de software de código abierto para procesar imágenes y videos en tiempo real con capacidades de aprendizaje automático.
  • Imutils es una serie de funciones de conveniencia para acelerar la computación OpenCV en la Raspberry Pi.
  • Tensorflow es una plataforma de aprendizaje automático de código abierto.

1. Instala una copia nueva del sistema operativo Raspberry Pi en tu tarjeta microSD de 16 GB o más.

2. Conecta tu cámara web a uno de los puertos USB de tu Raspberry Pi. Si estás usando una cámara Raspberry Pi en lugar de una cámara web, usa el cable plano para conectarla a tu Pi. Y reinicia tu Raspberry Pi. 

Montaje de la cámara

 

3. Si estás utilizando una cámara Pi en lugar de una cámara web, habilita Cámara desde la configuración de tu Raspberry Pi. Presiona OK y reinicia tu Pi. 

 Habilitar cámara desde raspberry Pi

4. Abre una terminal. Puedes hacerlo presionando CTRL + T.

5. Instala OpenCVUna vez completada la instalación de OpenCV, tu terminal debería verse así: 

 

Instalación de OpenCV

6. Instala TensorFlow

sudo pip3 install
https://github.com/lhelontra/tensorflow-on-arm/releases/download/v2.1.0/tensorflow-2.1.0-cp37-none-linux_armv7l.whl

7. Instala imutils. Este paso tarda alrededor de 1 minuto. 

sudo pip3 install imutils 

Parte 2: Entrenamiento del modelo de mascarilla facial 

Bien, ahora estamos en la parte de entrenamiento del modelo, aquí es donde tenemos que facilitar al algoritmo de aprendizaje la base sobre la cual debe aprender, básicamente se trata de darle fotos... MUCHAS FOTOS, cuantas más mejor, el número de fotos que le demos al algoritmo determinara la precisión del modelo.

Descárgate de aquí las rutinas Python que vamos a usar para entrenar al modelo y también el programa que después usaremos con la placa Pi para detectar mascaras en el video captado por la cámara Pi o una webcam conectada. Cuando lo tengas descargado, descomprímelo.

Las fotos que usaras para entrenar el modelo las tienes que dividir en dos tipos, con máscara y sin máscara, en el archivo que has bajado antes, después de descomprimirlo, verás 2 carpetas dentro de la carpeta dataset, una llamada "with_mask" y otra "without_mask", en estas carpetas es donde debes cargar tu muestrario de fotos, como dice el nombre de la carpeta, divídelas con y sin máscara y guárdalas donde corresponda, estas serás las fotos que usaras para entrenar el modelo.

 

Menú de carpetas

 

Intenta que sean fotos donde se vea desde los hombros a la cabeza, si se ve más, el tiempo de procesar la imagen aumentara y tardara más tiempo en generar el modelo. 

Toma tantas fotos como te sea posible, no solo de ti, sino de cuantas personas puedas, y tienen que ser fotos en las que las personas salgan con mascarilla y sin ella.

En este punto, el número de fotos que emplees será crucial para hacer el modelo más preciso, pero hay un coste, y se trata del tiempo de procesado, si el procesamiento lo haces en tu Pi, el tiempo que emplearas será mayor.

Puedes elegir donde realizar el modelo, en tu Pi o en un ordenador más potente. Si decides hacerlo en un ordenador tendrás que descargarte el mismo archivo en dicho PC y ejecutar la misma rutina Python que veremos a continuación, la cual dará como resultado un archivo *.model, y que deberás después cargar en la Pi para que lo use en la rutina detección. 

Como entrenar el modelo de detección de mascarilla

En este paso, entrenarás el modelo en función de las fotos que has guardado antes donde te indique en la carpeta del conjunto de datos o dataset, según si iban con máscara o no.

Lo primero necesitarás instalar algunos paquetes adicionales.

La cantidad máxima de fotos que el script train_mask_detector.py podrá procesar se verá afectada dependiendo si el modelado lo haces en la Pi o en un PC, lo hagas donde lo hagas sigue estos pasos:

1. Abre una Terminal, presiona Ctrl-T.

2. Instala los paquetes sklearn y matplotlib

sudo pip3 install sklearn

sudo pip3 install matplotlib

3. Entrena al modelo. Ten en cuenta que, cuantas más fotos tengas en la carpeta del conjunto de datos (dataset), más tiempo llevará crear el modelo. Si obtienes un error de "memoria insuficiente", reduce la cantidad de fotos las carpetas hasta que puedas ejecutar correctamente el código Python.

En la ventana de terminal muévete a la carpeta donde descomprimiste los archivos anteriores:

cd face_mask_detection

Ejecuta el algoritmo de entrenamiento con esta línea de código:

python3 train_mask_detector.py --dataset dataset --plot mymodelplot.png --model my_mask_detector.model

 

Después de que termine el script, verás un nuevo archivo en la carpeta del face_mask_detector con el nombre de my_mask_detector.model.

Este es el archivo que deberás copiar a la misma ruta en tu Pi si decidiste hacer el modelo desde un PC. 

Probando el modelo de mascarilla Raspberry Pi

Ahora que has entrenado tu modelo. Ejecuta el script de detección especificando el modelo que se ha generado antes.

Desde la misma ventana de Terminal:

python3 detect_mask_webcam.py --model my_mask_detector.model

Y si estás usando una cámara Pi ejecuta este otro script:

python3 detect_mask_picam.py --model my_mask_detector.model

En caso de que tu modelo de detección no sea muy preciso, te dejo aquí un modelo que ha sido entrenado con 1000 fotos, verás que la detección es muy alta y si tu entrenamiento fue con un número de fotos inferior verás que este modelo aumenta mucho la precisión de la detecciones. Para usarlo, descárgalo y cópialo en la misma ruta donde esta tu modelo, para ejecutarlo emplea las mismas líneas de comando anterior pero indicando el nuevo nombre de modelo

python3 detect_mask_webcam.py --model mask_detector1K.model

Y si estás usando una cámara Pi ejecuta este otro script:

python3 detect_mask_picam.py --model mask_detector1K.model

Con esto hemos llegado al final, como ves, una de las partes que más tiempo lleva es entrenar los modelos de detección, una vez que lo tienes ya hecho solo te queda probarlo, si el grado de detección no es el óptimo, vuelve a entrenar el modelo hasta conseguir un grado alto de aciertos.

Una vez conseguido esto, solo te queda conectar la Pi a un motor, una luz o lo que consideres para controlarlo según la detección de la máscara.

Nota:Foto de portada

 

SI QUIERES MÁS ARTÍCULOS PUEDES SEGUIR AQUÍ


Compartir esta publicación



← Publicación más antigua Publicación más reciente →