TensorFlow Lite para microcontroladores se diseñó para ejecutar modelos de aprendizaje automático en microcontroladores y otros dispositivos con solo unos kilobytes de memoria. El entorno de ejecución principal solo cabe en 16 KB en un procesador ARM Cortex M3 y puede ejecutar muchos 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 incorporados en hardware que requiere un procesamiento básico. Si llevamos el aprendizaje automático a pequeños microcontroladores, podemos potenciar la inteligencia de miles de millones de dispositivos que usamos en nuestra vida, incluidos los electrodomésticos y los dispositivos de Internet de las cosas, sin depender de hardware costoso ni de conexiones a Internet confiables, que a menudo están sujetas a restricciones de ancho de banda y energía y genera una alta latencia. Esto también puede ayudar a preservar la privacidad, ya que ningún dato sale del dispositivo. 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 encantadoras.
Plataformas compatibles
TensorFlow Lite para microcontroladores está escrito en C++ 17 y requiere una plataforma de 32 bits. Se probó ampliamente con muchos procesadores basados en la arquitectura de la serie ARM Cortex-M y se trasladó a otras arquitecturas, incluido ESP32. El framework 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++ 17.
Se admiten las siguientes placas de desarrollo:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Kit de descubrimiento STM32F746
- EdgeBadge de Adafruit
- Kit TensorFlow Lite de Adafruit para microcontroladores
- Circuit Playground Bluefruit de Adafruit
- ESP32-DevKitC de Espressif
- ESP-EYE de Espressif
- Terminal Wio: 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 está en GitHub y tiene un archivo README.md
que explica cómo se puede implementar en sus plataformas compatibles. Algunos ejemplos también tienen instructivos de extremo a extremo para una plataforma específica, como se indica a continuación:
- 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"
- Detección de persona: Toma datos de una cámara con 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 pequeño de TensorFlow que se ajuste a tu dispositivo de destino y que contenga operaciones compatibles.
- Convierte a un modelo de TensorFlow Lite con el conversor de TensorFlow Lite.
- Convierte en un array de bytes en C con herramientas estándar para almacenarlo en una memoria de programa de solo lectura en el dispositivo.
- Ejecuta la inferencia en el dispositivo con 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 en dispositivos más potentes (por ejemplo, un dispositivo Linux incorporado como Raspberry Pi), el framework 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 se admite el entrenamiento en el dispositivo
Próximos pasos
- Comienza a usar microcontroladores para probar la aplicación de ejemplo y aprender a usar la API.
- Comprende la biblioteca de C++ para aprender a usarla en tu propio proyecto.
- Compila y convierte modelos si quieres obtener más información sobre cómo entrenar y convertir modelos para implementarlos en microcontroladores.