7.9. TensorFlow Lite for Microcontrollers

TFLM — це середовище виконання, яке більшість камер використовує для роботи із завантаженою моделлю. Воно розбирає файл .tflite — FlatBuffer операторів, ваг і форм тензорів — і послідовно обходить список операторів, диспетчеризуючи кожен оператор до ядра, що обчислює наступний проміжний тензор.

Проміжні тензори розміщуються у фіксованій арені тензорів, що виділяється під час завантаження. Камера визначає розмір арени у два проходи: спочатку будується тимчасовий інтерпретатор на максимально доступній купі, щоб модель могла повідомити необхідний обсяг робочої пам’яті; потім постійний інтерпретатор виділяється з цим точним розміром плюс невеликим запасом. Менші моделі залишають більше вільної купи для решти скрипта.

TFLM є рушієм на H7, RT1062 та AE3.

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.

Рушій усередині predict() — це різний стек на кожному сімействі камер.

7.9.1. Резолвер операторів

TFLM не постачає всі ядра. Камера підключає резолвер, що перелічує оператори, які він може виконати; модель, завантажена проти резолвера, завершується помилкою при завантаженні, якщо містить оператор, якого немає в списку. Готова збірка реєструє оператори, поширені в мережах обробки зображень і сигналів — згорткові та щільні шари, пулінгові та активаційні шари, оператори reshape і concat, оператори квантування та деквантування — тому модель, навчена на одній зі стандартних архітектур (YOLO, MediaPipe, MobileNet), завантажується без розширення списку.

Збірка AE3 додатково реєструє оператор Ethos-U. Модель, скомпільована Vela, є звичайним .tflite, і TFLM обробляє її звичайним чином; підграфи, позначені Vela, потрапляють на оператор Ethos-U і відправляються до NPU.