7.9. TensorFlow Lite for Microcontrollers¶
TFLM är den körtid som de flesta kameror använder för att exekvera en laddad modell. Den tolkar .tflite-filen – en FlatBuffer av operatorer, vikter och tensorformer – och går igenom operatorlistan i ordning, och skickar varje operator till en kärna som producerar nästa mellanliggande tensor.
Mellanliggande tensorer lever i en tensorarena med fast storlek som allokeras vid laddningstid. Kameran dimensionerar arenan i två pass: först byggs en engångstolk mot den maximala lediga heapen så att modellen kan rapportera det arbetsminne den behöver; den beständiga tolken allokeras sedan med exakt den storleken plus en liten marginal. Mindre modeller lämnar mer heap fri för resten av skriptet.
TFLM är motorn på H7, RT1062 och AE3.
Motorn i mitten av predict() är en annan stack på varje kamerafamilj.¶
7.9.1. Operatorupplösaren¶
TFLM levererar inte varje kärna. Kameran länkar in en resolver som listar de operatorer den kan exekvera, och en modell som laddas mot upplösaren misslyckas vid laddningstid om den innehåller en operator som inte finns på listan. Det levererade bygget registrerar de operatorer som är vanliga i nätverk för visualisering och signalbehandling – convolution- och dense-lagren, pool- och aktiveringslagren, reshape- och concat-operatorerna, quantize- och dequantize-operatorerna – så att en modell tränad mot en av standardarkitekturerna (YOLO, MediaPipe, MobileNet) laddas utan att listan utökas.
AE3-bygget registrerar dessutom Ethos-U-operatorn. En Vela-kompilerad modell är i övrigt en vanlig .tflite, och TFLM går igenom den som vanligt; de Vela-taggade subgraferna träffar Ethos-U-operatorn och skickas till NPU:n.