LiteRT для микроконтроллеров предназначен для запуска моделей машинного обучения на микроконтроллерах и других устройствах с объемом памяти всего несколько килобайт. Среда выполнения ядра умещается всего в 16 КБ на Arm Cortex M3 и может запускать многие базовые модели. Он не требует поддержки операционной системы, каких-либо стандартных библиотек C или C++ или динамического выделения памяти.
Почему микроконтроллеры важны
Микроконтроллеры обычно представляют собой небольшие маломощные вычислительные устройства, встроенные в аппаратное обеспечение, требующее базовых вычислений. Принеся машинное обучение к крошечным микроконтроллерам, мы можем повысить интеллект миллиардов устройств, которые мы используем в нашей жизни, включая бытовую технику и устройства Интернета вещей, не полагаясь на дорогостоящее оборудование или надежное подключение к Интернету, которое часто зависит от пропускной способности и пропускной способности. ограничения по мощности и приводят к высокой задержке. Это также может помочь сохранить конфиденциальность, поскольку никакие данные не покидают устройство. Представьте себе интеллектуальные приборы, которые могут адаптироваться к вашей повседневной жизни, интеллектуальные промышленные датчики, которые понимают разницу между проблемами и нормальной работой, и волшебные игрушки, которые могут помочь детям учиться весело и увлекательно.
Поддерживаемые платформы
LiteRT для микроконтроллеров написан на C++ 17 и требует 32-битной платформы. Он был тщательно протестирован со многими процессорами на базе архитектуры Arm Cortex-M Series и был портирован на другие архитектуры, включая ESP32 . Фреймворк доступен в виде библиотеки Arduino. Он также может создавать проекты для сред разработки, таких как Mbed. Он имеет открытый исходный код и может быть включен в любой проект C++ 17.
Поддерживаются следующие платы разработки:
- Arduino Nano 33 BLE Sense
- SparkFun Край
- STM32F746 Комплект обнаружения
- Значок Adafruit Edge
- Комплект Adafruit LiteRT для микроконтроллеров
- Игровая площадка Adafruit Circuit Bluefruit
- Эспрессиф ESP32-DevKitC
- Эспрессиф ESP-EYE
- Терминал Wio: ATSAMD51
- Плата для разработки конечных точек Himax WE-I Plus EVB AI
- Платформа разработки программного обеспечения Synopsys DesignWare ARC EM
- Сони Спресенс
Изучите примеры
Каждый пример приложения находится на GitHub и имеет файл README.md
, в котором объясняется, как его можно развернуть на поддерживаемых платформах. В некоторых примерах также есть комплексные руководства, использующие конкретную платформу, как показано ниже:
- Hello World — демонстрирует абсолютные основы использования LiteRT для микроконтроллеров.
- Микроречь — записывает звук с помощью микрофона для распознавания слов «да» и «нет».
- Обнаружение человека — захватывает данные камеры с помощью датчика изображения для обнаружения присутствия или отсутствия человека.
Рабочий процесс
Для развертывания и запуска модели TensorFlow на микроконтроллере необходимы следующие шаги:
- Обучите модель :
- Создайте небольшую модель TensorFlow , которая подойдет вашему целевому устройству и будет содержать поддерживаемые операции .
- Преобразуйте в модель LiteRT с помощью конвертера LiteRT .
- Преобразуйте в массив байтов C с помощью стандартных инструментов и сохраните его в постоянной программной памяти устройства.
- Запустите вывод на устройстве с помощью библиотеки C++ и обработайте результаты.
Ограничения
LiteRT для микроконтроллеров разработан с учетом конкретных ограничений разработки микроконтроллеров. Если вы работаете над более мощными устройствами (например, со встроенным устройством Linux, таким как Raspberry Pi), стандартную платформу LiteRT может быть проще интегрировать.
Следует учитывать следующие ограничения:
- Поддержка ограниченного подмножества операций TensorFlow.
- Поддержка ограниченного набора устройств
- Низкоуровневый API C++, требующий ручного управления памятью.
- Обучение на устройстве не поддерживается.
Следующие шаги
- Начните работу с микроконтроллерами, опробуйте пример приложения и узнайте, как использовать API.
- Изучите библиотеку C++, чтобы узнать, как использовать ее в своем проекте.
- Создавайте и преобразуйте модели , чтобы узнать больше об обучении и преобразовании моделей для развертывания на микроконтроллерах.