本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Avnet VITIS的Vitis-AI 1.3 Flow

发布时间:2021-05-21
分享到:

基于Avnet VITIS的Vitis-AI 1.3 Flow

发布时间:2021-05-21
分享到:

原文链接:https://www.hackster.io/AlbertaBeef/vitis-ai-1-3-flow-for-avnet-vitis-platforms-cd0c51

本文将介绍如何下载和安装构建SD卡映像,以及如何在硬件上执行AI应用程序,提供了将Xilinx Vitis-AI 1.3流定位到以下Avnet Vitis 2020.2平台的详细说明:

  • Ultra96-V2开发板
  • UltraZed-EV SOM(7EV)+ FMC运营商卡
  • UltraZed-EG SOM(3EG)+ IO运营商卡

(Ultra96-V2开发板)

(UltraZed-EV SOM(7EV)+ FMC运营商卡)

(UltraZed-EG SOM(3EG)+ IO运营商卡)

硬件部件:

设计概述:

预构建映像的硬件设计框图:

这些设计是使用具有以下DPU配置的Vitis流构建的:

  • u96v2_sbc_base:1 x B2304(低内存使用),200MHz / 400MHz
  • uz7ev_evcc_base:2 x B4096(低内存使用),300MHz / 600MHz
  • uz3eg_iocc_base:1 x B2304(低内存使用),150MHz / 300MHz

预先构建的映像包括以下两个不同配置的编译模型:

  • B2304_LR:B2304 DPU具有较低的RAM使用率
  • B4096_LR:具有低RAM使用率的B4096 DPU

(注意:B4096_LR的配置与Xilinx的ZCU102和ZCU104预制映像上的配置相同)

根据每个平台的资源利用捕获了带DPU和不带DPU的资源利用率:

(u96v2_sbc_base-带DPU(B2304,RAM使用率低))

(u96v2_sbc_base-不带DPU)

(uz7ev_evcc_base-带DPU(2*B4096,RAM使用率低))

(uz7ev_evcc_base-不带DPU)

(uz3eg_iocc_base-带DPU(B2304,RAM使用率低))

(uz3eg_iocc_base-不带DPU)

以资源放置的形式捕获了每个平台使用和不使用DPU的资源利用率,如图所示:

(u96v2_sbc_base-带DPU(B2304,RAM使用率低))

(u96v2_sbc_base-不带DPU)

(uz7ev_evcc_base-带DPU(2*B4096,RAM使用率低))

(uz7ev_evcc_base-不带DPU)

(uz3eg_iocc_base-带DPU(B2304,RAM使用率低))

(uz3eg_iocc_base-不带DPU)

设计步骤:

步骤一、创建SD卡

为以下Avnet平台提供了预构建的SD卡映像:

  • u96v2_sbc_base:Ultra96-V2开发板
  • uz7ev_evcc_base:UltraZed-EV SOM(7EV)+ FMC运营商卡
  • uz3eg_iocc_base:UltraZed-EG SOM(3EG)+ IO运营商卡

需要下载以下预构建的SD卡映像之一:

每个主板特定的SD卡映像均包含:硬件设计(BOOT.BIN,dpu.xclbin)、petalinux映像(boot.scr,image.ub,rootfs.tar.gz),且它以图像(IMG)格式提供,包含两个分区:

  • BOOT – FAT类型的分区(大小= 400MB)
  • ROOTFS – EXT4类型的分区

创建的第一个BOOT分区大小为400MB,其中包含以下文件:

  • 引导程序
  • boot.scr
  • image.ub
  • 初始化文件
  • platform_desc.txt
  • dpu.xclbin
  • arch.json

第二个ROOTFS分区包含rootfs.tar.gz内容,并预先安装了Vitis-AI运行时的软件包,其中有:

  • / home / root / dpu_sw_optimize
  • / home / root / Vitis-AI 
  • 预建的VART样本
  • 预先建立的Vitis-AI-图书馆样本

下载并解压缩后,即可将.img文件编程为16GB的micro SD卡

1、解压缩档案以获得.img文件

2、将主板专用的SD卡映像编程为16GB(或更大)的micro SD卡,在Windows计算机上,使用Balena Etcher或Win32DiskImager(免费的开源软件)

3、在Linux机器上,使用Balena Etcher或使用dd实用程序:

$ sudo dd bs=4M if=Avnet-{platform}-Vitis-AI-1-3-{date}.img of=/dev/sd{X} status=progress conv=fsync

(其中{X}是小写字母,用于指定SD卡的设备。也可以使用“ df -h”来确定哪个设备与您的SD卡相对应)

步骤二:在硬件上执行AI应用程序

一些配置步骤只需要执行一次(第一次启动后),包括以下内容:

  • 使用上一节中创建的micro SD卡引导目标板
  • 引导后,启动dpu_sw_optimize.sh脚本

该脚本将执行以下步骤:

  • 自动调整SD卡的第二个(EXT4)分区大小
  • DDR内存的QoS配置

[可选]禁用dmesg详细输出:

可以使用以下方法重新启用它:

使用dexplorer实用程序验证Vitis-AI运行时。

对于u96v2_sbc和uz3eg_iocc目标,这应与以下输出相对应:

对于uz7ev_evcc目标,它应对应于以下输出:

定义DISPLAY环境变量:

将DP监视器的分辨率更改为较低的分辨率,例如640x480:

启动基于VART的示例应用程序,启动adas_detection应用程序

启动pose_detection应用程序:

启动resnet50应用程序的caffe版本:

启动细分应用程序;

启动video_analysis应用程序:

启动基于Vitis-AI-Library的示例应用程序,使用密集盒模型的两个变体启动face_detect应用程序(将“ 0”指定为第二个参数,以指定USB摄像头)

比较密集盒模型每个变体的性能:

分段和道路检测演示可以在DRM模式或GUI模式下运行。在GUI模式下,演示将使用火柴盒,该火柴盒一次仅显示一个窗口,但可在GUI中选择。在DRM模式下,火柴盒将被禁用,并且输出将直接发送到DRM驱动程序。

注:segs_and_roadline演示需要更高的分辨率(1920x1080),这会在Ultra96-V2上产生明显的闪烁。

在GUI模式下运行分段和道路检测演示

可以从GUI中选择可见的输出,如下所示:

在DRM模式下运行分段和道路检测演示:

分割和姿势估计演示可以在DRM模式或GUI模式下运行。在GUI模式下,演示将使用火柴盒,该火柴盒一次仅显示一个窗口,但可在GUI中选择。在DRM模式下,火柴盒将被禁用,并且输出将直接发送到DRM驱动程序。

注:seg_and_pose_detect演示需要更高的分辨率(1920x1080),这会在Ultra96-V2上产生明显的闪烁。

在两个视频文件下以GUI模式运行分割和姿势估计演示

在GUI模式下使用视频文件和USB摄像头运行分割和姿势估计演示:

在两个视频文件下以DRM模式运行分割和姿势估计演示:

在DRM模式下使用视频文件和USB摄像头运行分割和姿势估计演示:

步骤三、修改示例

参考项目一:Ultra96-V2的头姿势估计

该项目描述了如何使用Xilinx模型动物园中的预构建模型来实现面部识别:

  • 人脸检测:densitybox_640_360
  • 脸标志检测:facelandmark

参考项目二:Vitis-AI识别车牌

该项目描述了如何使用Xilinx模型动物园中的预构建模型来实现车牌识别:

  • 车辆检测:ssd_traffic
  • 车牌检测:platedetect
  • 车牌号码识别:platenum

问题解决:

问题一、安装的python API无法正常工作

Vitis-AI 1.3运行时软件包中预装的python API无法正常工作

此问题的原因是存在旧的python API

Vitis-AI 1.3需要以下文件,并且需要保留以下文件:

以下文件适用于Vitis-AI 1.2,必须将其删除:

可以使用以下命令完成此操作:

问题二、将e-Con USB3相机与Ultra96-V2一起使用

对于某些USB3相机(例如下面列出的相机),Ultra96-V2将出现问题:

解决方案:通过USB2集线器/扩展器将它们连接到USB2模式

问题三、Ultra96-V2 PMIC固件更新

对于Ultra96-V2开发板,需要运行重要的PMIC固件更新才能运行所有AI应用程序。

如果不更新PMIC固件,则以下AI应用程序将导致周期性的峰值电流超过默认的4A故障阈值,从而使上电复位有效,从而使电路板重新启动。

  • adas_detection
  • inception_v1_mt
  • resnet50_mt
  • 分割
  • video_analysis

PMIC固件更新会增加此故障阈值,并防止重新启动。

为了更新Ultra96-V2开发板的PMIC固件,请参考《 Ultra96-V2入门指南》:

问题四、某些SSD型号缺少{model} _officialcfg.prototxt文件

在u96v2_sbc_base和uz3eg_iocc_base的预构建SD卡映像中,缺少一些{model} _officialcfg.prototxt文件:

遗漏的原因:compile_modelzoo.sh不在存在时,从zcu102 / zcu104预先构建的归档文件中复制{model} _officialcfg.prototxt(点击查看

缺少的文件作为存档提供,以便与现有的预构建SD卡映像一起使用,需要安装,请复制到SD卡映像,然后运行以下命令:

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论