KV260とPetalinuxの環境構築して、DPUで物体検出してみました。
PyTorchのYOLOXをPythonで動かしています。
VARTのAPIを使ってプログラムしたコード含めて紹介しています。
KV260とPetalinuxでPyTorchのテスト(YOLOX+Python編)
以前にVitis AI のサンプルのC++のYOLOXを動かすテストを実施しました。
https://misoji-engineer.com/archives/vitis-ai-3-5-kv260-yolox.html
今回はPythonでプログラミングして、YOLOXを動かすテストを実施します。
テスト動画は下記となります。
実際に動かしたプログラム(.py)や設定ファイルなどは下記GitHubに保存しています。
テスト環境
テスト環境は以下の通りです。
- Vivado, Vitis, PetaLinux…2023.1
- Vitis AI …3.5
使用評価ボードはKV260です。
KV260用のPetaLinuxのイメージを作る
ビルド元のBSPファイルは下記にありますので、ダウンロードしてpetalinuxを動かします。
1 2 3 4 5 |
petalinux-create -t project -s xilinx-kv260-starterkit-v2023.1-05080224.bsp cd xilinx-kv260-starterkit-2023.1/ petalinux-build petalinux-package --boot --u-boot --force petalinux-package --wic --images-dir images/linux/ --bootfiles "ramdisk.cpio.gz.u-boot,boot.scr,Image,system.dtb,system-zynqmp-sck-kv-g-revB.dtb" --disk-name "mmcblk1" |
作成したSDイメージ(petalinux-sdimage.wic)をbalenaetcherなどを使って書き込みます。
/xilinx-kv260-starterkit-2023.1/images/linux の箇所にあります
KV260上での最初の立ち上げは下記のC++でテストしたときと同じです。
同様にKV260にVitis AIのruntimeをインストールしました。
1 2 3 4 5 |
sudo dnf install xrt packagegroup-petalinux-opencv wget https://www.xilinx.com/bin/public/openDownload?filename=vitis-ai-runtime-3.5.0.tar.gz -O vitis-ai-runtime-3.5.0.tar.gz tar -xzvf vitis-ai-runtime-3.5.0.tar.gz cd vitis-ai-runtime-3.5.0/2023.1/aarch64/centos/ sudo bash ./setup.sh |
DPUの設定
最初にDPUをxmutilでロードできるように設定しています。
b4096_300mというアプリケーションを作成しました。
作成に必要なファイルの作り方は下記記事で紹介しています。
https://misoji-engineer.com/archives/vitis-ai-3-5-kv260-yolox.html
1 2 3 4 5 |
cd sd_aiedge_4096/ sudo mkdir /lib/firmware/xilinx/b4096_300m sudo cp pl.dtbo shell.json /lib/firmware/xilinx/b4096_300m/ sudo cp dpu.xclbin /lib/firmware/xilinx/b4096_300m/binary_container_1.bin ls /lib/firmware/xilinx/b4096_300m/ |
また作成したvart.confに差し替えました。一度Rebootするのをおススメします。
1 2 3 |
sudo mv /etc/vart.conf /etc/old_vart.conf sudo cp vart.conf /etc/ sudo reboot |
ここからは冒頭でも紹介したデモ動画の流れと同じになります。
1 2 3 4 5 |
sudo xmutil listapps sudo xmutil unloadapp sudo xmutil loadapp b4096_300m cd pytorch_test/ python pt-yolox.py |
PyTrochによる物体検出が出来ています。
1 2 3 4 5 6 7 8 9 |
bboxes of detected objects: [[ 458.11553955 125.8078537 821.88452148 489.57681274] [ 40.24644089 0. 1239.75366211 720. ]] scores of detected objects: [0.56179011 0.11786249] Details of detected objects: [49. 60.] Pre-processing time: 0.0087 seconds DPU execution time: 0.0115 seconds Post-process time: 0.0330 seconds Total run time: 0.0532 seconds Performance: 18.780998267115038 FPS |
コメント