Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Equipment >> Robot industrial

Desplegando Reconocimiento de Dígitos Manuscritos en MCU i.MX RT1060 Usando TensorFlow Lite

Esta guía demuestra cómo implementar reconocimiento de dígitos manuscritos en el MCU crossover i.MX RT1060, aprovechando un modelo TensorFlow Lite y una GUI táctil.

El i.MX RT1060, impulsado por un núcleo Arm® Cortex®-M7, destaca en soluciones industriales rentables y dispositivos de consumo de alto rendimiento que requieren interfaces de pantalla ricas. En este tutorial recorremos la construcción de una aplicación de aprendizaje automático embebido que detecta y clasifica dígitos dibujados por el usuario usando el popular ejemplo MNIST eIQ.

Vistazo al Dataset y Modelo MNIST

Usamos el dataset MNIST estándar, consistiendo en 60,000 imágenes de entrenamiento y 10,000 de prueba de dígitos manuscritos centrados en escala de grises, cada uno de 28×28 píxeles. Los datos fueron recolectados de estudiantes de secundaria y empleados de la Oficina del Censo en EE. UU., por lo que refleja estilos de escritura norteamericanos. Las redes neuronales convolucionales (CNN) funcionan excepcionalmente bien en este dataset, y arquitecturas incluso modestas pueden alcanzar alta precisión, haciendo TensorFlow Lite una opción ideal para despliegue en hardware embebido.

Desplegando Reconocimiento de Dígitos Manuscritos en MCU i.MX RT1060 Usando TensorFlow Lite

Figura 1. Ejemplo del dataset MNIST

El repositorio oficial de GitHub de TensorFlow proporciona una implementación Python del modelo MNIST, construida con Keras, tf.data y tf.estimator. La CNN alcanza excelente rendimiento en el conjunto de prueba y sirve como referencia para nuestro proceso de conversión.

Desplegando Reconocimiento de Dígitos Manuscritos en MCU i.MX RT1060 Usando TensorFlow Lite

Figura 2. Visualización de arquitectura del modelo

A continuación se muestra la definición del modelo crudo que corresponde a la visualización anterior.

Desplegando Reconocimiento de Dígitos Manuscritos en MCU i.MX RT1060 Usando TensorFlow Lite

Figura 3. Definición del modelo TensorFlow

¿Qué es TensorFlow Lite y Cómo se Usa Aquí?

TensorFlow es un marco de aprendizaje profundo de código abierto ampliamente adoptado, mantenido por Google. Para llevar inferencia de TensorFlow a dispositivos con recursos limitados, Google introdujo TensorFlow Lite, un runtime ligero que soporta un subconjunto de operaciones de TensorFlow. Aunque los modelos TensorFlow Lite no pueden entrenarse más en el dispositivo, pueden optimizarse con cuantización, poda y otras técnicas post-entrenamiento para reducir tamaño y mejorar velocidad de inferencia.

Convirtiendo el Modelo a TensorFlow Lite

Primero entrenamos el modelo usando TensorFlow 1.13.2 para asegurar compatibilidad con las herramientas de conversión. El modelo se convierte luego al formato .tflite con el siguiente comando:

tflite_convert --saved_model_dir= --output_file=converted_model.tflite --input_shape=1,28,28 --input_array=Placeholder --output_array=Softmax --inference_type=FLOAT --input_data_type=FLOAT --post_training_quantize --target_ops TFLITE_BUILTINS

Después de la conversión, usamos xxd para embeber el modelo binario en nuestra aplicación:

xxd -i converted_model.tflite > converted_model.h

La utilidad xxd produce un header C/C++ que contiene el modelo como array de bytes, permitiendo al proyecto eIQ cargarlo directamente en tiempo de compilación. Instrucciones detalladas pueden encontrarse en las guías de usuario eIQ y la documentación oficial de TensorFlow Lite.

Introducción Rápida a Embedded Wizard Studio

Para aprovechar las capacidades gráficas del MIMXRT1060-EVK, incorporamos una GUI táctil construida con Embedded Wizard Studio. El IDE genera proyectos MCUXpresso e IAR desde el SDK de XNP, permitiendo a desarrolladores probar la interfaz inmediatamente en hardware. La versión de evaluación limita complejidad de GUI y añade marca de agua, pero la licencia completa desbloquea características ilimitadas.

Como el código GUI generado está en C mientras que los ejemplos eIQ están en C/C++, envolvemos todos los headers incluidos con:

#ifdef __cplusplus extern "C" { #endif /* C code */ #ifdef __cplusplus } #endif

También reubicamos archivos fuente y header en la carpeta middleware del SDK y ajustamos rutas de inclusión. Archivos de configuración específicos del dispositivo se fusionan para asegurar una compilación fluida.

La Aplicación Terminada y Sus Características

La GUI presenta un área de entrada táctil para dibujar dígitos y un campo de salida que muestra el resultado de clasificación. Dos botones permiten al usuario ejecutar inferencia o limpiar el lienzo. Después de la inferencia, la aplicación imprime el dígito predicho y puntuación de confianza a la salida estándar para propósitos de depuración.

Desplegando Reconocimiento de Dígitos Manuscritos en MCU i.MX RT1060 Usando TensorFlow Lite

Figura 4. GUI de aplicación con entrada, salida y botones de control

Precisión del Modelo TensorFlow Lite

Mientras la CNN alcanza alta precisión en muestras MNIST basadas en papel, los dígitos manuscritos dibujados en una pantalla táctil difieren significativamente. Esta discrepancia subraya la importancia de entrenar con datos de grado de producción que coincidan con la modalidad de entrada objetivo. Para mejorar rendimiento, recolecte un nuevo dataset usando la pantalla táctil y aplique transfer learning, como se detalla en el walk-through de la Comunidad NXP.

Detalles de Implementación

Embedded Wizard usa slots para reaccionar a interacciones de usuario. El slot de dibujo captura movimientos táctiles, renderizando una línea de 1-píxel en el color principal. El slot de limpieza restablece tanto campos de entrada como salida al color de fondo. Cuando se dispara el slot run-inference, recupera los datos del bitmap, lo redimensiona a 28×28 y lo alimenta al intérprete TensorFlow Lite.

Como el lienzo de entrada es 112×112, preprocesamos la imagen de la siguiente manera:

La Figura 5 ilustra el array intermedio después del preprocesamiento.

Desplegando Reconocimiento de Dígitos Manuscritos en MCU i.MX RT1060 Usando TensorFlow Lite

Figura 5. Array de entrada preprocesado listo para inferencia

El intérprete TensorFlow Lite se inicializa una vez al inicio. Para cada solicitud de inferencia, el tensor de entrada preprocesado se copia píxel a píxel en el buffer de entrada del intérprete. La huella de memoria y características de runtime están documentadas en la nota de aplicación de NXP.

TensorFlow Lite: Una Solución Viable

Desplegar reconocimiento de dígitos manuscritos en dispositivos embebidos plantea desafíos como recursos computacionales limitados y modalidades de entrada variadas. TensorFlow Lite mitiga estos problemas proporcionando un runtime ligero y un rico ecosistema de herramientas de optimización. El núcleo M7 del i.MX RT1060, combinado con el middleware del SDK, hace factible implementar casos de uso complejos como un teclado numérico seguro para una cerradura digital.

Entrenar modelos con datos de producción reales —dígitos dibujados con dedo en pantalla táctil— sigue siendo esencial para mantener alta precisión. Además, variaciones regionales de escritura a mano deben considerarse al diseñar el dataset.

La serie MCU crossover i.MX RT ofrece una mezcla balanceada de rendimiento y costo, haciéndola adecuada para una amplia gama de aplicaciones embebidas. Para más detalles, visite la página de producto i.MX RT.

Los Artículos de la Industria son una forma de contenido que permite a los socios industriales compartir noticias útiles, mensajes y tecnología con los lectores de All About Circuits de una manera que el contenido editorial no está bien adaptado. Todos los Artículos de la Industria están sujetos a estrictas directrices editoriales con la intención de ofrecer a los lectores noticias útiles, experiencia técnica o historias. Los puntos de vista y opiniones expresados en los Artículos de la Industria son los del socio y no necesariamente los de All About Circuits o sus escritores.


Robot industrial

  1. Construye un Reconocedor de Dígitos con Raspberry Pi, TensorFlow y OpenCV
  2. Invocar bloques de función PLC vía clientes OPC UA: Guía práctica
  3. Reduciendo Desperdicios y Costes Energéticos con Robots Autónomos
  4. Construyendo un Autoencoder Variacional con TensorFlow: Guía Práctica
  5. Automatice el cuidado de máquinas CNC con cobots: Aumente la eficiencia y la precisión
  6. Guía para principiantes: Programación de robots Yaskawa Motoman: Aumente velocidad y precisión
  7. Guía para Principiantes: Configurando RoboDK en Raspberry Pi
  8. Dominando la Gestión de Potencia con MCUs Crossover NXP i.MX RT500
  9. Aprovechamiento del i.MX RT500 de NXP para Dispositivos Inteligentes con DSP: Multihilo, XOS y Cadence Fusion F1 Audio DSP
  10. Guía profesional para usar resina epoxi en preservación de obras de arte
  11. Interfaces en Java explicadas: Cómo definirlas e implementarlas con ejemplos prácticos