Глубокое обучение на python , Вы можете легко и быстро реализовать, используя готовое решение MAIX Dock от компании Sipeed. Модуль MAIX Dock  построен на специальном процессоре Kendryte K210, конкретно разработанным для решения задачи глубокого обучение на Python.

Через USB порт можно загружать и отлаживать напрямую процедуры распознавания лиц,  распознавания голоса и другие приложения AI и IoT. Примеры программ на python, в том числе и  глубокого обучения, находятся на ресурсах самой фирмы Sipeed, GitHub и многочисленных сайтах  и видеоканалах YouTube энтузиастов AI (см. ниже).

содержание

Глубокое обучение на python 3, часть 1. Описание и подготовка устройства для программирования на python

Описание и подготовка аппаратного устройства MAIX Dock для глубокого обучения на Python

Рис.1 Комплект поставки модуля MAIX Dock


В комплекте поставляются:

  1. Собственно модуль  MAIX Dock. CPU: RISC-V 64-битный двухъядерный процессор, стандартная частота 400 МГц (overclock-able до 800 МГц). Сопроцессор KPU распознавания изображения: QVGA @ 60FPS / VGA @ 30FPS и звука. KPU — аппаратный нейроакселератор выполняющий операции Conv2D (Python) для ядра 3×3 и 1×1 и MaxPool2D (Python) — т. е. двумерную свертку и двухмерное максимальное объединение соответственно. Поддерживаемые системы глубокого обучения и нейросетевые модели:  TensorFlow/ Keras / Darknet / Caffe и YOLOv3 \ Mobile enetv2 \ TinyYOLOv2 \  соответственно.
  2. 2,4-дюймовый ЖК-дисплей 320 * 240
  3. Видеокамера OV2640.
  4. Wi-Fi антенна (опционально: М1w — с  Wi-Fi и М1 — без Wi-Fi )
  5. Переходник  USB тип C — на микро USB.
  6. Две контактные гребёнки для прямого подключения датчиков и исполнительных устройств.
  7. Внешний круговой микрофон: 8 микрофонов (опционально).
  8. Блок из двух видео камер для стерескопического зрения (опционально).
  9. Соединительный шлейф для подключения блока из двух видео камер для стерескопического зрения (опционально).

Приобрели MAiX DOCK на Aliexpress тут …

Приобрести MAiX DOCK на Banggood тут …

Рис.2 Модуль MAIX Dock, вид со стороны коннекторов видеокамеры и дисплея

Рис.3 Модуль MAIX Dock вид со стороны AIoT модуля — сборки Kendrite K210 с флэш памятью ( М1 модуль) + ESP8265 ( М1w модуль)


Встроены в модуль MAIX Dock : 

  • Wi-Fi на ESP8265 . Поддерживает — 2,4гГц  802,11. b /g/ n (опционально: М1w — с  Wi-Fi и М1 — без Wi-Fi )
  • Микрофон встроенный MEMS: MSM261S4030H0, чувствительностью -26 (дБ, dBFS @ 1 кГц 1 Па).
  • Аудио система: TM8211 DAC + PAM8403 PA (поддержка 2x3W динамиков).
  • Слот (картоприемник) для карт Micro SD (TF карта).
  • USB на чипе CH340 с адаптером типа C
  • Разъем FPC 24P 0,5 мм, DVP — для подключения видеокамеры 
  • Разъем FPC 24P 0,5 мм, 8 бит MCU LCD — для подключения жидкокристалического дисплея.

 

Рис.4 Микроконтроллер Kendryte k210 Модуля MAIX Dock. (Блок схема)

  1. Центральный процессор CPU, RISC-V 64-битный двухъядерный процессор, стандартная частота 400 МГц (overclock-able до 800 МГц)
  2. Математический сопроцессор (ускоритель FPU)
  3. Нейронный сетевой сопроцессор (KPU CNN акселератор )
  4. Контроллер прямого доступа к памяти (DMA)
  5. Цифровой видео интерфейс (DVP)
  6. Интерфейс стандартной аппаратуры тестирования и отладки (JTAG)
  7. Расширенный криптоускоритель (акселератор AES)
  8. Защита по паролю действительному только для одного сеанса аутентификации (OTP )
  9. Программируемый массив ввода и вывода (FPIOA/IOMUX)
  10. Статическая память с произвольным доступом 8Mбайт (SRAM)
  11. Ускоритель быстрого преобразования Фурье (ускоритель FFT)
  12. Аудиопроцессор (APU)
  13. Интерфейсы ввода/вывода общего назначения  для связи между  микроконтроллером и различными периферийными устройствами GPIO
  14. Универсальный асинхронный трансивер (UART)
  15. Последовательный периферийный интерфейс (SPI)
  16. RTS
  17. Встроенный интегрированный аудио интерфейс (I2S)
  18. Последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов (I2C)
  19. Таймер
  20.  Выходы с широтно-импульсной модуляцией (PWM)
  21. Схема контроля над зависанием системы (WDT)
  22. Безопасный хэш-алгоритм (SHA256 ускоритель)

Программное обеспечение k210

1. Операционная система чипа: FreeRTOS, RT-Thread и т. Д.
2. Среда разработки: MaixPy IDE, PlatformlO IDE, для Arduino IDE и т. Д.
3. Языки программирования: C, C + +, MicroPython

Применение модулей на микроконтроллере k210:

  • Умные игрушки
  • Быстрое обновление интеллектуального оборудования с помощью искусственного интеллекта
  • Применение при обучении STEAM
  • Умный робот
  • Автопилот
  • Контроль посещаемости
  • Информация о потоке пассажиров
  • Интернет
  • Умная одежда

Глубокое обучение на python начнем с подключения и тестирования модуля  MaiX DOCK

Подготовка аппаратного устройства MAIX Dock для глубокого обучение на Python

 

Рис. 5 При подключении MAiX DOCK через USB порт к компьютеру или блоку питания (power bank), сразу запуститься свежая прошивка  и на экране дисплея появиться сообщение Welcome to MaixPy, версия самой прошивки на момент продажи (на 21-11-2021: V0.6.2) и адрес сайта компании Sipeed: maixpy.sipeed.com

Устанавливаем инструментарий (среду программирования микроконтроллеров) MaixPy-IDE (язык программирования Python) клон OpenMV IDE (язык программирования Python) https://mirrobo.ru/pilot/kompjuternoe-zrenie-ot-openmv/ и аналог Arduino IDE (язык программирования С++)

Рис.6 MaixPy-IDE для трех основных ОС

Качаем среду программирования MaixPy-IDE версии 0.2.5 с сайта компании Sipeed

https://dl.sipeed.com/shareURL/MAIX/MaixPy/ide/v0.2.5

Устанавливаем MаixPy IDE на ОС Linux из дистрибутива с расширением  .run :

Дистрибутив с расширением .run (maixpy-ide-linux-x86_64-0.2.5.run) запускаем очень просто, как исполняемый файл, только ему необходимо дать права исполняемого:

Рис.7 Правой клавишей мыши кликаем на файл с расширением .run (maixpy-ide-linux-x86_64-0.2.5.run) и даем права на файл текущему пользователю: Разрешить выполнение файла как программы.

Рис.8 Левой клавишей мыши кликаем на файл с расширением .run (maixpy-ide-linux-x86_64-0.2.5.run) (1) — запускаем инсталляцию MaixPy IDE. 

Рис.9 Далее со всем соглашаемся и устанавливаем  MaixPy IDE. на свой компьютер. Ярлык для запуска MaixPy IDE должен появиться на рабочем столе

Устанавливаем MаixPy IDE на ОС Linux из дистрибутива с расширением  .7z :

Дистрибутив запакованный 7z (maixpy-ide-linux-x86_64-0.2.5-installer-archive.7z) распаковываем и запускаем, из папки куда распаковали, командами (скриптами):

sirius2@sirius2:~$ ./setup.sh

этот скрипт состоит из следующих команд:

sirius2@sirius2:~$ sudo apt-get install -y libusb-1.0 python-pip

libusb — это библиотека, которая предоставляет приложениям доступ для управления передачей данных через USB-устройства в системах Unix и не Unix, без необходимости использования драйверов ядра ОС. Википедия  (Английский язык)

pip — это система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python

sirius2@sirius2:~$ sudo pip install pyus

С помощью pip устанавливаем библиотеку Python обеспечивающую легкий доступ к USB:

sirius2@sirius2:~$ sudo usermod -a -G dialout $(whoami)

Добавим текущего пользователя (sirius2) в группу diaiout, имеющей права на последовательный порт /dev/ttyusb0

Перезагружаем компьютер.

Заускаем пMaiX DOCK

sirius2@sirius2:~$ ./bin/maixpyide.sh

Рис.10 Если при подключении к модулю MaiX DOCK через USB порт (1 ) появиться такая ошибка (2), выполните команду sudo adduser имя текущего юзера dialout

Вам сообщат что вы уже состоите в группе dialout, просто перезагрузите компьютер и будет Вам счастье!

 

Подключаем модуль MaiX DOCK к компьютеру посредством USB кабеля.

Рис.11 Если Буфер кадра не отображается, Кликаем ЛКМ на стрелочку справа на краю окна (1) . Кликаем ЛКМ на пиктограмму соединения (2) (устанавливаем сеанс связи) с модулем MaiX DOCK

Рис.12 Процесс пошел

 

Рис.13 Для загрузки и запуска тестовой программы на microPython helloworld_1.py кликаем ЛКМ в левом нижнем углу на черную стрелку в зеленой оправе (3)

 

Рис.14 В результате должны увидеть себя родимого или потолок вашей комнаты

 

Рис.15 На экране  дисплея модуля MaiX DOCK Вы должны видеть тоже самое что и в окне  MaiXPy IDE

 

Рис.16  Для отключения выполнения программы на модуле MaiX DOCK кликаем ЛКМ в левом нижнем углу на черно-красный крестик

 

Рис.17 Видео заморозится, и последний кадр будет отображаться в Буфере кадра. Для разрыва USB соединения с модулем MaiX DOCK кликаем ЛКМ на пиктограмму красной цепи 

Проверка подключения модуля MaiX DOCK к компьютеру

Проверяем какой порт (файл устройства) занял наш модуль MaiX DOCK и вообще подключился ли он к нашему компьютеру:

sirius2@sirius2:~$ ls /dev/ttyUSB*
/dev/ttyUSB0

Отключаем от USB компьютера модуль MaiX DOCK и убеждаемся, что это был именно наш модуль:
sirius2@sirius2:~$ ls /dev/ttyUSB*
ls: невозможно получить доступ к ‘/dev/ttyUSB*’: Нет такого файла или каталога
sirius2@sirius2:~$

Рис.18 В MS Windows — правой клавишей  мыши кликаем на окна (пуск) и в меню выбираем Диспетчер устройств

Рис.19 Так выглядит Диспетчер устройств Windows

В Диспетчере устройств находим Порты (COM и LPT), кликаем на стрелочку открытия ветки и обнаруживаем подключение модуля MaiX DOCK к порту, в нашем случае это COM5 как USB-SERIAL CH340 устройство. Кстати, CH340, это маркировка реального чипа ввода/вывода USB-UART, установленного на модуле MaiX DOCK. Возможно другое название порта СОМ и название чипа также, но суть, что подключение есть, от этого не меняется.

Глубокое обучение на python продолжим  проверкой и обновлением фирменной прошивки модуля  MaiX DOCK с сайта компании SiPEED

Версии старых прошивок не совместимы с новыми версиями MaixPy IDE и наоборот, поэтому старайтесь скачивать самые свежие версии и того и другого:

https://dl.sipeed.com/shareURL/MAIX/MaixPy/ide/v0.2.5

https://dl.sipeed.com/shareURL/MAIX/MaixPy/release/master/maixpy_v0.6.2_72_g22a8555b5

В нашем случае мы используем прошивку для  МAiX DOCK — maixpy_v0.6.2_72_g22a8555b5.bin (самая свежая на 24-11-2021)

 Содержимое файла прошивок redmy.txt:

Файлы:

* maixpy *. bin — прошивка с расширением .bin

* elf _ *. 7z  —  файлы elf, используемые только для отладки

Вы можете настроить свою прошивку на https://www.maixhub.com/compile.html.

Или соберите самостоятельно согласно https://github.com/sipeed/MaixPy/blob/master/build.md

=============================

Расшифровка назначения прошивки по названию её файла:

maixpy *. bin: обычная прошивка, включает:

  • * базовый API
  • * поддержка nncase / kmodel V4
  • * нет поддержки LVGL
  • * Поддержка игрового эмулятора NES
  • * Поддержка видео в формате AVI
  • * Поддержка IDE
  • * подробнее см. https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_k210/config_defaults.mk

maixpy * _ minimum.bin: минимальная функциональная прошивка, включает:

  • * базовый API
  • * только несколько API OpenMV, никаких API, таких как find_lines
  • * только поддержка kmodel V3
  • * нет поддержки LVGL
  • * нет поддержки эмулятора NES
  • * нет поддержки видео в формате AVI
  • * нет поддержки IDE
  • * подробнее см .: https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_k210_minimum/config_defaults.mk

maixpy * _ minimum_with_kmodel_v4_support: минимальная функциональная прошивка, включает:

  • * то же, что и minimum.bin
  • * добавлена поддержка kmodel v4

maixpy * _ openmv_kmodel_v4_with_ide_support: минимальная функциональная прошивка, включает:

  • * как обычная прошивка
  • * добавлена поддержка kmodel v4
  • * добавлена поддержка IDE

maixpy * _ minimum_with_ide_support.bin: минимальная функциональная прошивка, включает:

  • * как минимум
  • * Поддержка IDE
  • * подробнее см. https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_k210_minimum/config_with_ide_support.mk

maixpy * _ with_lvgl.bin: добавить поддержку lvgl, включает:

  • * базовый API
  • * только поддержка kmodel V3
  • * Поддержка LVGL
  • * Поддержка эмулятора NES
  • * Поддержка видео в формате AVI
  • * Поддержка IDE
  • * подробнее см .: https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_k210/config_with_lvgl.mk

maixpy * _ m5stickv.bin: специально для платы M5StickV, включает:

  • * как обычно
  • * подробнее см. https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_m5stickv/config_defaults.mk

maixpy * _ amigo * .bin: специально для платы amigo

  • * то же, что и uppper

=============================

Установка программатора и загрузка прошивки во флешь-память микроконтроллера Kendrite k210

Для прошивания (закачки во флешь-память микроконтроллера Kendrite k210)  прошивки (микрокоманд взаимодействия со средой программирования MaixPy) нам понадобиться прошиватель (программный программатор) , качаем с сайта SiSeed себе на компьютер  утилиту программатор  kflash gui в нашем случае для ОС Linux это файл kflash_gui_v1.6.5_2_linux.tar.xz (версия 1.6.5_1 на 26-11-2021)

Распаковываем его например в Домашнюю папку:

sirius2@sirius2:~$ tar xvzf kflash_gui_v1.6.5_2_linux.tar.xz

Рис. 20 Заходим в папку kflash_gui, ищем исполняемый файл kflash_gui (1) кликаем на него двойным щелчком левой клавиши мыши (ЛКМ), тем самым мы запускаем утилиту программатора kflash_gui. Кликаем ЛКМ на Open File находим свою заранее скачанную прошивку, например: maixpy_v0.6.2_72_g22a8555b5.bin (2)

 

Рис. 21 Подключаем посредством USB кабеля к компьютеру модуль MAiX DOCK — в поле Port высветится название порта к которому произошло подключение модуля MAiX DOCK. В нашем случае это /dev/ttyUSB0 (3) . Кликаем ЛКМ на Download и наблюдаем процесс загрузки прошивки во флешь-память микроконтроллера модуля MAiX DOCK

Рис. 22 Как правило, процесс закачки прошивки завершается удачно!

Распознавание объектов на Python / Глубокое машинное обучение. Кино от Гоши Дударя

Продолжение следует . . .