在ultrascale+上利用VCU和DPU实现的智能零售系统

整个系统是以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.克隆完整的存储库(包括子仓库)
$ 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 补丁:
此设计具有较大的 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.搭建硬件平台
$ cd platform/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/scriptssh ext4_auto_resize.sh  
2.安装依赖和vitis ai v1.2库
以下步骤需要开发板可联网(脚本使用wget下载)
cd /home/root/scriptssh update.shsh install_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.sh xilinx/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.修改显示分辨率
sh set_monitor.sh  
执行自助结账系统演示
需要使用sd_card.img在vcu_decode/
带摄像头的实时结账系统:
python3 demo.py -c true  
带有视频源的结帐系统:
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
总结
上面步骤需要的所有文件都有链接,链接都是开源的。完整的项目是运行在zcu104官方板卡上,项目的完整链接如下:
https://github.com/alex0620ee05
当然按照上面的步骤,在自己的开发板上复现难度也是不大的~


磷酸铁锂电池版特斯拉Model 3,上海日常开一公里要4毛钱
12v延时关闭电路图大全(可控硅/晶闸管/触摸延时开关电路详解)
II-VI公司的2021财年第二季度财务业绩实现了创纪录的销售收入
Delta-Sigma ADC如何实现高分辨率转换?
超级电容器的分类介绍
在ultrascale+上利用VCU和DPU实现的智能零售系统
led数字标牌已成为公共场所重要信息传播工具
隔离变压器安全吗
诺基亚携手NASA宣布将4G无线网络带到月球
Q3:苹果Mac收入同比增长50%
ARM SMMU Data structures概述
2018年将成为中国储能市场的“大热元年”各地布局储能项目的侧重方向也不尽相同
智能工厂进入快速成长期 预估2022年市场规模可达2,054.2亿美元
消息称IBM可能出售IBM Watson Health业务 专注于云计算业务
大联大推出基于高通IPQ5018芯片的多频WiFi路由器方案
招投标资讯|翁源产业园区产城融合基础设施配套项目
RGMII PCB设计注意事项
半导体器件制造过程中的清洗技术
华为P30将大规模采用三星的AMOLED屏幕
双向触发二极管的基础知识