TinyML – технология, призванная расширить использование искусственного интеллекта за счет устройств с малым энергопотреблением, таких как микроконтроллеры. Прочитав эту книгу, вы сможете свободно использовать передовые практики и фреймворки ML в своей работе. Для начала вы ознакомитесь с основами развертывания интеллектуальных приложений на Arduino Nano 33 BLE Sense и Raspberry Pi Pico, а затем на примере работы с реальными датчиками получите необходимые навыки для внедрения комплексных интеллектуальных приложений в различных сценариях.
Издание предназначено для инженеров-разработчиков, заинтересованных в создании приложений машинного обучения на микроконтроллерах. Требуется базовое знакомство с C/C++, языком программирования Python и интерфейсом командной строки (CLI); предварительные знания о микроконтроллерах не обязательны.
https://github.com/PacktPublishing/TinyML-Cookbook
Author(s): Джан Марко Йодиче
Publisher: ДМК Пресс
Year: 2023
Language: Russian
Pages: 298
City: М.
Tags: ml
Содержание
От издательства
Введение
Составители
Об авторе
О рецензентах
Предисловие
Для кого предназначена эта книга
О чем рассказывает эта книга
Как извлечь максимум пользы из это книги
Загрузка файлов с примерами кода
Загрузка цветных изображений
Текстовые соглашения
Часто используемые разделы
Подготовка
Как это делается…
Дополнительно
Глава 1. Начало работы с TinyML
Технические требования
Представление TinyML
Что такое TinyML?
Почему ML на микроконтроллерах?
Зачем запускать ML локально?
Возможности и проблемы TinyML
Среды развертывания для TinyML
tinyML Foundation
Краткое описание глубокого обучения (DL)
Глубокие нейронные сети
Сверточные нейронные сети
Квантизация
Разница между мощностью и энергией
Различие между напряжением и током
Мощность и энергия
Программирование микроконтроллеров
Архитектура памяти
Периферийные устройства
Вход/выход общего назначения (GPIO или IO)
Аналого-цифровые преобразователи
Последовательная связь
Таймеры
Представление Arduino Nano 33 BLE Sense и Raspberry Pi Pico
Настройка Arduino Web Editor, TensorFlow и Edge Impulse
Подготовка веб-редактора Arduino Web Editor
Подготовка TensorFlow
Подготовка Edge Impulse
Как это делается…
Запуск скетча на Arduino Nano 33 и Raspberry Pi Pico
Подготовка
Как это делается…
Глава 2. Прототипирование на микроконтроллерах
Технические требования
Отладка кода
Подготовка
Как это делается…
Дополнительно
Под ключение светодиодного индикатора на макетной плате
Подготовка
Размещение прототипа на макетной плате
Как это делается…
Управление внешним светодиодом с помощью GPIO
Подготовка
Представляем периферийное устройство GPIO
Как это делается…
Включение и выключение светодиода с помощью кнопки
Подготовка
Как это делается...
Использование прерываний для считывания состояния кнопки
Подготовка
Как это делается…
Питание микроконтроллеров от батарей
Подготовка
Увеличение выходного напряжения при последовательном подключении батарей
Увеличение энергетической емкости за счет параллельного подключения батарей
Подключение батарей к плате микроконтроллера
Как это делается…
Дополнительно
Глава 3. Создание метеостанции с помощью библиотеки TensorFlow Lite for microcontrollers
Импорт данных о погоде из WorldWeatherOnline
Подготовка
Как это делается…
Подготовка набора данных
Подготовка
Подготовка сбалансированного набора данных
Масштабирование параметров с помощью Z-score
Как это делается…
Обучение модели с помощью TF
Подготовка
Как это делается…
Оценка эффективности модели
Подготовка
Наглядное представление эффективности с помощью матрицы ошибок
Оценка полноты (recall), точности (precision) и критерия F-score
Как это делается…
Квантизация модели с помощью конвертера TFLite
Подготовка
Квантизация входной модели
Как это делается…
Использование встроенного датчика температуры и влажности на Arduino Nano
Подготовка
Как это делается…
Использование датчика DHT22 с Raspberry Pi Pico
Подготовка
Как это делается…
Подготовка входных характеристик для просчета модели
Подготовка
Как это делается…
Запуск на устройстве с помощью TFLu
Подготовка
Как это делается…
Глава 4. Голосовое управление светодиодами с помощью Edge Impulse
Технические требования
Сбор аудиоданных с помощью смартфона
Подготовка
Сбор звуковых семплов для KWS
Как это делается…
Извлечение параметров MFCC из аудио семплов
Подготовка
Анализ звука в частотной области
Генерация Mel-спектрограммы
Извлечение MFCC
Как это делается…
Дополнительно
Пример проектирования и обучения нейронной сети (NN)
Подготовка
Как это делается…
Настройка эффективности модели с помощью EON Tuner
Подготовка
Как это делается…
Классификация в реальном времени с помощью смартфона
Подготовка
Как это делается…
Классификация в реальном времени с помощью Arduino Nano
Подготовка
Как это делается…
Непрерывное распознавание на Arduino Nano
Подготовка
Изучение примера приложения KWS в реальном времени
Как это делается…
Схема для голосового управления светодиодами на Raspberry Pi Pico
Подготовка
Представляем модуль электретного микрофона с усилителем MAX9814
Подключение микрофона к АЦП Raspberry Pi Pico
Как это делается…
Выборка звука на Raspberry Pi Pico с помощью АЦП и прерываний по таймеру
Подготовка
Выборка звука на Raspberry PI Pico с помощью АЦП и прерываний по таймеру
Как это делается…
Дополнительно
Глава 5. Распознавание интерьеров помещений с помощью TensorFlow Lite for Microcontrollers и Arduino Nano
Технические требования
Съемка с помощью модуля камеры OV7670
Подготовка
Как это делается…
Захват кадров камеры через последовательный порт с помощью Python
Подготовка
Передача изображений RGB888 через последовательный порт
Изучаем, как преобразовать RGB565 в RGB888
Как это делается…
Преобразование изображений QQVGA из YCbCr422 в RGB888
Подготовка
Преобразование YCbCr422 в RGB888
Как это делается…
Создание набора данных для распознавания интерьеров помещений
Подготовка
Как это делается…
Трансфертное обучение с помощью Keras API
Подготовка
Изучение вариантов дизайна сети MobileNet
Как это делается…
Подготовка и тестирование квантизованной модели TFLite
Подготовка
Как это делается…
Сокращение объема RAM за счет объединения функций обрезки, изменения размера, масштабирования и квантизации
Подготовка
Изменение размера с помощью билинейной интерполяции
Как это делается…
Глава 6. Создание интерфейса на основе жестов для управления воспроизведением на YouTube
Технические требования
Подключение к MPU-6050 IMU через интерфейс I2C
Подготовка
Представляем MPU-6050 IMU
Связь с помощью I2C
Как это делается…
Получение данных акселерометра
Подготовка
Как это делается…
Построение набора данных с помощью инструмента пересылки данных Edge Impulse data forwarder
Подготовка
Как это делается…
Разработка и обучение модели ML
Подготовка
Использование спектрального анализа для распознавания жестов
Как это делается…
Классификации в реальном времени с помощью инструмента пересылки данных Edge Impulse data forwarder
Подготовка
Как это делается…
Распознавание жестов на Raspberry Pi Pico в ОС Arm Mbed
Подготовка
Создание рабочих потоков с помощью RTOS API в Arm Mbed OS
Фильтрация избыточных и ложных прогнозов
Как это делается…
Создание бесконтактного интерфейса с помощью PyAutoGUI
Подготовка
Как это делается…
Глава 7. Запуск модели TinyML CIFAR-10 на виртуальной платформе ОС Zephyr
Технические требования
Начало работы с ОС Zephyr
Подготовка
Как это делается…
Разработка и обучение малой модели CIFAR-10
Подготовка
Замена свертки 2D на DWSC
Контроль поддержки требований модели к памяти
Как это делается…
Оценка достоверности модели TFLite
Подготовка
Как это делается…
Преобразование цифрового изображения в C-байтовый массив
Подготовка
Как это делается…
Подготовка основы проекта TFLu
Подготовка
Как это делается…
Создание и запуск приложения TFLu на QEMU
Подготовка
Как это делается…
Глава 8. К следующему поколению TinyML с microNPU
Технические требования
Настройка Arm Corstone-300 FVP
Подготовка
Как это делается…
Установка TVM с поддержкой Arm Ethos-U
Подготовка
Мотивация, лежащая в основе TVM
Как TVM оптимизирует работу модели
Как это делается…
Установка набора инструментов Arm и стека драйверов Ethos-U
Подготовка
Как это делается…
Генерация C-кода с помощью TVM
Подготовка
Запуск TVM на микроконтроллерах с помощью microTVM
Как это делается…
Генерация C-байтовых массивов для входа, выхода и меток
Подготовка
Как это делается…
Создание и запуск модели на Arm Ethos-U55
Подготовка
Как это делается…
Предметный указатель