Identifica y clasifica objetos con Edge Impulse y ESP32


Este dispositivo puede reconocer elementos como verduras y frutas y ayudar a separarlos y clasificarlos según su tamaño y otras características. Utiliza la herramienta Edge Impulse ML que se puede usar en varias plataformas y tableros, como: Como Arduino, cámara ESP32, ESPEye, computadora portátil, PC, teléfono móvil, computadora Raspberry Pi y más. Puede crear la salida en forma de una biblioteca de C++ que se puede usar en casi cualquier lugar.

Digamos que necesita separar verduras como limones, cebollas y tomates, o bolígrafos y lápices. Todo lo que necesitas es una placa Raspberry Pi o una cámara ESP32 y un par de relés para separarlos. Por ejemplo, aquí usamos una cámara ESP32 para identificar vegetales.

Dispositivo de clasificación de objetos de bricolaje
Fig. 1: Dispositivo de clasificación de objetos

Por ejemplo, cuando la cámara detecta un tomate, una cebolla o un limón, los relés se activan para abrir la cesta de verduras.

cámara ESP32
Figura 2: cámara ESP32

El prototipo del dispositivo de clasificación de objetos se muestra en la Fig.1. Los componentes necesarios para el proyecto se enumeran en la siguiente tabla.

Índice del contenido

Componentes requeridos

lista de partes
componentesMultitud
Cámara ESP32/ESP32 TTT GO (MOD1)1
Regulador de voltaje LM117 (MOD3)1
5V con relé1
Transistor BC547 (T1)1
SSD1306 OLED (MOD2)1
Condensador de 100 µF (C1)2
Diodo (D1)1
Programador USB FTDI1

Configurar Edge Impulse y ESP32 Cam

Preparación del modelo ML

Para iniciar el proyecto, abra edgeimpulse.com y cree un nuevo proyecto. Debe recopilar fotos de los elementos que se separarán en grupos y como piezas individuales desde diferentes ángulos para que el dispositivo los reconozca correctamente, y Edge Impulse creará el proyecto por usted.

Recopilación de registros para la clasificación de objetos
Fig. 3: Recopilación de conjuntos de datos para la clasificación de objetos

Para recopilar imágenes de los elementos, conecte una computadora Raspberry Pi e inicie el proyecto Edge Impulse con Raspberry Pi y la cámara de un teléfono o una computadora portátil.

Guía paso por paso

Los siguientes pasos aclararían el proceso:

  1. Recopile cantidades masivas de datos para los objetos desde diferentes ángulos y combinaciones. La figura 3 ilustra la recopilación de dicho conjunto de datos.
  2. iniciar sesión en Edgeimpulse.comcree un nuevo proyecto y haga clic en "recolectar datos" parte superior derecha. Luego bajo "Conecte un dispositivo para comenzar a crear su conjunto de datos" elegir "Fuente de datos” y configúrelo para usar la cámara de su teléfono inteligente o computadora portátil como fuente para capturar las imágenes necesarias.
  3. Compile el proyecto navegando a Tablero → Dispositivos → Recopilación de datos (Diseño de pulso → Crear pulso → Imagen → Detección de objetos). Una vez que haya recopilado una cantidad suficiente de imágenes (por ejemplo, 200) de todos los elementos que desea dividir, divídalos 80:20 con fines de capacitación y prueba. Cada imagen debe estar marcada con un marco circundante. Para acelerar el proceso de etiquetado, utilice "cola de etiquetas” función bajo “sugerencias de etiquetas" y elige "Clasificar con YOLOv5".
  4. Para mayor comodidad, los principiantes pueden hacer esto. Seguir con la configuración predeterminada en las categorías "Crear impulso" e "Imagen".
  5. Después del entrenamiento, verifique el "resultado F1', que debe ser del 85% o más. Para mejorar la puntuación, es posible que deba ajustar el modelo o eliminar imágenes atípicas que podrían afectar negativamente a la precisión general.
  6. En el "detección de objetosSeleccione "Un modelo adecuado para la clasificación" en la sección. YOLO y FOMO son modelos recomendados conocidos por su facilidad de uso y rendimiento aceptable. Selecciona el modelo deseado y comienza el proceso de entrenamiento. Tenga en cuenta que este proceso puede llevar algún tiempo. La figura 4 muestra el entrenamiento del modelo ML.

Para probar el modelo, utilice el 20% de los datos previamente reservados. Haga clic en cada imagen individualmente o en conjunto. La precisión debe estar dentro de un rango aceptable de 81% a 91%. Sin embargo, no es ideal que el modelo logre el 100% de precisión. En tales casos, pueden introducirse errores intencionales. La Figura 5 ilustra la prueba del modelo.

Entrenar modelo ML
Fig. 4: modelo de entrenamiento de ML
Prueba del modelo Edge Impulse ML
Fig. 5: Modelo de prueba

despliegue del modelo

Después de probar el modelo ML, ahora podemos usarlo en muchos tableros. Como estamos usando la cámara ESP32, seleccione el IDE de Arduino. La Figura 5 muestra la exportación del código del modelo para la implementación.

Exportar código de modelo para implementación
Fig. 6: Código de modelo de exportación para implementación

Después de seleccionar el modelo (Arduino), haga clic en el botón "Construir" a continuación. El boceto de Arduino se descargará a su computadora local junto con la biblioteca requerida. En el IDE de Arduino, use este archivo zip para instalarlo como una nueva biblioteca (Sketch→Incluir biblioteca→Agregar biblioteca ZIP...).

Una vez instalada la biblioteca, vaya a Archivo→Biblioteca→Buscar más reciente

Biblioteca→Ejemplos→esp32_camera→tu-boceto-está-aquí

Sube el boceto

El modelo a continuación ESP32 está preparado para la placa de cámara ESP-EYE. La cámara ESP32 de bajo costo disponible en el mercado abierto suele ser la "Cámara ESP32 AI Thinker" o el modelo un poco más caro "ESP32 TTGO T plus Camera". Para ambos, arreglamos los detalles de los pines y pusimos estos modelos de cámara en el software de dibujo. Todo lo que tiene que hacer es comentar el modelo correcto y el boceto está listo para instalarse.

Se requiere luz durante el proceso de identificación. La cámara ESP AI Thinker cuenta con un LED súper brillante que se enciende para brindar luz adicional y una detección más fácil.

El proceso de carga lleva mucho tiempo, a veces de 7 a 8 minutos. Así que ten paciencia mientras subes el boceto.

La Fig. 6 muestra las conexiones requeridas para este proyecto de detección de vegetales. Consta de una cámara ESP32 (MOD1), un SSD1306 OLED (MOD2), un regulador de voltaje LM117 (MOD3) y un solenoide de 5V con relés asociados.

La cámara ESP32 detecta los artículos y la señal de salida en su pin GPIO13 activa el imán. Para un mejor rendimiento, puede usar una cámara T TTGO con el módulo de cámara ESP32-DOWDQ6 8MB SPRAM OV2640, que cuenta con una pantalla de 1.3", tarjeta Wi-Fi Bluetooth y lente ojo de pez con más RAM. Sus pines de cámara ya están definidos en el boceto; Simplemente cambie la selección de la cámara y listo.

diagrama de circuito y funcionamiento

Después de cargar el código fuente, conecte la cámara ESP32 como se muestra en la figura 7 para ver el diagrama del circuito y también el prototipo del autor en la figura 1. Encienda la cámara ESP32 y coloque las verduras frente a la cámara. Muestra los resultados y mueve los relés para clasificar las verduras.

Diagrama de circuito del dispositivo de clasificación de objetos
Fig. 7: Diagrama de circuito

El prototipo para identificar vegetales se muestra en la Fig. 8. Este es un proyecto rudimentario que puede necesitar más refinamiento para ser realmente útil en una tienda.

Identificación de vegetales con un dispositivo de clasificación de objetos basado en ESP32
Fig. 8: Identificación de verduras

Nota EFY: Para programar ESP32 puedes usar el programador USB FTDI. Aquí hemos descrito un proyecto de detección de vegetales basado en la cámara TTGO T plus. Puede crear otro para la detección de bolígrafos y lápices basado en la cámara ESP32. Ambos requieren conexiones similares y tanto los archivos como los códigos del proyecto se pueden descargar desde electronicsforu.com.

Descarga el código fuente


Somnath Bera es un entusiasta de la electrónica e IoT y trabaja como Gerente General en NTPC

Si quieres conocer otros artículos parecidos a Identifica y clasifica objetos con Edge Impulse y ESP32 puedes visitar la categoría Electrónica.

Deja una respuesta

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

Subir