Skip to main content

Detección de casco industrial impulsado por Edge Impulse

Introducción

En entornos de trabajo como sitios industriales o de construcción, un casco es necesario y esencial para que las personas protejan sus cabezas de lesiones debido a la caída de escombros, lluvia y descargas eléctricas. Mejora la seguridad, pero a veces la gente subestima su importancia. Por lo tanto, un sistema de monitoreo basado en vídeo para detectar cascos puede ser una solución optimizada para este problema de seguridad.

Damos crédito a Louis Moreau y Mihajlo Raljic. En esta wiki proporcionamos este proyecto fundamental en el que vamos a entrenar un modelo de aprendizaje automático integrado para detectar cascos y lo desplegaremos en un dispositivo Jetsonn, Jetson Nano. Jetson NX y Jetson AGX son compatibles con las herramientas utilizadas en esta wiki.

Primeros pasos

Edge Impulse permite a los desarrolladores crear la próxima generación de soluciones de dispositivos inteligentes con aprendizaje automático integrado. El aprendizaje automático en dispositivos de borde permitirá un uso valioso del 99% de los datos de los sensores que hoy se descartan debido a limitaciones de costo, ancho de banda o energía. Aquí aplicaremos Edge Impulse para entrenar un modelo de aprendizaje automático integrado.

Hardware

Hardware requerido

Los dispositivos necesarios para desarrollar este proyecto se muestran a continuación:

Configuración del Hardware

Tanto la PC como la NVIDIA Jetson deben estar encendidos y conectados a Internet. Se recomienda configurar la NVIDIA Jetson como una PC.

Software

Aquí vamos a entrenar un modelo de aprendizaje automático integrado para detectar cascos.

Preparación

Antes de comenzar nuestro proyecto, hay algunos preparativos que debemos efectuar.

  • Paso 2. Haz dlick en "Create new project" y escribe el nombre que quieras darle a tu proyecto.

Nosotros lo llamamos "Hard hat detection" (Detección de cascos).

  • Paso 3. Vamos a entrenar un modelo de ML integrado para detectar cascos, por lo que aquí se debe seleccionar la opción "image".
  • Paso 4. Ajusta la configuración con la opción "Classify multiple objects (object detection)" (Clasificar multiples objetos).

Ahora podemos comenzar con el proyecto.

Entrenamiento del modelo de detección de cascos

Entrenamiento del modelo con un conjunto de datos público

Edge Impulse proporciona varias formas de recopilar datos. Primero, cargaremos el conjunto de datos público en el sitio web e intentaremos desarrollar un aprendizaje automático integrado.

  • Paso 1. Selecciona la opción "Data acauistion" (Adquisición de datos).

Haz click en el botón "Upload Data" en la página "Data acquisition" y cargas los conjuntos de datos descargados.

Es opcional cargar datos existentes al proyecto en el formato de adquisición de datos (CBOR, JSON, CSV), como archivos WAV, JPG o PNG.

  • Paso 3. Una vez cargados, los datos recopilados se completan con imágenes etiquetadas. Continúa haciendo click en "Impulse design" a la izquierda de la página.
  • Paso 4. Elije el bloque de procesamiento de imágenes adecuado y el bloque de aprendizaje de imágenes y guarda el impulso.
  • Paso 5. Haz click en "image" a la izquierda de la página.

Configura como "GRB" y haz click en "Save Parameters" (Guardar Parámetros), la página pasará automáticamente al sitio "Generate features" (Generar características).

Luego podemos generar las características.

  • Paso 6. Cuando aparezca un mensaje que diga "Job Completed" (Trabajo completado), haz click en "Detección de objetos" a la izquierda de la página.

Haz click en "start training" y deja que Edge Impulse entrene el modelo en función de las características generadas.

  • Paso 7. Una vez salte el siguiente mensaje "job done", haz click en "Model Testing" para comprobar cómo funciona el modelo.

Entrenamiento de modelos de aprendizaje automático basado en conjuntos de datos personalizados

Edge Impulse proporciona varias formas de recopilar datos. Aquí vamos a personalizar nuestras propias imágenes y subirlas al sitio web capturándolas a través de la cámara web de la PC.

  • Paso 1. Permanece en el "Dashboard" y haz click en la opción "LET'S COLLECT SOME DATA".

Hay múltiples opciones que podemos elegir para recopilar datos, aquí estamos usando nuestra computadora para continuar.

  • Paso 2. Después de un rato, la página mostrará que se ha conectado a la computadora. Haz click en "Collecting Images?" y luego en "Give access to the camera".
  • Paso 3. Haz click en "Capture" para tomar una fotografía del objeto que deseas identificar, en este caso de ti o de alguien más con casco. Los datos de la imagen deben etiquetarse como "Hard Hat" (casco) y "Head" (Cabeza) en la sección. Para etiquetar rápidamente la imagen, se recomienda encarecidamente finalizar la adquisición de datos de una categoría antes de pasar a la siguiente, es decir, se recomienda terminar de capturar las imágenes de "Hard Hat" (casco) y luego continuar con la captura de las imágenes de "Head" (cabeza).

Las imágenes capturadas se almacenarán automáticamente en la pestaña de "Data acquisition" (Adquisición de datos). Para un mejor rendimiento del modelo de entrenamiento, se recomienda recopilar tantas imágenes como sea posible y recopilar la misma cantidad de datos en diferentes categorías.

  • Paso 4. Haz click en la "Labeling queue" (cola de etiquetado) para etiquetar los datos rodeando la cabeza con un cuadrado en la imagen.

Utiliza el mouse para arrastrar un cuadro alrededor de un objeto para agregar una etiqueta. Luego haz click en Save Labels para avanzar al siguiente elemento.

Establece las etiquetas como "Head" (cabeza) y "Hard Hat" (casco) y completa el cuadro de diálogo. Asegúrate de que el cuadrado enmarque el área de la cabeza de las personas.

  • Paso 5. Cuando los datos hayan sido etiquetados, haz click en "Save labels" para pasar a la opción de "Impulse design"
  • Paso 6. Elige el bloque de procesamiento de imágenes adecuado y el bloque de aprendizaje de imágenes y guarda el progreso.
  • Paso 7. Haz click en "image" en la parte izquierda de la página.

Configura como "GRB" y haz click en "Save Parameters", la página pasará automáticamente al sitio "Generate Features".

Ahora podemos generar las características

  • Paso 8. Cuando aparezca "Job completed", haz click en "Object detection" en la izquierda de la página.

Haz click en "start training" y deje que Edge Impulse entrene el modelo en función de las características generadas.

  • Paso 9. Una vez que aparezca el mensaje "job done", haz click en "Model testing" para comprobar cómo funciona el modelo.

Entrenamiento de modelos de aprendizaje automático basado en conjuntos de datos personalizados de cámaras NAVDIA Jetson

Edge Impulse proporciona varias formas de recopilar datos. Aquí vamos a personalizar nuestras propias imágenes y subirlas al sitio web capturándolas a través de la cámara conectada con Nivdia Jetson Nano.

  • Paso 2. Asegúrate que tu dispositivo Jetson esté conectado a Internet y configura el dispositivo en Edge Impulse.

Puedes verificar tu red con los siguientes comandos:

ping -c 3 www.google.com

Si la red funciona bien, el resultado debería lucir como a continuación:

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

La instalación comienza a ejecutarse con el siguiente comando:

edge-impulse-linux

Luego, el sitio web solicitará tu cuenta de Edge Impulse.

El contenido que se muestra a continuación significa que la conexión está completa. Todos los proyectos que guardamos en Edge Impulse son elegibles en la plataforma.

Estamos capturando las fotos, por lo que aquí debemos seleccionar nuestra cámara USB en el sitio web.

Nombra el dispositivo que quieras conectar al sitio web.

Se ve claramente que el dispositivo Jetson ahora está conectado al proyecto.

  • Paso 3. Vuelve a la página Edge Impulse y selecciona la columna "Devices". El dispositivo Jetson conectado se muestra a continuación:
  • Paso 4. Selecciona el dispositivo que conectaste a Edge Impulse y accede a la página "Data Acquisition". Haz click en "Capture" para tomar una fotografía e integrarla a tu conjunto de datos. Los datos de la imagen deben etiquetarse como "Hard Hat" (casco) y "Head" (Cabeza) en la sección. Para etiquetar rápidamente la imagen, se recomienda encarecidamente finalizar la adquisición de datos de una categoría antes de pasar a la siguiente, es decir, se recomienda terminar de capturar las imágenes de "Hard Hat" (casco) y luego continuar con la captura de las imágenes de la clase "Head" (cabeza).

Las imágenes capturadas se almacenarán automáticamente en la pestaña de "Data acquisition". Para un mejor rendimiento del modelo, se recomienda recopilar tantas imágenes como sea posible y recopilar la misma cantidad de datos en diferentes categorías.

  • Paso 5. Cuando los datos hayan terminado de recopilarse, pasa a la sección de "Impulse Design".

  • Paso 6. Elige el bloque de procesamiento de imágenes adecuado y el bloque de aprendizaje de imágenes y guarda el impulso.

  • Paso 7. Haz click en la opción "image" que está al lado izquierdo de la página web.

Configura como "GRB" y haz click en "Save parameters", la página pasará automáticamente al sitio "Generate Features".

Ahora puedes generar las características.

  • Paso 8. Cuando aparezca el mensaje "Job completed", haz click en "Object detection" a la izquierda de la página.

Haz click en "Start training" y deja que Edge Impulse entrene el modelo en función de las características generadas.

  • Paso 9. Una vez que aparezca el mensaje "job done", haz click en "Model training" para comprobar cómo funciona el modelo.

Se recomienda combinar los métodos que proporcionamos anteriormente y verificar el rendimiento de cada modelo para ver cuál es mejor.

Despliegue del modelo de ML en el dispositivo Jetson

Ahora implementaremos el modelo ML entrenado en el dispositivo Jetson y aplicaremos los códigos para crearlo.

Desplegar el modelo de ML mediante la CLI de Edge Impulse para Linux

  • Paso 2. Asegúrate de que tu Jetson Nano esté conectada a Internet y configura el dispositivo en Edge Impulse.

¡¡¡Nota!!! Si ya conectaste tu dispositivo Jetson con Edge Impulse en la sección "ML Model Training based on Custimized NVDIA Jetson Camera Datasets". Este paso se puede omitir.

Puedes verificar tu red con los siguientes comandos:

ping -c 3 www.google.com

Si la red funciona bien, el resultado debería lucir como a continuación:

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

La instalación comienza a ejecutarse con el siguiente comando:

edge-impulse-linux

El sitio web solicitará la cuenta Edge Impulse.

El contenido que se muestra a continuación significa que la conexión está completa. Todos los proyectos que guardes en Edge Impulse son seleccionables a partir de ahora.

Para capturar las fotos, debes seleccionar tu cámara USB para utilizarla en el sitio web.

Nombra el dispositivo que deseas conectar al sitio web.

Se ve claramente que el dispositivo Jetson Nano ahora está conectado al proyecto.

  • Paso 3. Descarga el modelo de ML al dispositivo Jetson siguiendo el código.
edge-impulse-linux-runner

Si la conexión es exitosa se mostrará inmediatamente y el modelo se activará automáticamente.

  • Paso 4. Copia la dirección que se muestra y ábrela con un navegador.

La detección se mostrará en el navegador.

Y el resultado de los datos se mostrará a continuación:

Despliegue del modelo de ML mediante el Linux Python SDK

En este proyecto, vamos a aplicar el modelo para mostrar la detección de cascos y en la pantalla mostrar los siguientes mensajes: "Prohibido el ingreso" y "Bienvenido". Edge Impulse proporciona una biblioteca que hace posible la ejecución de modelos de aprendizaje automático y la recopilación de datos de sensores en máquinas Linux que utilizan Python. El SDK es de código abierto y está disponible en GitHub. También puedes probar la mirror image que ya configuramos.

  • Paso 1. Instala la última versión de Python 3(>=3.7) para Linux.

  • Paso 2. Instala el Linux Python SDK utilizando el siguiente comando:

sudo apt-get install libatlas-base-dev libportaudio2 libportaudiocpp0 portaudio19-dev
pip3 install edge_impulse_linux
sudo apt install python3.7-dev
wget -q -0 - https://cdn.edgeimpulse.com/firmware/linux/jetson.sh | bash
  • Paso 4. Descarga el modelo de ML en el dispositivo Jetson utilizando el siguiente comando:
edge-impulse-linux-runner --download modelfile.eim

Si esta es la primera vez que realizas una conexión entre tu dispositivo Jetson y Edge Impulse, el sitio web solicitará la información de tu cuenta Edge Impulse para iniciar sesión.

¡¡¡Nota!!! Esto descargará el archivo en modelfile.eim, si deseas cambiar de proyecto, puedes hacerlo agregando '--clean'.

python3 hardhat_detectation.py /home/jetson-nano/modelfile.eim
  • Pas 6. El resultado debería lucir como se muestra a continuación:

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...