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.
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.
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).
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:
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
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:
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.
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:
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.
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.