TensorFlow, разработка под руководством Google, представляет собой набор программных библиотек с открытым исходным кодом, которые позволяют разработчикам легко интегрировать сложные алгоритмы численных вычислений и машинное обучение (ML) в свои проекты (рис. 1) . По данным Google, эти библиотеки предоставляют стабильные интерфейсы программирования приложений для Python (Python 3.7+ на всех платформах) и C. Кроме того, они предоставляют API без гарантий обратной совместимости для C++, Go, Java и JavaScript. Кроме того, доступна альфа-версия языка Apple Swift.

TensorFlow предлагает так называемую сквозную поддержку машинного обучения для разработки и использования глубоких нейронных сетей (DNN). DNN — это реализация ML, которая особенно хорошо справляется с распознаванием образов, обнаружением и классификацией объектов. Библиотеки TensorFlow поддерживают обе фазы процесса машинного обучения: обучение и вывод. Первый — это обучение глубоких нейронных сетей .для этого требуются значительные вычислительные мощности, обычно имеющиеся в аппаратном обеспечении серверного уровня и графических процессорах (GPU). Совсем недавно для поддержки усилий по обучению были разработаны специализированные интегральные схемы, известные как Tensor Processing Unit (TPU). Второй этап, вывод, использует обученные DNN в реальном мире, чтобы реагировать на новые входные данные и давать рекомендации на основе анализа этих входных данных по сравнению с обученными моделями. Это этап, который должен представлять большой интерес для разработчиков встраиваемых продуктов.

Выпуск TensorFlow Lite для микроконтроллеров (подмножество библиотек TensorFlow) специально предназначен для выполнения логических выводов на устройствах с ограниченным объемом памяти, которые обычно используются в большинстве приложений встроенных систем. Он не позволяет обучать новые сети. Для этого по-прежнему требуется аппаратное обеспечение более высокого уровня.


Говоря практически: примеры использования приложений машинного обучения
Такие термины, как искусственный интеллект, нейронные сети и машинное обучение, могут показаться либо научной фантастикой, либо жаргоном. Итак, каковы практические последствия этих новых технологий?

Одним из огромных преимуществ устройств, которые используют как алгоритмы машинного обучения, так и подключение к Интернету, таких как устройства IoT, является то, что продукты могут со временем интегрировать новые или лучше обученные модели с помощью простого обновления прошивки по беспроводной сети. Это означает, что со временем продукты могут становиться умнее и не ограничиваться теми функциями, которые были возможны на момент их производства, при условии, что новые модели и микропрограммы по-прежнему соответствуют физической памяти и вычислительной мощности оборудования.

стена с несколькими экранами, показывающими разные каналы с камер безопасности
С помощью ИИ можно автоматически отслеживать каналы безопасности для распознавания определенных лиц (Источник: Monopoly919 — stock.adobe.com)
Целью алгоритмов на основе ИИ, работающих во встроенных системах, является обработка реальных данных, собранных датчиками, более эффективными способами, чем это допускается более традиционными методологиями процедурного или объектно-ориентированного программирования. Возможно, наиболее заметный вариант использования в нашем коллективном сознании — это переход от устаревших автомобилей к автомобилям с автоматизированной поддержкой, такой как предупреждения о выходе из полосы движения и системы предотвращения столкновений, к конечной цели — беспилотным автомобилям без участия человека в контуре управления. . Однако многие другие менее заметные способы использования глубокого обучения уже используются, даже если вы об этом не знали. Распознавание голоса в вашем смартфоне или виртуальные помощники, такие как Amazon Alexa, используют алгоритмы глубокого обучения. Другое использование включает обнаружение лиц для приложений безопасности.и / или замена фона без зеленого экрана в программном обеспечении для удаленных собраний, таком как Zoom.
Одним из огромных преимуществ устройств, которые используют как алгоритмы машинного обучения, так и подключение к Интернету, таких как устройства IoT, является то, что продукты могут со временем интегрировать новые или лучше обученные модели с помощью простого обновления прошивки по беспроводной сети. Это означает, что со временем продукты могут становиться умнее и не ограничиваться теми функциями, которые были возможны на момент их производства, при условии, что новые модели и микропрограммы по-прежнему соответствуют физической памяти и вычислительной мощности оборудования.

Наглядная диаграмма, показывающая модель TensorFlow.
Рисунок 2: Преобразование модели TensorFlow в версию, которую можно использовать на борту устройства с ограниченным объемом памяти, такого как микроконтроллер. (Источник: NXP)
Рабочий процесс
Согласно документации, предоставленной для TensorFlow Lite для микроконтроллеров, рабочий процесс разработчика можно разбить на пять основных этапов (рис. 2) . Эти шаги:

Создайте или получите модель TensorFlow: модель должна быть достаточно маленькой, чтобы поместиться на целевом устройстве после преобразования, и она может использовать только поддерживаемые операции. Если вы хотите использовать операции, которые в настоящее время не поддерживаются, вы можете предоставить собственную реализацию.
Преобразование модели в TensorFlow Lite FlatBuffer: вы преобразуете свою модель в стандартный формат TensorFlow Lite с помощью конвертера TensorFlow Lite. Возможно, вы захотите вывести квантованную модель, поскольку она меньше по размеру и более эффективна в исполнении.
Преобразование FlatBuffer в массив байтов C: модели хранятся в памяти программ только для чтения и предоставляются в виде простого файла C. Для преобразования FlatBuffer в массив C можно использовать стандартные инструменты.
Интегрируйте TensorFlow Lite для библиотеки C++ для микроконтроллеров: напишите свой код микроконтроллера для сбора данных, выполнения логических выводов с использованием библиотеки C++ и использования результатов.
Развертывание на вашем устройстве: создайте и разверните программу на своем устройстве.
Некоторые предостережения, о которых должен знать разработчик при выборе совместимой встроенной платформы для использования с библиотеками TensorFlow Lite, включают:

32-битная архитектура, такая как процессоры Arm Cortex-M и системы на базе ESP32.
Он может работать в системах, где объем памяти измеряется десятками килобайт.
TensorFlow Lite для микроконтроллеров написан на C++ 11.
TensorFlow Lite для микроконтроллеров доступен в виде библиотеки Arduino. Фреймворк также может создавать проекты для других сред разработки, таких как Mbed.
Нет необходимости в поддержке операционной системы, динамическом выделении памяти или каких-либо стандартных библиотеках C/C++.
Следующие шаги
Google предлагает четыре предварительно обученные модели в качестве примеров, которые можно использовать для работы на встроенных платформах. С небольшими изменениями их можно использовать на различных макетных платах. Примеры включают:

Hello World: демонстрирует абсолютные основы использования TensorFlow Lite для микроконтроллеров.
Micro-Speech: записывает звук с помощью микрофона, чтобы определить слова «да» и «нет».
Обнаружение человека: захват данных камеры с помощью датчика изображения для обнаружения присутствия или отсутствия человека.
Magic Wand: собирает данные акселерометра для классификации трех различных физических жестов.
Посетите дополнительные статьи ниже, чтобы ознакомиться с серией пошаговых руководств, которые покажут вам, как заставить эти модели работать на различных платформах микроконтроллеров.