Vision IA avec le kit de démarrage Kria KV260 Vision AI

Ari Mahpour
|  Créé: Novembre 18, 2024  |  Mise à jour: Janvier 17, 2025
Vision IA avec le Kit de Démarrage Vision IA Kria KV260

Dans Commencer avec le Kit de Démarrage Vision AI Kria KV260, nous avons déballé et exploré le Kit de Démarrage Vision AI Kria KV260 de AMD Xilinx. Cette carte nous fournit un FPGA et un processeur ARM suffisamment puissants pour exécuter une distribution complète d'Ubuntu. Dans cet article, nous allons construire et exécuter l'application SmartCam en utilisant une caméra Raspberry Pi. Cette application sera capable de détecter des visages en temps réel et de le démontrer sur l'écran de votre ordinateur.

Pourquoi j'ai écrit ce tutoriel

Ce tutoriel fait suite au tutoriel original réalisé par l'équipe de AMD Xilinx. Vous remarquerez qu'une grande partie de ce tutoriel est très similaire (sinon identique) au leur. Ma première réaction à ce tutoriel a été de me sentir dépassé. J'ai une expérience assez correcte dans la conception de FPGA, mais suivre leurs tutoriels, étape par étape, peut parfois être difficile et un peu intimidant. Je cherchais quelque chose d'un peu plus simple et facile à suivre. Après avoir examiné d'autres tutoriels réécrits par d'autres personnes, je n'étais pas vraiment satisfait de ce que j'ai trouvé ; d'où ma décision d'écrire le mien.

Si vous recherchez tous les détails croustillants, je vous recommande vivement de consulter le tutoriel original. Certaines étapes ne sont pas super claires, mais je tente de les franchir (ou même de les contourner) dans ce tutoriel. Plus important encore, au moment de la rédaction de cet article, l'application SmartCam de démonstration ne semblait pas fonctionner avec le dernier firmware. Dans mon répertoire forké, j'ai créé des scripts automatisés (et même les fichiers flash finaux nécessaires) pour que votre démo soit opérationnelle sans aucun problème. Avec ce tutoriel en main, j'espère que vous serez capable de vous lancer dans l'IA sur des cibles matérielles aussi rapidement que possible et de vivre ce moment "woah" que j'ai eu après avoir réussi à lancer la démo.

Prérequis Matériels

Bien sûr, vous aurez besoin du Kria KV260 Vision Starter Kit de chez AMD Xilinx. Vous devrez configurer votre carte, ce qui peut être fait en suivant mon tutoriel précédent, Getting Started with the Kria KV260 Vision AI Starter Kit. Vous aurez également besoin d'une Raspberry Pi Camera Module V2. La partie V2 est extrêmement importante. J'ai tenté sans succès de faire fonctionner la démo avec la version moins chère V1 de la caméra et d'autres caméras contrefaites (et je peux attester qu'elles ne fonctionnent pas avec cette démo). Vous devrez brancher le câble ruban de la caméra sur le port J9 de la carte. Enfin, vous aurez besoin d'un moniteur (ou téléviseur) compatible HDMI pour connecter votre kit KV260 (et un câble HDMI, bien sûr).

Prérequis logiciels

Avant de commencer la démo, vous devez avoir à la fois Docker et l'exemple SmartCam installés sur votre appareil Kria KV260 (même si nous n'utiliserons pas l'application SmartCam). Vous aurez également besoin de Xilinx Vitis (l'installation complète) version 2022.1. Notez que le numéro de version de Xilinx Vitis est très important car ce tutoriel est spécifiquement construit pour cette version.

Vous pouvez installer Docker en utilisant la méthode du Script de Commodité. Pour ce faire, ouvrez un terminal et exécutez les lignes suivantes :

Get Ready for the Electronics Design Jobs You Want


Experience hands-on learning in PCB and hardware design with Altium's Student license, cloud access & comprehensive curriculum.

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

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

sudo usermod -aG docker $USER

Pour installer le paquet d'application SmartCam, exécutez la commande suivante dans le terminal :

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

Vous aurez également besoin de cloner ma version du dépôt original :

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

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

Lancer la Construction

Pour rendre les choses aussi simples que possible, j'ai écrit un script automatisé qui exécute le processus de construction automatiquement. Vous n'aurez pas besoin de suivre les captures d'écran du tutoriel original pour mettre à jour les conceptions de blocs ou modifier du code. Ce tutoriel tente d'exécuter la construction sans avoir à entrer dans l'interface utilisateur de Vitis. Pour exécuter le script de construction, placez-vous dans votre dépôt cloné et exécutez les commandes suivantes :

cd kv260

./build_demo.sh

Notez que ce script a été écrit en pensant à Linux. Si vous utilisez Windows, je vous recommande vivement de configurer WSL 2 avec Ubuntu et d'y installer Xilinx Vitis (plutôt que sur Windows).

Si vous recevez une erreur indiquant que Vivado ne peut pas être trouvé, vous avez probablement oublié de charger les paramètres Xilinx. Exécutez simplement cette commande :

Launch Your Career in Electronics Design


Gain the skills top employers look for. Start mastering PCB design with the Altium Student Lab today!

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

Exécuter le script build_demo.sh contournera complètement tout le tutoriel car j'ai inclus la conception de bloc mise à jour, le fichier de contrainte de broche et les configurations de projet dans le dossier kv260/extras/ du dépôt. Si vous souhaitez parcourir le tutoriel étape par étape, je vous recommande vivement de jeter un œil à l'original.

Si tout s'est déroulé correctement, vous devriez obtenir un fichier bitstream situé dans

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

Le processus de construction peut prendre entre 1 et 2 heures. Tout le monde n'a pas le temps pour cela, donc j'ai inclus le fichier bitstream dans le dossier kv260/extras/ en tant que sauvegarde.

Lancement de la démo

À ce stade, nous sommes prêts à copier nos fichiers sur la carte KV260 et à lancer la démo. Vous pouvez transférer les fichiers via une clé USB ou via la commande SCP (copie sécurisée). Vous aurez besoin de transférer les fichiers suivants :

  • kv260/extras/kv260-raspi-dpu.bit.bin (ou celui généré mentionné ci-dessus)
  • kv260/extras/kv260-raspi-dpu.dtbo
  • kv260/extras/kv260-raspi-dpu.xclbin

Une fois de retour sur votre appareil KV260, nous devons déplacer ces fichiers dans la section bibliothèque où le firmware est généralement chargé :

Lay Out Your Track: Prepare for a Career in PCB Design


Develop the electronics design expertise that employers look for with Altium’s free Student Lab!

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/

Nous sommes maintenant prêts à lancer l'application. Notez que cela éteindra votre moniteur, vous devriez donc exécuter cela via SSH ou via l'interface série USB (c'est-à-dire, port USB et en utilisant PuTTY ou 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

Dans le conteneur Docker, nous devrons apporter une légère modification à un fichier. Cela nous obligera d'abord à installer vim :

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

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

Une fois dans vim, appuyez sur "i" (pour "insertion") pour commencer à éditer le fichier. Cherchez la ligne qui pointe vers un fichier "xclbin" et mettez-la à jour avec ce chemin :

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

Appuyez sur la touche échappe. Tapez ":wq" (pour sauvegarder et quitter), puis appuyez sur entrée. Après cela, nous pouvons exécuter l'application avec la commande suivante (très longue) :

gst-launch-1.0 mediasrcbin name=videosrc media-device=/dev/media0  v4l2src0::io-mode=mmap v4l2src0::alignement-de-trame=256 !  video/x-raw, largeur=1920, hauteur=1080, format=NV12, fréquence d'images=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 taille-max-tampons=1 fuite=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 nom-du-pilote=xlnx id-du-plan=39 synchronisation=false superposition-plein-écran=true

Si tout a fonctionné correctement, votre moniteur (ou TV) devrait se rallumer avec le flux de votre caméra Raspberry Pi. Il placera un cadre bleu autour de tous les visages qu'il détecte dans le flux vidéo en temps réel.

Get Ready for the PCB Design Job of Your Dreams


Start your electronics design career with Altium's free Student Lab, comprehensive curriculum & certificates

Conclusion

Dans cet article, nous avons passé en revue le tutoriel SmartCam avec la caméra Raspberry Pi et observé les raccourcis nécessaires pour "juste le faire fonctionner." À ce stade, vous devriez maintenant avoir votre propre SmartCam opérationnelle sur le Kria KV260, détectant les visages en temps réel. Mon objectif était de simplifier le processus afin que vous puissiez vous concentrer davantage sur le plaisir de voir l'IA en action plutôt que de vous débattre avec le tutoriel original. J'espère que ce guide a rendu les choses plus claires et plus rapides pour vous afin d'obtenir ce moment "ça marche". Maintenant, c'est à votre tour de faire preuve de créativité et d'explorer ce que vous pouvez faire d'autre avec ce kit de démarrage puissant.

Note : Tout le code pour ce projet peut être trouvé dans ce dépôt.

A propos de l'auteur

A propos de l'auteur

Ari est un ingénieur doté d'une solide expérience dans la conception, la fabrication, les tests et l'intégration de systèmes électriques, mécaniques et logiciels. Il aime collaborer avec des ingénieurs chargés de la conception, la vérification et les tests afin de favoriser les synergies.

Ressources associées

Documentation technique liée

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.
Altium Need Help?