Оглавление:
- Шаг 1: CNN и трансферное обучение: немного теории
- Шаг 2. Подготовьте окружающую среду
- Шаг 3. Установите AXeleRate и запустите тесты
- Шаг 4: повторно обучите модель, конвертируйте модель Keras в.kmodel
- Шаг 5: Запустите модель на Sipeed Maix Bit
- Шаг 6: выводы
Видео: Распознавание изображений с помощью плат K210 и Arduino IDE / Micropython: 6 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Я уже написал одну статью о том, как запускать демонстрации OpenMV на Sipeed Maix Bit, а также снял видео с демонстрацией обнаружения объектов с этой платой. Один из многих вопросов, которые задают люди, - как я могу распознать объект, для которого нейронная сеть не обучена? Другими словами, как сделать собственный классификатор изображений и запустить его с аппаратным ускорением.
Это понятный вопрос, поскольку для вашего проекта вам, вероятно, не нужно распознавать некоторые общие объекты, такие как кошки, собаки и самолеты. Вы хотите распознать что-то конкретное, например, породу собаки для этой автоматической двери для домашних животных, или вид растений для сортировки, или любые другие интересные приложения, о которых вы можете подумать!
Понял тебя! В этой статье я научу вас, как создать свой собственный классификатор изображений с переносом обучения в Keras, преобразовать обученную модель в формат.kmodel и запустить ее на плате Sipeed (может быть любой платой, Bit / Dock или Go) с помощью Micropython или Arduino IDE. И только ваше воображение будет пределом тех задач, которые вы можете выполнить с этими знаниями.
ОБНОВЛЕНИЕ, МАЙ 2020: Увидев, что моя статья и видео о распознавании изображений с досками K210 по-прежнему очень популярны и среди лучших результатов на YouTube и Google, я решил обновить статью, включив в нее информацию о aXeleRate, фреймворке для AI на основе Keras. Край развиваю.
aXeleRate, по сути, основан на коллекции скриптов, которые я использовал для обучения моделей распознавания изображений / обнаружения объектов - объединенных в единую структуру и оптимизированных для рабочего процесса в Google Colab. Пользоваться им удобнее и актуальнее.
Вы все еще можете увидеть старую версию статьи на steemit.com.
Шаг 1: CNN и трансферное обучение: немного теории
Сверточные нейронные сети или CNN - это класс глубоких нейронных сетей, которые чаще всего применяются для анализа визуальных образов. В Интернете есть много литературы по этой теме, и я дам несколько ссылок в последней части статьи. Короче говоря, вы можете думать о CNN как о серии фильтров, применяемых к изображению, причем каждый фильтр ищет определенную функцию в изображении - на нижних сверточных слоях характерными чертами обычно являются линии и простые формы, а на более высоких уровнях - особенности. может быть более конкретным, например части тела, определенные текстуры, части животных или растений и т. д. Наличие определенного набора характеристик может дать нам ключ к разгадке того, что может быть объект на изображении. Бакенбарды, два глаза и черный нос? Наверное, кошка! Зеленые листья, ствол дерева? Похоже на дерево!
Надеюсь, вы теперь получили представление о принципе работы CNN. Обычно глубокой нейронной сети требуются тысячи изображений и часы обучения (зависит от оборудования, которое вы используете для обучения), чтобы «разработать» фильтры, которые полезны для распознавания типов объектов, которые вам нужны. Но есть ярлык.
Модель, обученная распознавать множество различных обычных объектов (кошек, собак, бытовую технику, транспорт и т. Д.), Уже имеет множество этих полезных фильтров, поэтому она нам не нужна, чтобы научиться распознавать основные формы и части. объектов снова. Мы можем просто повторно обучить последние несколько слоев сети распознавать определенные классы объектов, которые важны для нас. Это называется «трансферным обучением». Вам нужно значительно меньше обучающих данных и времени вычислений с трансферным обучением, поскольку вы обучаете только несколько последних слоев сети, состоящих, возможно, из нескольких сотен нейронов.
Звучит потрясающе, правда? Посмотрим, как это реализовать.
Шаг 2. Подготовьте окружающую среду
Есть два способа использовать aXeleRate: запускать локально на машине Ubuntu или в Google Colab. Для работы в Google Colab взгляните на этот пример:
Классификация изображений Colab Notebook
Обучение вашей модели локально и экспорт ее для использования с аппаратным ускорением теперь также намного проще.
Моя рабочая среда - Ubuntu 16.04, 64 бит. Вы можете использовать виртуальную машину для запуска образа Ubuntu, поскольку мы не будем использовать графический процессор для обучения. С некоторыми изменениями вы также можете запустить обучающий сценарий в Windows, но для преобразования модели вам потребуется система Linux. Итак, предпочтительной средой для выполнения этого руководства является Ubuntu 16.04, работающая изначально или на виртуальной машине.
Начнем с установки Miniconda, менеджера среды для Python. Мы создадим изолированную среду, чтобы случайно ничего не изменить в вашей системной среде Python.
Загрузите установщик здесь
После завершения установки создайте новую среду:
conda create -n ml python = 3.7
Давайте активируем новую среду
conda активировать мл
Перед вашей оболочкой bash появится префикс с именем среды, указывающий, что вы сейчас работаете в этой среде.
Шаг 3. Установите AXeleRate и запустите тесты
Установите aXeleRate на свой локальный компьютер с помощью
pip install git +
Чтобы скачать примеры, запустите:
git clone
Вы можете запускать быстрые тесты с помощью tests_training.py в папке aXeleRate. Он будет выполнять обучение и вывод для каждого типа модели, сохранять и конвертировать обученные модели. Поскольку это обучение только для 5 эпох, а набор данных очень мал, вы не сможете получить полезные модели, но этот скрипт предназначен только для проверки отсутствия ошибок.
Шаг 4: повторно обучите модель, конвертируйте модель Keras в.kmodel
В этом примере игрушки мы научим модель распознавать Санта-Клауса и Arduino Uno. Очевидно, вы можете выбрать другие классы. Загрузите набор данных отсюда. Создайте копию файла classifier.json в папке конфигурации, затем измените ее соответствующим образом, как и в файле конфигурации на снимке экрана - убедитесь, что путь к папкам обучения и проверки правильный!
Выполните следующую команду из папки aXeleRate:
python axelerate / train.py - c конфигурациями / santa_uno.json
Обучение начнется. Если точность валидации (наша метрика валидации) не улучшается в течение 20 периодов, обучение преждевременно прекращается. Каждый раз, когда точность проверки повышается, модель сохраняется в папке проекта. После завершения обучения aXeleRate автоматически конвертирует лучшую модель в указанные форматы - на данный момент вы можете выбрать «tflite», «k210» или «edgetpu».
Шаг 5: Запустите модель на Sipeed Maix Bit
Есть два способа запустить имеющуюся у вас модель на оборудовании Sipeed Maix: микропрограмма micropython и Arduino IDE. Аппаратное обеспечение Micropython проще в использовании, но оно занимает значительную часть доступной памяти, поэтому для модели остается меньше места. Arduino IDE - это, по сути, код C, который намного эффективнее и требует меньшего объема памяти. Моя модель всего 1,9Мб, так что для нее подходят оба варианта. Вы можете использовать модели размером до 2,9 МБ с Micropython, для чего-то большего, что вам нужно рассмотреть с помощью Arduino IDE.
Загрузите OpenMV IDE отсюда и минимальную прошивку micropython отсюда.
Запишите прошивку с помощью утилиты kflash_gui. Вы также можете записать обученную модель во флэш-память, как показано на скриншоте. Или скопируйте его на SD-карту (в этом случае скопируйте.kmodel в корень SD-карты и вставьте SD-карту в Sipeed Maix Bit)
Откройте OpenMV IDE и нажмите кнопку подключения. Откройте скрипт santa_uno.py из папки example_scripts и нажмите кнопку «Пуск». Вы должны видеть прямую трансляцию с камеры, и если вы откроете последовательный терминал, вы получите лучший результат распознавания изображений с оценкой достоверности!
Для использования с Arduino IDE сначала необходимо выполнить процедуру добавления плат Sipeed в Arduino IDE, которая описана здесь. Ваша версия Arduino IDE должна быть не ниже 1.8.12. После добавления плат откройте скетч mobilenet_v1_transfer_learning.ino и загрузите его в Sipeed Maix Bit. Измените название модели на SD-карте на «модель» (или сделайте копию с этим названием). Вы можете изменить имена меток в names.cpp. Он покажет поток с камеры в реальном времени на экране Sipeed Maix вместе с лучшим результатом распознавания изображений.
Шаг 6: выводы
Вот еще несколько материалов по теме CNN и трансферного обучения:
Передача обучения с использованием Mobilenet и Keras Прекрасное объяснение передачи обучения, в этом руководстве используется измененная версия кода из этой статьи.
Кошки и собаки и сверточные нейронные сети. Объясняет основы CNN и визуализирует некоторые фильтры. С кошками!
Обучайте, конвертируйте, запускайте MobileNet на Sipeed MaixPy и MaixDuino! Учебное пособие от команды Sipeed о том, как обучать классы Mobilenet 1000 с нуля (без передачи обучения). Вы можете скачать их предварительно обученную модель и опробовать ее!
Надеюсь, вы сможете использовать полученные знания для создания потрясающих проектов с использованием машинного зрения! Вы можете купить платы Sipeed здесь, они являются одними из самых дешевых вариантов, доступных для ML во встроенных системах.
Рекомендуемые:
Искусственный интеллект и распознавание изображений с помощью HuskyLens: 6 шагов (с изображениями)
Искусственный интеллект и распознавание изображений с помощью HuskyLens: Привет, ребята, как дела! Акарш от CETech. В этом проекте мы собираемся взглянуть на HuskyLens от DFRobot. Это модуль камеры на базе искусственного интеллекта, способный выполнять несколько операций искусственного интеллекта, таких как распознавание лиц
Распознавание звезд с помощью компьютерного зрения (OpenCV): 11 шагов (с изображениями)
Распознавание звезд с использованием компьютерного зрения (OpenCV): в этом руководстве вы узнаете, как создать программу компьютерного зрения для автоматического определения звездных паттернов на изображении. Этот метод использует библиотеку OpenCV (компьютерное зрение с открытым исходным кодом) для создания набора обученных каскадов HAAR, которые могут быть
Как разобрать компьютер с помощью простых шагов и изображений: 13 шагов (с изображениями)
Как разобрать компьютер с помощью простых шагов и изображений: это инструкция о том, как разобрать компьютер. Большинство основных компонентов имеют модульную конструкцию и легко снимаются. Однако важно, чтобы вы были организованы по этому поводу. Это поможет уберечь вас от потери деталей, а также при повторной сборке
Распознавание изображений с помощью TensorFlow на Raspberry Pi: 6 шагов
Распознавание изображений с помощью TensorFlow на Raspberry Pi: Google TensorFlow - это программная библиотека с открытым исходным кодом для численных вычислений с использованием графов потоков данных. Он используется Google в различных областях машинного обучения и технологий глубокого обучения. TensorFlow изначально был разработан Google Brai
Распознавание лиц + распознавание: 8 шагов (с изображениями)
Обнаружение лиц + распознавание: это простой пример запуска обнаружения и распознавания лиц с помощью OpenCV с камеры. ПРИМЕЧАНИЕ: Я СОЗДАЛ ДАННЫЙ ПРОЕКТ ДЛЯ КОНКУРСА СЕНСОРОВ И ИСПОЛЬЗОВАЛ КАМЕРУ В КАЧЕСТВЕ СЕНСОРА ДЛЯ ОТСЛЕЖИВАНИЯ И РАСПОЗНАВАНИЯ ЛИЦ. Итак, наша цель В этом сеансе: 1. Установить Anaconda