7.9. TensorFlow Lite for Microcontrollers

TFLM ist die Laufzeit, die die meisten Kameras verwenden, um ein geladenes Modell auszuführen. Sie parst die .tflite-Datei – ein FlatBuffer aus Operatoren, Gewichten und Tensorformen – und durchläuft die Operatorliste der Reihe nach, wobei sie jeden Operator einem Kernel zuweist, der den nächsten Zwischentensor erzeugt.

Zwischentensoren liegen in einer Tensor-Arena fester Größe, die beim Laden alloziert wird. Die Kamera bemisst die Arena in zwei Durchläufen: Zuerst wird ein Wegwerf-Interpreter gegen den maximal freien Heap aufgebaut, damit das Modell den benötigten Arbeitsspeicher melden kann; der dauerhafte Interpreter wird dann mit genau dieser Größe zuzüglich eines kleinen Spielraums alloziert. Kleinere Modelle lassen mehr Heap für den Rest des Skripts frei.

TFLM ist die Engine auf dem H7, dem RT1062 und dem AE3.

Drei Spalten nebeneinander. Links: H7 und RT1062 führen TFLM mit CMSIS-NN-Kerneln auf einem Cortex-M7 aus. Mitte: AE3 führt TFLM mit CMSIS-NN und dem Ethos-U-Operator auf einem Cortex-M55 mit einer Ethos-U55-NPU aus. Rechts: N6 führt STAI auf einer Neural-ART-NPU aus.

Die Engine im Zentrum von predict() ist auf jeder Kamerafamilie ein anderer Stack.

7.9.1. Der Op-Resolver

TFLM liefert nicht jeden Kernel mit. Die Kamera linkt einen Resolver ein, der die Operatoren auflistet, die sie ausführen kann, und ein gegen den Resolver geladenes Modell schlägt beim Laden fehl, wenn es einen nicht auf der Liste stehenden Operator enthält. Der ausgelieferte Build registriert die in Vision- und Signalverarbeitungsnetzen üblichen Operatoren – die Convolution- und Dense-Schichten, die Pool- und Aktivierungsschichten, die Reshape- und Concat-Operatoren, die Quantize- und Dequantize-Operatoren –, sodass ein gegen eine der Standardarchitekturen (YOLO, MediaPipe, MobileNet) trainiertes Modell geladen wird, ohne die Liste zu erweitern.

Der AE3-Build registriert zusätzlich den Ethos-U-Operator. Ein Vela-kompiliertes Modell ist ansonsten eine normale .tflite, und TFLM durchläuft es normal; die Vela-markierten Subgraphen treffen auf den Ethos-U-Operator und weisen an die NPU zu.