Как реализовать ИИ вещей (AIoT) на микроконтроллерах
В своей предыдущей статье я выделил растущую тенденцию, позволяющую все большему количеству устройств искусственного интеллекта (ИИ) в Интернете (IoT) создавать интеллектуальные устройства «AIoT», и различные приложения получают выгоду от этих интеллектуальных устройств. Они учатся на данных и принимают автономные решения без вмешательства человека, что приводит к более логичному, человеческому взаимодействию продуктов с окружающей средой.
Комбинация ИИ и Интернета вещей открыла новые рынки для микроконтроллеров. Это позволило увеличить количество новых приложений и вариантов использования, которые могут использовать простые микроконтроллеры в сочетании с ускорением AI для облегчения интеллектуального управления. Эти микроконтроллеры с поддержкой искусственного интеллекта обеспечивают уникальное сочетание возможностей DSP для вычислений и машинного обучения (ML) для вывода и теперь используются в таких разнообразных приложениях, как определение ключевых слов, объединение датчиков, анализ вибрации и распознавание голоса. Более производительные микроконтроллеры позволяют использовать более сложные приложения в области зрения и обработки изображений, такие как распознавание лиц, анализ отпечатков пальцев и автономных роботов.
Технологии искусственного интеллекта
Вот некоторые технологии, которые позволяют использовать ИИ в устройствах Интернета вещей:
Машинное обучение (ML) :Алгоритмы машинного обучения создают модели на основе репрезентативных данных, что позволяет устройствам автоматически определять закономерности без вмешательства человека. Поставщики машинного обучения предоставляют алгоритмы, API-интерфейсы и инструменты, необходимые для обучения моделей, которые затем могут быть встроены во встроенные системы. Эти встроенные системы затем используют предварительно обученные модели для вывода или прогнозов на основе новых входных данных. Примеры приложений:концентраторы датчиков, определение ключевых слов, профилактическое обслуживание и классификация.
Глубокое обучение :Глубокое обучение - это класс машинного обучения, который обучает систему, используя множество уровней нейронной сети для постепенного извлечения функций и идей более высокого уровня из сложных входных данных. Глубокое обучение работает с очень большими, разнообразными и сложными входными данными и позволяет системам обучаться итеративно, улучшая результат на каждом этапе. Примерами приложений, использующих глубокое обучение, являются обработка изображений, чат-боты для обслуживания клиентов и распознавание лиц.
Обработка естественного языка (NLP) :НЛП - это отрасль искусственного интеллекта, которая занимается взаимодействием между системами и людьми с использованием естественного языка. НЛП помогает системам понимать и интерпретировать человеческий язык (текст или речь) и принимать решения на основе этого. Примеры приложений:системы распознавания речи, машинный перевод и интеллектуальный набор текста.
Компьютерное зрение :Машинное / компьютерное зрение - это область искусственного интеллекта, которая обучает машины собирать, интерпретировать и понимать данные изображений и принимать меры на основе этих данных. Машины собирают цифровые изображения / видео с камер, используют модели глубокого обучения и инструменты анализа изображений для точной идентификации и классификации объектов и принимают меры в зависимости от того, что они «видят». Примерами являются обнаружение неисправностей на производственной сборочной линии, медицинская диагностика, распознавание лиц в розничных магазинах и тестирование автомобилей без водителя.
AIoT на микроконтроллерах
В прошлом искусственный интеллект был сферой применения микропроцессоров и графических процессоров с мощными ядрами ЦП, большими ресурсами памяти и облачной связью для аналитики. Однако в последние годы, с тенденцией к увеличению интеллекта на периферии, мы начинаем видеть, как микроконтроллеры используются во встроенных приложениях AIoT. Переход к периферии обусловлен соображениями задержки и стоимости и включает перемещение вычислений ближе к данным. AI на устройствах IoT на базе MCU позволяет принимать решения в режиме реального времени и быстрее реагировать на события, а также имеет преимущества, заключающиеся в более низких требованиях к пропускной способности, меньшем энергопотреблении, меньшей задержке, более низких затратах и более высокой безопасности. AIoT обеспечивается более высокой вычислительной мощностью последних микроконтроллеров, а также наличием фреймворков тонких нейронных сетей (NN), которые больше подходят для микроконтроллеров с ограниченными ресурсами, используемых в этих конечных устройствах.
Нейронная сеть - это совокупность узлов, упорядоченных по слоям, которые получают входные данные от предыдущего уровня и генерируют выходные данные, которые вычисляются из взвешенной и смещенной суммы входных данных. Этот вывод передается на следующий уровень по всем его исходящим соединениям. Во время обучения обучающие данные передаются на первый или на входной уровень сети, а выходные данные каждого уровня передаются на следующий. Последний слой или выходной слой дает прогнозы модели, которые сравниваются с известными ожидаемыми значениями для оценки ошибки модели. Процесс обучения включает в себя уточнение или корректировку весов и смещений каждого уровня сети на каждой итерации с использованием процесса, называемого обратным распространением, до тех пор, пока выходные данные сети не будут тесно коррелировать с ожидаемыми значениями. Другими словами, сеть итеративно «учится» на входном наборе данных и постепенно повышает точность прогнозирования выходных данных.
Обучение нейронной сети требует очень высокой производительности вычислений и памяти и обычно выполняется в облаке. После обучения эта предварительно обученная модель NN встраивается в MCU и используется в качестве механизма вывода для новых входящих данных на основе ее обучения.
Для этого вывода требуется гораздо меньшая вычислительная производительность, чем для обучения модели, и поэтому он подходит для MCU. Веса этой предварительно обученной модели NN являются фиксированными и могут быть помещены во флэш-память, тем самым уменьшая объем требуемой SRAM и делая ее подходящей для MCU с более ограниченными ресурсами.
Реализация на микроконтроллерах
Реализация AIoT на микроконтроллерах включает несколько шагов. Наиболее распространенный подход - использовать одну из доступных моделей фреймворка нейронной сети (NN), например Caffe или Tensorflow Lite, подходящую для решений конечных устройств на основе MCU. Обучение модели NN для машинного обучения выполняется в облаке специалистами по ИИ с использованием инструментов, предоставляемых поставщиками ИИ. Оптимизация модели NN и интеграция в MCU выполняется с помощью инструментов от поставщика AI и производителя MCU. Логический вывод выполняется в MCU с использованием предварительно обученной модели NN.
Первый этап процесса выполняется полностью в автономном режиме и включает сбор большого объема данных с конечного устройства или приложения, которые затем используются для обучения модели NN. Топология модели определяется разработчиком ИИ, чтобы наилучшим образом использовать доступные данные и обеспечить выходные данные, необходимые для этого приложения. Обучение модели NN выполняется путем итеративной передачи наборов данных через модель с целью непрерывно минимизировать ошибку на выходе модели. В структуре NN доступны инструменты, которые могут помочь в этом процессе.
На втором этапе эти предварительно обученные модели, оптимизированные для определенных функций, таких как определение ключевых слов или распознавание речи, преобразуются в формат, подходящий для микроконтроллеров. Первым шагом в этом процессе является преобразование его в плоский буферный файл с помощью инструмента AI Converter. При желании это можно выполнить через квантователь, чтобы уменьшить размер и оптимизировать его для MCU. Затем этот плоский буферный файл преобразуется в код C и передается в целевой MCU как исполняемый файл времени выполнения.
Этот MCU, оснащенный предварительно обученной встроенной моделью ИИ, теперь можно развернуть на конечном устройстве. Когда поступают новые данные, они проходят через модель, и на основе обучения создается логический вывод. Когда поступают новые классы данных, модель NN может быть отправлена обратно в облако для повторного обучения, а новая повторно обученная модель может быть запрограммирована на MCU, возможно, с помощью обновлений прошивки OTA (по воздуху).
Существует два разных способа создания архитектуры ИИ на основе MCU. В целях этого обсуждения мы предполагаем использование ядер Arm Cortex-M в целевых микроконтроллерах.
В первом методе преобразованная модель NN выполняется на ядре процессора Cortex-M и ускоряется с помощью библиотек CMSIS-NN. Это простая конфигурация, с которой можно работать без какого-либо дополнительного аппаратного ускорения, и она подходит для более простых приложений искусственного интеллекта, таких как определение ключевых слов, анализ вибрации и концентраторы датчиков.
Более сложный и высокопроизводительный вариант включает в себя оборудование NN-ускорителя или микронейронного процессора (u-NPU) на MCU. Эти u-NPU ускоряют машинное обучение на конечных устройствах IoT с ограниченными ресурсами и могут поддерживать сжатие, которое может уменьшить мощность и размер модели. Они поддерживают операторов, которые могут полностью использовать большинство распространенных сетей NN для обработки звука, распознавания речи, классификации изображений и обнаружения объектов. Сети, которые не поддерживаются u-NPU, могут возвращаться к основному ядру ЦП и ускоряются библиотеками CMSIS-NN. В этом методе модель NN выполняется на uNPU.
Эти методы показывают лишь несколько способов включения ИИ в устройства на базе MCU. По мере того, как микроконтроллеры расширяют границы производительности до более высоких уровней, близких к ожидаемым от микропроцессоров, мы ожидаем увидеть полные возможности искусственного интеллекта, включая облегченные алгоритмы обучения и логический вывод, построенные непосредственно на микроконтроллерах.
Будущее за искусственным интеллектом на грани
Внедрение ИИ на микроконтроллеры с ограниченными ресурсами будет экспоненциально расти в будущем, и мы продолжим видеть появление новых приложений и вариантов использования, поскольку микроконтроллеры раздвигают границы производительности и стирают границу между микроконтроллерами и микропроцессорами, а также все более и более «тонкими» сетевыми узлами. становятся доступными модели, подходящие для устройств с ограниченными ресурсами.
В будущем, с увеличением производительности MCU, мы, вероятно, увидим реализацию облегченных алгоритмов обучения в дополнение к логическому выводу, которые будут запускаться непосредственно на MCU. Это откроет новые рынки и новые приложения для производителей микроконтроллеров и станет для них областью значительных инвестиций.
Интернет вещей
- Как защитить облачные технологии?
- Как максимально использовать свои данные
- Как AIoT обеспечивает интеллектуальные решения для трафика
- Как Интернет вещей трансформирует цепочку поставок:Часть 2, Будущие решения
- Как мобильные технологии устраняют препятствия для путешествий
- Как наука о данных и машинное обучение могут помочь в улучшении дизайна веб-сайтов
- Интернет вещей:управление потоком данных
- Как использовать машинное обучение в сегодняшней корпоративной среде
- Как IoT расширяет возможности системы слежения за транспортными средствами?
- Как OEM-производители медицинского оборудования могут реализовать бизнес-модели Индустрии 4.0