Переход на Edge AI с распознаванием лиц на OrangePi 5

Ari Mahpour
|  Создано: 27 Ноября, 2024  |  Обновлено: 17 Января, 2025
Переход на Edge AI с распознаванием лиц на OrangePi 5

Интеллектуальные системы вывода AI становятся всё более популярными на периферии. Мы видим, как алгоритмы машинного обучения и даже крупные языковые модели переносятся на встроенные системы в сфере хобби и коммерции. В этом проекте мы будем строить детектор лиц в реальном времени на базе Orange Pi 5, работающего на процессоре Rockchip 3588. Это означает, что мы будем в реальном времени обнаруживать человеческие лица из видеопотока нашей веб-камеры.

Настройка проекта

Для начала нам понадобится Orange Pi 5, USB-веб-камера и код из моего публичного репозитория. Вы можете обратиться к Начало работы с Orange Pi 5 и процессором Rockchip RK3588, чтобы настроить ваш Orange Pi 5. Прекрасно то, что этот пример также может работать на ПК или любом другом мощном встроенном устройстве под управлением Linux (например, Raspberry Pi 5). После того как вы настроите и запустите ваш Orange Pi 5 (или другое устройство), нам нужно будет установить несколько библиотек. Этот пример разработан для Linux (конкретно для Ubuntu), поэтому мы предполагаем, что у вас есть доступ к менеджеру пакетов Debian. В терминале выполните следующую команду:

sudo apt update -y && sudo apt install -y python3 python3-pip libopencv-dev python3-opencv v4l-utils

Это установит все необходимые пакеты для запуска демонстрации. Также установите пакет Python для OpenCV с помощью pip:

pip3 install opencv-python

Вы также можете проконсультироваться с README для получения дополнительных шагов по проверке вашей настройки.

CPU против GPU против FPGA

В AI Vision с Kria KV260 Vision AI Starter Kit, мы показали, как построить движок AI для обнаружения лиц с использованием FPGA, но уровень сложности был чрезвычайно высок. В этом примере мы собираемся исследовать значительно более простой способ сделать то же самое. Это проще, потому что мы перекладываем сложность на CPU или GPU, которые мы исследуем в этой статье. Настоящая красота заключается в том, насколько хорошо OpenCV оптимизирован для наших компьютеров. Использование библиотеки полностью абстрагирует все сложности машинного обучения, с которыми мы столкнулись, пытаясь построить собственную нейронную сеть на FPGA.

Обзор кода и запуск проекта

Код довольно прост. Мы можем разбить его на несколько шагов:

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. Настройте OpenCL (т.е. определите, используется ли GPU).
  2. Загрузите каскадный классификатор
  3. Захватите видеопоток и переведите его в градации серого
  4. Запустите каскад с использованием OpenCV
  5. Если обнаружено лицо, нарисуйте вокруг него синюю рамку
  6. Повторяйте шаги с 3 по 5 в цикле, пока не будет выполнено условие "завершения" (например, нажатие "q" или закрытие всплывающего окна)

Настоящая магия здесь заключается в "каскадном классификаторе", который мы используем с OpenCV. Это инструмент для обнаружения объектов на основе машинного обучения, который работает через серию постепенно усложняющихся этапов (похоже на концепцию нейронной сети). Подумайте об этом как о хорошо налаженной сборочной линии, где каждый этап имеет одну задачу: обнаружить определенные особенности, такие как края, углы или формы. Если регион изображения проходит все эти контрольные пункты, то он помечается как обнаруженный объект. Если нет, он отбрасывается на раннем этапе, чтобы сэкономить время и вычислительную мощность.

Каскадный классификатор ориентирован на скорость и эффективность. Он использует предопределенные признаки (например, узоры, такие как края или контрасты) и обрабатывает их поэтапно, что делает его идеальным для задач в реальном времени на устройствах с ограниченными вычислительными возможностями. Нейронные сети, с другой стороны, играют в другой лиге. Они автоматически изучают признаки непосредственно из данных, поэтому могут справляться с более сложными и разнообразными сценариями. Однако эта мощь имеет свою цену: нейронные сети требуют гораздо больше вычислительных ресурсов и времени. Каскадные классификаторы быстры и легковесны, но менее гибки, в то время как нейронные сети надежны, но требуют много ресурсов. Все зависит от выбора правильного инструмента для работы.

В нашем случае мы используем предварительно обученную модель, детектор лиц Haar Frontal (в форме XML-файла), который точно знает, что искать в лице и что отфильтровывать. На практике это достаточно хорошо для простого примера, который мы рассматриваем. Как упоминалось выше, это не будет так точно, но все же достаточно хорошо для большинства простых примеров обнаружения лиц.

Чтобы запустить код, все, что вам нужно сделать, это:

python3 face_detection.py --use-gpu

Или пропустите флаг --use-gpu, если у вас нет GPU на вашем устройстве (например, вы не используете Orange Pi 5). На этом этапе должно появиться маленькое окно, и синий прямоугольник должен появиться вокруг вашего лица. В моем случае один появился сразу:

Cloud Storage and Version Control

Store your libraries and design data in one secure, accessible, and version-controlled space.

Real-time face detection using OpenCV and a Webcam
Рисунок 1: Обнаружение лиц в реальном времени с использованием OpenCV и веб-камеры

Заключение

Этот проект демонстрирует, насколько доступным стало обнаружение лиц в реальном времени с помощью инструментов вроде OpenCV и устройств вроде Orange Pi 5. Используя легковесный и эффективный каскадный классификатор (через загрузку предварительно обученного XML-файла), мы создали функциональный пример без сложностей, связанных с нейронными сетями или программированием FPGA. Хотя этот подход имеет свои ограничения, такие как работа с различным освещением или углами, это идеальная отправная точка для экспериментов с edge AI.

С всего лишь несколькими библиотеками и минимальной настройкой вы можете воспроизвести этот проект на встроенном устройстве или даже на стандартном ПК. По мере того как движки AI-инференсинга продолжают совершенствоваться, ожидайте увидеть более сложные модели, работающие на устройствах с ограниченными ресурсами, делая продвинутый ИИ более доступным для всех. Чтобы просмотреть репозиторий со всем кодом для начала работы, посетите https://gitlab.com/ai-examples/orange-pi-face-detection.

Об авторе

Об авторе

Ари — инженер с большим опытом работы в сфере проектирования, производства, тестирования и интеграции электрических, механических и программных систем. Он стремится к созданию дружного сообщества специалистов по разработке, верификации и тестированию решений.

Связанные ресурсы

Связанная техническая документация

Вернуться на главную
Thank you, you are now subscribed to updates.
Altium Need Help?