7.9. TensorFlow Lite for Microcontrollers

TFLM est le runtime que la plupart des caméras utilisent pour exécuter un modèle chargé. Il analyse le fichier .tflite – un FlatBuffer d’opérateurs, de poids et de formes de tenseurs – et parcourt la liste d’opérateurs dans l’ordre, en aiguillant chaque opérateur vers un noyau qui produit le tenseur intermédiaire suivant.

Les tenseurs intermédiaires résident dans une arène de tenseurs de taille fixe allouée au chargement. La caméra dimensionne l’arène en deux passes : d’abord, un interpréteur jetable est construit avec le maximum de tas libre afin que le modèle puisse indiquer la mémoire de travail dont il a besoin ; l’interpréteur persistant est ensuite alloué avec cette taille exacte plus une petite marge. Les modèles plus petits laissent davantage de tas libre pour le reste du script.

TFLM est le moteur sur le H7, le RT1062 et l’AE3.

Trois colonnes côte à côte. À gauche : le H7 et le RT1062 exécutent TFLM avec les noyaux CMSIS-NN sur un Cortex-M7. Au milieu : l'AE3 exécute TFLM avec CMSIS-NN et l'opérateur Ethos-U sur un Cortex-M55 doté d'un NPU Ethos-U55. À droite : le N6 exécute STAI sur un NPU Neural-ART.

Le moteur au cœur de predict() est une pile différente sur chaque famille de caméras.

7.9.1. Le résolveur d’opérateurs

TFLM ne livre pas tous les noyaux. La caméra lie un résolveur qui énumère les opérateurs qu’elle peut exécuter, et un modèle chargé contre ce résolveur échoue au chargement s’il contient un opérateur absent de la liste. Le build livré enregistre les opérateurs courants dans les réseaux de vision et de traitement du signal – les couches de convolution et denses, les couches de pooling et d’activation, les opérateurs reshape et concat, les opérateurs quantize et dequantize – de sorte qu’un modèle entraîné sur l’une des architectures standard (YOLO, MediaPipe, MobileNet) se charge sans avoir à étendre la liste.

Le build de l’AE3 enregistre en plus l’opérateur Ethos-U. Un modèle compilé par Vela est par ailleurs un .tflite normal, et TFLM le parcourt normalement ; les sous-graphes marqués par Vela aboutissent à l’opérateur Ethos-U et sont aiguillés vers le NPU.