Maskcam - Monitoreo del Uso de Mascarillas en Multitudes 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. Usualmente hay gerentes en la entrada del área para observar si las personas están usando mascarillas. Tal vez sea una tarea muy simple para los humanos, pero si la combinamos con Jetson Nano, captura gráfica y computación en el borde con IA, será una tarea muy interesante y de valor social.
MaskCam fue desarrollado por Berkeley Design Technology, Inc. (BDTI) y Tryolabs S.A., con desarrollo financiado por NVIDIA. MaskCam se ofrece bajo la Licencia MIT. Para más información sobre MaskCam, por favor consulte el informe de BDTI. Si tiene preguntas, por favor envíe un correo electrónico a BDTI a [email protected].
En este proyecto, usaremos el NVIDIA® Jetson Nano™ 4GB Developer Kit junto con otros accesorios. Al mismo tiempo, puede elegir la A206 Carrier Board de Seeed, que tiene el mismo tamaño y diseño funcional que la placa portadora oficial de NVIDIA, y también, tiene excelente estabilidad y versatilidad.
Preparación
Requisitos de Hardware
-
NVIDIA® Jetson Nano™ 4GB Developer Kit (JetPack 4.6)
-
A206 Carrier Board(opcional)
-
Monitor hdmi de 7 pulgadas y cable HDMI
-
Estación de Acoplamiento USB
-
Ratón y Teclado
-
Adaptador de Corriente 5V 4A
-
Cámara USB
-
Cable Ethernet
-
PC con Windows11 (o Windows10/Ubuntu18.04/ OSX Big Sur)
Requisitos de Software
-
docker
-
docker-compose
-
Software de Video (Mostrar transmisiones RTSP, como VLC/QuickTime/PotPlayer)
Comenzar
Configuración de Jetson Nano
-
Paso 1. Descargar el contenedor MaskCam desde Docker Hub
sudo docker pull maskcam/maskcam-beta
-
Paso 2. Encontrar la Dirección IP de Jetson Nano con el comando
ifconfig
sudo ifconfig
-
Paso 3. Iniciar MaskCam con docker
Recuerde conectar su Jetson Nano con una cámara USB, y luego, escriba el comando de abajo 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: Reemplace <your-jetson-ip>
con la dirección IP de su propio Jetson Nano en este comando.
Si no quiere usar el dispositivo de entrada predeterminado, también hay dos comandos diferentes para elegir y reemplazar el comando anterior.
Usar el dispositivo de cámara /dev/video1:
#Usar el dispositivo de cámara /dev/video1
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
Usar el dispositivo de cámara CSI:
#Usar el dispositivo de cámara CSI
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. Ver la transmisión de video en vivo a través de
MASKCAM_DEVICE_ADDRESS
Streaming at rtsp://aaa.bbb.ccc.ddd:8554/maskcam
Nota: aaa.bbb.ccc.ddd
es la dirección que proporcionó en MASKCAM_DEVICE_ADDRESS
anteriormente.
Puede copiar y pegar esa URL en su visor de transmisión RSTP en otra computadora. En la transmisión de video, si no está usando mascarilla, verá un marco rojo en su cara. De lo contrario, verá un marco verde.
Configuración del Servidor MQTT
Además de la función básica, también incluye la función del servidor remoto en esta biblioteca, lo que significa que su PC puede recibir estadísticas del dispositivo, almacenarlas en una base de datos, y tener una interfaz gráfica frontend basada en web para mostrarlas.
En este artículo, todas las demostraciones sobre el servidor están basadas en el sistema host Windows11, también puede encontrar las instrucciones usando el sistema Linux a través de este artículo: Maskcam.
-
Paso1. Instalar Docker y Docker-compose en su PC
Descargue el paquete de instalación de Docker desde su sitio web oficial: https://docs.docker.com/get-docker/
Nota: Si existe un mensaje que dice WLS 2 installization is incomplete.
en el progreso de instalación, haga clic en el enlace en el cuadro de aviso, descargue e instale el paquete de actualización del kernel de Linux.
Entonces puede ejecutar docker
.
-
Paso2. Configurar directorio de construcción
Ejecute Windows PowerShell
como administrador
Muévase a la raíz de la unidad que estará usando, como:
cd e:\
Descargar el repositorio MaskCam:
Invoke-WebRequest https://github.com/bdtinc/maskcam/archive/refs/heads/main.zip -OutFile e:\maskcam.zip
Descomprimirlo a la ruta e:\maskcam
:
Expand-Archive e:\maskcam.zip -DestinationPath e:\maskcam
Moverse a la carpeta del servidor maskcam, que tiene cuatro contenedores: el broker Mosquitto, API backend, base de datos, y frontend Streamlit.
cd maskcam\maskcam-main\server
Luego, crear 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 el database.env
:
notepad database.env
Reemplaza los campos <DATABASE_USER>
, <DATABASE_PASSWORD>
, y <DATABASE_NAME>
con tus propios valores
-
Paso3. Construir y ejecutar el servidor local
Después de editar el archivo de entorno de la base de datos, estás listo para construir todos los contenedores y ejecutarlos con un solo comando:
sudo docker-compose up -d
A continuación, abre un navegador web e ingresa la IP del servidor para visitar la página web frontend:
http://<server IP>:8501/
Nota: Reemplaza <server IP>
con tu propia dirección IP.
Si ves un ConnectionError
en el frontend, espera un par de segundos más y recarga la página. El contenedor backend puede tomar algo de tiempo para finalizar la configuración de la base de datos.
Si esperas un par de segundos más y recargas la página pero sigue siendo un ConnectionError
en el frontend, por favor asegúrate de que los puertos: 5432
y 80
no estén siendo ocupados o escuchados.
Si visitas la página web frontend exitosamente la primera vez pero falla la siguiente, la mejor manera de resolverlo actualmente es reinstalar docker.
-
Paso4. Apuntar Jetson Nano a tu servidor local
Regresa a la terminal de tu Jetson Nano, y luego ejecuta el contenedor maskcam con el comando a continuación:
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 tu propio servidor y la dirección IP de Jetson Nano.
Después de eso, puedes elegir tu dispositivo en la página web como se muestra a continuación:
Finalmente, puedes ver los datos recopilados por Jetson Nano transmitiéndose al Servidor.
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.