New Customers Only. Offer Expires Feb 28, 2025
Interested? Call: 1-800-544-4186 , Email: sales.na@altium.com
New Customers Only. Offer Expires Feb 28, 2025
W Rozpoczynanie pracy z zestawem startowym Kria KV260 Vision AI rozpakowaliśmy i pobawiliśmy się zestawem startowym Kria KV260 Vision AI od AMD Xilinx. Ta płyta dostarcza nam FPGA i procesor ARM wystarczająco mocny, aby uruchomić na nim pełną dystrybucję Ubuntu. W tym artykule zbudujemy i uruchomimy aplikację SmartCam przy użyciu kamery Raspberry Pi. Aplikacja ta będzie w stanie wykrywać twarze w czasie rzeczywistym i pokazywać to na monitorze komputera.
Ten poradnik jest kontynuacją oryginalnego poradnika przygotowanego przez ekipę AMD Xilinx. Zauważysz, że duża część tego poradnika jest bardzo podobna (jeśli nie identyczna) do ich. Moją pierwszą reakcją na ten poradnik było przytłoczenie. Mam całkiem niezłe doświadczenie w projektowaniu FPGA, ale przebrnięcie przez ich poradniki, krok po kroku, czasami może być wyzwaniem i trochę zniechęcające. Szukałem czegoś bardziej prostego i łatwiejszego do śledzenia. Po przejrzeniu innych, przepisanych przez ludzi poradników, nie byłem zbyt zadowolony z tego, co znalazłem; stąd zdecydowałem się napisać własny.
Jeśli szukasz wszystkich krwawych szczegółów, gorąco polecam zapoznanie się z oryginalnym samouczkiem. Są kroki, które nie są super jasne, ale staram się je przebrnąć (a nawet ominąć) w tym samouczku. Co najważniejsze, w momencie pisania tego artykułu, przykładowa aplikacja SmartCam nie wydawała się działać z najnowszym oprogramowaniem układowym. W moim zforkowanym repozytorium stworzyłem zautomatyzowane skrypty (a nawet finalne pliki flash potrzebne) aby uruchomić twoją demonstrację bez problemu. Mając ten samouczek w ręku, mam nadzieję, że będziesz w stanie jak najszybciej zanurzyć się w AI na sprzętowych celach i doświadczyć tego momentu "woah", który ja odczułem po pomyślnym uruchomieniu demonstracji.
Oczywiście będziesz potrzebować Kria KV260 Vision Starter Kit od AMD Xilinx. Musisz przygotować swoją płytę, co można zrobić, śledząc mój poprzedni poradnik, Getting Started with the Kria KV260 Vision AI Starter Kit. Będziesz również potrzebować Raspberry Pi Camera Module V2. Część V2 jest bardzo ważna. Bezskutecznie próbowałem uruchomić demo z tańszą wersją kamery V1 oraz innymi podróbkami kamer (i mogę potwierdzić, że nie działają one z tym demo). Musisz podłączyć taśmę kamery do portu J9 na płycie. Wreszcie, będziesz potrzebować monitora (lub telewizora) z obsługą HDMI, aby podłączyć do zestawu KV260 (i oczywiście kabla HDMI).
Zanim rozpoczniesz demonstrację, musisz mieć zainstalowane zarówno Docker, jak i przykładową aplikację SmartCam na swoim urządzeniu Kria KV260 (mimo że nie będziemy korzystać z aplikacji SmartCam). Będziesz również potrzebować Xilinx Vitis (pełna instalacja) wersja 2022.1. Zwróć uwagę, że numer wersji Xilinx Vitis jest bardzo ważny, ponieważ ten samouczek jest zbudowany specjalnie dla tej wersji.
Możesz zainstalować Docker, używając metody Convenience Script. Aby to zrobić, otwórz terminal i uruchom następujące linie:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh --dry-run sudo usermod -aG docker $USER
Aby zainstalować pakiet aplikacji SmartCam, uruchom następujące polecenie w terminalu:
sudo apt install -y xlnx-firmware-kv260-smartcam
Będziesz także musiał sklonować moje rozgałęzienie oryginalnego repozytorium:
git clone --recursive --branch rpi-camera-demo-clean https://github.com/amahpour/kria-vitis-platforms.git
Aby wszystko było jak najprostsze, napisałem automatyczny skrypt, który przechodzi przez proces budowania automatycznie. Nie będziesz musiał śledzić zrzutów ekranu z oryginalnego samouczka, aby aktualizować projekty bloków lub zmieniać jakikolwiek kod. Ten samouczek próbuje przeprowadzić budowę bez konieczności wchodzenia w interfejs użytkownika Vitis. Aby uruchomić skrypt budowania, przejdź do sklonowanego repozytorium i uruchom następujące polecenia:
cd kv260 ./build_demo.sh
Zauważ, że ten skrypt został napisany z myślą o systemie Linux. Jeśli pracujesz na Windows, bardzo polecam skonfigurować WSL 2 z Ubuntu i zainstalować tam Xilinx Vitis (zamiast na Windows).
Jeśli pojawi się błąd, że nie można znaleźć Vivado, prawdopodobnie zapomniałeś załadować ustawienia Xilinx. Wystarczy uruchomić to polecenie:
source /tools/Xilinx/Vivado/2022.1/settings64.sh
Uruchomienie skryptu build_demo.sh całkowicie pomija cały samouczek, ponieważ dołączyłem zaktualizowany projekt bloku, plik ograniczeń pinów i konfiguracje projektu w folderze kv260/extras/ repozytorium. Jeśli chcesz przejść przez samouczek krok po kroku, bardzo polecam zapoznać się z oryginałem.
Jeśli wszystko przebiegło poprawnie, powinieneś otrzymać plik bitstream znajdujący się w
kv260/overlays/examples/smartcam/binary_container_1/link/int/kv260-raspi-dpu.bit.bin.
Proces budowania może trwać od 1 do 2 godzin. Nie każdy ma na to czas, dlatego dołączyłem plik bitstream do folderu kv260/extras/ jako kopię zapasową.
W tym momencie jesteśmy gotowi, aby skopiować nasze pliki na płytę KV260 i uruchomić demonstrację. Możesz przesyłać pliki za pomocą pamięci USB lub za pomocą polecenia SCP (secure copy). Musisz przesłać następujące pliki:
kv260/extras/kv260-raspi-dpu.bit.bin (lub wygenerowany wcześniej, o którym była mowa)
kv260/extras/kv260-raspi-dpu.dtbo
kv260/extras/kv260-raspi-dpu.xclbin
Po powrocie do urządzenia KV260, musimy przenieść te pliki do sekcji biblioteki, gdzie zwykle ładowane jest oprogramowanie układowe:
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/
Teraz jesteśmy gotowi do uruchomienia aplikacji. Zauważ, że spowoduje to wyłączenie monitora, więc powinieneś uruchomić to przez SSH lub za pośrednictwem interfejsu szeregowego USB (czyli portu USB i używając PuTTY lub 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
W kontenerze Docker będziemy musieli dokonać jednej małej zmiany w pliku. Najpierw musimy zainstalować vim:
apt-get update -y && apt-get install -y vim vim /opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json
Po uruchomieniu vim naciśnij "i" (aby przejść do trybu "insert") i rozpocznij edycję pliku. Znajdź linię wskazującą na plik "xclbin" i zaktualizuj ją, podając tę ścieżkę:
/lib/firmware/xilinx/kv260-raspi-dpu/kv260-raspi-dpu.xclbin
Naciśnij klawisz escape. Wpisz ":wq" (aby zapisać i wyjść), a następnie naciśnij enter. Po tym możemy uruchomić aplikację za pomocą następującego (bardzo długiego) polecenia:
gst-launch-1.0 mediasrcbin name=videosrc media-device=/dev/media0 v4l2src0::io-mode=mmap v4l2src0::stride-align=256 ! video/x-raw, szerokość=1920, wysokość=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
Jeśli wszystko zadziałało poprawnie, Twój monitor (lub telewizor) powinien ponownie się włączyć z obrazem z kamery Raspberry Pi. Na twarzach wykrytych w strumieniu wideo w czasie rzeczywistym pojawi się niebieskie pole.
W tym artykule przeanalizowaliśmy samouczek SmartCam z użyciem kamery Raspberry Pi i zwróciliśmy uwagę na skróty potrzebne, aby "po prostu to uruchomić". W tym momencie powinieneś już mieć działającą własną SmartCam na Kria KV260, wykrywającą twarze w czasie rzeczywistym. Moim celem było uproszczenie procesu, abyś mógł skupić się bardziej na zabawie z obserwacją działania AI, niż na przebrnięciu przez oryginalny samouczek. Mam nadzieję, że ten przewodnik uczynił wszystko jaśniejszym i szybszym dla Ciebie, aby osiągnąć ten moment "działa". Teraz nadszedł Twój czas, aby być kreatywnym i odkryć, co jeszcze możesz zrobić z tym potężnym zestawem startowym.
Uwaga: Cały kod do tego projektu można znaleźć w tym repozytorium.