7.9. TensorFlow Lite for Microcontrollers¶
TFLM é o runtime que a maioria das câmeras usa para executar um modelo carregado. Ele analisa o arquivo .tflite – um FlatBuffer de operadores, pesos e formatos de tensores – e percorre a lista de operadores em ordem, despachando cada operador para um kernel que produz o próximo tensor intermediário.
Os tensores intermediários residem em uma arena de tensores de tamanho fixo alocada no momento do carregamento. A câmera dimensiona a arena em duas passagens: primeiro, um interpretador descartável é construído contra o máximo de heap livre para que o modelo possa relatar a memória de trabalho de que precisa; o interpretador persistente é então alocado com exatamente esse tamanho mais uma pequena margem. Modelos menores deixam mais heap livre para o restante do script.
O TFLM é o motor no H7, no RT1062 e no AE3.
O motor no meio de predict() é uma pilha diferente em cada família de câmera.¶
7.9.1. O resolvedor de operadores¶
O TFLM não inclui todos os kernels. A câmera vincula um resolvedor que lista os operadores que ela pode executar, e um modelo carregado contra o resolvedor falha no momento do carregamento se contiver um operador que não esteja na lista. A build distribuída registra os operadores comuns em redes de visão e de processamento de sinais – as camadas de convolução e densas, as camadas de pooling e ativação, os operadores de reshape e concat, os operadores de quantização e dequantização – de modo que um modelo treinado contra uma das arquiteturas padrão (YOLO, MediaPipe, MobileNet) carrega sem estender a lista.
A build do AE3 registra adicionalmente o operador Ethos-U. Um modelo compilado pelo Vela é, no mais, um .tflite normal, e o TFLM o percorre normalmente; os subgrafos marcados pelo Vela atingem o operador Ethos-U e despacham para a NPU.