| M0S SiPEED BL616: обзор модуля |
|
| Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sipeed M0S это маленький IOT-модуль на чипе BL616 of Bouffalo Lab, с очень низким потреблением энергии. Он поддерживает беспроводные протоколы, такие как Wifi6, BT 5.2 и zigbee, по умолчанию работает на частоте 320 МГц. Несколько сценариев пониженного энергопотребления (сна) поддерживают различные источники пробуждения и для восстановления нормального режима. Примечание: здесь приведен перевод документации [1]. Основные функциональные возможности: • Wireless: WiFi6 / BT 5.2 (Bluetooth 5.2 Dual-mode: BT+BLE) / Zigbee(1). Примечания: (1) BL616 также поддерживает режим профилей Bluetooth Classic (например SPP), однако Bouffalo Lab не делает на этом акцент, сосредотачиваясь на проектах IoT с профилями BLE [5, 6, 7], рассчитанными на переносные устройства с батарейным питанием и низким энергопотреблением. TinyMaix — это сверхлёгкая библиотека вывода нейросетей для микроконтроллеров, разработанная специально для сред с крайне ограниченными ресурсами. Её цель — позволить любому запустить лёгкую модель глубокого обучения на сколь угодно маломощном железе. [Философия и назначение] TinyMaix хорошо сочетается с BL616. Позиционирование TinyMaix очень чёткое: минимализм, портируемость, понятность. Это, по сути, "проект на выходные", основной код которого можно прочитать за 30 минут. Он отлично подходит для начинающих в TinyML, чтобы понять, что вообще происходит внутри фреймворка вывода. Приоритеты при проектировании: удобство > портируемость > скорость. [Ключевые особенности] TinyMaix достигает низкого потребления ресурсов за счёт предельного упрощения: • Крайняя лёгкость: основной код менее 400 строк (всего 3 ключевых файла), размер секции кода (.text) после компиляции — менее 3 килобайт. [Поддерживаемые операторы и модели] TinyMaix не стремится объять необъятное — он покрывает только самые основные операторы, чтобы адаптироваться к наиболее эффективным сетевым структурам на MCU: • Основные операторы: Conv2d, dwConv2d (depthwise separable convolution), FC (полносвязный), Relu/Relu6/Softmax, GAP (global average pooling), Reshape, ADD (для ResNet/MobileNetV2, экспериментально). [Структура кода и API] Код TinyMaix очень нагляден и состоит из нескольких частей: src/: основные исходники, включая tm_layers.c (реализация операторов), tm_model.c (загрузка модели) и т.д. API тоже следует принципу «проще некуда» — основных функций всего две: tm_load: загрузка модели. Нужно передать бинарные данные модели, буфер для промежуточного вывода (можно NULL, тогда он выделится автоматически) и опциональную функцию обратного вызова для слоёв. tm_run: запуск модели. Подаёте предварительно обработанные данные — получаете выход. Итог: TinyMaix — это библиотека вывода TinyML, созданная для обучения и простых применений. Она не гонится за максимальной производительностью, но предлагает понятный код, лёгкость портирования и крайне низкое потребление ресурсов. Для RISC-V MCU вроде BL616, который вы изучаете, поддержка оптимизации под RV32P придётся как нельзя кстати — теоретически это даст неплохое ускорение за счёт DSP-расширения. [MNIST] MNIST (от англ. Modified National Institute of Standards and Technology database) — это классический набор данных для обучения и тестирования систем машинного обучения, особенно в области распознавания рукописных цифр. Что содержит: - 70 000 изображений рукописных цифр от 0 до 9. Зачем это нужно. MNIST — это «Hello, World!» в мире машинного обучения. На нём: - проверяют новые алгоритмы и архитектуры нейросетей; Почему именно MNIST? Потому что: - данные маленькие и простые; Пример: на вход подаётся картинка 28×28 с рукописной «7». Модель должна выдать ответ: «это цифра 7» (или вероятности по всем 10 классам). Оригинальный NIST-набор создан в США в 1980-х. В 1998 году Yann LeCun и соавторы модифицировали его (отсюда M в названии), переформатировав для удобства машинного обучения. До сих пор MNIST остаётся стандартным бенчмарком, хотя современные модели решают его почти идеально, и для серьёзных исследований его уже считают "слишком простым". В контексте TinyMaix: в официальных примерах TinyMaix есть демо на MNIST — оно показывает, что даже крошечная модель может распознавать цифры на MCU с 2 КБ RAM. Это самый простой способ проверить, что библиотека корректно портирована на вашу платформу (например, BL616). [MobileNet] MobileNet — это семейство лёгких свёрточных нейронных сетей (CNN), созданных специально для работы на мобильных и встраиваемых устройствах с ограниченными ресурсами. Зачем это нужно. Обычные нейросети вроде VGG или ResNet требуют огромного количества вычислений и памяти, что делает их непригодными для смартфонов или микроконтроллеров. MobileNet решает эту проблему, используя эффективную архитектуру, которая даёт приемлемую точность при драматично меньших затратах. Ключевая идея: Depthwise Separable Convolution. Главное нововведение MobileNet — замена стандартной свёртки на depthwise separable convolution (глубинно-разделимая свёртка). Она разбивает одну операцию на две: Depthwise convolution: фильтры применяются к каждому входному каналу отдельно (не смешивая их). Это позволяет резко сократить количество параметров и вычислений (multiply-adds) при небольшой потере точности. По сути, сеть "фильтрует" и "комбинирует" признаки по отдельности, а не одновременно, как в стандартной свёртке. Версии MobileNet: - MobileNet V1 (2017): первая версия, предложенная Howard et al. Использует depthwise separable convolutions и имеет 4.2M параметров. Гибкость настройки. MobileNet V1 предоставляет два гиперпараметра для управления компромиссом между точностью и скоростью: - Width Multiplier (α): уменьшает/увеличивает количество фильтров в каждом слое. Например, α=0.25 даёт очень маленькую модель (~0.5M параметров), но с точностью ~50.6% на ImageNet. В контексте TinyMaix: в официальных примерах TinyMaix есть демо на MobileNet V1 0.25 (вход 128×128×3). Это как раз тот случай, когда используются оба множителя для получения модели, которая влезает в память микроконтроллера (например, BL616). Это уже не игрушечная задача вроде MNIST, а полноценная классификация изображений на 1000 классов — и всё это на MCU. Цоколевка выводов:
Сравнение с модулем ESP32-S3 N4:
M0S Dock: на плате расположены 3 светодиода (power LED и два пользовательских), порт USB TypeC и коннектор с шагом 2.54 мм, на который выведены порты ввода/вывода, земля и питание.
Программное обеспечение:
[Ссылки] 1. M0S module site:wiki.sipeed.com. |