A los principiantes y expertos en aprendizaje automático les gusta mucho el ecosistema STM32

El aprendizaje automático, en particular TinyML, tiene el potencial de revolucionar la forma en que se diseñan y crean los sistemas integrados. Tradicionalmente, estos sistemas tienen algoritmos de procedimiento basados en la experiencia de los desarrolladores con el sistema. El aprendizaje automático ofrece un enfoque diferente en el que los algoritmos del sistema se basan en observaciones y datos reales. Si los datos en el entorno evolucionan, el modelo de aprendizaje automático puede volver a aprender rápidamente de los datos. Una solución codificada a mano requeriría una reescritura.

Esta publicación explora las plataformas y herramientas de aprendizaje automático para sistemas integrados admitidos en la familia de microcontroladores STMicroelectronics STM32.

Soporte de aprendizaje automático dentro de la familia de microcontroladores STM32

El aprendizaje automático puede ser una herramienta potente para los desarrolladores de sistemas integrados. Sin embargo, los desarrolladores con frecuencia creen que los algoritmos de aprendizaje automático requieren demasiada potencia de procesamiento o que los algoritmos son tan grandes que no caben en un microcontrolador típico. En realidad, el microcontrolador seleccionado para usar dependerá más de lo que intente hacer con el aprendizaje automático que de cómo lo admita un microcontrolador específico.

Por ejemplo, en la Figura 1 se muestra una variedad de familias de microcontroladores STM32 que admiten el aprendizaje automático. Estas piezas van desde el STM32F0, que funciona a 48 megahercios (MHz) y tiene como máximo 256 kilobytes (Kbytes) de memoria flash y 32 Kbytes de memoria RAM, hasta el STM32F7, que funciona a 216 MHz y tiene como máximo 2 megabytes (Mbytes) de memoria flash y 512 Kbytes de memoria RAM.

Figura 1: Los microcontroladores STM32 que admiten el aprendizaje automático con las herramientas de desarrollo STM32Cube.AI y NanoEdge. (Fuente de imagen: STMicroelectronics).

Como puede ver, bastantes microcontroladores pueden admitir el aprendizaje automático. El verdadero problema es que las plataformas de aprendizaje automático deben admitir con éxito una amplia gama de desarrolladores. Por ejemplo, tener un experto en aprendizaje automático en el personal no es muy común para los equipos de software integrado. En cambio, los desarrolladores de software integrado se ven obligados a familiarizarse con el aprendizaje automático fuera de su conjunto de habilidades tradicionales. Por lo tanto, se necesita una plataforma que admita equipos con y sin expertos en aprendizaje automático. Las cadenas de herramientas del ecosistema de aprendizaje automático STM32 ayudan con este problema.

Ayuda para equipos integrados sin expertos en aprendizaje automático

Sin duda, diseñar y entrenar algoritmos de aprendizaje automático puede parecer una tarea desalentadora. Los desarrolladores deben ser capaces de adquirir datos, diseñar un modelo, entrenar el modelo y luego asegurarse de que el modelo se ajuste lo suficientemente bien como para optimizarlo e implementarlo en un sistema integrado.

Tradicionalmente, los modelos de aprendizaje automático se crean con TensorFlow Lite, PyTorch, Matlab u otras herramientas. Estas herramientas suelen estar fuera de la zona de confort o la experiencia de los desarrolladores de software integrado. Ponerse al día con estas herramientas y obtener resultados precisos no solo lleva tiempo, sino que también es costoso.

El ecosistema STM32 de aprendizaje automático incluye una herramienta llamada NanoEdge (Figura 2) que ayuda a los desarrolladores sin experiencia en aprendizaje automático a entrenar e implementar aplicaciones de aprendizaje automático en sus dispositivos.

Por ejemplo, los desarrolladores pueden crear fácilmente bibliotecas de aprendizaje automático para aplicaciones como detección de anomalías, detección de valores atípicos, clasificación y regresión. Estas bibliotecas luego se pueden implementar en un microcontrolador STM32.

Figura 2: NanoEdge puede guiar a los desarrolladores a través de todo el proceso de desarrollo de aprendizaje automático. (Fuente de imagen: STMicroelectronics).

¿Qué sucede con los equipos integrados con expertos en aprendizaje automático?

Cuando un equipo de desarrollo tiene acceso a expertos en aprendizaje automático, accederá a una variedad mucho más amplia de herramientas para desarrollar sus modelos de aprendizaje automático para un microcontrolador STM32. Por ejemplo, cuando se dispone de experiencia, el equipo puede usar TensorFlow Lite, PyTorch, Matlab o alguna otra herramienta para crear el modelo. El problema que suele surgir es que estas herramientas producen una biblioteca no optimizada que no se ejecuta de manera muy eficiente en un microcontrolador.

Dentro de la familia STM32, los desarrolladores pueden aprovechar el complemento STM32Cube.AI para importar modelos de aprendizaje automático y optimizarlos para que se ejecuten de manera eficiente en microcontroladores STM32. La herramienta permite a los desarrolladores ejecutar y ajustar sus modelos de aprendizaje automático en el microcontrolador de destino. Primero, los desarrolladores pueden importar su modelo a la cadena de herramientas, como se muestra en la Figura 3. Luego, pueden convertir el modelo, analizar la red y validarla. Una vez hecho esto, los desarrolladores pueden generar un código desde STM32CubeIDE, creando un marco de aprendizaje automático en torno al modelo para simplificar el desarrollo de software integrado.

Figura 3: Se importa un modelo de aprendizaje automático de generador de onda sinusoidal a STM32CubeIDE.AI. (Fuente de imagen: Beningo Embedded Group)

Los desarrolladores de software integrado deben proporcionar las entradas adecuadas al modelo de aprendizaje automático, así como el código para verificar el resultado. Se pueden realizar acciones sobre el resultado, o el resultado se puede promediar o manipular de cualquier manera que tenga sentido para la aplicación. En la figura 4 se muestra el bucle de aplicación simple para ejecutar y verificar los resultados del modelo.

Figura 4: El bucle principal rodea el modelo de aprendizaje automático. (Fuente de imagen: Beningo Embedded Group)

Conclusión

El aprendizaje automático, impulsado por el esfuerzo de TinyML, se está abriendo camino rápidamente entre las aplicaciones integradas. Para tener éxito, los desarrolladores deben aprovechar una plataforma. Si bien parece que las opciones de plataforma surgen casi a diario, el ecosistema STM32 brinda a los desarrolladores una vía de solución simple y escalable.

Dentro del ecosistema, los desarrolladores con experiencia en aprendizaje automático pueden aprovechar sus herramientas tradicionales y usar el complemento STM32CubeIDE.AI para optimizar y ajustar sus soluciones. Para los equipos sin experiencia en aprendizaje automático, NanoEdge se puede aprovechar para simplificar el desarrollo de bibliotecas de aprendizaje automático y poner la solución en funcionamiento de forma rápida y rentable.

Información sobre el autor

Image of Jacob Beningo

Jacob Beningo es un consultor de software integrado que actualmente trabaja con clientes en más de una docena de países para transformar drásticamente sus negocios mejorando la calidad del producto, el costo y el tiempo de comercialización. Ha publicado más de 200 artículos sobre técnicas de desarrollo de software embebido, es un conferenciante y entrenador técnico muy solicitado y tiene tres títulos que incluyen una Maestría en Ingeniería de la Universidad de Michigan. No dude en ponerse en contacto con él en jacob@beningo.com, en su sitio web www.beningo.com, y suscríbase a su boletín mensual Embedded Bytes Newsletter.

More posts by Jacob Beningo
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum