
整個(gè)系統(tǒng)是以DPU為核心,在 DPU 上部署對(duì)象檢測(cè)模型實(shí)現(xiàn)實(shí)時(shí)智能檢測(cè),該系統(tǒng)視頻輸入可以來(lái)自 VCU 解碼的視頻或來(lái)自相機(jī)的實(shí)時(shí)視頻圖像。

Checkout So Easy 是本次介紹的項(xiàng)目系統(tǒng)名稱。是在ultrascale+上利用 VCU 和 DPU 實(shí)現(xiàn)的智能零售系統(tǒng)。
Checkout So Easy 有兩種應(yīng)用場(chǎng)景:
將記錄商品的視頻以 mp4 等格式的視頻發(fā)送到系統(tǒng)。借助Checkout So Easy的VCU解碼器進(jìn)行解碼,我們將解碼后的視頻幀送入DPU計(jì)算商品價(jià)格。商品詳情、價(jià)格、圖像檢測(cè)視頻等結(jié)果將顯示在顯示器上。
商品信息是從連接到 FPGA 的攝像頭捕獲的。攝像頭拍攝的圖像將送入DPU計(jì)算商品的結(jié)果,并將詳細(xì)信息顯示在顯示器上。與場(chǎng)景 1 不同的是,監(jiān)視器上的結(jié)果將逐幀記錄。借助 VCU 編碼器,我們可以存儲(chǔ)由幀組成的視頻。當(dāng)一些交易糾紛發(fā)生時(shí),我們可以查看交易的整個(gè)過(guò)程。
https://github.com/alex0620ee05/Self-checkout-system/blob/main/Build_sdcard
構(gòu)建步驟:
1.克隆完整的存儲(chǔ)庫(kù)(包括子倉(cāng)庫(kù))
$?git?clone?--recurse-submodules?$?git?clone?--recurse-submodules?https://github.com/Xilinx/Vitis-In-Depth-Tutorial
$?cd?Vitis-In-Depth-Tutorial/Runtime_and_System_Optimization/Design_Tutorials/02-ivas-ml/
注意:需要安裝 Vitis 補(bǔ)丁:
此設(shè)計(jì)具有較大的 rootfs,并且 Vitis 2020.1 在打包超過(guò) 2GB 的 ext4 分區(qū)的 SD 卡映像時(shí)存在問(wèn)題。此補(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)
$?cd?platform/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 庫(kù)。
$?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)
https://github.com/alex0620ee05/Self-checkout-system/tree/main/set_up_files
本節(jié)以下所有步驟均針對(duì)目標(biāo)(ZCU104板)
將以下文件放入/home/root/目錄:
將以下文件放入 /:
1.update.tar.gz
cd?/home/root/scripts
sh?ext4_auto_resize.sh
以下步驟需要開(kāi)發(fā)板可聯(lián)網(wǎng)(腳本使用wget下載)
cd?/home/root/scripts
sh?update.sh
sh?install_vai.sh
https://github.com/alex0620ee05/Self-checkout-system/tree/main/host
編譯好的文件ssd_mobilenet_v2_coco_tf.elf已經(jīng)在demo/,可以跳過(guò)這一步,直接使用提供的文件。
按照Vitis-AI上的步驟構(gòu)建 docker。
./docker_run.sh?xilinx/vitis-ai-gpu:latest
只下載.pb文件,運(yùn)行sh download_deploy_model.sh即可,此步可以跳過(guò)后面的說(shuō)明。
也可以按照Xilinx/Vitis-AI/AI-Model-Zoo上的說(shuō)明獲取模型。
在我們的項(xiàng)目中,我們使用xilinx_model_sample/tf_ssdmobilenetv2_coco_300_300_3.75G作為我們的對(duì)象檢測(cè)模型。
復(fù)制xilinx_model_sample/tf_ssdmobilenetv2_coco_300_300_3.75G/quantized/deploy_model.pb到host/ssd_mobilenet/.
執(zhí)行./ssdmobilenet_compile_b4096.sh后,就會(huì)得到dpu_ssd_mobilenet_v2_coco_tf.elf
http://github.com/alex0620ee05/Self-checkout-system/tree/main/Vitis-AI/Vitis-AI-Library/overview/demo/tfssd_mobilenet
編譯好的文件tfssdtest.so已經(jīng)在demo/,可以跳過(guò)這一步,直接使用提供的文件。
按照Xilinx/Vitis-AI-Library(https://github.com/Xilinx/Vitis-AI/tree/master/Vitis-AI-Library)上的步驟操作
運(yùn)行./build_final.sh,你會(huì)得到一個(gè)編譯后的文件 tfssdtest.so(64位LSB共享對(duì)象,ARM aarch64格式)。
將編譯后的文件復(fù)制到demo/
下一步
https://github.com/alex0620ee05/Self-checkout-system/tree/main/demo
以下步驟針對(duì)目標(biāo)(ZCU104):
如果所有設(shè)置都完成,將demo/目錄放入/home/root/.
sh?set_monitor.sh
需要使用sd_card.img在vcu_decode/
帶攝像頭的實(shí)時(shí)結(jié)賬系統(tǒng):
python3?DEMO.py?-c?True
帶有視頻源的結(jié)帳系統(tǒng):
python3?DEMO.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
上面步驟需要的所有文件都有鏈接,鏈接都是開(kāi)源的。完整的項(xiàng)目是運(yùn)行在ZCU104官方板卡上,項(xiàng)目的完整鏈接如下:
https://github.com/alex0620ee05
當(dāng)然按照上面的步驟,在自己的開(kāi)發(fā)板上復(fù)現(xiàn)難度也是不大的~
- -THE END- -
往期精選?
?

FPGA技術(shù)江湖廣發(fā)江湖帖
無(wú)廣告純凈模式,給技術(shù)交流一片凈土,從初學(xué)小白到行業(yè)精英業(yè)界大佬等,從軍工領(lǐng)域到民用企業(yè)等,從通信、圖像處理到人工智能等各個(gè)方向應(yīng)有盡有,QQ微信雙選,F(xiàn)PGA技術(shù)江湖打造最純凈最專業(yè)的技術(shù)交流學(xué)習(xí)平臺(tái)。
FPGA技術(shù)江湖微信交流群

加群主微信,備注姓名+公司/學(xué)校+崗位/專業(yè)進(jìn)群
FPGA技術(shù)江湖QQ交流群

備注姓名+公司/學(xué)校+崗位/專業(yè)進(jìn)群
