Visione AI con il Kria KV260 Vision AI Starter Kit

Ari Mahpour
|  Creato: novembre 18, 2024  |  Aggiornato: gennaio 17, 2025
Visione AI con il Kria KV260 Vision AI Starter Kit

Nel Primi Passi con il Kria KV260 Vision AI Starter Kit, abbiamo aperto e esplorato il Kria KV260 Vision AI Starter Kit di AMD Xilinx. Questa scheda ci fornisce un FPGA e un processore ARM abbastanza potenti da eseguire una distribuzione completa di Ubuntu. In questo articolo, costruiremo ed eseguiremo l'applicazione SmartCam utilizzando una fotocamera Raspberry Pi. Questa applicazione sarà in grado di rilevare volti in tempo reale e mostrarlo sul monitor del tuo computer.

Perché ho scritto questo tutorial

Questo tutorial segue il tutorial originale messo insieme dal team di AMD Xilinx. Noterai che gran parte di questo tutorial è molto simile (se non identico) al loro. La mia reazione iniziale a questo tutorial è stata di sentirmi sopraffatto. Ho una discreta esperienza nella progettazione di FPGA, ma seguire i loro tutorial, passo dopo passo, a volte può essere impegnativo e un po' scoraggiante. Cercavo qualcosa di un po' più semplice e facile da seguire. Dopo aver esaminato altri tutorial riscritti, non ero terribilmente soddisfatto di quello che ho trovato; quindi, ho deciso di scrivere il mio.

Se stai cercando tutti i dettagli più cruenti, ti consiglio vivamente di consultare il tutorial originale. Ci sono alcuni passaggi che non sono super chiari, ma tento di superarli (o addirittura di aggirarli) in questo tutorial. Più importante, al momento della scrittura di questo articolo, l'applicazione SmartCam di esempio non sembrava funzionare con l'ultimo firmware. Nel mio repository biforcato, ho creato script automatizzati (e persino i file flash finali necessari) per far funzionare la tua demo senza intoppi. Con questo tutorial in mano, spero che tu possa immergerti nell'IA su target hardware il più rapidamente possibile e vivere quel momento di "wow" che ho avuto dopo aver avviato con successo la demo.

Prerequisiti Hardware

Avrai, naturalmente, bisogno del Kria KV260 Vision Starter Kit di AMD Xilinx. Dovrai configurare la tua scheda, e questo può essere fatto seguendo il mio tutorial precedente, Getting Started with the Kria KV260 Vision AI Starter Kit. Avrai anche bisogno di un Raspberry Pi Camera Module V2. La parte V2 è super importante. Ho tentato senza successo di eseguire la demo con la versione più economica V1 della fotocamera e altre fotocamere non originali (e posso attestare che non funzionano con questa demo). Dovrai collegare il cavo a nastro della fotocamera alla porta J9 sulla scheda. Infine, avrai bisogno di un monitor (o TV) compatibile con HDMI per collegarlo al tuo kit KV260 (e naturalmente, di un cavo HDMI).

Prerequisiti Software

Prima di iniziare con la demo, è necessario avere installati sia Docker che l'esempio SmartCam sul dispositivo Kria KV260 (anche se non utilizzeremo l'applicazione SmartCam). Avrai anche bisogno di Xilinx Vitis (l'installazione completa) versione 2022.1. Nota che il numero di versione di Xilinx Vitis è molto importante poiché questo tutorial è costruito specificamente per quella versione.

Puoi installare Docker utilizzando il metodo Convenience Script. Per fare ciò, apri un terminale ed esegui le seguenti righe:

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

Per installare il pacchetto dell'applicazione SmartCam, esegui il seguente comando nel terminale:

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

Dovrai anche clonare il mio fork del repository originale:

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

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

Esecuzione della Build

Per rendere le cose il più semplice possibile, ho scritto uno script automatizzato che esegue automaticamente il processo di costruzione. Non sarà necessario seguire gli screenshot nel tutorial originale per aggiornare i progetti dei blocchi o modificare alcun codice. Questo tutorial tenta di eseguire la costruzione senza dover entrare nell'interfaccia utente di Vitis. Per eseguire lo script di costruzione, esegui il cd nella tua repository clonata ed esegui i seguenti comandi:

cd kv260

./build_demo.sh

Nota che questo script è stato scritto tenendo in mente Linux. Se stai utilizzando Windows, ti consiglio vivamente di configurare WSL 2 con Ubuntu e installare Xilinx Vitis lì (invece che su Windows).

Se ricevi un errore che lamenta l'assenza di Vivado, probabilmente hai dimenticato di caricare le impostazioni Xilinx. Basta eseguire questo comando:

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

Eseguire lo script build_demo.sh aggirerà completamente l'intero tutorial perché ho incluso il progetto aggiornato dei blocchi, il file di vincolo dei pin e le configurazioni del progetto nella cartella kv260/extras/ della repository. Se vuoi seguire il tutorial passo dopo passo, ti consiglio vivamente di dare un'occhiata all'originale.

Se tutto è andato correttamente, dovresti ottenere un file bitstream situato in

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

Il processo di costruzione può richiedere tra 1-2 ore. Non tutti hanno tempo per questo, quindi ho incluso il file bitstream nella cartella kv260/extras/ come backup.

Avviare la Demo

A questo punto, siamo pronti a copiare i nostri file sulla scheda KV260 ed eseguire la demo. Puoi trasferire i file tramite una chiavetta USB o tramite il comando SCP (secure copy). Dovrai trasferire i seguenti file:

  • kv260/extras/kv260-raspi-dpu.bit.bin (o quello generato menzionato sopra)
  • kv260/extras/kv260-raspi-dpu.dtbo
  • kv260/extras/kv260-raspi-dpu.xclbin

Una volta tornati sul vostro dispositivo KV260, dobbiamo spostare questi file nella sezione della libreria dove di solito viene caricato il firmware:

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/

Ora, siamo pronti per avviare l'applicazione. Nota che questo spegnerà il tuo monitor, quindi dovresti eseguire questa operazione tramite SSH o tramite l'interfaccia seriale USB (cioè, porta USB e utilizzando PuTTY o 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

Nel container Docker, dovremo fare una piccola modifica a un file. Ciò richiederà prima di installare vim:

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

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

Una volta in vim premere "i" (per "inserire") per iniziare a modificare il file. Cercare la riga che indica un file "xclbin" e aggiornarla con questo percorso:

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

Premi il tasto escape. Digita ":wq" (per salvare ed uscire), poi premi invio. Dopo ciò, possiamo eseguire l'applicazione con il seguente comando (molto lungo):

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

Se tutto ha funzionato correttamente, il tuo monitor (o TV) dovrebbe riaccendersi con il feed dalla tua telecamera Raspberry Pi. Posizionerà un riquadro blu attorno a qualsiasi volto che rileva nel feed video in tempo reale.

Get Ready for the PCB Design Job of Your Dreams


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

Conclusione

In questo articolo, abbiamo esaminato il tutorial di SmartCam con la Raspberry Pi Camera e osservato le scorciatoie necessarie per "farlo funzionare" semplicemente. A questo punto, dovresti avere la tua SmartCam operativa su Kria KV260, in grado di rilevare volti in tempo reale. Il mio obiettivo era semplificare il processo così che tu possa concentrarti di più sul divertimento di vedere l'IA in azione piuttosto che impantanarti nel tutorial originale. Spero che questa guida abbia reso le cose più chiare e veloci per te per arrivare a quel momento di "funziona". Ora, tocca a te essere creativo ed esplorare cos'altro puoi fare con questo potente kit iniziale.

Nota: Tutti i codici per questo progetto possono essere trovati in questo repository.

Sull'Autore

Sull'Autore

Ari è un ingegnere con una solida esperienza nei campi di progettazione, produzione, collaudo e integrazione di sistemi elettrici, meccanici e software. Ama riunire gli ingegneri addetti alla progettazione, alla verifica e al collaudo e farli lavorare insieme come un'unità affiatata.

Risorse correlate

Documentazione Tecnica Correlata

Tornare alla Pagina Iniziale
Thank you, you are now subscribed to updates.