¿Quieres usar TinyML? Aquí te damos algunas ideas

Con la llegada de la nueva tarjeta NANO 33 BLE Sense se abre un abanico de posibilidades para desarrollar prototipos de alta tecnología. Pero uno de los aspectos que nos gusta destacar es la posibilidad de implementar redes neuronales a pequeña escala que te permiten desarrollar modelos inteligentes, expandiendo el alcance de tus proyectos.

Esta tecnología es muy reciente y tiende a cambiar a gran velocidad, por lo que deseamos dar una revisión a las posibilidades de desarrollo que tienes a tu disposición con la nueva tarjeta de Arduino y cómo adentrarte un poco más en el desarrollo de modelos inteligentes, así que, sigue leyendo para aprender un poco más.

Qué es TinyML?

TinyML es correr machine learning con un consumo de menos de un miliwatt en códigos que requieran unos cuantos kilobytes de memoria. Para lograr esto se utilizan herramientas como TensorFlow para crear los modelos inteligentes, que luego se procesan con TensorFlow Lite para hacerlos más ligeros, para que finalmente, con librerías creadas para la plataforma adecuada, se puedan programar en un microcontrolador.

Aquí se muestra el flujo de diseño generalizado para este tipo de aplicaciones

El enfoque principal que se le da a la implementación de redes neuronales en microcontroladores es el monitoreo continuo de gestos o actividades humanas. Por ejemplo, el monitoreo de frecuencia cardíaca o el reconocimiento de gestos, activación por rostros, detección de personas, etc. Así también se utiliza muy frecuentemente para dispositivos activados por voz, como estéreos y teléfonos inteligentes.

TinyML en el Arduino NANO 33 BLE Sense

Como mencionamos antes, tu nueva Arduino NANO puede implementar redes neuronales. ¿Cómo lograrlo? Primeramente revisemos los periféricos de la tarjeta:

Como podrás observar, la NANO 33 BLE Sense fué desarrollada con un ARM Cortex-M4, un microcontrolador altamente probado para su uso con este tipo de arquitecturas. Por lo general, un modelo de TensorFlow Lite utiliza alrededor de 1MB para funcionar, en arquitecturas de 32 bits como la serie M de ARM.

Para empezar a desarrollar

Empezar a desarrollar un proyecto de aprendizaje máquina requiere de ciertos conocimientos y habilidades. En lo particular te recomendamos que adquieras las siguientes:

  • Aprender a adquirir y procesar datos para entrenar el algoritmo de aprendizaje máquina
  • Aprender a usar los comandos básicos de TensorFlow y cómo implementar un regresor con red neuronal
  • Saber adaptar tu modelo de TensorFlow a TensorFlow Lite
  • Implementar las librerías que desarrolló Pete Warden para el Arduino NANO BLE Sense

Con estas habilidades serás capaz de desarrollar un proyecto que utilice esta tecnología. Si quieres revisar algunos ejemplos puedes ver estas páginas:

El canal de Peter Warden explica varios ejemplos de como usar TinyML
En esta serie de dos partes Shawn Hymel desarrolla un generador de una senoidal a partir de un modelo de TensorFlow. Esta serie es muy útil para entender el flujo de trabajo.

En el Project Hub de Arduino podrás encontrar varios ejemplos de cómo activar dispositivos con voz o detectar frutas con el sensor de colores integrado. Estos ejemplos son importantes para que aprendas a adquirir los datos para entrenar tu red neuronal. Te recomendamos que los revises para que puedas desarrollar esta habilidad.

En resumen…

TinyML es una tecnología en desarrollo pero con grandes expectativas, se espera que muchas aplicaciones que requieran un bajo consumo de energía implementen este tipo de dispositivos. Aprender a utilizar TinyML representa una ventaja competitiva en el desarrollo de productos de alta tecnología, y aprender a utilizarlo mientras esta creciendo es crucial para estar a la vanguardia

Referencias:

What’s TinyML good for

Using TensorFlow Lite for Microcontrollers for High-Efficiency NN Inference on Ultra-Low Power Processors

Fruit identification using Arduino and TensorFlow

TinyML: Wake Word Detection

Intro to TinyML: Training a Neural Network for Arduino in TensorFlow

TensorFlow Lite guide