7.9. TensorFlow Lite for Microcontrollers

A TFLM az a futtatókörnyezet, amelyet a legtöbb kamera egy betöltött modell végrehajtásához használ. Beolvassa a .tflite fájlt – operátorok, súlyok és tenzoralakok FlatBufferét –, és sorban végigjárja az operátorlistát, az egyes operátorokat egy olyan kernelhez irányítva, amely előállítja a következő köztes tenzort.

A köztes tenzorok egy betöltéskor lefoglalt, rögzített méretű tenzorarénában élnek. A kamera két menetben méretezi az arénát: először egy eldobható interpreter épül a maximális szabad heap-pel szemben, hogy a modell jelenteni tudja a szükséges munkamemóriát; ezután a tartós interpreter pontosan ezzel a mérettel plusz egy kis ráhagyással lesz lefoglalva. A kisebb modellek több szabad heap-et hagynak a szkript többi része számára.

A TFLM a motor a H7-en, az RT1062-n és az AE3-on.

Three columns side by side. Left: H7 and RT1062 run TFLM with CMSIS-NN kernels on a Cortex-M7. Middle: AE3 runs TFLM with CMSIS-NN and the Ethos-U operator on a Cortex-M55 with an Ethos-U55 NPU. Right: N6 runs STAI on a Neural-ART NPU.

A predict() közepén lévő motor minden kameracsaládon más-más réteg.

7.9.1. Az op resolver

A TFLM nem szállít minden kernelt. A kamera egy resolvert linkel be, amely felsorolja a végrehajtható operátorokat, és egy a resolverrel szemben betöltött modell betöltéskor meghiúsul, ha olyan operátort tartalmaz, amely nincs a listán. A szállított build regisztrálja a látási és jelfeldolgozó hálózatokban gyakori operátorokat – a konvolúciós és sűrű rétegeket, a pool és aktivációs rétegeket, a reshape és concat operátorokat, a quantize és dequantize operátorokat –, így egy a szabványos architektúrák valamelyikére (YOLO, MediaPipe, MobileNet) betanított modell a lista bővítése nélkül töltődik be.

Az AE3 build ezen felül regisztrálja az Ethos-U operátort. Egy Vela-val fordított modell egyébként egy normál .tflite, és a TFLM normál módon járja végig; a Vela-val megjelölt részgráfok elérik az Ethos-U operátort, és az NPU-hoz osztják ki.