Marco de Machine Learning para usar en microcontroladores como Arduino

Publicado por Loli Diéguez en

En los últimos años han aparecido cada vez más soluciones para ejecutar el aprendizaje automático o Machine Learning (ML) en microcontroladores.

Algunas de estas soluciones más populares son versiones reducidas para servidores, pero esas solo son adecuadas para MCU bastante potentes.

Aunque esto es ya una cosa del pasado, ya que con la solución de código abierto AIfES (abreviatura en ingles de Artificial Intelligence for Embedded Systems) del Instituto Fraunhofer de Circuitos y Sistemas Microelectrónicos (IMS) es posible ejecutar, e incluso entrenar, redes neuronales artificiales (RNA) en casi cualquier hardware, incluido el Arduino Uno de 8bit.

La biblioteca IA para Arduino 

AIfES es un marco de trabajo de inteligencia artificial independiente escrito completamente en C que permite el entrenamiento de modelos incluso en el propio controlador de 8bit como Arduino Uno sin la necesidad de un PC y se puede entrenar con bastante rapidez una red neuronal artificial.

AIfES ahora está disponible para Arduino IDE usando Arduino Library Manager. 

Esta tecnología permite el desarrollo de pequeños dispositivos de autoaprendizaje que funcionan con baterías que pueden ser independientes de una nube u otro dispositivo.

Los datos del sensor se pueden procesar donde se generan, directamente en el dispositivo. El dispositivo puede registrar los datos y usarlos para el entrenamiento.

AIfES es comparable y compatible con los conocidos frameworks de Python ML. Esto incluye TensorFlow, Keras o PyTorch, mientras que su funcionalidad se reduce significativamente.

En la versión actual, se admiten las redes neuronales feedforward (FNN), que se pueden configurar con total libertad. Además, las funciones de activación comunes como ReLU, sigmoid o softmax ya están integradas.

El desarrollo del modelo también se basa en Python, por lo que puede orientarse directamente. También se incluyen los algoritmos comunes para el entrenamiento, como el optimizador de descenso de gradientes (SGD) o el optimizador adam.

Importar redes neuronales artificiales (RNA) desde otros marcos de ML

Es posible importar un redes neuronales artificales previamente entrenadas desde otro marco de ML. Solo se necesitan la estructura y los pesos de la red para mapear una RNA y capacitarla más. Se incluye un ejemplo de Keras en la biblioteca y no es necesario migrar el modelo a TensorFlow Lite. Los pesos de una RNA en AIfES también se pueden leer, guardar o enviar directamente desde el dispositivo para ser utilizados en otro dispositivo.

Se pueden cargar diferentes RNA en tiempo de ejecución reconfigurando el modelo y cargando nuevos pesos. Los juegos de pesos se pueden almacenar en la nube para ponerlos a disposición de otros dispositivos. Las aplicaciones son infinitas.

Todos los algoritmos están optimizados para su uso en sistemas integrados con recursos limitados. El desarrollador puede especificar incluso el área de memoria requerida para la RNA. 

AIfES se ha desarrollado de forma modular para poder intercambiar diferentes componentes de los algoritmos, por ejemplo, una multiplicación de matrices. Esto permite el uso fácil de aceleradores de hardware de las diferentes familias de procesadores. Por ejemplo, las propiedades CMSIS DSP de los controladores ARM Cortex ya se pueden usar para calcular o entrenar redes neuronales profundas de manera particularmente eficiente.

Reconocimiento de gestos AIfES adaptable y preentrenado

En el reconocimiento de gestos, el modelo fue pre-entrenado y el usuario realiza los gestos como el desarrollador los entrenó. Esta es la forma convencional, pero no muy intuitiva y el usuario tiene que adaptarse al hardware. El nuevo demostrador utiliza el Arduino Nano 33 BLE Sense, que se adapta al usuario. 

Los gestos deseados se pueden entrenar directamente en el sistema sin necesidad de un PC. Un primer ejemplo de desarrollo de productos dentro de la industria es el proyecto " noKat ". Un rastreador de cámara óptica neuronal para la detección de personas que se acercan, donde se realizó un sistema de reconocimiento humano particularmente compacto utilizando AIfES.

Debido a su tamaño, las redes neuronales profundas (RNP) son problemáticas para la implementación en un microcontrolador. Por esta razón, Fraunhofer IMS ha estado investigando técnicas para realizar soluciones de aprendizaje automático particularmente compactas durante años. Usando técnicas de extracción de características especiales, el número de entradas se puede reducir significativamente, por lo que solo se utilizan las características relevantes.

AIfES se ofrece como un modelo de licencia dual. Para proyectos privados o desarrolladores de software de código abierto gratuito bajo la GNU General Public License (GPL) versión 3, AIfES se puede utilizar de forma gratuita. Si AIfES se va a combinar y distribuir con software con licencia comercial, o si el código fuente de AIfES para software con licencia comercial no se va a distribuir bajo GNU GPL V3, se debe llegar a un acuerdo de licencia comercial con Fraunhofer IMS.

AIfES para Arduino incluye ejemplos que te ayudarán a empezar de inmediato. Además de la inferencia y el entrenamiento, también muestra cómo importar una RNA de Keras. El proyecto de identificación de frutas Arduino se ha vuelto a implementar en AIfES para el Nano 33 BLE Sense. Ahora los colores de tres objetos se entrenan directamente en el dispositivo, sin necesidad de un PC.

 Demostración detector de frutas

Si estás interesado en saber más sobre el nuevo marco de aprendizaje automático integrado AlfES, descarga AIfES directamente desde el administrador de la biblioteca de Arduino o consulta el repositorio AIfES para Arduino GitHub .  

Nota: Información obtenida del Blog de Arduino. 

AQUÍ PUEDES LEER OTROS ARTÍCULOS MUY INTERESANTES


Compartir esta publicación



← Publicación más antigua Publicación más reciente →