KV260でVitis AI ONNX Runtimeをテストしてみました。
KR260で実施した同じ対応で出来ました。
YOLOX+PythonをONNX環境でテストした内容を紹介します。
KV260でVitis AI ONNX Runtime Engine (VOE) を試してみた
前回KV260とPetaLinuxの環境でPyTorchのYOLOXを動作させました。
KV260とPetalinuxでPyTorchのテスト(YOLOX+Python編)
続きで応用して、ONNX環境でもYOLOXをテストしてみます。
別のコンテストでKR260で同様にONNXで動かしましたので、その展開となります。
テスト動画は下記です。
実際に動かしたプログラム(.py)や設定ファイルなどは下記GitHubに保存しています。
英語ですが、KR260で同様なテストをして下記記事で詳細に記載しています。
そのため今回は、大分(雑に)省略した形でメモレベルで記載しています。
https://www.hackster.io/iotengineer22/vitis-ai-onnx-runtime-engine-voe-with-kr260-python-0d02c3
テスト環境
テスト環境は以下の通りです。
- Vivado, Vitis, PetaLinux…2023.1
- Vitis AI …3.5
使用評価ボードはKV260です。
ONNX Runtimeをインストールする
ONNX Runtimeで必要な環境をインストールします。
1 2 3 4 5 6 |
wget https://www.xilinx.com/bin/public/openDownload?filename=vitis_ai_2023.1-r3.5.0.tar.gz sudo tar -xzvf openDownload\?filename\=vitis_ai_2023.1-r3.5.0.tar.gz -C / wget https://www.xilinx.com/bin/public/openDownload?filename=voe-0.1.0-py3-none-any.whl -O voe-0.1.0-py3-none-any.whl pip3 install voe*.whl wget https://www.xilinx.com/bin/public/openDownload?filename=onnxruntime_vitisai-1.16.0-py3-none-any.whl -O onnxruntime_vitisai-1.16.0-py3-none-any.whl pip3 install onnxruntime_vitisai*.whl |
一度リブートして、xmutilでDPUを起動後プログラムを走らせます。
但しDPUではなくCPUモードで動いてしまいました。
CPUのため、YOLOXの推論(inference)時間が約300msと遅いです。
1 2 3 4 5 6 |
sudo reboot sudo xmutil listapps sudo xmutil unloadapp sudo xmutil loadapp b4096_300m cd onnx-test/ python onnx-yolox.py |
原因を確認すると,ONNX環境を作るときに入れた、Vitis AIライブラリが原因でした。
/etc/vart.confのファイルをデフォルト値に上書きしていました。
そのため用意していた、vart.confを再度上書きしました。その後リブートしています。
(GitHub上にも保存しています)
1 2 3 4 5 |
cd .. cd sd_aiedge_4096/ sudo mv /etc/vart.conf /etc/old_vart.conf sudo cp vart.conf /etc/ sudo reboot |
リブート後に再度DPUを起動して、プログラムを実行するとDPUモードで動きました。
約10msでした。常に高速にDPUの推論(inference)が出来ていました。
1 2 3 4 5 |
sudo xmutil listapps sudo xmutil unloadapp sudo xmutil loadapp b4096_300m cd onnx-test/ python onnx-yolox.py |
テスト結果例
CPUでのYOLOXの物体検出(写真1枚)の実行例です。
1 2 3 4 5 6 7 8 9 |
bboxes of detected objects: [[ 470.0975647 137.78985596 809.90246582 477.59475708] [ 0. 5.46184874 1280. 720. ]] scores of detected objects: [0.73085773 0.24486023] Details of detected objects: [49. 60.] Pre-processing time: 0.0105 seconds CPU execution time: 0.3377 seconds Post-process time: 0.0349 seconds Total run time: 0.3832 seconds Performance: 2.609652525747763 FPS |
DPUでのYOLOXの物体検出(写真1枚)の実行例です。
1 2 3 4 5 6 7 8 9 |
bboxes of detected objects: [[ 473.17449951 137.78985596 812.97937012 477.59475708] [ 0. 5.46184874 1280. 720. ]] scores of detected objects: [0.73033565 0.20149007] Details of detected objects: [49. 60.] Pre-processing time: 0.0108 seconds DPU execution time: 0.0153 seconds Post-process time: 0.0360 seconds Total run time: 0.0621 seconds Performance: 16.092264839376767 FPS |
コメント