TensorFlow Lite para microcontroladores

TensorFlow Lite para microcontroladores es un puerto experimental de TensorFlow Lite que se diseñó para ejecutar modelos de aprendizaje automático en microcontroladores y otros dispositivos usando solo algunos kilobytes de memoria.

No requiere compatibilidad con el sistema operativo, ninguna biblioteca C o C++ estándar ni asignación de memoria dinámica. El entorno de ejecución principal cabe en 16 KB, en un procesador ARM Cortex M3 y, si se le agregan suficientes operadores para ejecutar un modelo de detección de palabras clave en texto hablado, ocupa un total de 22 KB.

Hay aplicaciones de ejemplo que demuestran el uso de microcontroladores para tareas que incluyen la detección de palabras de activación, clasificación de gestos a partir de datos del acelerómetro y clasificación de imágenes con datos de la cámara.

Cómo comenzar

Para probar las aplicaciones de ejemplo y aprender a usar la API, lee Comienza a usar los microcontroladores.

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 Mback. Es de código abierto y se puede incluir en cualquier proyecto de C++ 11.

Hay aplicaciones de ejemplo disponibles para las siguientes placas de desarrollo:

Para obtener más información sobre las bibliotecas y los ejemplos, consulta Comienza a usar los microcontroladores.

Por qué son importantes los microcontroladores

Por lo general, los microcontroladores son dispositivos de cálculo pequeños y de baja potencia que a menudo están integrados en hardware con componentes informáticos básicos, como por ejemplo, electrodomésticos y los dispositivos del Internet de las cosas. Cada año, se fabrican miles de millones de microcontroladores.

Los microcontroladores se suelen optimizar para reducir el consumo de energía y el tamaño, a costa de una menor potencia de procesamiento, memoria y almacenamiento. Algunos microcontroladores tienen funciones que se diseñaron para optimizar el rendimiento de las tareas de aprendizaje automático.

Si se ejecuta la inferencia del aprendizaje automático en microcontroladores, los desarrolladores pueden agregar IA a una amplia gama de dispositivos de hardware sin depender de la conexión de red, que suele estar sujeta a restricciones de ancho de banda y energía, y genera una latencia alta. Ejecutar la inferencia en el dispositivo también puede ayudar a preservar la privacidad, ya que no es necesario que los datos salgan del dispositivo.

Flujo de trabajo del desarrollador

Para implementar un modelo de TensorFlow en un microcontrolador, deberás seguir este proceso:

  1. Obtén un modelo de TensorFlow o crea uno

    El modelo debe ser lo suficientemente pequeño como para caber en el dispositivo de destino después de la conversión y solo puede usar operaciones compatibles. Si deseas usar operaciones que en este momento no son compatibles, puedes proporcionar tus propias implementaciones.

  2. Convierte el modelo al formato FlatBuffer de TensorFlow Lite

    Convierte tu modelo al formato estándar de TensorFlow Lite con el conversor de TensorFlow Lite. Si lo deseas, puedes generar un modelo cuantificado, ya que son más pequeños y más eficientes al momento de ejecutarlos.

  3. Convierte el formato FlatBuffer a un arreglo de bytes en C

    Los modelos se guardan en la memoria del programa de solo lectura y se proporcionan en la forma de un archivo C simple. Las herramientas estándar se pueden usar para convertir el archivo FlatBuffer en un arreglo en C.

  4. Integra la biblioteca de C++ de TensorFlow Lite para microcontroladores

    Escribe el código del microcontrolador para recopilar datos, realizar inferencia con la biblioteca de C++ y usar los resultados.

  5. Impleméntalo en tu dispositivo

    Compila e implementa el programa en el dispositivo.

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 se admite el entrenamiento

Próximos pasos

Lee Comienza a usar los microcontroladores para probar las aplicaciones de ejemplo y aprender a usar la API.