TensorFlow Lite para microcontroladores se diseñó para ejecutar modelos de aprendizaje automático en microcontroladores y otros dispositivos usando solo algunos kilobytes de memoria. El entorno de ejecución principal cabe en 16 KB en un procesador ARM Cortex M3 y puede ejecutar varios modelos básicos. No requiere compatibilidad con el sistema operativo, ninguna biblioteca C o C++ estándar ni asignación de memoria dinámica.
Por qué son importantes los microcontroladores
Por lo general, los microcontroladores son dispositivos de procesamiento pequeños y de baja potencia que están integrados en hardware que realiza tareas de cálculo básicas. Con la incorporación del aprendizaje automático en pequeños microcontroladores, podemos potenciar la inteligencia de millones de dispositivos que usamos en nuestra vida, incluidos los electrodomésticos y el Internet de las cosas, sin depender de hardware costoso ni de una conexión a Internet estable, que suele estar condicionada por restricciones de ancho de banda y energía, y que además, genera una latencia alta. Esto puede contribuir también a preservar la privacidad, ya que ningún dato sale del dispositivo. Imagina electrodomésticos inteligentes que se adapten a la rutina diaria, sensores industriales inteligentes que entiendan 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.
Plataformas compatibles
TensorFlow Lite para microcontroladores se codificó en C++ 11 y requiere una plataforma de 32 bits. Se probó de manera exhaustiva con muchos procesadores basados en la arquitectura de la serie ARM Cortex-M y se trasladó a otras arquitecturas, como ESP32. El marco de trabajo está disponible como una biblioteca de Arduino. También puede generar proyectos para entornos de desarrollo, como Mbed. Es de código abierto y se puede incluir en cualquier proyecto de C++ 11.
Es compatible con las siguientes placas de desarrollo:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Kit de desarrollo STM32F746
- EdgeBadge de Adafruit
- Kit TensorFlow Lite de Adafruit para microcontroladores
- Circuit Playground Bluefruit de Adafruit
- ESP32-DevKitC de Espressif
- ESP-EYE de Espressif
- Wio Terminal: ATSAMD51
- Placa de desarrollo Himax WE-I Plus EVB Endpoint AI
- Plataforma de desarrollo de software Synopsys DesignWare ARC EM
- Sony Spresense
Explora los ejemplos
Cada aplicación de ejemplo se encuentra en GitHub y tiene un archivo README.md
que explica cómo puede implementarse en las plataformas compatibles. Algunos ejemplos incluyen también instructivos de extremo a extremo para plataformas específicas, como se indica más abajo:
- Hello World: Demuestra los conceptos básicos del uso de TensorFlow Lite para microcontroladores
- Micro Speech: Captura el audio con un micrófono para detectar las palabras "sí" y "no"
- Magic wand: Captura datos del acelerómetro para clasificar tres gestos físicos diferentes.
- Detección de persona: Obtiene datos de una cámara mediante un sensor de imágenes para detectar la presencia o ausencia de una persona.
Flujo de trabajo
Los siguientes pasos son necesarios para implementar y ejecutar un modelo de TensorFlow en un microcontrolador:
- Entrena un modelo:
- Genera un modelo de TensorFlow pequeño que pueda adaptarse al dispositivo de destino y contenga operaciones compatibles.
- Convierte a un modelo de TensorFlow Lite con el conversor de TensorFlow Lite.
- Convierte a un arreglo de bytes en C con herramientas estándar para almacenarlo en una memoria de programa de solo lectura en el dispositivo.
- Realiza inferencias en el dispositivo mediante la biblioteca de C++ y procesa los resultados.
Limitaciones
TensorFlow Lite para microcontroladores se diseñó para las limitaciones específicas del desarrollo de microcontroladores. Si trabajas con dispositivos más potentes (por ejemplo, un dispositivo con Linux incorporado como Raspberry Pi), el marco de trabajo estándar de TensorFlow Lite podría ser más fácil de integrar.
Se deben tener en cuenta las siguientes limitaciones:
- Compatibilidad con un subconjunto limitado de operaciones de TensorFlow
- Compatibilidad con un conjunto limitado de dispositivos
- API de C++ de bajo nivel que requiere administración manual de la memoria
- No compatible con el entrenamiento en dispositivos
Próximos pasos
- Comienza a usar microcontroladores para probar la aplicación de ejemplo y aprender a usar la API.
- Explora la biblioteca de C++ y aprende a usarla en tu propio proyecto.
- Compila y convierte modelos a fin de obtener más información sobre cómo entrenar y convertir modelos para la implementación en microcontroladores.