7.9. TensorFlow Lite для микроконтроллеров¶
TFLM – это среда выполнения, которую большинство камер используют для выполнения загруженной модели. Она разбирает файл .tflite – FlatBuffer из операторов, весов и форм тензоров – и проходит по списку операторов по порядку, направляя каждый оператор в ядро, которое порождает следующий промежуточный тензор.
Промежуточные тензоры размещаются в арене тензоров фиксированного размера, выделяемой во время загрузки. Камера определяет размер арены за два прохода: сначала строится одноразовый интерпретатор на максимально доступной свободной куче, чтобы модель могла сообщить, сколько рабочей памяти ей нужно; затем постоянный интерпретатор выделяется ровно этого размера плюс небольшой запас. Меньшие модели оставляют больше свободной кучи для остальной части скрипта.
TFLM – это движок на H7, RT1062 и AE3.
Движок в середине predict() – это разный стек для каждого семейства камер.¶
7.9.1. Распознаватель операторов¶
TFLM поставляется не со всеми ядрами. Камера компонует распознаватель (resolver), который перечисляет операторы, которые она может выполнить, и модель, загруженная относительно распознавателя, не загружается, если содержит оператор, отсутствующий в списке. Поставляемая сборка регистрирует операторы, распространённые в сетях зрения и обработки сигналов – слои свёртки и плотные слои, слои пулинга и активации, операторы reshape и concat, операторы quantize и dequantize – так что модель, обученная на одной из стандартных архитектур (YOLO, MediaPipe, MobileNet), загружается без расширения списка.
Сборка AE3 дополнительно регистрирует оператор Ethos-U. Скомпилированная Vela модель в остальном является обычным .tflite, и TFLM обрабатывает её обычным образом; помеченные Vela подграфы попадают в оператор Ethos-U и направляются на NPU.