7.9. TensorFlow Lite para Microcontroladores¶
TFLM es el runtime que usan la mayoría de las cámaras para ejecutar un modelo cargado. Analiza el archivo .tflite (un FlatBuffer de operadores, pesos y formas de tensores) y recorre la lista de operadores en orden, despachando cada operador a un kernel que produce el siguiente tensor intermedio.
Los tensores intermedios residen en una arena de tensores de tamaño fijo asignada en el momento de la carga. La cámara dimensiona la arena en dos pasadas: primero, se construye un intérprete desechable contra el máximo de heap libre para que el modelo pueda informar de la memoria de trabajo que necesita; el intérprete persistente se asigna después con ese tamaño exacto más un pequeño margen. Los modelos más pequeños dejan más heap libre para el resto del script.
TFLM es el motor en el H7, el RT1062 y el AE3.
El motor en el centro de predict() es una pila distinta en cada familia de cámaras.¶
7.9.1. El resolutor de operadores¶
TFLM no incluye todos los kernels. La cámara enlaza un resolutor que lista los operadores que puede ejecutar, y un modelo cargado contra el resolutor falla en el momento de la carga si contiene un operador que no está en la lista. La compilación que se entrega registra los operadores comunes en redes de visión y de procesamiento de señales (las capas de convolución y densas, las capas de pooling y activación, los operadores de reshape y concat, los operadores de cuantización y descuantización), de modo que un modelo entrenado contra una de las arquitecturas estándar (YOLO, MediaPipe, MobileNet) se carga sin necesidad de ampliar la lista.
La compilación del AE3 registra adicionalmente el operador Ethos-U. Un modelo compilado con Vela es, por lo demás, un .tflite normal, y TFLM lo recorre con normalidad; los subgrafos etiquetados por Vela alcanzan el operador Ethos-U y despachan a la NPU.