Potencia el Análisis de Imágenes con AWS y una Cámara Inteligente WiFi

Automatización de redesCloud

Este proyecto permite realizar un análisis de imágenes detallado integrando las cámaras Meraki MV con el servicio de AWS Amazon Rekognition a través de sus API

Más allá de las tecnologías utilizadas para el caso de uso desarrollado en este proyecto, su objetivo principal es implementar el siguiente workflow:

[ Entrada de video ] --> [ Analítica de imágenes ] --> [ Resultado de análisis ]

Aunque los scripts desarrollados son compatibles únicamente con la plataforma de Cisco Meraki, están destinados a demostrar el poder de sus APIs, y cada una de las tres etapas mencionadas anteriormente podría adaptarse fácilmente a otros proveedores o tecnologías. Entonces… ¿Contas con una cámara inteligente que tiene API disponibles? ¿Preferis usar Azure Functions en lugar de AWS Lambda? ¡No hay problema! Creo que encontrarás este proyecto útil de cualquier manera 🤓

En este caso de uso, la analítica de imágenes se realizará para detectar si una persona está usando una mascarilla o no, y los resultados se publicarán en un espacio de Webex.

En el video que dejaré debajo, realizo una demostración de la integración mencionada. Te sugiero verlo antes de pasar al proceso de configuración.

Workflow

El workflow de esta integración será el siguiente:

Antes de empezar: Qué necesitas

  1. Acceso a un Dashboard Meraki (y a su API key) con una Cámara MV y una licencia MV Sense disponible.
  2. Una cuenta AWS, con una access y secret key creadas (Instrucciones sobre cómo generarlas)
  3. Una cuenta Webex. La necesitarás para crear el bot y utilizar su Access Token. Vas a encontrar instrucciones sobre cómo realizarlo en este link.
  4. Un broker MQTT alcanzable por la Cámara MV. Este puede ser configurado en tu laptop, o en un server separado. En mi caso, utilicé una Raspberry Pi 3b+ con una imagen Debian e instalé Mosquitto, un broker MQTT open-source.

Modo de uso

  1. Clona el siguiente repositorio en tu directorio local, ejecutando el siguiente comando:
git clone https://github.com/agmanuelian/Meraki_Facemask_Detector.git
  1. Instala las dependencias requeridas, especificadas en el archivo requirements.txt :
pip3 install -r requirements.txt
  1. Configura tu broker MQTT en el Dashboard de Meraki:
    1. Selecciona tu Cámara MV.
    2. Ve a Settings
    3. Selecciona Sense
    4. Habilita tu licencia MV Sense.
    5. Selecciona Add or edit MQTT Brokers y configura sus parámetros.
    6. Luego de haber añadido tu broker, seleccionalo de la lista desplegable.
    7. Guarda tus cambios.
  2. Configura tus credenciales en el archivo the lambda_module/main.py.
  3. En tu cuenta AWS, configura la función Lambda. Cuando sea tiempo de subir tu código, comprimí el directorio lambda_module, y subí tu archivo .zip.
Configuración de función Lambda – Paso 1
Luego de realizar esto, incrementa el tiempo de timeout a 15 segundos, debajo de la pestaña de “Configuración”.
Configuración de función Lambda – Paso 2
  1. En tu cuenta AWS, configura tu API Gateway. Una vez desplegado toma su dirección pública, la necesitarás en los próximos pasos.

Configuración de API Gateway – Paso 1

Configuración de API Gateway – Paso 2

  1. Reemplaza tus credenciales en el archivo mqtt_trigger.py . La URL de la API que conseguiste en la etapa anterior, debería ser agregada al script en este paso.
  2. Agrega tu bot recientemente creado a un espacio Webex. El access token del bot y el room ID ya deberían estar configurados en el archivo lambda_module/main.py.
  3. Ejecuta el script mqtt_trigger.py. Deberías ver en la terminal un stream en tiempo real de la cantidad de personas detectadas. Cuando una persona se coloca en frente de la cámara, dispara la llamada API y, en consecuencia, se procesa la función Lambda. Los resultados de esta operación son publicados en un espacio de Webex.

Resultados

Estos son los resultados que son posteados en el espacio Webex una vez una persona es detectada:

Espero hayas disfrutado este proyecto!

Si lo encontraste útil, o si tenés alguna consulta, dejámelo saber en la sección de comentarios! 👨🏻‍💻😁

Deja un comentario

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