Skip to main content

Maskcam: monitoreo del uso de mascarillas faciales en público basado en Jetson Nano

Introducción

Debido a los estragos del COVID-19, en muchos lugares públicos a menudo vemos el requisito de usar mascarilla. Por lo general, hay encargados en la entrada del área para observar si las personas llevan mascarilla. Tal vez sea una tarea muy simple para los humanos, pero si la combinamos con Jetson Nano, captura de gráficos y computación en el borde con IA, será una tarea muy interesante y de gran valor social.

MaskCam fue desarrollado por Berkeley Design Technology, Inc. (BDTI) y Tryolabs S.A., con financiación de NVIDIA. MaskCam se ofrece bajo la Licencia MIT. Para obtener más información sobre MaskCam, consulta el Informe de BDTI. Si tienes preguntas, envía un correo electrónico a BDTI a [email protected].

En este proyecto, utilizaremos el NVIDIA® Jetson Nano™ 4GB Developer Kit junto con otros accesorios. Al mismo tiempo, puedes optar por la [A206 Carrier Board](https://www.seeedstudio.com/A206-Carrier-Board-for-Jetson-Nano-Xavier-NX-p-5132.html de Seeed, que tiene el mismo tamaño y diseño funcional que la placa base oficial de NVIDIA, además de ofrecer una excelente estabilidad y versatilidad.

Preparación

Requerimientos de Hardware

Requerimientos de Software

  • docker

  • docker-compose

  • Software de video (Reproductor de Stream RTSP, como VLC/QuickTime/PotPlayer)

Primeros pasos

Configuración de la Jetson Nano

  • Paso 1. Descargar el contenedor de MaskCam de Docker Hub

sudo docker pull maskcam/maskcam-beta

  • Paso 2. Encontrar la dirección IP de la Jetson Nano con el comando ifconfig

sudo ifconfig

  • Paso 3. Inicializar MaskCam con docker

Recuerda conectar tu Jetson Nano con una cámara USB y, luego, ingresa el siguiente comando en la terminal.

sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta

Nota: Reemplaza <tu-jetson-ip> con la dirección Ip de tu Jetson en este comando.

Si no deseas utilizar el dispositivo input por defecto, hay otros dos comandos para elegir y reemplazar el comando de arriba.

Usa el dispositivo /dev/video1:

#Use the /dev/video1 camera device
sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_INPUT=v4l2:///dev/video1 --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta

Utiliza el dispositivo de cámara CSI:

#Use the CSI camera device
sudo docker run --runtime nvidia --privileged --rm -it --env MASKCAM_INPUT=v4l2://0 --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta
  • Paso 4. Visualización del streaming con MASKCAM_DEVICE_ADDRESS

Streaming at rtsp://aaa.bbb.ccc.ddd:8554/maskcam

Nota: aaa.bbb.ccc.ddd es la dirección que colocaste en MASKCAM_DEVICE_ADDRESS previamente.

Puedes copiar y pegar esa URL en tu visor de transmisión RSTP en otra computadora. En la transmisión de video, si no llevas mascarilla, verás un marco rojo en tu rostro. De lo contrario, verás un marco verde.

Configuración del servidor MQTT

Además de la función básica, también incluye la función de servidor remoto en esta biblioteca, lo que significa que tu PC puede recibir estadísticas del dispositivo, almacenarlas en una base de datos y tener una interfaz gráfica basada en web para mostrarlas.

En este artículo, todas las demostraciones sobre el servidor se basan en un host con sistema Windows 11. También puedes encontrar las instrucciones para usar el sistema Linux en este artículo: Maskcam.

  • Paso 1. Instalar Docker y Docker-compose en tu PC

Descarga el paquete de instalación de Docker desde su sitio web oficial: https://docs.docker.com/get-docker/

Nota: Si aparece un mensaje que dice WLS 2 installization is incomplete. durante el proceso de instalación, haz click en el enlace del cuadro de mensaje, descarga e instala el paquete de actualización del kernel de Linux. Luego, puedes ejecutar docker.

  • Paso 2. Configura el directorio de compilación

Ejecuta Windows PowerShell como administrador

Ve al directorio raíz del disco que utilizarás, como en el siguiente ejemplo:

cd e:\

Descarga el repositorio MaskCam:

Invoke-WebRequest https://github.com/bdtinc/maskcam/archive/refs/heads/main.zip -OutFile e:\maskcam.zip

Descomprimelo en la ruta e:\maskcam :

Expand-Archive e:\maskcam.zip -DestinationPath e:\maskcam

Muévete a la carpeta del servidor de Maskcam, que contiene cuatro contenedores: el broker Mosquitto, la API backend, la base de datos y el frontend Streamlit.

cd maskcam\maskcam-main\server

Luego, crea los archivos .env copiando las plantillas predeterminadas:

cp database.env.template database.env
cp frontend.env.template frontend.env
cp backend.env.template backend.env

Abre la database.env:

notepad database.env

Reemplaza <DATABASE_USER>, <DATABASE_PASSWORD>, y <DATABASE_NAME> por el usuario de tu base de datos, tu contraseña y el nombre de tu base de datos respectivamente.

  • Paso 3. Compila y ejecuta el servidor local

Después de editar el archivo de entorno de la base de datos, estarás listo para construir todos los contenedores y ejecutarlos con un solo comando:

sudo docker-compose up -d

Ahora, abre el navegador e ingresa la dirección IP del servidor para visitar el frontend web:

http://<server IP>:8501/

Nota: Reemplaza <server IP> por tu dirección IP.

Si ves un ConnectionError en el frontend, espera unos segundos más y recarga la página. El contenedor backend puede tardar un poco en completar la configuración de la base de datos.

Si después de esperar unos segundos más y recargar la página sigue apareciendo un ConnectionError en el frontend, asegúrate de que los puertos: <5432> y <80> no estén siendo ocupados o escuchados por otro proceso.

Si visitas la página web del frontend con éxito la primera vez pero falla la siguiente, la mejor manera de solucionarlo actualmente es reinstalar Docker.

  • Paso 4. Apunta la Jetson Nano a tu servidor local

Vuelve al terminal de tu Jetson Nano y luego ejecuta el contenedor de Maskcam con el siguiente comando:

sudo docker run --runtime nvidia --privileged --rm -it --env MQTT_BROKER_IP=<server IP> --env MQTT_DEVICE_NAME=my-jetson-1 --env MASKCAM_DEVICE_ADDRESS=<your-jetson-ip> -p 1883:1883 -p 8080:8080 -p 8554:8554 maskcam/maskcam-beta

Nota: Reemplaza <server IP> y <your-jetson-ip> con la dirección IP de tu servidor y de tu Jetson respectivamente.

Ahora puedes seleccionar tu dispositivo en la página web como se muestra a continuación:

Finalmente, podrás ver los datos recolectados por la Jetson Nano siendo transmitidos al servidor.

Soporte Tech y discusión del producto

¡Gracias por elegir nuestros productos! Estamos aquí para darte soporte y asegurar que tu experiencia con nuestros productos sea la mejor posible. Tenemos diversos canales de comunicación para adaptarnos distintas preferencias y necesidades.

Loading Comments...