Искусственный интеллект на периферии включает в себя загрузку моделей машинного обучения в микроконтроллеры, что позволяет им принимать гораздо более «разумные» решения по более широкому диапазону данных, чем традиционно запрограммированное устройство. В этом проекте рассказывается о том, как начать работу с этой техникой, используя один из QuickLogic QuickFeather Development Kits и набор инструментов SensiML для сбора данных, создания модели и ее развертывания.
Комплект для разработки QuickFeather - устройство, которое сочетает в себе множество функций и занимает мало места. Вот некоторые из характеристик:
- Процессор QuickLogic EOS S3 (первый микроконтроллер Arm Cortex-M4F с поддержкой FPGA, полностью поддерживаемый Zephyr OS)
- 16 Мб флеш-памяти
- Акселерометр mCube MC3635
- Датчик давления Infineon DPS310
- Цифровой микрофон Infineon IM69D130 PDM
Плата QuickFeather совместима с форм-фактором Adafruit Feather и построена на основе программного обеспечения с полностью открытым исходным кодом (включая инструменты Symbiflow FPGA).
SensiML
SensiML, дочерняя компания QuickLogic, предлагает передовые программные инструменты AutoML, позволяющие разработчикам приложений быстро создавать интеллектуальные устройства IoT, преобразовывая необработанные данные датчиков в автономную значимую информацию. Флагманское решение компании, SensiML Analytics Toolkit (https://sensiml.com/), представляет собой платформу для сквозной разработки, охватывающую сбор данных, маркировку, автоматическое создание алгоритмов и микропрограмм и тестирование. SensiML Toolkit поддерживает широкий спектр ядер микроконтроллеров Arm® Cortex®-M и выше, процессоры Intel® на базе x86 и гетерогенные ядра SoC, такие как платформа Quicklogic S3 с оптимизацией FPGA.
Необходимо зарегистрироваться.
Начальная настройка QuickFeather Development Kits
Сначала необходимо загрузить прошивку на плату QuickFeather для сбора данных для использования с SensiML Data Capture Lab. Скачать прошивку можно со страницы https://sensiml.com/documentation/firmware/quicklogic-quickfeather/quicklogic-quickfeather.html#flashing-quickfeather-firmware
Для загрузки прошивки требуется python 3.6 (или выше), git, приложение TinyFPGA Programmer Application и python-библиотека tinyfpgab. В Windows PowerShell или cmd выполняем
git clone --recursive https://github.com/QuickLogic-Corp/TinyFPGA-Programmer-Application pip3 install tinyfpgab
После помещения этого .bin файла в папку TinyFPGA-Programmer-Application, подключаем устройство через USB и нажмите кнопку RST на QuickFeather, а затем кнопку USR в течение пяти секунд после этого. Это приводит к тому, что светодиодный индикатор начинает мигать зеленым цветом, что указывает на то, что плата находится в режиме загрузки.
В этот момент определяем порт подключения платы. До данных действий порт не определяется!!!
В командной строке переходим в папку TinyFPGA-Programmer-Application и запускаем команду
python tinyfpga-programmer-gui.py --port COMX --m4 quickfeather-simple-stream-data-collection.bin --mode m4
После завершения загрузки программы нажимаем на плате кнопку RST, чтобы загрузить новое приложение. Светодиод должен мигать синим в течение пяти секунд, а затем погаснет.
Настройка SensiML Data Capture Lab
SensiML Data Capture Lab - это приложение позволяющее захватывать данные с устройства и передавать их на главный компьютер, где их затем можно обрабатывать и экспортировать в SensiML Analytics Toolkit. Загружаем приложение со страницы https://sensiml.com/download/.
Устанавливаем программу и запускаем. Логин и пароль для входа идентичен данным для входа на сайт SensiML Analytics Toolkit.
Создаем новый проект
И выбираем режим захвата данных Capture (Switch Modes --> Capture)
Настраиваем источник данных
Выбираем QuickFeather Simple Stream, Параметры Motion (данные акселерометра)
И сохраняем под именем Sensor1
Режим захвата Simple Streaming требует использования контактов UART на QuickFeather, поэтому подключаем контакты QuickFeather к адаптеру USB к TTL :
USB-UART | QuickFeather Development Kits |
GND | GND |
+3.3V | +3.3V |
Tx | IO_45 |
Rx | IO_44 |
После подключения устройства,
По нажатию на кнопку Connect происходит подключение к плате и мы можем видеть данные, приходящие с данного источника
Далее необходимо вести запись данных, По кнопке Record. Но сначала определим значения меток и метаданных. Метки - это определенные события, которые мы хотим выделить из данных. Допустим, мы хотим определять следующие события:
- подъем-опускание датчика влево (для команды "влево") - leftupdown
- подъем-опускание датчика вправо (для команды "вправо") - rightupdown
- неподвижно - idle
Значит добавляем следующие метки - idle, LeftUpDown, RightUpDown
Для метаданных я добавил Class и выбрал два значения: Train и Test, что означает, что каждый захват предназначен либо для обучения, либо для тестирования.
Теперь можно приступать к сбору данных. По кнопке Sensor Select выбираем необходимые данные (мне нужно только значение акселерометра по оси x)
Нажимаем на кнопку Begin Recording и совершаем движения платой. Записываем несолько файлов данных Train и несколько Test.
Теперь в каждом файле выбираем сегменты (нажимаем правую кнопку мыши и не отпуская тянем) и присваеваем им метки idle, LeftUpDown, RightUpDown
Эти данные синхронизируются с облаком SensiML.
Analytics Studio - Analytics Studio - это приложение в облаке, которое фильтрует и оптимизирует данные помеченных датчиков с помощью алгоритмов машинного обучения. Он генерирует модель (SensiML Knowledge Pack), готовую для прошивки в прошивку выбранного вами устройства.
Заходим в Analytics Studio и выбираем свой проект
Подготовим данные, настроив параметры (Пункт Prepare Data)
Для построения модели переходим во вкладку Build Model, выставляем параметры и нажимаем на кнопку Optimize
По завершении будут созданы 5 моделей.
На вкладке Test Model мы можем протестировать каждую модель на метаданных Test.\
Выбираем лучшую модель. На вкладке Download Model мы создадим SensiML Knowledge Pack. SensiML Knowledge Pack берет модель обнаружения событий и преобразует ее в двоичный файл или файл библиотеки, который можно запускать на аппаратном устройстве. Когда SensiML Knowledge Pack находится на аппаратном устройстве, он начинает выводить идентификаторы классификации, которые соответствуют интересующим вас событиям.
В данном случае я создаю бинарный файл для загрузки на плату QuickFeather Development Kits. Переносим архив в папку TinyFPGA-Programmer-Application и извлекаем файлы.
Теперь в командной строке даем команду на прошивку платы QuickFeather Development Kits загруженной прошивкой
Подключаем плату к последовательному порту, открываем программу Com Port Toolkit, выставляем скорость передачи 460800 и соединяемся. В последовательный порт приходят данные
Параметры Classification смотрим в файле models.json
ModelDescriptions": [{"Name": "Pipeline1_rank_4", "ClassMaps": {"1": "LeftUpDown", "2": "RightUpDown", "3": "idle", "0": "Unknown"},
Проверяем работу модели. Если результат не устраивает, проводим переобучение.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
Комплект разработчика | QuickLogic QuickFeather Development Kits | 1 | Поиск в магазине Отрон | |||
Адаптер | UART-TTL | 1 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Комментарии (2) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация