Buenos días estimados lectores, hoy vamos a ver la tercera y última parte de un tema sumamente interesante, que no había podido continuar por falta de tiempo. Hablamos sobre la inteligencia artificial aplicada a los microcontroladores. En una anterior entrada, parte #02 de este tema, pudimos observar una serie de impedimentos para poder crear un algoritmo con I.A en un microcontrolador. También vimos algunas medidas para poder acercarnos a un algoritmo de inteligencia artificial en estos, pero con algunas desventajas. Hoy vamos a ver como al final de cuentas es posible o no utilizar esta en microcontroladores. Para los que no estén actualizados con las entradas anteriores a través de este link podrán ver la Parte #01. Comencemos.
DNN ( Deep Neural Network) y ANN (Artificial Neural Network ).
En la entrada pasada nombramos un termino que se ve mucho en inteligencia artificial y es el DNN, traducido del ingles (red neural profunda), donde explicábamos que esta sería una posible solución a implementar en la programación de la I.A en los microcontroladores. El DNN es mayormente utilizado por los científicos de datos. Este tiene como característica que posee varias capas entre las entradas y salidas de un sistema o diseño al cual se le esta implementando dicho algoritmo. El DNN hace parte de una categoría más amplia, el ANN o traducido del ingles (Redes neurales artificiales). En esta categoría entran los algoritmos de capas profundas o aquellos que solo tienen una sola capa.
Hago mención de estos dos términos ya que estos son los causantes de que haya un posible solución a la programación de inteligencia artificial en los microcontroladores. Para ser optimo este tipo de programación tenían que haber cambios en los compiladores y en los microcontroladores.
Antes de utilizar un algoritmos de inteligencia artificial, lo programadores lo que hacen es entrenar sus programas con una serie de requisitos. Para entender mejor esto del entrenamiento, les sugiero que lean acerca del funcionamiento del machine learning o aprendizaje maquina. En general, la solución que se estableció para esto fue entrenar previamente diferentes tipos de algoritmos de DNN y optimizarlos en el microcontrolador. Haciendo alusión que los datos serían leídos a través de sus periféricos, utilizaron el POO para poder enlazar diferentes periféricos para dichos fines.
La capacitación de ANN (NN) implica pasar los conjuntos de datos a través de la red neuronal de manera iterativa para que las salidas de la red puedan minimizar los criterios de error deseables.
La definición, la capacitación y las pruebas de ANN generalmente se realizan utilizando marcos de aprendizaje profundo listos para usar.
Esto generalmente se realiza en una potente plataforma informática, con memoria y potencia computacional prácticamente ilimitadas, para permitir muchas iteraciones en un corto período de tiempo.
El resultado de este entrenamiento es la red neuronal artificial pre-entrenada.
Una vez que se pre-entrena la red neuronal artificial lo que sigue es optimizar este nuevo algoritmo en uno optimo para los microcontroladores. Aquí es donde entra la innovación, y la solución de nuestros problemas. La empresa STMicroelectronics, fabricante de semiconductores, fabrica los microcontroladores de 8 bits STM8 y los de 32 bits STM32, cada arquitectura con una amplia familia llena de variaciones. --Hago alusión a esta empresa por que es la única que ha innovado en el campo de la I.A y los microcontroladores, no me están patrocinando 😢 (lastimosamente)-- Ha diseñado en los últimos años software que nos hace eso, optimizar el código para poder grabarlo en un microcontrolador. Este software se llama STM32Cube.AI, y como su nombre lo indica solo es para microcontroladores de 32 bits. Vamos ver de que trata esto.
STM32Cube.AI
La herramienta STM32Cube.AI ofrece una interoperabilidad simple y eficiente con las populares herramientas de capacitación de Deep Learning ampliamente utilizadas por la comunidad de desarrolladores de Inteligencia Artificial. La salida de estas herramientas se puede importar directamente al STM32Cube.AI.
El siguiente paso es incrustar el ANN pre-entrenado en una MCU (código optimizado que minimiza la complejidad y los requisitos de memoria).
Esta parte es muy fácil e intuitiva gracias a la herramienta de software STM32Cube.AI. El STM32Cube.AI está completamente integrado en el ecosistema de desarrollo de software STM32 como una extensión de la herramienta STM32CubeMX ampliamente utilizada.
Permite la conversión rápida y automática de ANN pre-entrenadas en código optimizado que puede ejecutarse en una MCU. La herramienta guía a los usuarios a través de la selección de la MCU correcta y proporciona información rápida sobre el rendimiento de la red neuronal en la MCU elegida, y la validación se ejecuta tanto en su PC como en la MCU STM32 de destino.
Vamos a ver el siguiente vídeo de la empresa donde podremos apreciar esto:
Y en general esta seria un enlace directo y sin muchas complicaciones al desarrollo de aplicaciones con inteligencia artificial y microcontroladores. Los dejo con un vídeo donde podrán apreciar una aplicación básica de la IA en el mundo exterior, donde se aplica IA con microcontroladores. No siendo más los dejo con el vídeo. No olvides seguirme y compartir mi contenido.
Escrito por: Breismam Alfonso Rueda Díaz
Fuentes:
- http://www.konradlorenz.edu.co/images/stories/suma_digital_matematicas/Programacion%20Dinamica.PDF
- https://www.st.com/content/st_com/en/about/innovation---technology/artificial-intelligence.html
- Xumari, G.L. Introduction to dynamic programming. Wilwy & Sons Inc., New York. 1967.
Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.
Twitter: https://twitter.com/BreismamR