TinyML. Книга рецептов
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Йодиче Джан Марко
Год издания: 2023
Кол-во страниц: 299
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-93700-169-6
Артикул: 832700.01.99
TinyML - технология, призванная расширить использование искусственного интеллекта за счет устройств с малым энергопотреблением, таких как микро- контроллеры. Прочитав эту книгу, вы сможете свободно использовать передовые практики и фреймворки ML в своей работе. Для начала вы ознакомитесь с основами развертывания интеллектуальных приложений на Arduino Nano 33 BLE Sense и Raspberry Pi Pico, а затем на примере работы с реальными датчиками получите необходимые навыки для внедрения комплексных интеллектуальных приложений в различных сценариях. Издание предназначено для инженеров-разработчиков, заинтересованных в создании приложений машинного обучения на микроконтроллерах. Требуется базовое знакомство с C/C++, языком программирования Python и интерфейсом командной строки (CLI); предварительные знания о микроконтроллерах не обязательны.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Джан Марко Йодиче TinyML. Книга рецептов
Gian Marco Iodice TinyML Cookbook Combine artificial intelligence and ultra-low-power embedded devices to make the world smarter BIRMINGHAM—MUMBAI
Джан Марко Йодиче TinyML. Книга рецептов Искусственный интеллект и интегрированные устройства со сверхнизким энергопотреблением делают мир умнее Москва, 2023
УДК 004.04 ББК 32.372 И75 Йодиче Дж. М. И75 TinyML. Книга рецептов / пер. с англ. Ю. В. Ревича. – М.: ДМК Пресс, 2023. – 298 с.: ил. ISBN 978-5-93700-169-6 TinyML – технология, призванная расширить использование искусственного интеллекта за счет устройств с малым энергопотреблением, таких как микроконтроллеры. Прочитав эту книгу, вы сможете свободно использовать передовые практики и фреймворки ML в своей работе. Для начала вы ознакомитесь с основами развертывания интеллектуальных приложений на Arduino Nano 33 BLE Sense и Raspberry Pi Pico, а затем на примере работы с реальными датчиками получите необходимые навыки для внедрения комплексных интеллектуальных приложений в различных сценариях. Издание предназначено для инженеров-разработчиков, заинтересованных в создании приложений машинного обучения на микроконтроллерах. Требуется базовое знакомство с C/C++, языком программирования Python и интерфейсом командной строки (CLI); предварительные знания о микроконтроллерах не обязательны. УДК 004.04 ББК 32.372 Copyright ©Packt Publishing 2022. First published in the English language under the title “TinyML Cookbook” – (9781801814973). Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-80181-497-3 (англ.) © 2022 Packt Publishing ISBN 978-5-93700-169-6 (рус.) © Перевод, оформление, издание, ДМК Пресс, 2023
Мне удалось завершить это уникальное путешествие в течение долгих ночей только благодаря поддержке моей жены Элеоноры. Я посвящаю эту книгу ей, с самого начала верившей в этот проект.
Содержание От издательства ....................................................................................................13 Введение ..................................................................................................................14 Составители ............................................................................................................16 Предисловие ..........................................................................................................18 Глава 1. Начало работы с TinyML ................................................................25 Технические требования ...........................................................................................25 Представление TinyML ..............................................................................................26 Что такое TinyML? ..................................................................................................26 Почему ML на микроконтроллерах? ...................................................................26 Зачем запускать ML локально? ............................................................................27 Возможности и проблемы TinyML ......................................................................28 Среды развертывания для TinyML ......................................................................28 tinyML Foundation ..................................................................................................30 Краткое описание глубокого обучения (DL) ..........................................................30 Глубокие нейронные сети .....................................................................................31 Сверточные нейронные сети ...............................................................................32 Квантизация ...........................................................................................................35 Разница между мощностью и энергией .................................................................36 Различие между напряжением и током .............................................................36 Мощность и энергия ..............................................................................................38 Программирование микроконтроллеров ...............................................................39 Архитектура памяти ..............................................................................................42 Периферийные устройства ..................................................................................43 Вход/выход общего назначения (GPIO или IO) .............................................44 Аналого-цифровые преобразователи ............................................................45
Содержание 7 Последовательная связь ...................................................................................45 Таймеры ..............................................................................................................45 Представление Arduino Nano 33 BLE Sense и Raspberry Pi Pico ...........................45 Настройка Arduino Web Editor, TensorFlow и Edge Impulse ..................................47 Подготовка веб-редактора Arduino Web Editor .................................................47 Подготовка TensorFlow ..........................................................................................47 Подготовка Edge Impulse ......................................................................................49 Как это делается… ..................................................................................................49 Запуск скетча на Arduino Nano 33 и Raspberry Pi Pico ..........................................51 Подготовка ..............................................................................................................51 Как это делается… ..................................................................................................52 Глава 2. Прототипирование на микроконтроллерах .........................53 Технические требования ...........................................................................................53 Отладка кода ...............................................................................................................54 Подготовка ..............................................................................................................54 Как это делается… ..................................................................................................55 Дополнительно .......................................................................................................58 Подключение светодиодного индикатора на макетной плате ...........................58 Подготовка ..............................................................................................................58 Размещение прототипа на макетной плате ..................................................60 Как это делается… ..................................................................................................62 Управление внешним светодиодом с помощью GPIO .........................................65 Подготовка ..............................................................................................................65 Представляем периферийное устройство GPIO ...........................................69 Как это делается… ..................................................................................................70 Включение и выключение светодиода с помощью кнопки ................................74 Подготовка ..............................................................................................................74 Как это делается... ..................................................................................................76 Использование прерываний для считывания состояния кнопки ......................79 Подготовка ..............................................................................................................79 Как это делается… ..................................................................................................80 Питание микроконтроллеров от батарей ...............................................................82 Подготовка ..............................................................................................................82 Увеличение выходного напряжения при последовательном подключении батарей .......................................................................................83 Увеличение энергетической емкости за счет параллельного подключения батарей .......................................................................................83 Подключение батарей к плате микроконтроллера ......................................84 Как это делается… ..................................................................................................85 Дополнительно .......................................................................................................86 Глава 3. Создание метеостанции с помощью библиотеки TensorFlow Lite for microcontrollers ...........................................................88 Импорт данных о погоде из WorldWeatherOnline .................................................89
Содержание Подготовка ..............................................................................................................89 Как это делается… ..................................................................................................90 Подготовка набора данных.......................................................................................92 Подготовка ..............................................................................................................92 Подготовка сбалансированного набора данных ..........................................92 Масштабирование параметров с помощью Z-score .....................................93 Как это делается… ..................................................................................................94 Обучение модели с помощью TF .............................................................................98 Подготовка ..............................................................................................................98 Как это делается… ..................................................................................................99 Оценка эффективности модели .............................................................................104 Подготовка ............................................................................................................104 Наглядное представление эффективности с помощью матрицы ошибок ..............................................................................................................104 Оценка полноты (recall), точности (precision) и критерия F-score...........106 Как это делается… ................................................................................................106 Квантизация модели с помощью конвертера TFLite ..........................................108 Подготовка ............................................................................................................109 Квантизация входной модели .......................................................................109 Как это делается… ................................................................................................112 Использование встроенного датчика температуры и влажности на Arduino Nano ........................................................................................................114 Подготовка ............................................................................................................114 Как это делается… ................................................................................................115 Использование датчика DHT22 с Raspberry Pi Pico .............................................116 Подготовка ............................................................................................................116 Как это делается… ................................................................................................117 Подготовка входных характеристик для просчета модели ...............................119 Подготовка ............................................................................................................119 Как это делается… ................................................................................................120 Запуск на устройстве с помощью TFLu .................................................................122 Подготовка ............................................................................................................122 Как это делается… ................................................................................................123 Глава 4. Голосовое управление светодиодами с помощью Edge Impulse ........................................................................................................127 Технические требования .........................................................................................128 Сбор аудиоданных с помощью смартфона ..........................................................128 Подготовка ............................................................................................................129 Сбор звуковых семплов для KWS ..................................................................129 Как это делается… ................................................................................................129 Извлечение параметров MFCC из аудиосемплов ................................................134 Подготовка ............................................................................................................134 Анализ звука в частотной области ................................................................134 Генерация Mel-спектрограммы .....................................................................136
Содержание 9 Извлечение MFCC ............................................................................................137 Как это делается… ................................................................................................138 Дополнительно .....................................................................................................140 Пример проектирования и обучения нейронной сети (NN) .............................142 Подготовка ............................................................................................................142 Как это делается… ................................................................................................142 Настройка эффективности модели с помощью EON Tuner ...............................144 Подготовка ............................................................................................................144 Как это делается… ................................................................................................145 Классификация в реальном времени с помощью смартфона ..........................147 Подготовка ............................................................................................................147 Как это делается… ................................................................................................147 Классификация в реальном времени с помощью Arduino Nano ......................149 Подготовка ............................................................................................................149 Как это делается… ................................................................................................149 Непрерывное распознавание на Arduino Nano ...................................................151 Подготовка ............................................................................................................151 Изучение примера приложения KWS в реальном времени ......................151 Как это делается… ................................................................................................153 Схема для голосового управления светодиодами на Raspberry Pi Pico ...........157 Подготовка ............................................................................................................157 Представляем модуль электретного микрофона с усилителем MAX9814 ............................................................................................................158 Подключение микрофона к АЦП Raspberry Pi Pico ....................................159 Как это делается… ................................................................................................159 Выборка звука на Raspberry Pi Pico с помощью АЦП и прерываний по таймеру .................................................................................................................164 Подготовка ............................................................................................................164 Выборка звука на Raspberry PI Pico с помощью АЦП и прерываний по таймеру ........................................................................................................164 Как это делается… ................................................................................................165 Дополнительно .....................................................................................................169 Глава 5. Распознавание интерьеров помещений с помощью TensorFlow Lite for Microcontrollers и Arduino Nano .......................171 Технические требования .........................................................................................172 Съемка с помощью модуля камеры OV7670 ........................................................172 Подготовка ............................................................................................................173 Как это делается… ................................................................................................173 Захват кадров камеры через последовательный порт с помощью Python ................................................................................................................176 Подготовка ............................................................................................................177 Передача изображений RGB888 через последовательный порт ..............177 Изучаем, как преобразовать RGB565 в RGB888 ...........................................179 Как это делается… ................................................................................................179
Содержание Преобразование изображений QQVGA из YCbCr422 в RGB888 .........................183 Подготовка ............................................................................................................183 Преобразование YCbCr422 в RGB888 ............................................................184 Как это делается… ................................................................................................184 Создание набора данных для распознавания интерьеров помещений ..........186 Подготовка ............................................................................................................186 Как это делается… ................................................................................................187 Трансфертное обучение с помощью Keras API ....................................................189 Подготовка ............................................................................................................189 Изучение вариантов дизайна сети MobileNet .............................................190 Как это делается… ................................................................................................191 Подготовка и тестирование квантизованной модели TFLite ............................194 Подготовка ............................................................................................................195 Как это делается… ................................................................................................195 Сокращение объема RAM за счет объединения функций обрезки , изменения размера, масштабирования и квантизации ....................................197 Подготовка ............................................................................................................198 Изменение размера с помощью билинейной интерполяции ..................199 Как это делается… ................................................................................................200 Глава 6. Создание интерфейса на основе жестов для управления воспроизведением на YouTube...............................206 Технические требования .........................................................................................207 Подключение к MPU-6050 IMU через интерфейс I2C .........................................207 Подготовка ............................................................................................................208 Представляем MPU-6050 IMU ........................................................................208 Связь с помощью I2C ......................................................................................209 Как это делается… ................................................................................................211 Получение данных акселерометра ........................................................................214 Подготовка ............................................................................................................214 Как это делается… ................................................................................................217 Построение набора данных с помощью инструмента пересылки данных Edge Impulse data forwarder ....................................................................................220 Подготовка ............................................................................................................221 Как это делается… ................................................................................................222 Разработка и обучение модели ML ........................................................................225 Подготовка ............................................................................................................225 Использование спектрального анализа для распознавания жестов .......226 Как это делается… ................................................................................................228 Классификации в реальном времени с помощью инструмента пересылки данных Edge Impulse data forwarder ..................................................231 Подготовка ............................................................................................................231 Как это делается… ................................................................................................231 Распознавание жестов на Raspberry Pi Pico в ОС Arm Mbed ..............................232 Подготовка ............................................................................................................232