Varita mágica con IA con TensorFlow Lite para microcontroladores y Arduino

1. Introducción

Qué compilarás

En este codelab, aprenderemos a usar TensorFlow Lite para microcontroladores para ejecutar un modelo de aprendizaje profundo en Arduino Nano 33 BLE. El microcontrolador se convierte en una “varita mágica” digital. por el usuario para agitar y lanzar una variedad de hechizos. A medida que el usuario mueve la batuta, estos datos complejos y multidimensionales del sensor que serían inescrutables para un ser humano se pasan como una entrada al modelo, lo que da como resultado una clasificación simple que nos alerta si se produce uno de varios movimientos.

9208eb1207211349.gif

Aprendizaje automático en microcontroladores

El aprendizaje automático puede usarse para crear herramientas inteligentes la vida más fácil, como Asistente de Google. A menudo, estas experiencias requieren mucho procesamiento o recursos, que pueden incluir un servidor en la nube potente o una computadora de escritorio. Sin embargo, ahora es posible ejecutar la inferencia del aprendizaje automático en un hardware pequeño de baja potencia, como los microcontroladores.

Los microcontroladores son extremadamente comunes, económicos, requieren muy poca energía y son muy confiables. Son parte de todo tipo de dispositivos domésticos, como electrodomésticos, autos y juguetes. De hecho, cada año se producen alrededor de 30,000 millones de dispositivos que funcionan con microcontroladores.

1914a419dfacf0b5.jpeg

Si llevamos el aprendizaje automático a pequeños microcontroladores, podemos potenciar la inteligencia de miles de millones de dispositivos que usamos en nuestras vidas, sin depender de hardware costoso ni de conexiones a Internet confiables. Imagina electrodomésticos inteligentes que puedan adaptarse a tu rutina diaria, sensores industriales inteligentes que comprendan la diferencia entre los problemas y el funcionamiento normal, y juguetes mágicos que puedan ayudar a los niños a aprender de formas divertidas y agradables.

TensorFlow Lite para microcontroladores (software)

864114d0c2b4c919.png

TensorFlow es el framework de aprendizaje automático de código abierto de Google para entrenar y ejecutar modelos. TensorFlow Lite es un marco de trabajo de software, una versión optimizada de TensorFlow, destinada a ejecutar modelos de TensorFlow en dispositivos pequeños y de potencia relativamente baja, como los teléfonos celulares.

TensorFlow Lite para microcontroladores es un marco de trabajo de software, una versión optimizada de TensorFlow, destinada a ejecutar modelos de TensorFlow en un hardware pequeño y de baja potencia, como los microcontroladores. Cumple con las restricciones requeridas en estos entornos incorporados; es decir, tiene un tamaño binario pequeño, no requiere compatibilidad con el sistema operativo, ninguna biblioteca C o C++ estándar, asignación de memoria dinámica, etcétera.

Arduino Nano 33 BLE (hardware)

bcd452d4d660efa9.jpeg

Arduino es una plataforma popular de código abierto que se usa para crear proyectos electrónicos. Consta de lo siguiente:

  1. Una placa de circuito programable física (que suele ser un microcontrolador), como el Arduino Nano 33 BLE que se usa en este codelab.
  2. El IDE (entorno de desarrollo integrado) de Arduino, un software que se usa para escribir y subir código de computadora a la placa física.

Arduino Nano 33 BLE es una plataforma basada en microcontroladores: una pequeña computadora en una sola placa de circuitos. Tiene un procesador, memoria y hardware de E/S que le permiten enviar y recibir señales digitales a otros dispositivos. A diferencia de una computadora, un microcontrolador no es potente y no suele ejecutar un sistema operativo. En cambio, tienen procesadores pequeños, no mucha memoria, y los programas que escribes se ejecutan directamente en el hardware. Sin embargo, dado que están diseñados para ser lo más sencillos posible, un microcontrolador puede consumir muy poca energía.

Actividades

  • Configura el microcontrolador Arduino Nano 33 BLE y conviértelo en una varita mágica digital.
  • Configura el IDE de Arduino e instala las bibliotecas necesarias
  • Implementa el programa en el dispositivo
  • Lanza una variedad de hechizos agitando la varita mágica y mira las predicciones

Requisitos

2. Configura el microcontrolador Arduino

Desempaqueta tu Arduino

Quítalo de la caja y sácalo de la espuma de embalaje. Es conductivo y puede causar problemas de otro modo.

6ed84a651c871a58.jpeg

Conéctalo a tu laptop.

  • Conecta el cable microUSB al enchufe del chip.
  • Conecta el otro extremo del cable a un tomacorriente USB de tu laptop.
  • La luz LED de la parte inferior izquierda de la placa Arduino (la parte superior izquierda en la imagen de abajo) debería encenderse.

c6936696f9659104.jpeg

Familiarízate con el flujo de trabajo

99852afbed7e78b0.png

Como se muestra en el diagrama anterior, el intérprete de TFLite en Arduino ejecuta inferencias en el modelo de manera periódica. El modelo usa los datos procesados del acelerómetro como entrada y genera una predicción que sugiere el gesto más probable que ocurrió. Además, se imprimiría el resultado deseado y se encenderían las luces LED correctas.

3. Configura el IDE de Arduino

1. Descarga el IDE de Arduino

Para implementar el programa en el microcontrolador Arduino, usamos el IDE de Arduino.

Después de descargarla, instala y abre el IDE de Arduino haciendo clic en la aplicación cuyo ícono se ve de la siguiente manera: 75717f13527f36b9.png

La página de destino inicial se abriría de la siguiente manera:

933c91e6e1997c61.png

2. Configura el Board Manager

  1. En el menú de Arduino, selecciona Tools -> Board: "Arduino .." —> Boards Manager.
  2. Busca "Arduino Nano 33 BLE" e instala Arduino nRF528x Boards (Mbed OS). Esto garantizará que nuestro microcontrolador Arduino Nano 33 BLE sea compatible con el IDE de Arduino. 817c63346152eda9.png
  1. En el menú de Arduino, selecciona Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE".

9357691e1a1348eb.png

  1. Por último, verifica que la placa seleccionada sea "Arduino Nano 33 BLE". en la parte inferior derecha del IDE.

aa08706bb84fa9b2.png

3. Configura el puerto

En el menú de Arduino, selecciona Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE). Deberías ver un resultado similar a este:

8c25990d0c6fb6f8.png

4. Verifica la conexión de la placa

En el menú de Arduino, selecciona Tools -> Get Board Info. Deberías ver un resultado similar a este:

ccd8f5305be6cf59.png

4. Instala bibliotecas

1. Biblioteca de Arduino de TensorFlow

Esta biblioteca contiene todos los ejemplos de TensorFlow Lite para microcontroladores, que incluyen el código fuente de varita mágica que se requiere para este codelab.

  1. En el menú de Arduino, selecciona Sketch -> Include Library -> Add .ZIP Library....
  2. Agrega la biblioteca de Arduino de TensorFlow .zip que descargaste.

2. Biblioteca de Arduino LSM9DS1

Esta biblioteca te permite leer los valores del acelerómetro, el magnetómetro y el giroscopio del IMU LSM9DS1 en tu Arduino Nano 33 BLE Sense.

  1. En el menú de Arduino, selecciona Sketch -> Include -> Manage Libraries....
  2. Busca e instala "Arduino_LSM9DS1". ac2f78a737c5f233.png

5. Carga y compila el ejemplo

1. Carga el ejemplo

En el menú de Arduino, selecciona File -> Examples -> Arduino_TensorFlowLite -> magic_wand para cargar el código de muestra.

de349f2d3cb49b98.png

Esta acción cargará el código fuente de la varita mágica.

cda8c35a597b0798.png

2. Compila el ejemplo

Haz clic en el botón Upload en la ventana de boceto.

71cb1474d5e14669.png

Después de unos minutos, deberías ver un texto en rojo que indica que el flash se completó. Durante la carga, la luz LED de la derecha debería parpadear y, luego, oscurecer al final.

3df1d0858c6e40a4.png

6. Demostración

Actualmente, la varita mágica puede detectar 3 gestos, como se muestra a continuación: 99a607da66af9fc8.png

  1. Ala: Comienza desde la esquina superior izquierda y traza cuidadosamente la letra "W". durante dos segundos.
  2. Anillo: Comienza en posición vertical y mueve la batuta en un círculo en el sentido de las manecillas del reloj durante un segundo.
  3. Pendiente: Para comenzar, sostén la batuta hacia arriba, con los LED hacia ti. Mueve la batuta hacia abajo inclinando hacia la izquierda y, luego, de forma horizontal hacia la derecha durante un segundo.

En la siguiente imagen, se muestran dos gestos. Primero, una pendiente y, luego, un ala (utilice esto como referencia para su demostración).

9208eb1207211349.gif

Para ejecutar la demostración, sigue las instrucciones que se indican a continuación:

  1. Con el USB conectado, selecciona Tools -> Serial Monitor en el menú de Arduino. Inicialmente, se abrirá una pantalla en blanco sin resultados.

38e8d53652eb28f2.png

  1. Mueve el microcontrolador de Arduino para trazar cada una de las formas anteriores con cuidado y comprueba si el monitor en serie detecta el gesto.

60b8a0017bcae419.png

  1. En el resultado del monitor en serie, notamos que la varita mágica efectivamente detectó todas las formas. También verás que se enciende la luz LED del lado derecho.

7. Próximos pasos

Felicitaciones, creaste con éxito tu primera “varita mágica” de reconocimiento de gestos en un microcontrolador Arduino.

Esperamos que hayas disfrutado esta breve introducción al desarrollo con TensorFlow Lite para microcontroladores. La idea del aprendizaje profundo en los microcontroladores es nueva y emocionante, y ¡te animamos a que salgas a experimentar!

Documentos de referencia

647c3ef0dc103804.png

Gracias y que te diviertas creando.