本帖最后由 一代睡神的崛起 于 2024-7-17 15:40 编辑
一、分析电气属性选择端侧模型
首先在安富利给出的AMD ZU+ MPSoC ZU1CG官方文档中可以看出,SoC具备双核Cortex-A53的CPU以及双核Cortex-R5F处理器。对于一般的控制任务功能就非常冗余了,笔者之所以选择在这这颗芯上去运行端侧视觉模型,CPU的处理能力虽然也是重要的一环,但ZU1CG上具备的81K逻辑处理单元才是本次端侧上发挥出色的重要承担者。
feature
毕竟是边缘端的图形计算嘛,运行的模型肯定是量化后的轻量级模型。因为笔者这边工作环境有限,并没有来得及下载FPGAs_AdaptiveSoCs_Unified开发平台,就引用了petalinux系统安装自带的应用处理包,经过前期的一些测试结果观察下来,最终选用了较为合适的tfssd-MobileNetv2进行测试分析。首先我们需要分析一下这个端侧模型的网络结构,通过查询在对应的目录下找到该模型,如下图所示:
pwd
然后通过ssh把该模型download到windows端使用Netron工具打开,可以看到模型的输入为格式为batch=1,channel=3,hight=300,weight=300,模型的tensor处理数据为量化后的int8类型。根据结构块的计算,使用的算力要求大概在15GFlops左右,对于端侧来说简直就是一个福音。从这个模型处理方式来看不得不佩服Xilinx的思维能力。玩过OpenCL的人都知道,要使用特定的计算设备时候,通常都是CPU把复杂矩阵且需要并行处理的数据上传到device上面去做计算,等待device把所有的计算数据处理完之后,再下载到CPU上实现结果的发布,但是这一切都是通过OpenCL软件来操作的,但是Xilinx另辟蹊径,借鉴了这个思路把他直接应用在模型上,使得CPU在接受处理图形计算数据的时候直接可以上传到DPU上,同理在图算子完成计算的时候直接又可以从DPU上下载结果,大大降低了CPU的资源浪费。具体模型结构我就不在讲解了,有兴趣的可以去自行搜索
input
两侧数据输出:
out
output
二、运行demo程序
首先我们进入到demo程序的源代码目录/home/root/Vitis-AI/examples/vai_library/samples/tfssd ,执行./build.sh进行编译。等待编译完成后可以验证了,如果当前目录下存在视频文件./test_video_tfssd ssdlite_mobilenet_v2_coco_tf /home/root/download/xxxx.mp4 如果使用usb摄像头 ./test_video_tfssd ssdlite_mobilenet_v2_coco_tf /dev/video0(这里video0是摄像头的设备号,可能不同,大概率都是dev0)进行演示。因为程序案例里面并没有把对应的label标签写入,因此演示视频中只有画框并没有对应的分类标签,这时需要再源程序里面加入对应的coco数据集标签,如下图所示:
code
然后重新编译./build,再次运行就能看到正确的分类演示结果了。对应的视频和模型整个网络结构块图都放在附件压缩包里面了,有需要可以进行下载查看,本次评测就到此结束。
|