整個系統是以DPU為核心,在 DPU 上部署對象檢測模型實現實時智能檢測,該系統視頻輸入可以來自 VCU 解碼的視頻或來自相機的實時視頻圖像。
介紹
Checkout So Easy 是本次介紹的項目系統名稱。是在ultrascale+上利用 VCU 和 DPU 實現的智能零售系統。
Checkout So Easy 有兩種應用場景:
1.Checkout So Easy充當云端
將記錄商品的視頻以 mp4 等格式的視頻發送到系統。借助Checkout So Easy的VCU解碼器進行解碼,我們將解碼后的視頻幀送入DPU計算商品價格。商品詳情、價格、圖像檢測視頻等結果將顯示在顯示器上。
Checkout So Easy 發揮優勢
商品信息是從連接到 FPGA 的攝像頭捕獲的。攝像頭拍攝的圖像將送入DPU計算商品的結果,并將詳細信息顯示在顯示器上。與場景 1 不同的是,監視器上的結果將逐幀記錄。借助 VCU 編碼器,我們可以存儲由幀組成的視頻。當一些交易糾紛發生時,我們可以查看交易的整個過程。
演示視頻
如何重新創建此項目
第 一 步:構建和設置 FPGA 板的環境
https://github.com/alex0620ee05/Self-checkout-system/blob/main/Build_sdcard
構建步驟:
1.克隆完整的存儲庫(包括子倉庫)
$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 補丁:
此設計具有較大的 rootfs,并且 Vitis 2020.1 在打包超過 2GB 的 ext4 分區的 SD 卡映像時存在問題。此補丁更改了打包流程,將初始 rootfs 大小四舍五入為 ext4 分區512MB大小的第一個完整倍數。安裝它:
$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.搭建硬件平臺
$cdplatform/dev/zcu104_vcu $make
petalinux-config kernel、petalinux-build、petalinux-build --sdk時可能會出現錯誤。此時應該正確修改platform/dev/zcu104_vcu 和 platform/dev/zcu104_vcu/petalinux中的Makefile并重新執行出錯的命令make 。
4.構建Vitis設計(添加DPU ip)
必須一次且僅一次,將 hw_src 目錄中的補丁應用到 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/.
或者,可以下載預構建的sd_card.img(https://github.com/alex0620ee05/Self-checkout-system/tree/main/prebuilt/sd_card_image)
第二步:為 Vitis AI 庫 v1.2 準備 SD 卡
https://github.com/alex0620ee05/Self-checkout-system/tree/main/set_up_files
本節以下所有步驟均針對目標(ZCU104板)
將以下文件放入/home/root/目錄:
jsons/
scripts/
test_data/
.bashrc
debug.ini
將以下文件放入 /:
1.update.tar.gz
調整 rootfs 的大小:
cd/home/root/scripts shext4_auto_resize.sh
2.安裝依賴和Vitis AI v1.2庫
以下步驟需要開發板可聯網(腳本使用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已經在demo/,可以跳過這一步,直接使用提供的文件。
1.搭建Vitis-AI環境
按照Vitis-AI上的步驟構建 docker。
./docker_run.shxilinx/vitis-ai-gpu:latest
2.從Xilinx AI model zoo下載tensorflow模型
只下載.pb文件,運行sh download_deploy_model.sh即可,此步可以跳過后面的說明。
也可以按照Xilinx/Vitis-AI/AI-Model-Zoo上的說明獲取模型。
在我們的項目中,我們使用xilinx_model_sample/tf_ssdmobilenetv2_coco_300_300_3.75G作為我們的對象檢測模型。
復制xilinx_model_sample/tf_ssdmobilenetv2_coco_300_300_3.75G/quantized/deploy_model.pb到host/ssd_mobilenet/.
3.編譯tensorflow模型
執行./ssdmobilenet_compile_b4096.sh后,就會得到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已經在demo/,可以跳過這一步,直接使用提供的文件。
1.設置主機
按照Xilinx/Vitis-AI-Library(https://github.com/Xilinx/Vitis-AI/tree/master/Vitis-AI-Library)上的步驟操作
2.交叉編譯
運行./build_final.sh,你會得到一個編譯后的文件 tfssdtest.so(64位LSB共享對象,ARM aarch64格式)。
將編譯后的文件復制到demo/
下一步
第 五 步:在自己板卡上評估這個項目
https://github.com/alex0620ee05/Self-checkout-system/tree/main/demo
以下步驟針對目標(ZCU104):
如果所有設置都完成,將demo/目錄放入/home/root/.
1.修改顯示分辨率
shset_monitor.sh
執行自助結賬系統演示
需要使用sd_card.img在vcu_decode/
帶攝像頭的實時結賬系統:
python3DEMO.py-cTrue
帶有視頻源的結帳系統:
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
總結
上面步驟需要的所有文件都有鏈接,鏈接都是開源的。完整的項目是運行在ZCU104官方板卡上,項目的完整鏈接如下:
https://github.com/alex0620ee05
當然按照上面的步驟,在自己的開發板上復現難度也是不大的~
審核編輯:劉清
-
FPGA
+關注
關注
1626文章
21675瀏覽量
601955 -
解碼器
+關注
關注
9文章
1131瀏覽量
40683 -
DPU
+關注
關注
0文章
354瀏覽量
24133
原文標題:Vitis AI-FPGA實時智能零售系統
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論