Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Это вторая статья из серии о Sipeed AI на платформе микроконтроллеров Edge. На этот раз я напишу о MaiX Bit (ссылка на Seeed Studio Shop), небольшой макетной плате меньшего размера. Его характеристики очень похожи на MaiX Dock, плату, которую я использовал в прошлом уроке, поскольку они используют тот же чип, Kendryte K210.
Мы собираемся использовать прошивку micropython, чтобы попробовать некоторые демонстрации OpenMV. Вот описание с домашней страницы OpenMV:
Проект OpenMV направлен на создание недорогих расширяемых модулей машинного зрения на базе Python и нацелен на то, чтобы стать «Arduino машинного зрения».… Python значительно упрощает работу с алгоритмами машинного зрения. Например, метод find_blobs () в коде находит цветные капли и возвращает список 8-значных объектов, представляющих каждую найденную цветовую каплю. В Python перебор списка объектов, возвращаемых функцией find_blobs (), и рисование прямоугольника вокруг каждого цветного пятна легко выполняется всего за две строчки кода.
Таким образом, несмотря на то, что MaiX Bit имеет специальный ускоритель нейронной сети, иногда может быть проще просто использовать жестко запрограммированные алгоритмы OpenMV для выполнения работы или использовать их вместе друг с другом.
Некоторые варианты использования, которые приходят мне в голову:
1) Обнаружение линии для бота-последователя линии
2) Обнаружение светофоров с обнаружением круга и цвета
3) Использование функции распознавания лиц для поиска лиц для распознавания лиц (с DNN)
Репозиторий Github для этой статьи
Шаг 1. Прошивка Flash Micropython
Прежде всего, нам нужно установить прошивку micropython на нашу плату. Предварительно скомпилированный двоичный файл включен в репозиторий github для этой статьи вместе с kflash.py (флэш-утилитой). Если вы хотите скомпилировать прошивку из исходного кода, просто загрузите исходный код с https://github.com/sipeed/MaixPy, установите набор инструментов и скомпилируйте исходный код в файл maixpy.bin. Подробные инструкции по сборке можно найти здесь.
Прошить двоичный файл с помощью
sudo python3 kflash.py kpu.bin
После успешной прошивки переходите к следующему шагу.
Шаг 2: Подключитесь к MaiX Bit
Теперь наш MaiX Bit должен быть доступен через последовательное соединение USB со скоростью 115200 бод. Вы можете использовать свое любимое программное обеспечение для последовательной связи или просто команды cat и echo, в зависимости от ваших потребностей. Я использовал экран для последовательной связи и считаю его очень удобным.
Команда для установления сеанса последовательной связи с экраном:
экран sudo / dev / ttyUSB0 115200
где / dev / ttyUSB0 - адрес вашего устройства.
Возможно, вам потребуется нажать кнопку сброса на микроконтроллере, чтобы увидеть приветственное сообщение и подсказку интерпретатора Python.
Шаг 3: Запустите демонстрацию
Теперь вы можете получить доступ к режиму копирования, нажав Ctrl + E и скопировав демо-коды. Чтобы запустить их, нажмите Ctrl + D в режиме копирования.
Если вы не хотите записывать видео, вам нужно прокомментировать строки видеозаписи. В противном случае код вызовет исключение, если SD-карта не вставлена
Вот краткое описание каждой демонстрации:
Найти круги - использует функцию find_circles из OpenMV. Требуется дополнительная настройка для вашего конкретного приложения, в частности порогового значения (контролирует, какие круги обнаруживаются при преобразовании Хафа. Возвращаются только круги с величиной больше или равной пороговому значению) и значения r_min, r_max.
Найти прямоугольники - использует функцию find_rects из OpenMV. Вы можете поиграть с пороговым значением, но значение, которое у меня есть в демонстрации, неплохо подходит для поиска прямоугольников.
Найти лица, найти глаза - использует функцию find_features с Каскадом Хаара для обнаружения глаз и фронтального лица на изображении. Вы можете поиграть с пороговыми значениями и значениями шкалы для получения правильного компромисса между скоростью и точностью.
Найти бесконечные строки - использует функцию find_lines для поиска всех бесконечных строк в изображении с помощью преобразования Хафа.
Определить цвет - использует функцию get_statistics для получения объекта процентиля, а затем преобразует средние значения кортежа LAB в кортеж значений RGB. Я сам написал этот пример, и он работает довольно хорошо, но имейте в виду, что на результаты определения цвета будут влиять условия окружающего освещения.
Вы можете найти еще много интересных демонстраций в репозитории OpenMV на github! Они в основном совместимы с MaiX Bit micropython, единственное, что вам нужно помнить, это добавить sensor.run (1) после установки pixformat и frameize.
Удачных экспериментов с кодом OpenMV. Если у вас есть какие-либо вопросы или вы хотите поделиться некоторыми из ваших интересных результатов, не стесняйтесь обращаться ко мне на Youtube или LinkedIn. А теперь, извините, я сделаю роботов!