В предыдущей статье мы рассмотрели набор средств разработки Maixduino и узнали, как использовать его с Arduino IDE. В этой статье мы узнаем, как использовать Micropython в наборе средств разработки Maixduino. Сначала мы узнаем, как загрузить прошивку Micropython на Maixduino, а затем как настроить Maixpy IDE от Sipeed и использовать ИИ и машинное обучение с платой.
Что такое MaixPy?
MaixPy — это порт Micropython специально для K210 SoC. Он не только поддерживает общие функции MCU, но и интегрирует аппаратно-ускоренные алгоритмы машинного зрения AI и микрофонной решетки. Имейте в виду, что Maixduino поддерживает MaixPy V1, но есть и другая версия MaixPy под названием MaixPy V4, которая предназначена для новейшего продукта Sipeed под названием MaixCam и не поддерживает Maixduino. Главное преимущество использования MicroPython заключается в том, что с ним намного проще и быстрее выполнять разработку. Итак, начнем с основ и узнаем, как подготовить плату Maixduino для использования с MaixPy.
Установка USB-драйвера
Как мы знаем, Maixduino оснащен двумя SoC на борту: K210 AI SoC и модулем ESP32-Wroom. Поскольку оба они не имеют собственной поддержки USB, производители использовали мост USB-UART для связи и обновления прошивки. Поскольку нам нужны два отдельных UART для SoC, Sipeed выбрала индивидуальное решение, которое использует микроконтроллер CH552 с двойной последовательной прошивкой. Сделав это, они смогли реализовать связь между компьютером и обоими встроенными SoC через один порт USB. Поскольку они используют индивидуальное решение, необходимо установить все необходимые драйверы, чтобы оно могло общаться с компьютером.
В среде Linux нам не нужно устанавливать никаких драйверов. Операционная система автоматически обнаружит оборудование и назначит универсальный драйвер, который уже является частью системы Linux. Все, что нам нужно сделать, это запомнить номера портов. Для этого откройте окно терминала и введите следующую команду 'ls /dev/ttyUSB*' и нажмите Enter. Будет отображен список доступных USB-устройств и соответствующих портов. Запишите соответствующий номер порта для дальнейшего использования. В Windows необходимо установить определенный драйвер. Для этого перейдите на страницу загрузки драйвера USB и загрузите файл драйвера. На странице загрузки будет несколько файлов. Более простой способ — загрузить zip-файл с настройкой в имени, распаковать его и запустить установщик драйвера. Он автоматически установит драйвер. Другой способ — загрузить файлы драйвера со страницы загрузки и вручную установить драйвер из диспетчера устройств. После успешной установки драйвера и подключения MAxiduino к компьютеру откройте диспетчер устройств и разверните раздел Порты (COM и LPT). Вы найдете два порта, которые будут отображаться только тогда, когда Maxiduino все еще подключен к ПК. Запишите номер порта, по умолчанию первый номер порта будет для K210 SoC, а второй — для ESP32.
Установка прошивки MaixPy
Итак, перед кодированием мы должны установить прошивку Maixpy на Maxiduino, чтобы она приняла код micropython и выполнила его. Для начала убедитесь, что вы установили драйвер в соответствии с инструкциями выше, и запишите номер порта. В Linux и Mac OS выполните ls /dev/, чтобы увидеть номера портов, а в Windows используйте диспетчер устройств. Итак, для начала нам нужно загрузить предварительно скомпилированный файл прошивки. Для этого сначала перейдите на страницу прошивки MaixPy. Там выберите папку с последней версией, и в ней вы найдете несколько файлов прошивки с расширениями .bin или .kfpkg. Используйте следующую таблицу, чтобы выбрать подходящую прошивку для вашего приложения. После выбора загрузите двоичный файл (бинарник) прошивки на свой компьютер.
Имя файла | Примечание |
maixpy_*.bin | Нормальная прошивка, с
* базовый API * поддержка kmodel V4 * нет поддержки LVGL * Поддержка эмулятора NES * Поддержка видео формата AVI * Поддержка IDE |
maixpy_*_minimum.bin | Прошивка с минимальным набором функций, с
* базовый API * только несколько API OpenMV, некоторые API, такие как find_lines, не включены * только поддержка kmodel V3 * нет поддержки LVGL * эмулятор NES не поддерживается * нет поддержки видео в формате AVI * нет поддержки IDE |
maixpy_*_minimum_with_kmodel_v4_support | Прошивка с минимальным функционалом
* добавлена поддержка kmodel v4 |
maixpy_*_openmv_kmodel_v4_with_ide_support | Прошивка с минимальным функционалом
* добавлена поддержка kmodel v4 * поддержка IDE |
maixpy_*_minimum_with_ide_support.bin | Прошивка с минимальным функционалом
* Поддержка IDE |
maixpy_*_with_lvgl.bin | Прошивка с поддержкой lvgl, в том числе
* базовый API * только поддержка kmodel V3 * Поддержка LVGL * Поддержка эмулятора NES * Поддержка видео формата AVI * Поддержка IDE |
maixpy_*_m5stickv.bin | Прошивка специально для платы M5StickV, с функциями, аналогичными обычной прошивке |
maixpy_*_amigo*.bin | Прошивка специально для платы Amigo, с функциями, аналогичными обычной прошивке |
После загрузки файла прошивки следующим шагом будет загрузка утилиты прошивки. Для прошивки или обновления прошивки мы будем использовать kflash_gui, для этого загрузите его со страницы загрузки kflash_gui. Извлеките прошивку и запустите приложение kflash_gui. Для Windows рекомендуется запускать его с помощью «запуска от имени администратора».
После открытия приложения выберите ранее загруженную прошивку. Как вы могли заметить, диапазон адресов будет автоматически заполнен, и вам не нужно его менять. Выберите правильный COM-порт (по умолчанию первый COM-порт из двух, которые появятся при подключении платы) и нажмите «Загрузить», утилита прошивки запишет прошивку на плату, и после этого плата перезагрузится, а на ЖК-дисплее отобразится заставка MaixPy.
Установка MaixPy IDE
Следующий шаг — установка MaixPy IDE. Для этого перейдите на страницу загрузки MaixPy IDE и загрузите соответствующий двоичный файл для вашей операционной системы. Для Windows запустите установщик как обычно и следуйте инструкциям на экране. Для Mac используйте файл DMG и установите приложение. Для Linux используйте следующие команды, чтобы предоставить разрешение и установить IDE.
chmod +x maixpy-ide-linux-x86_64-0.2.2.run
./maixpy-ide-linux-x86_64-0.2.2.run
После установки откройте MaixPy IDE и выберите модель платы разработки в меню Tool («Инструменты»). И нажмите кнопку connect («Подключить») в левом нижнем углу окна IDE. Она автоматически подключится к плате Maixduino.
При первом открытии IDE она открывается с уже имеющимся в ней тестовым кодом. Поэтому для проверки кода просто нажмите кнопку Run («Выполнить»), расположенную под кнопкой «Подключить», как показано ниже. Код будет загружен в плату Maixduino и выполнен. Пример кода инициализирует модуль камеры и дисплей и продолжает отображать видеопоток с камеры на дисплее. Вы также можете увидеть предварительный просмотр видео в IDE MaiixPy.
Чтобы остановить выполнение кода, нажмите кнопку «Стоп» (та же, что и кнопка «Запустить»). Чтобы загрузить файлы на плату, используйте опцию Send file («Отправить файл») в меню Tools («Инструменты»).
Использование Maixduino с последовательным терминалом
После загрузки прошивки MaixPy мы также можем использовать Maixduino через любой последовательный терминал без необходимости в IDE, если это необходимо. Для этого мы можем использовать любой последовательный терминал, с которым нам удобно, например, в Windows мы можем использовать Putti, mobaxterm, xshell или mpfshell-lite, а в Linux мы можем использовать pyserial. Сама IDE MaixPy имеет встроенный последовательный терминал, и мы также можем использовать его. Sipeed рекомендует mpfshell-lite, и более подробную информацию о том, как их использовать, можно найти на странице mpfshell-lite. Если мы хотим запустить скрипт micropython, откройте последовательный терминал, нажмите CTRLl+E и вставьте следующий код
1 2 3 4 5 6 7 8 9 10 11 12 |
import sensor, lcd sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames() lcd.init(freq=15000000) while(True): lcd.display(sensor.snapshot()) |
Нажмите Ctrl+D на клавиатуре, чтобы начать выполнение кода. В коде вы можете увидеть, что мы импортировали необходимые библиотеки для камеры и дисплея с помощью функции импорта. Позже мы инициализировали камеру и настроили ее. После этого мы инициализировали дисплей. Затем с помощью цикла while мы отображаем прямую видеотрансляцию с камеры на TFT-дисплее.
Файловая система Maixduino
Maixduino имеет в общей сложности 16 МБ встроенной памяти и слот для SD-карты для внешнего хранения. Структура файловой системы Maixduino показана на рисунке ниже.
Внутреннее хранилище разделено на три части: область прошивки MaixPy.bin, область модели xxx.kmodel и область файловой системы. Как следует из названия, область MaixPy.bin предназначена для хранения прошивки MaixPy, а область xxx.kmodel обычно начинается с 0x300000 и используется для обученной модели искусственного интеллекта (ИИ). Для общей файловой системы Maixduino использует SPIFFS. SD-карта должна быть отформатирована в FATFS, чтобы Maixduino мог получить к ней доступ. Если обученная модель больше области xx.kmodel, мы также можем использовать SD-карту для ее хранения.
Управление файловой системой и загрузка кода
Как мы знаем, в micropython все скрипты хранятся в виде файлов .py, для изменения скриптов необходимо иметь доступ к файловой системе для создания, редактирования или удаления этих файлов. Таким образом, с Maixduino у нас есть несколько способов выполнять эти операции с файлами. Первый способ включает использование редактора Micropython Editor (pye), который встроен в прошивку MaixPy. Мы можем использовать последовательный терминал для редактора Pye. Вы можете использовать os.listdir() для просмотра файлов в текущем каталоге и pye ("hello.py") для создания файла и входа в режим редактирования. После редактирования файла вы можете нажать Ctrl+S для сохранения и Ctrl+Q для выхода из редактирования. Вы можете найти более подробную информацию о редакторе Micropython в репозитории редактора Micropython GitHub .
Второй метод предназначен для случая, когда мы используем MaixPy IDE. В IDE мы можем выбрать сохранение открытого файла как boot.py из меню инструментов, чтобы сохранить содержимое в окнах IDE как файл boot.py.
Третий метод — использовать uPyLoader. uPyLoader предоставляет вам пользовательский интерфейс, подобный FTP-клиенту, где вы можете очень легко добавлять, удалять или выполнять.
Если при первой попытке передачи файла возникли какие-либо ошибки, воспользуйтесь командой Init transfer files из меню «Файл».
Выполнение скриптов Python
Если вы хотите выполнить скрипт Python во флэш-памяти, вы можете сделать это разными способами. Первый способ, конечно, через последовательный терминал. Для этого сначала перейдите в каталог, где хранится файл, с помощью команды os.chdir(), например, os.chdir("/flash") . Затем вы можете выполнить скрипты с помощью команды import, например, import helloworld. Этот метод прост и удобен в использовании, но следует отметить, что команду import можно использовать только один раз. Если мы используем команду import во второй раз, файл больше не будет выполнен.
Другой способ — использовать функцию exec() для выполнения. Вот пример фрагмента кода, который показывает использование функции exec() .
1 2 |
with open("hello.py") as f: exec(f.read()) |
Другой способ — запустить программу из MaixPy IDE, как мы уже упоминали ранее. Но при этом методе программа работает только временно, она не будет сохранена на устройстве. Вы также можете выполнять коды с помощью uPyLoader. После подключения выберите файл и нажмите кнопку «Выполнить», чтобы выполнить файл.
Автоматический запуск кода при запуске
Система создаст файл boot.py и main.py в каталоге /flash или /sd (предпочтительно). При загрузке она автоматически сначала выполнит boot.py, а затем main.py (если обнаружена SD-карта, будет выполнен файл на SD-карте). Отредактируйте содержимое этих двух скриптов, чтобы добиться самозапуска. Если вы напишете программу бесконечного цикла (While True) в boot.py, main.py не сможет запуститься. Обычно boot.py в основном используется для настройки оборудования и его нужно настроить только один раз, а main.py используется для запуска основной программы. Поэтому отредактируйте эти скрипты в соответствии со своими потребностями.
Файл конфигурации платы
Чтобы сделать программирование намного проще, мы можем использовать файл конфигурации платы. Это не что иное, как файл определения платы с отображением выводов для более легкого понимания. Хотя это и не обязательно, но это значительно облегчит программирование при использовании GPIO и встроенных периферийных устройств. Чтобы использовать его, вам нужно всего лишь один раз запустить скрипт config_maix_duino.py. Он создаст файл config.json во флэш-памяти и может быть использован позже. Использовать его намного проще, просто импортируйте параметр board_info из файла конфигурации, и все готово. Вот пример, где мы включаем красный элемент встроенного RGB-светодиода, вывод, подключенный к красному, определен как LED_R в файле конфигурации. Мы можем напрямую использовать его, не проверяя схемы на предмет точного номера вывода.
1 2 3 4 5 6 7 |
from Maix import GPIO from fpioa_manager import fm from board import board_info print(board_info.LED_R) fm.register(board_info.LED_R, fm.fpioa.GPIO0, force=True) led_r = GPIO(GPIO.GPIO0, GPIO.OUT) led_r.value(0) |
Аналогично, все пины отображаются более удобным образом и могут быть легко использованы в нашем коде. Чтобы узнать точное отображение пинов, вы можете открыть config_maix_duino.py или config. Вы также можете обратиться к изображению ниже, где показано отображение пинов в стиле Arduino.
Основы Maixduino MicroPython
Охват всех основ Maxduino MicroPython занял бы несколько статей, и тем не менее Sipeed имеет подробную документацию об этом. Вы можете обратиться к документации Sipeed's Maixduino Specific MaixPy basics для получения более подробной информации об этом.
Приложения нейронной сети AI Maixduino
Как мы знаем, основными преимуществами K210 AI SoC, используемой в Maixduino, являются ее возможности искусственного интеллекта (AI), включая машинное зрение и машинное обучение на основе сверточной нейронной сети. Поэтому, чтобы понять возможности AI платы Maixduino, мы рассмотрим несколько примеров AI с использованием предварительно обученных моделей AI, предоставляемых Sipeed.
Пример распознавания лиц
Как следует из названия, в этом примере мы рассмотрим модель ИИ для обнаружения лиц, предоставленную Sipeed. Модель найдет лицо на фотографии и поместит его в рамку, а затем использует YOLO V2 для обнаружения лиц. Чтобы использовать ее, обязательно загрузите обычную или стандартную прошивку MaixPy на Maixduino, как указано в разделе установки прошивки MaixPy. Следующий шаг — загрузить предварительно обученную модель ИИ. Для этого перейдите на страницу загрузки модели ИИ Sipeed и загрузите файл модели face_model_at_0x300000.kfpkg. После загрузки файла загрузите его во флэш-память Maixduino с помощью утилиты kflash_gui или поместите его на SD-карту. Поскольку чтение из флэш-памяти всегда быстрее, чем чтение с SD-карты, рекомендуется загружать файл модели ИИ во флэш-память, если размер файла модели находится в пределах ограничения.
После этого мы можем двигаться дальше со скриптом micropython. Вы можете загрузить модель ИИ с помощью task = kpu.load(0x300000). В этом случае адрес памяти указывается, поскольку модель хранится во флэш-памяти. Если вы используете SD-карту для хранения модели ИИ, вы можете загрузить модель ИИ в скрипт с помощью task = kpu.load(0x300000). Затем вы можете установить точки привязки как anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025). Параметр точки привязки согласуется с параметром модели. Для каждой модели этот параметр фиксирован и привязан к модели (определяется при обучении модели). Его нельзя изменить на другие значения. Позже вы можете инициализировать сетевой объект kpu с помощью kpu.init_yolo2(task, 0.5, 0.3, 5, anchor). Поскольку эта модель использует YOLO V2, мы использовали init_yolo2 для инициализации модели. Эта функция имеет всего пять параметров. Этими параметрами являются:
- kpu_netKPU.load(): сетевой объект kpu, то есть возвращаемое значение загруженного объекта модели
- threshold: Порог вероятности. Результат будет выведен только если вероятность этого объекта больше этого значения. Диапазон значений: [0, 1]
- nms_value: пороговое значение box_iou, чтобы предотвратить попадание одного и того же объекта в рамки нескольких рамок, когда две рамки обрамляют один и тот же объект, если отношение площади пересечения двух рамок к общей площади, занимаемой двумя рамками, меньше этого значения, выбирается рамка с наибольшей вероятностью.
- anchor_num: Количество точек привязки, здесь зафиксировано как len(anchors)//2
- anchor: Как упоминалось ранее, этот параметр фиксирован и привязан к модели.
После инициализации вы можете ввести данные изображения и запустить модель следующим образом.
1 |
code = kpu.run_yolo2(task, img) |
Это проанализирует данные изображения и выдаст вам результат. Вот полный пример кода, в котором Maixduino обнаружит лицо на канале камеры в режиме реального времени и создаст рамку на предварительном просмотре, отображаемом на ЖК-дисплее.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import sensor, image, lcd, time import KPU as kpu import gc, sys def lcd_show_except(e): import uio err_str = uio.StringIO() sys.print_exception(e, err_str) err_str = err_str.getvalue() img = image.Image(size=(224,224)) img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00)) lcd.display(img) def main(model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False): try: sensor.reset() except Exception as e: raise Exception("sensor reset fail, please check hardware connection, or hardware damaged! err: {}".format(e)) sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.set_hmirror(sensor_hmirror) sensor.set_vflip(sensor_vflip) sensor.run(1) lcd.init(type=1) lcd.rotation(lcd_rotation) lcd.clear(lcd.WHITE) anchors = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025) try: task = None task = kpu.load(model_addr) kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # threshold:[0,1], nms_value: [0, 1] while(True): img = sensor.snapshot() t = time.ticks_ms() objects = kpu.run_yolo2(task, img) t = time.ticks_ms() - t if objects: for obj in objects: img.draw_rectangle(obj.rect()) img.draw_string(0, 200, "t:%dms" %(t), scale=2) lcd.display(img) except Exception as e: raise e finally: if not task is None: kpu.deinit(task) if __name__ == "__main__": try: main( model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False) # main(model_addr="/sd/m.kmodel") except Exception as e: sys.print_exception(e) lcd_show_except(e) finally: gc.collect() |
После запуска этого кода вы можете увидеть результат на ЖК-дисплее как показано на следующем рисунке.
Вы можете загрузить скрипт Python для этого примера из нашего репозитория GitHub: https://github.com/Circuit-Digest/Maixduino-AI-Projects/tree/main/Face%20Detection
Пример классификации объектов
Для этого примера нам нужно загрузить минимальную прошивку в Maixduino, так как сама модель немного больше по размеру. Эта модель может классифицировать до 1000 различных объектов, так как большая модель. После прошивки минимальной прошивки загрузите модель mobilenet_0x300000.kfpkg со страницы загрузки. После загрузки файла загрузите его во флэш-память Maixduino с помощью утилиты kflash_gui. Также загрузите файл labels.txt и сохраните его в файловой системе. Поскольку минимальная прошивка не поддерживает IDE, вы можете использовать uPyloader для загрузки файла во флэш-память. Нам также нужно уменьшить размер кучи GC. Для этого просто запустите следующий скрипт.
1 2 3 4 5 |
from Maix import utils import machine utils.gc_heap_size(256*1024) machine.reset() |
После этого мы можем двигаться дальше с основным скриптом micropython. Используйте следующий скрипт.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import sensor, image, lcd, time import KPU as kpu import gc, sys def main(labels = None, model_addr="/sd/m.kmodel", lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False): gc.collect() sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.set_windowing((224, 224)) sensor.set_hmirror(sensor_hmirror) sensor.set_vflip(sensor_vflip) sensor.run(1) lcd.init(type=1) lcd.rotation(lcd_rotation) lcd.clear(lcd.WHITE) if not labels: raise Exception("no labels.txt") task = kpu.load(model_addr) try: while(True): img = sensor.snapshot() t = time.ticks_ms() fmap = kpu.forward(task, img) t = time.ticks_ms() - t plist=fmap[:] pmax=max(plist) max_index=plist.index(pmax) img.draw_string(0,0, "%.2f\n%s" %(pmax, labels[max_index].strip()), scale=2, color=(255, 0, 0)) img.draw_string(0, 200, "t:%dms" %(t), scale=2, color=(255, 0, 0)) lcd.display(img) except Exception as e: sys.print_exception(e) finally: kpu.deinit(task) if __name__ == "__main__": try: with open("labels.txt") as f: labels = f.readlines() main(labels=labels, model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False) # main(labels=labels, model_addr="/sd/m.kmodel") except Exception as e: sys.print_exception(e) finally: gc.collect() |
Как вы можете видеть, сначала мы импортировали все необходимые модули, включая библиотеки датчиков, изображений, ЖК-дисплеев и времени. Вместе с этим мы также импортировали модуль нейронной сети KPU, сборщик мусора и системные модули. Позже вы можете увидеть, как объявляется функция main. Эта функция обрабатывает все процедуры обработки изображений и нейронной сети. Когда скрипт запускается, он сначала считывает файлы labels.txt, а перечисленные метки из файла загружаются в идентификатор, называемый labels. После этого вызывается основная функция с пятью аргументами. Первый аргумент указывает на идентификатор меток, а второй аргумент указывает на местоположение модели в памяти. Третий аргумент устанавливает поворот дисплея, а четвертый и пятый аргументы используются для установки горизонтального зеркального отображения и вертикального переворота изображения с камеры.
Основная функция инициализирует модули камеры, дисплея и нейронной сети, используя предоставленные аргументы. После инициализации основная функция получает изображение с камеры, запускает на нем модель идентификатора объекта и, если обнаружен идентификатор объекта, рисует вокруг него рамку и печатает соответствующую метку. Следующая строка кода используется для обнаружения объектов.
1 2 3 4 |
fmap = kpu.forward(task, img) plist=fmap[:] pmax=max(plist) max_index=plist.index(pmax) |
После обнаружения объекта результат выводится с помощью следующей строки кода.
1 2 3 |
img = img.draw_string(0, 0, "%.2f : %s" %(pmax, labels[max_index].strip()), color=(255, 0, 0)) lcd.display(img, oft=(0,0)) print(fps) |
Как вы видите, функция draw_string используется для добавления метки к изображению перед его отображением на экране. Вот демонстрация вышеприведенного скрипта.
Вы можете загрузить скрипт Python для этого примера из нашего репозитория GitHub: https://github.com/Circuit-Digest/Maixduino-AI-Projects/tree/main/1000%20Object%20Detection
Что такое MaixHub и как им пользоваться?
Sipeed также имеет онлайн-платформу под названием Maixhub AI models and training. Maixhub не только позволяет вам загружать предварительно обученные модели, но и дает вам возможность обучать свою собственную модель. Чтобы использовать ее, перейдите на страницу Maixhub и зарегистрируйте новую учетную запись. Если вы уже зарегистрированы, войдите на платформу Maixhub.
Если вы нажмете на вкладку Models (Модели) в верхней части страницы, она перенаправит вас на страницу, где вы найдете множество предварительно обученных моделей для пробы. Если вы хотите их использовать, вы можете открыть эту конкретную страницу модели и загрузить ее. Большинство моделей также будут иметь необходимые инструкции на самой странице модели.
Обучение собственной модели искусственного интеллекта с помощью MaixHub
Чтобы обучить собственную модель ИИ, сначала перейдите на страницу обучения на MaixHub. Нажмите Create («Создать»), чтобы создать новый проект. Дайте проекту имя и выберите тип, будь то классификация изображений или обнаружение изображений. Если вам нужно просто идентифицировать объекты, выберите классификацию изображений. Если вам нужно идентифицировать категории объектов и вывести координаты распознанных объектов, выберите обнаружение изображений. Рекомендуется сначала обучить модель обнаружения изображений. Обучение обнаружению изображений включает в себя аннотацию набора данных, поэтому освоение обучения обнаружению изображений означает, что вы также освоите классификацию изображений.
После создания проекта следующим шагом будет создание набора данных. Созданный набор данных может быть повторно использован для других проектов, если это необходимо. Позже выберите созданный нами набор данных и нажмите confirm («Подтвердить»).
Следующий шаг — собрать обучающие изображения. Мы можем либо загрузить изображения, либо импортировать из наборов данных, импортировать с устройства или копировать из других наборов данных. Также есть опция для автоматического создания аннотированных изображений из видео.
Изображения, загруженные в MaixHub, могут быть аннотированы внутри. Выберите загрузку изображений или сжатых пакетов и не забудьте нажать кнопку start upload «Начать загрузку».
После загрузки изображений мы можем двигаться дальше с аннотацией. Аннотирование в MaixHub очень просто. Сначала создайте метки, а затем нажмите кнопку New или нажмите w на клавиатуре, чтобы добавить аннотацию (метку). Нажмите save или нажмите s для сохранения аннотации. Для аннотирования следующего изображения нажмите next или нажмите d на клавиатуре.
После того, как все изображения проаннотированы, перейдем к обучению. Для этого нажмите на Create Task в меню левой панели.
На странице создания задачи выберите nncase в качестве модели для k210, которая является основной SoC в Maixduino, затем создайте обучающую задачу и дождитесь ее завершения.
После завершения обучения модели нажмите deploy («Развернуть»). На странице развертывания выберите ручное развертывание и нажмите download («Загрузить»), чтобы загрузить файл модели. Файл модели с расширением .kmodel будет загружен на ваш компьютер. Используйте эту модель в своем проекте.
Теперь, когда мы изучили процесс использования платы Maixduino для проектов ИИ с MaixPy, наслаждайтесь созданием новых проектов.
26 просмотров