整個(gè)系統(tǒng)是以DPU為核心,在 DPU 上部署對(duì)象檢測模型實(shí)現(xiàn)實(shí)時(shí)智能檢測,該系統(tǒng)視頻輸入可以來自 VCU 解碼的視頻或來自相機(jī)的實(shí)時(shí)視頻圖像。
介紹
Checkout So Easy 是本次介紹的項(xiàng)目系統(tǒng)名稱。是在ultrascale+上利用 VCU 和 DPU 實(shí)現(xiàn)的智能零售系統(tǒng)。
Checkout So Easy 有兩種應(yīng)用場景:
1.Checkout So Easy充當(dāng)云端
將記錄商品的視頻以 mp4 等格式的視頻發(fā)送到系統(tǒng)。借助Checkout So Easy的VCU解碼器進(jìn)行解碼,我們將解碼后的視頻幀送入DPU計(jì)算商品價(jià)格。商品詳情、價(jià)格、圖像檢測視頻等結(jié)果將顯示在顯示器上。
Checkout So Easy 發(fā)揮優(yōu)勢
商品信息是從連接到 FPGA 的攝像頭捕獲的。攝像頭拍攝的圖像將送入DPU計(jì)算商品的結(jié)果,并將詳細(xì)信息顯示在顯示器上。與場景 1 不同的是,監(jiān)視器上的結(jié)果將逐幀記錄。借助 VCU 編碼器,我們可以存儲(chǔ)由幀組成的視頻。當(dāng)一些交易糾紛發(fā)生時(shí),我們可以查看交易的整個(gè)過程。
演示視頻
如何重新創(chuàng)建此項(xiàng)目
第 一 步:構(gòu)建和設(shè)置 FPGA 板的環(huán)境
https://github.com/alex0620ee05/Self-checkout-system/blob/main/Build_sdcard
構(gòu)建步驟:
1.克隆完整的存儲(chǔ)庫(包括子倉庫)
$gitclone--recurse-submodules$gitclone--recurse-submoduleshttps://github.com/Xilinx/Vitis-In-Depth-Tutorial $cdVitis-In-Depth-Tutorial/Runtime_and_System_Optimization/Design_Tutorials/02-ivas-ml/
注意:需要安裝 Vitis 補(bǔ)丁:
此設(shè)計(jì)具有較大的 rootfs,并且 Vitis 2020.1 在打包超過 2GB 的 ext4 分區(qū)的 SD 卡映像時(shí)存在問題。此補(bǔ)丁更改了打包流程,將初始 rootfs 大小四舍五入為 ext4 分區(qū)512MB大小的第一個(gè)完整倍數(shù)。安裝它:
$cp./vitis_patch/mkfsImage.sh${XILINX_VITIS}/scripts/vitis/util
2.Vitis2020.1、PetaLinux2020.1和XRT2020.1源碼
$source${XILINX_VITIS}/settings64.sh $source${XILINX_PetaLinux}/settings.sh $source${XILINX_XRT}/setup.sh
3.搭建硬件平臺(tái)
$cdplatform/dev/zcu104_vcu $make
petalinux-config kernel、petalinux-build、petalinux-build --sdk時(shí)可能會(huì)出現(xiàn)錯(cuò)誤。此時(shí)應(yīng)該正確修改platform/dev/zcu104_vcu 和 platform/dev/zcu104_vcu/petalinux中的Makefile并重新執(zhí)行出錯(cuò)的命令make 。
4.構(gòu)建Vitis設(shè)計(jì)(添加DPU ip)
必須一次且僅一次,將 hw_src 目錄中的補(bǔ)丁應(yīng)用到 Vitis Vision 庫。
$cd../../../hw_src/Vitis_Libraries $patch-p1../vision_lib_area_resize_ii_fix.patch $?cd?.. $?cp?../../../../../dpu_conf_zcu104.vh?. $?cp?../../../../../zcu10x_config?. $?make
5.獲取SD卡鏡像
第一步:將上面獲取到的sd_card.img放入sd_card_zcu104/.
或者,可以下載預(yù)構(gòu)建的sd_card.img(https://github.com/alex0620ee05/Self-checkout-system/tree/main/prebuilt/sd_card_image)
第二步:為 Vitis AI 庫 v1.2 準(zhǔn)備 SD 卡
https://github.com/alex0620ee05/Self-checkout-system/tree/main/set_up_files
本節(jié)以下所有步驟均針對(duì)目標(biāo)(ZCU104板)
將以下文件放入/home/root/目錄:
jsons/
scripts/
test_data/
.bashrc
debug.ini
將以下文件放入 /:
1.update.tar.gz
調(diào)整 rootfs 的大小:
cd/home/root/scripts shext4_auto_resize.sh
2.安裝依賴和Vitis AI v1.2庫
以下步驟需要開發(fā)板可聯(lián)網(wǎng)(腳本使用wget下載)
cd/home/root/scripts shupdate.sh shinstall_vai.sh
第三步:Vitis-AI量化編譯
https://github.com/alex0620ee05/Self-checkout-system/tree/main/host
編譯好的文件ssd_mobilenet_v2_coco_tf.elf已經(jīng)在demo/,可以跳過這一步,直接使用提供的文件。
1.搭建Vitis-AI環(huán)境
按照Vitis-AI上的步驟構(gòu)建 docker。
./docker_run.shxilinx/vitis-ai-gpu:latest
2.從Xilinx AI model zoo下載tensorflow模型
只下載.pb文件,運(yùn)行sh download_deploy_model.sh即可,此步可以跳過后面的說明。
也可以按照Xilinx/Vitis-AI/AI-Model-Zoo上的說明獲取模型。
在我們的項(xiàng)目中,我們使用xilinx_model_sample/tf_ssdmobilenetv2_coco_300_300_3.75G作為我們的對(duì)象檢測模型。
復(fù)制xilinx_model_sample/tf_ssdmobilenetv2_coco_300_300_3.75G/quantized/deploy_model.pb到host/ssd_mobilenet/.
3.編譯tensorflow模型
執(zhí)行./ssdmobilenet_compile_b4096.sh后,就會(huì)得到dpu_ssd_mobilenet_v2_coco_tf.elf
第 四 步:交叉編譯DPU推理代碼
http://github.com/alex0620ee05/Self-checkout-system/tree/main/Vitis-AI/Vitis-AI-Library/overview/demo/tfssd_mobilenet
編譯好的文件tfssdtest.so已經(jīng)在demo/,可以跳過這一步,直接使用提供的文件。
1.設(shè)置主機(jī)
按照Xilinx/Vitis-AI-Library(https://github.com/Xilinx/Vitis-AI/tree/master/Vitis-AI-Library)上的步驟操作
2.交叉編譯
運(yùn)行./build_final.sh,你會(huì)得到一個(gè)編譯后的文件 tfssdtest.so(64位LSB共享對(duì)象,ARM aarch64格式)。
將編譯后的文件復(fù)制到demo/
下一步
第 五 步:在自己板卡上評(píng)估這個(gè)項(xiàng)目
https://github.com/alex0620ee05/Self-checkout-system/tree/main/demo
以下步驟針對(duì)目標(biāo)(ZCU104):
如果所有設(shè)置都完成,將demo/目錄放入/home/root/.
1.修改顯示分辨率
shset_monitor.sh
執(zhí)行自助結(jié)賬系統(tǒng)演示
需要使用sd_card.img在vcu_decode/
帶攝像頭的實(shí)時(shí)結(jié)賬系統(tǒng):
python3DEMO.py-cTrue
帶有視頻源的結(jié)帳系統(tǒng):
python3DEMO.py-v
參考
Xilinx Vitis-AI quantizer & compiler / Xilinx Vitis-Ai-Library :
https://github.com/Xilinx/Vitis-AI
Xilinx Vitis Tutorial :
https://github.com/Xilinx/Vitis-In-Depth-Tutorial/tree/master/Runtime_and_System_Optimization/Design_Tutorials/02-ivas-ml
Checkout So Easy - Real-time Smart Retail System For FPGA :
https://www.hackster.io/maax/checkout-so-easy-real-time-smart-retail-system-for-fpga-468ad8
總結(jié)
上面步驟需要的所有文件都有鏈接,鏈接都是開源的。完整的項(xiàng)目是運(yùn)行在ZCU104官方板卡上,項(xiàng)目的完整鏈接如下:
https://github.com/alex0620ee05
當(dāng)然按照上面的步驟,在自己的開發(fā)板上復(fù)現(xiàn)難度也是不大的~
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
603009 -
解碼器
+關(guān)注
關(guān)注
9文章
1143瀏覽量
40718 -
DPU
+關(guān)注
關(guān)注
0文章
357瀏覽量
24169
原文標(biāo)題:Vitis AI-FPGA實(shí)時(shí)智能零售系統(tǒng)
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論