Искусственный интеллект в области зрения с помощью стартового набора Kria KV260 Vision AI

Ari Mahpour
|  Создано: 18 Ноября, 2024
Искусственный интеллект в области зрения с помощью стартового комплекта Kria KV260 Vision AI

В Начало работы с набором для начинающих Kria KV260 Vision AI, мы распаковали и поиграли с набором для начинающих Kria KV260 Vision AI от AMD Xilinx. Эта плата предоставляет нам FPGA и мощный ARM процессор, достаточный для запуска полной дистрибуции Ubuntu на нем. В этой статье мы собираемся собрать и запустить приложение SmartCam, используя камеру Raspberry Pi. Это приложение будет способно обнаруживать лица в реальном времени и демонстрировать это на мониторе вашего компьютера.

Почему я написал этот учебник

Этот учебник следует за оригинальным учебником, подготовленным людьми из AMD Xilinx. Вы заметите, что многое в этом учебнике очень похоже (если не идентично) ихнему. Моя первоначальная реакция на этот учебник была ощущение подавленности. У меня довольно неплохой опыт в проектировании FPGA, но пройти через их учебники, шаг за шагом, иногда может быть сложно и немного пугающе. Я искал что-то более простое и легкое для понимания. После того как я пересмотрел переписанные учебники других людей, я не был слишком доволен тем, что нашел; поэтому я решил написать свой.

Если вы ищете все мельчайшие детали, я настоятельно рекомендую вам ознакомиться с оригинальным учебником. Есть некоторые шаги, которые не совсем ясны, но я пытаюсь пройти их (или даже обойти) в этом учебнике. Самое важное, на момент написания этой статьи, приложение SmartCam, похоже, не работало с последней прошивкой. В моем форке репозитория я создал автоматизированные скрипты (и даже необходимые финальные файлы прошивки), чтобы ваша демонстрация заработала без проблем. Имея этот учебник под рукой, я надеюсь, что вы сможете как можно быстрее погрузиться в AI на аппаратных целях и испытать тот момент "вау", который я получил после успешного запуска демонстрации.

Требования к аппаратному обеспечению

Вам, конечно, понадобится набор для начинающих Kria KV260 Vision от AMD Xilinx. Вам нужно будет настроить вашу плату, и это можно сделать, следуя моему предыдущему уроку, Начало работы с набором для начинающих Kria KV260 Vision AI. Вам также понадобится модуль камеры Raspberry Pi Camera Module V2. Часть V2 крайне важна. Я безуспешно пытался запустить демонстрацию с более дешевой версией камеры V1 и другими подделками камер (и могу подтвердить, что они не работают с этой демонстрацией). Вам нужно будет подключить шлейф камеры к порту J9 на плате. Наконец, вам понадобится монитор (или телевизор) с поддержкой HDMI для подключения к вашему набору KV260 (и, конечно, кабель HDMI).

Необходимое программное обеспечение

Перед началом работы с демонстрацией вам необходимо установить Docker и пример SmartCam на ваше устройство Kria KV260 (хотя мы не будем использовать приложение SmartCam). Вам также понадобится Xilinx Vitis (полная установка) версия 2022.1. Обратите внимание, что номер версии Xilinx Vitis очень важен, поскольку этот учебник специально создан для этой версии.

Вы можете установить Docker, используя метод Convenience Script. Для этого откройте терминал и выполните следующие строки:

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh ./get-docker.sh --dry-run

sudo usermod -aG docker $USER

Чтобы установить пакет приложения SmartCam, выполните следующую команду в терминале:

sudo apt install -y xlnx-firmware-kv260-smartcam

Вам также потребуется клонировать мой форк оригинального репозитория:

git clone --recursive --branch rpi-camera-demo-clean

https://github.com/amahpour/kria-vitis-platforms.git

Запуск сборки

Чтобы максимально упростить процесс, я написал автоматизированный скрипт, который автоматически выполняет процесс сборки. Вам не нужно будет следовать скриншотам в оригинальном учебнике, чтобы обновить блок-схемы или изменить какой-либо код. Этот учебник пытается выполнить сборку, не прибегая к использованию интерфейса пользователя Vitis. Чтобы запустить скрипт сборки, перейдите в ваш клонированный репозиторий и выполните следующие команды:

cd kv260

./build_demo.sh

Обратите внимание, что этот скрипт написан с учетом Linux. Если вы работаете в Windows, я настоятельно рекомендую настроить WSL 2 с Ubuntu и установить Xilinx Vitis там (вместо Windows).

Если вы получаете ошибку, жалующуюся на то, что Vivado не может быть найден, вероятно, вы забыли выполнить инициализацию настроек Xilinx. Просто выполните эту команду:

source /tools/Xilinx/Vivado/2022.1/settings64.sh

Запуск скрипта build_demo.sh полностью обходит весь учебник, потому что я включил обновленную блок-схему, файл ограничений контактов и конфигурации проекта в папку kv260/extras/ репозитория. Если вы хотите пройти учебник шаг за шагом, я настоятельно рекомендую ознакомиться с оригиналом.

Если все прошло правильно, вы должны получить файл битового потока, расположенный в

kv260/overlays/examples/smartcam/binary_container_1/link/int/kv260-raspi-dpu.bit.bin.

Процесс сборки может занять от 1 до 2 часов. Не у каждого есть время на это, поэтому я включил файл битового потока в папку kv260/extras/ в качестве резервной копии.

Запуск демонстрации

На этом этапе мы готовы скопировать наши файлы на плату KV260 и запустить демо. Вы можете передать файлы через USB-флешку или с помощью команды SCP (secure copy). Вам нужно будет передать следующие файлы:

  • kv260/extras/kv260-raspi-dpu.bit.bin (или сгенерированный выше)
  • kv260/extras/kv260-raspi-dpu.dtbo
  • kv260/extras/kv260-raspi-dpu.xclbin

Вернувшись на ваше устройство KV260, нам нужно переместить эти файлы в библиотечный раздел, где обычно загружается прошивка:

sudo mkdir /lib/firmware/xilinx/kv260-raspi-dpu

sudo mv kv260-raspi-dpu.bit.bin /lib/firmware/xilinx/kv260-raspi-dpu/

sudo mv kv260-raspi-dpu.dtbo /lib/firmware/xilinx/kv260-raspi-dpu/

sudo mv kv260-raspi-dpu.xclbin /lib/firmware/xilinx/kv260-raspi-dpu/kv260-raspi-dpu.xclbin

sudo cp /lib/firmware/xilinx/kv260-smartcam/shell.json /lib/firmware/xilinx/kv260-raspi-dpu/

Теперь мы готовы к запуску приложения. Обратите внимание, что это выключит ваш монитор, поэтому вы должны запускать это через SSH или через USB-серийный интерфейс (т.е., USB-порт и используя PuTTY или TeraTerm):

sudo xmutil listapps

sudo xmutil unloadapp

sudo xmutil loadapp kv260-raspi-dpu

sudo xmutil desktop_disable

docker run \

--env="DISPLAY" \

-h "xlnx-docker" \

--env="XDG_SESSION_TYPE" \

--net=host \

--privileged \

--volume="$HOME/.Xauthority:/root/.Xauthority:rw" \

-v /tmp:/tmp \

-v /dev:/dev \

-v /sys:/sys \

-v /etc/vart.conf:/etc/vart.conf \

-v /lib/firmware/xilinx:/lib/firmware/xilinx \

-v /run:/run \

-it xilinx/smartcam:latest bash

В контейнере Docker нам нужно будет внести небольшое изменение в файл. Для этого сначала установим vim:

apt-get update -y && apt-get install -y vim

vim /opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json

После запуска vim нажмите "i" (чтобы перейти в режим вставки) и начните редактирование файла. Найдите строку, которая указывает на файл "xclbin", и обновите ее этим путем:

/lib/firmware/xilinx/kv260-raspi-dpu/kv260-raspi-dpu.xclbin

Нажмите клавишу Escape. Введите ":wq" (чтобы сохранить и выйти), затем нажмите Enter. После этого мы можем запустить приложение с помощью следующей (очень длинной) команды:

gst-launch-1.0 mediasrcbin name=videosrc media-device=/dev/media0  v4l2src0::io-mode=mmap v4l2src0::stride-align=256 !  video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1  ! tee name=t ! queue ! vvas_xmultisrc kconfig="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json" ! queue ! vvas_xfilter kernels-config="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/aiinference.json" ! ima.sink_master                     vvas_xmetaaffixer name=ima ima.src_master ! fakesink t. ! queue max-size-buffers=1 leaky=2 ! ima.sink_slave_0 ima.src_slave_0 ! queue ! vvas_xfilter kernels-config="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/drawresult.json"          ! queue ! kmssink driver-name=xlnx plane-id=39 sync=false fullscreen-overlay=true

Если все работает корректно, ваш монитор (или телевизор) должен включиться снова, показывая изображение с камеры Raspberry Pi. Вокруг всех обнаруженных лиц в видеопотоке в реальном времени будет появляться синяя рамка.

Заключение

В этой статье мы рассмотрели учебник по SmartCam с использованием камеры Raspberry Pi и ознакомились с необходимыми ярлыками, чтобы "просто заставить это работать". На этом этапе у вас уже должна быть настроенная и работающая SmartCam на Kria KV260, которая в реальном времени обнаруживает лица. Моя цель была упростить процесс, чтобы вы могли больше сосредоточиться на удовольствии от наблюдения за действием ИИ, а не на проблемах с освоением оригинального учебника. Надеюсь, это руководство сделало процесс более понятным и быстрым для вас, чтобы достичь того момента "это работает". Теперь ваша очередь проявить творчество и исследовать, что еще вы можете сделать с этим мощным стартовым набором.

Примечание: Весь код для этого проекта можно найти в этом репозитории.

Об авторе

Об авторе

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

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

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

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