一、基礎(chǔ)知識
(一)Vitis? AI開發(fā)環(huán)境
Vitis? AI開發(fā)環(huán)境可在賽靈思硬件平臺上加速 AI 推斷,包括邊緣器件和 Alveo? 加速器卡。此環(huán)境由經(jīng)過最優(yōu)化的 IP 核、工具、庫、模型和設(shè)計示例組成。其設(shè)計以高效和易用為核心,旨在通過賽靈思 SoC 和自適應(yīng)計算加速平臺 (ACAP) 來充分發(fā)掘 AI 加速的全部潛能。Vitis AI 開發(fā)環(huán)境將底層可編程邏輯的繁復(fù)細(xì)節(jié)加以抽象化,從而幫助不具備 FPGA 知識的用戶輕松開發(fā)深度學(xué)習(xí)推斷應(yīng)用。
(二)Vitis AI Model Zoo
Vitis AI 有個很有重要的工具:Vitis AI Model Zoo,類似于Vitis AI的模型商城。
Vitis AI Model Zoo 包含經(jīng)過最優(yōu)化的深度學(xué)習(xí)模型,可在賽靈思平臺上加速部署深度學(xué)習(xí)推斷。這些模型涵蓋了不同的應(yīng)用,包括 ADAS/AD、視頻監(jiān)控機(jī)器人學(xué)和數(shù)據(jù)中心等。用戶可從這些經(jīng)過預(yù)訓(xùn)練的模型開始著手,享受深度學(xué)習(xí)加速所帶來的諸多利益。
(三)ADAS
高級駕駛輔助系統(tǒng)(Advanced Driving Assistance System)是利用安裝在車上的各式各樣傳感器(毫米波雷達(dá)、激光雷達(dá)、單雙目攝像頭以及衛(wèi)星導(dǎo)航),在汽車行駛過程中隨時來感應(yīng)周圍的環(huán)境,收集數(shù)據(jù),進(jìn)行靜態(tài)、動態(tài)物體的辨識、偵測與追蹤,并結(jié)合導(dǎo)航地圖數(shù)據(jù),進(jìn)行系統(tǒng)的運算與分析,從而預(yù)先讓駕駛者察覺到可能發(fā)生的危險,有效增加汽車駕駛的舒適性和安全性。 近年來ADAS市場增長迅速,原來這類系統(tǒng)局限于高端市場,而現(xiàn)在正在進(jìn)入中端市場,與此同時,許多低技術(shù)應(yīng)用在入門級乘用車領(lǐng)域更加常見,經(jīng)過改進(jìn)的新型傳感器技術(shù)也在為系統(tǒng)布署創(chuàng)造新的機(jī)會與策略。
二、環(huán)境搭建
Vitis AI 庫有兩種安裝方法。一種是通過配置 PetaLinux 來重構(gòu)系統(tǒng),另一種則是在線安裝 Vitis AI 庫,安裝 Vitis-AI 庫后,再安裝 Vitis-AI 從屬庫。
(一)系統(tǒng)下載&安裝
PetaLinux 以前沒玩過,那就體驗一把。先從官網(wǎng)下載PetaLinux系統(tǒng)鏡像(https://china.xilinx.com/member/forms/download/design-license-xef.html?filename=xilinx-kv260-dpu-v2022.2-v3.0.0.img.gz),注意先注冊AMD賬號,然后填寫一些信息才能注冊成功,壓縮文件有3.3G,解壓后的文件8.8G。
注意文件命名,Vitis AI 版本為V3.0.0,此處有個坑,后續(xù)遇到再說。IMG文件燒錄TF卡后上電,PetaLinux 就這樣:
root@xilinx-kv260-starterkit-20222:~/Vitis-AI# uname -a
Linux xilinx-kv260-starterkit-20222 5.15.36-xilinx-v2022.2 #1 SMP Mon Oct 3 07:50:07 UTC 2022 aarch64 aarch64 aarch64 GNU/
root@xilinx-kv260-starterkit-20222:~/Vitis-AI#
映入眼簾的就是2個文件夾,包括鼎鼎大名的Vitis-AI :
接下來將在這個文件夾中玩的不亦樂乎。
(二)準(zhǔn)備圖像包
在官方鏈接(https://china.xilinx.com/bin/public/openDownload?filename=vitis_ai_runtime_r3.0.0_image_video.tar.gz)下載`vitis_ai_runtime_r3.0.0_image_video.tar.gz,其中包括demo需要的圖像和視頻文件,下載后解壓備用。
三、ADAS目標(biāo)識別
Vitis AI 提供L了許多實例,其中包括一個ADAS目標(biāo)識別的demo,在Vitis-AI/examples/vai_runtime/adas_detection
中,可執(zhí)行CPP程序已經(jīng)編譯好,可以直接執(zhí)行。
在執(zhí)行demo之前,先看看readme。
Before running the program, please download the corresponding model and install it.
The model required by this sample is: yolov3_adas_pruned_0_9
You can find the detailed informantion of this model under
Vitis-AI/models/AI-Model-Zoo/model-list/dk_yolov3_cityscapes_256_512_0.9_5.46G_1.3/model.yaml
In the model.yaml, you will find the model's download links for different platforms.
Please choose the corresponding model and download it.
Take ZCU102/ZCU104 as an example, execute the following commands to download and install the model.
wget https://www.xilinx.com/bin/public/openDownload?filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r2.5.0.tar.gz -O yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r2.5.0.tar.gz
mkdir -p /usr/share/vitis_ai_library/models
tar -xzvf yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r2.5.0.tar.gz
cp yolov3_adas_pruned_0_9 /usr/share/vitis_ai_library/models -r
把非KV260的內(nèi)容截掉了,readme基本上就是告訴用戶,去Vitis AI Model Zoo下載相應(yīng)的model并安裝。
那就照著guideline開動,將之前圖形包中的adas.webm文件拷貝至當(dāng)前目錄,然后執(zhí)行./adas_detection adas.webm /usr/share/vitis_ai_library/models/yolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.xmodel
,嗯,出錯了:
**注意,坑來了!**系統(tǒng)提示Please re-compile xmodel
是不是?要不去重編xmodel?仔細(xì)看看問題,原來是系統(tǒng)是Vitis AI V3.0,xmodel卻是V2.5,導(dǎo)致CHECK fingerprint fail,直接去Vitis AI Model Zoo下載個V3.0的xmodel就好了,說干就干!
root@xilinx-kv260-starterkit-20222:~/Vitis-AI/examples/vai_runtime/adas_detection# wget https://www.xilinx.com/bin/public/openDownload?filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz -O yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz
--2023-09-27 06:52:41-- https://www.xilinx.com/bin/public/openDownload?filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz
Resolving www.xilinx.com... 223.119.248.58, 223.119.248.90
Connecting to www.xilinx.com|223.119.248.58|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://xilinx-ax-dl.entitlenow.com/dl/ul/2023/01/06/R210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=PJrrJ06TWqMoH_m1gKVgXw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz [following]
--2023-09-27 06:52:41-- https://xilinx-ax-dl.entitlenow.com/dl/ul/2023/01/06/R210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=PJrrJ06TWqMoH_m1gKVgXw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz
Resolving xilinx-ax-dl.entitlenow.com... 223.119.244.25
Connecting to xilinx-ax-dl.entitlenow.com|223.119.244.25|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://amd-ax-dlf.entitlenow.com/dl/ul/2023/01/06/R210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=PJrrJ06TWqMoH_m1gKVgXw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz [following]
--2023-09-27 06:52:45-- https://amd-ax-dlf.entitlenow.com/dl/ul/2023/01/06/R210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=PJrrJ06TWqMoH_m1gKVgXw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz
Resolving amd-ax-dlf.entitlenow.com... 223.119.248.34, 223.119.248.40, 2402:4f00:4002:400::df77:f828, ...
Connecting to amd-ax-dlf.entitlenow.com|223.119.248.34|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1875420 (1.8M) [application/octet-stream]
Saving to: 'yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz'
yolov3_adas_pruned_0_9-zcu102_ 100%[==================================================>] 1.79M 1.54MB/s in 1.2s
2023-09-27 06:52:50 (1.54 MB/s) - 'yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz' saved [1875420/1875420]
root@xilinx-kv260-starterkit-20222:~/Vitis-AI/examples/vai_runtime/adas_detection#
再次執(zhí)行以下命令:
root@xilinx-kv260-starterkit-20222:~/Vitis-AI/examples/vai_runtime/adas_detection# tar -xzvf yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz
yolov3_adas_pruned_0_9/
yolov3_adas_pruned_0_9/meta.json
yolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.xmodel
yolov3_adas_pruned_0_9/md5sum.txt
yolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.prototxt
yolov3_adas_pruned_0_9_acc/
yolov3_adas_pruned_0_9_acc/yolov3_adas_pruned_0_9_acc.prototxt
yolov3_adas_pruned_0_9_acc/yolov3_adas_pruned_0_9_acc.xmodel
root@xilinx-kv260-starterkit-20222:~/Vitis-AI/examples/vai_runtime/adas_detection# cp yolov3_adas_pruned_0_9 /usr/share/vitis_ai_library/models -r
四、ADAS目標(biāo)識別體驗
(一)目標(biāo)識別
接上HDMI顯示器、鍵盤&鼠標(biāo),在KV260上執(zhí)行(如果在SSH或串口上執(zhí)行會提示cv::Exception):
`./adas_detection video/adas.webm /usr/share/vitis_ai_library/models/yolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.xmodel`
視頻在最后,可以看出識別的準(zhǔn)確性和實時性都不錯,F(xiàn)PS保持在40左右。
(二)dashboard監(jiān)測
KV260在PetaLinux上提供了一個Hardware Platform Statistics頁面,挺有意思的,用于展示系統(tǒng)硬件資源實時消耗情況。監(jiān)控的內(nèi)容包括CPU消耗、內(nèi)存空閑和消耗、電壓、溫度…
下面是一張執(zhí)行ADAS目標(biāo)識別后CPU使用情況,可以看出CPU使用率一下子拉升了,A53的資源還是緊張了點,要是A72就好了。
最后
馬上中秋&國慶來了,終于在節(jié)前把第三篇作業(yè)完成,祝各位節(jié)日快樂!
審核編輯:湯梓紅
-
AI
+關(guān)注
關(guān)注
87文章
31139瀏覽量
269476 -
adas
+關(guān)注
關(guān)注
309文章
2187瀏覽量
208712 -
開發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
226瀏覽量
16649 -
Vitis
+關(guān)注
關(guān)注
0文章
147瀏覽量
7457
發(fā)布評論請先 登錄
相關(guān)推薦
評論