OpenMV
Escudos
Lente
Robótica
Libro
Video
Descargar
Documentos
Foro
OpenMV.io
GitHubEn abril del año pasado, nuestro nuevo producto OpenMV4 H7 Plus salió al mercado. Hoy, les presentaré la nueva función de OpenMV4 H7 Plus: utilizar el sitio web en línea EdgeImpulse para entrenar de forma autónoma redes neuronales y realizar clasificación y reconocimiento.
En este tutorial, utilizarás aprendizaje automático para construir un sistema de reconocimiento que, mediante la cámara inteligente OpenMV4 H7 Plus, pueda identificar si una persona lleva mascarilla en su rostro, es decir, lograr la clasificación de imágenes.

EdgeImpulse es un sitio web que proporciona servicios de entrenamiento en línea de modelos de redes neuronales para dispositivos integrados. Es nuestro socio de OpenMV y también es socio oficial de STMicroelectronics. Actualmente, EdgeImpulse está disponible de forma gratuita para nuestros usuarios de OpenMV, quienes pueden utilizar EdgeImpulse para entrenar modelos de redes neuronales en línea que sean adecuados para OpenMV de manera gratuita.
Al agregar redes neuronales al dispositivo integrado OpenMV, se pueden lograr funciones como distinguir entre cazadores furtivos y elefantes, realizar control de calidad en líneas de producción de fábricas y permitir que modelos de vehículos a control remoto conduzcan por sí mismos.
En este tutorial, aprenderás cómo recopilar imágenes para construir un conjunto de datos de alta calidad, cómo aplicar el aprendizaje por transferencia para entrenar una red neuronal y cómo desplegar el sistema en OpenMV.
Además, también ofrecemos un tutorial en video que se puede ver buscando "OpenMV4 Plus entrenando una red neuronal para reconocimiento de mascarillas" en el sitio web oficial.
Puede consultar todo el contenido del proyecto en la siguiente dirección, incluyendo todo el código y los modelos: https://book.openmv.cc/project/mask.html
El uso de EdgeImpulse para entrenar modelos de redes neuronales en línea para OpenMV se divide principalmente en los siguientes cuatro pasos: recolección de datos, carga, entrenamiento e implementación.
01. Recopilación de conjuntos de datos
En este tutorial, construiremos un modelo capaz de distinguir si una persona lleva mascarilla o no. Por supuesto, también puedes optar por clasificar otros objetos. Para que el modelo de aprendizaje automático funcione, necesitarás recopilar una gran cantidad de imágenes de ejemplo de rostros con y sin mascarilla. Durante el entrenamiento, estas imágenes de ejemplo se utilizarán para que el modelo practique la diferenciación.
Necesitamos utilizar OpenMV IDE para recopilar nuestro conjunto de datos. Los pasos para capturar imágenes son los siguientes:
Crear dos categorías:
Abra el menú "Herramientas" en OpenMV IDE, seleccione "Editor de conjuntos de datos", haga clic en "Nuevo conjunto de datos", luego cree una nueva carpeta y ábrala. Dentro del conjunto de datos, cree dos carpetas adicionales, nómbrelas "mask" (para guardar fotos de rostros con mascarilla) y "face" (para guardar fotos de rostros sin mascarilla).


Capturar imágenes con OpenMV
Primero conectamos el OpenMV, hacemos clic en "Conectar" en el IDE, luego en "Ejecutar". En el búfer de fotogramas Framebuffer podemos ver la imagen en tiempo real del OpenMV. Al hacer clic en el botón de fotografía en la barra de menú izquierda, el OpenMV guardará automáticamente esta imagen, que constituye un dato dentro del conjunto de datos.
Primero, debemos guardar el rostro de la persona que lleva mascarilla. Al hacer clic en el botón de la foto, el IDE tomará una fotografía en la parte inferior, que se nombrará automáticamente como 00000, luego la siguiente será 00001, y así sucesivamente.
Utilice OpenMV para capturar respectivamente 200 fotografías de rostros con mascarilla (100 de hombres y 100 de mujeres) y 200 fotografías de rostros sin mascarilla (100 de hombres y 100 de mujeres).


* Nota: Asegúrese de capturar fotografías desde varios ángulos para garantizar la diversidad en nuestro entrenamiento y aprendizaje.
Si durante el proceso de recopilación se descubre que una imagen no se ha capturado de manera óptima, puede hacer clic derecho sobre ella y seleccionar eliminar.
02. Subir
Después de recopilar imágenes con OpenMV, necesitas registrarte e iniciar sesión en el sitio web oficial de EdgeImpulse (https://edgeimpulse.com/) para comenzar a subir las imágenes. Los pasos para subir las imágenes son:
Cree un nuevo proyecto en EdgeImpulse, haga clic en "keys", seleccione "API Key" y copie la "API Key". Utilice la API Key para conectar OpenMV IDE con Edge Impulse.

Seleccione "Herramientas" en la barra de menú superior de OpenMV IDE, luego "Editor de datos", "Exportar", "Subir", "Subir mediante clave API", copie la "Clave API" y súbala.
Los datos se dividirán automáticamente en conjuntos de entrenamiento y prueba al cargarlos. Por defecto, seleccionamos la proporción "80% y 20%". Hemos recopilado más de 400 imágenes faciales en total, donde el 80% de los Training Date significa que, por defecto, el 80% de los datos se utiliza para entrenamiento y el 20% restante se destina al conjunto de prueba.


03. Conjunto de datos de entrenamiento
El conjunto de datos está listo, ya puedes entrenarlo en la interfaz web de EdgeImpulse.
Módulo de procesamiento de configuración:
Primero seleccione "Impulse Design", configure el módulo de procesamiento:
Establecer las dimensiones predeterminadas de la imagen como "96 x 96".
Seleccione el módulo "Imágenes" para indicar que estamos realizando un entrenamiento de clasificación de imágenes (también puede usar EdgeImpulse para clasificar sonidos, videos, etc.).
Seleccione "Transfer Learning (Images)" y configure el modelo de aprendizaje.
Seleccione "Guardar impulso Save", si aparece "Successfully", la configuración se ha completado con éxito.

Preprocesamiento de imágenes:
Haga clic en "Imagen" en el menú izquierdo, establezca el formato de color en "RGB" y luego haga clic en "Guardar".

A continuación, seleccione "Generar características" para iniciar el proceso, que realizará el preprocesamiento de imágenes de más de 400 conjuntos de datos, y se mostrará una visualización 3D del conjunto de datos completo en el lado derecho.

Configurar el modelo de aprendizaje por transferencia
Haga clic en "Transfer learning" en el menú izquierdo, seleccione todos los parámetros de configuración como predeterminados o modifíquelos según sea necesario:
1. Establecer el número de ciclos de entrenamiento Number of training cycles por defecto en 10
2. Establecer la tasa de aprendizaje (Learning rate) en 0.0005
3. Puede marcar o no marcar "Aumento de datos Data augmentation
4. Establecer la calificación de confianza mínima Minimum confidence rating por defecto en 0.8.
Haga clic en "Iniciar entrenamiento Start training", el proceso de entrenamiento dura aproximadamente 4 a 5 minutos.
Una vez completado el entrenamiento del modelo, puede revisar la precisión, la matriz de confusión y el rendimiento esperado del dispositivo.

* Modelo de prueba:
Después de completar el entrenamiento, utilizaremos datos de prueba para evaluar el modelo.
Seleccione "Prueba de modeloModel testing", marque la casilla junto a "Nombre de muestraSample name" y haga clic en "Clasificar seleccionadoClassify selected". La precisión mostrada aquí alcanza el 97%, lo cual es notable para un modelo con tan pocos datos.

Descubra que esta imagen que se muestra en rojo es incierta, haga clic en los tres puntos a la derecha de la imagen, seleccione "Mostrar clasificación Show classification", y entrará en la interfaz de "Clasificación en tiempo real", que contiene más detalles del archivo. Esta interfaz le ayudará a determinar la razón del error de clasificación de la imagen.

Si los datos están fuera de todos los clústeres conocidos (con mascarilla/sin mascarilla), esto podría ser información que no coincide con ninguna categoría vista anteriormente, posiblemente debido a que el cabello cubre la mayor parte del rostro.
04. Ejecutar el modelo en OpenMV
Después de completar los pasos de diseño de entrenamiento, entrenamiento del modelo y validación del modelo, puedes exportar este modelo a tu OpenMV. Selecciona "OpenMV", elige "Build" para generar, y automáticamente se crearán 3 archivos:
trained.tflite Modelo de red neuronal entrenado
labels.txt dos etiquetas de clasificación (face y mask)
ei_image_classification.py es el código que debe ejecutarse en OpenMV

Conecte OpenMV IDE y guarde estos 3 archivos en la memoria Flash interna de OpenMV. Abra el archivo ei_image_classification.py en OpenMV IDE para ver el código que acabamos de generar en EdgeImpulse. Haga clic en ejecutar y los resultados se mostrarán en la terminal serial.


Bien, ya has logrado agregar la funcionalidad de entrenar redes neuronales por tu cuenta a OpenMV.
Esperamos con interés sus logros.

Centinela de IA basado en OpenMV: recordatorio automático cuando los lugares clave no están cerrados
Detecta automáticamente si las puertas de lugares clave permanecen abiertas durante un tiempo prolongado y emite una alerta oportuna.

Alerta inmediata ante la invasión de personal; OpenMV interpreta la «sensación de límites de seguridad».
Identifica comportamientos de cruces de líneas de advertencia virtuales por parte de personas o equipos.

¡Llegó el «agente de control urbano con IA»! Sistema automático de reconocimiento de ocupación ilegal de vías públicas basado en OpenMV
Identificación automática de actividades comerciales que ocupan vías públicas, lo que facilita la gestión cotidiana de las ciudades.

¿Cilindros de gas colocados de forma inadecuada? Utilice OpenMV para activar automáticamente alertas de peligro
Detección automática de ubicaciones inadecuadas de los cilindros de gas para identificar anticipadamente riesgos de seguridad relacionados con el gas.

¿No usó guantes aislantes durante el trabajo con corriente? ¡OpenMV emite una alerta inmediata!
Identifica automáticamente si el personal que realiza las tareas lleva guantes aislantes, lo que contribuye a garantizar la seguridad durante las operaciones.

Utilice la cámara inteligente OpenMV para identificar en tiempo real los defectos en la superficie de las láminas de aluminio
Identificación en línea de defectos en la superficie de las láminas de aluminio, como rayones y abolladuras, para apoyar el control de calidad.