Обнаружение ключевого слова TinyML для управления освещением RGB
Компоненты и расходные материалы
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
Предпосылка
Машинное обучение на периферии чрезвычайно полезно для создания устройств, которые могут выполнять «интеллектуальные» задачи с гораздо меньшим объемом программирования и логических блок-схем по сравнению с традиционным кодом. Вот почему я хотел включить передовое определение ключевых слов, которое может распознавать определенные слова, а затем выполнять задачу на основе того, что было сказано.
Аппаратное обеспечение
В этом проекте всего один компонент:Arduino Nano 33 BLE Sense. Настоящее волшебство происходит в модели машинного обучения. Arduino Nano 33 BLE Sense полон датчиков, включая микрофон, 9-осевой IMU, датчик окружающей среды и датчик жестов / приближения / цвета / внешней освещенности (APDS-9960). Микроконтроллер на нем - nRF52840, который работает на частоте 64 МГц и содержит 1 МБ флэш-памяти и 256 КБ ОЗУ. В этом проекте также используется встроенный светодиод RGB для отображения текущего цвета.
Настройка Edge Impulse
Я начал с создания нового проекта на Edge Impulse, а затем установил инструмент Edge Impulse CLI. Для получения дополнительных инструкций о том, как это сделать, посетите страницу с инструкциями по установке. Это позволяет Arduino Nano взаимодействовать с облачным сервисом для автоматического получения команд и отправки данных датчиков. Я загрузил самую последнюю версию прошивки Edge Impulse и прошил ее на плату, дважды щелкнув кнопку сброса, чтобы она перешла в режим загрузчика. Затем я запустил flash_windows.bat
передать это.
В командной строке я запустил edge-impulse-daemon
и, следуя указаниям мастера, настроил его. Теперь Nano отображается в списке устройств проекта, что позволяет брать образцы и выгружать их как часть набора данных для обучения / тестирования.
Сбор образцов
Для обучения модели машинного обучения требуются данные, и их довольно много. Я хотел иметь следующие режимы для светодиодной ленты RGB:
- Вкл.
- Выкл.
- Красный
- Зеленый
- Синий
У меня было около 1 минуты звука для каждого режима, где я несколько раз повторял слово с интервалом 1-2 секунды и разбивал их.
Но просто иметь эти образцы недостаточно, поскольку фоновый шум и другие слова дадут ложные показания. К счастью, Edge Impulse уже предоставляет готовый набор данных для шума и «неизвестных» слов, поэтому я использовал их инструмент «Загрузить существующие данные», чтобы загрузить эти аудиофайлы в обучающие данные.
Наконец, я перебалансировал набор данных, чтобы получить рекомендованное разделение 80-20 для данных обучения и тестирования соответственно.
Обучение модели
Теперь, когда вы вооружились часом данных для обучения и множеством этикеток, пришло время обучить модель. Разработанный мной импульс воспринимает звук как данные временного ряда с размером окна в 1 секунду и увеличением окна на 500 мс. Затем он проходит через блок MFCC в блок нейронной сети Keras.
Блок MFCC позволяет вам настроить способ обработки звука, а также спектрограмму, отображающую частоты в визуальном виде.
Я оставил настройки нейронной сети в основном по умолчанию, но также внес несколько изменений. Во-первых, я изменил минимальный порог достоверности с 0,80 на 0,70 и добавил немного увеличения данных в виде дополнительного шума и временных диапазонов маскировки. Это помогает NN избежать чрезмерной подгонки модели, поскольку у нее есть более разнообразные данные для работы.
Развертывание на Arduino Nano 33 BLE Sense
Arduino Nano 33 BLE Sense действует как постоянно включенный микрофон, который непрерывно дискретизирует звук и определяет, было ли произнесено одно из ключевых слов. Как только он будет найден, ключевое слово преобразуется в индекс, который используется для декодирования желаемого цвета. Для ключевого слова on или off индикатор устанавливается на черный или светло-серый цвет.
Я загрузил модель в виде библиотеки и добавил ее в IDE Arduino, затем скомпилировал и прошил код в Nano.
Код
- RGBLEDKeywordDetection
RGBLEDKeywordDetection C / C ++
/ * Примеры Edge Impulse Arduino * Copyright (c) 2020 EdgeImpulse Inc. * * Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию * этого программного обеспечения и связанных файлов документации («Программное обеспечение»), иметь дело * с Программным обеспечением без ограничений, включая, помимо прочего, права * использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и / или продавать * копии Программного обеспечения, а также разрешать лицам, которым принадлежит Программное обеспечение * предоставлено для этого при соблюдении следующих условий:* * Приведенное выше уведомление об авторских правах и это уведомление о разрешении должны быть включены * во все копии или существенные части Программного обеспечения. * * ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ * ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, * ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕЗАЩИТЫ ОТ ИСПОЛЬЗОВАНИЯ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ * АВТОРЫ ИЛИ ВЛАДЕЛЬЦЫ АВТОРСКИХ ПРАВ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГИЕ * ОТВЕТСТВЕННОСТЬ, ВЫЯВЛЯЮЩИЕСЯ В РЕЗУЛЬТАТЕ ДОГОВОРА, ИЛИ ИНОСТРАННЫМИ ПРАВИЛАМИ, ВЫЗЫВАЮЩИМИСЯ, * В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. ДЕЙСТВИЯ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ. * /// Если ваша цель ограничена в памяти, удалите этот макрос, чтобы сэкономить 10 КБ ОЗУ # define EIDSP_QUANTIZE_FILTERBANK 0 / ** * Определите количество срезов на окно модели. Например. окно модели 1000 мс * со срезами на окно модели, установленным на 4. В результате получается размер среза 250 мс. * Для получения дополнительной информации:https://docs.edgeimpulse.com/docs/continuous-audio-sampling * / # define EI_CLASSIFIER_SLICES_PER_MODEL_WINDOW 3 / * Включает ------------------- --------------------------------------------- * / # include#include #include
Производственный процесс
- Советы и тенденции безопасности IIoT на 2020 год
- Облачные и периферийные вычисления для Интернета вещей:краткая история
- Почему периферийные вычисления для Интернета вещей?
- Kontrons KBox A-150-WKL для пограничных приложений IoT, интенсивно использующих данные
- Преимущества граничных вычислений для ИИ Кристаллизация
- Четыре шага для обеспечения успеха в пограничных вычислениях
- Microsoft запускает Azure Edge Zones для приложений 5G
- Необходимость открытого исходного кода на периферии (электронная книга)
- Система обнаружения химических веществ для низких уровней концентрации
- 3 причины для технического обслуживания устройств обнаружения газа