基于Vitis AI的ADAS目标识别

一、基础知识 (一)vitis™ ai开发环境 vitis™ ai开发环境可在赛灵思硬件平台上加速 ai 推断,包括边缘器件和 alveo™ 加速器卡。此环境由经过最优化的 ip 核、工具、库、模型和设计示例组成。其设计以高效和易用为核心,旨在通过赛灵思 soc 和自适应计算加速平台 (acap) 来充分发掘 ai 加速的全部潜能。vitis ai 开发环境将底层可编程逻辑的繁复细节加以抽象化,从而帮助不具备 fpga 知识的用户轻松开发深度学习推断应用。
(二)vitis ai model zoo vitis ai 有个很有重要的工具:vitis ai model zoo,类似于vitis ai的模型商城。
vitis ai model zoo 包含经过最优化的深度学习模型,可在赛灵思平台上加速部署深度学习推断。这些模型涵盖了不同的应用,包括 adas/ad、视频监控机器人学和数据中心等。用户可从这些经过预训练的模型开始着手,享受深度学习加速所带来的诸多利益。
(三)adas 高级驾驶辅助系统(advanced driving assistance system)是利用安装在车上的各式各样传感器(毫米波雷达、激光雷达、单双目摄像头以及卫星导航),在汽车行驶过程中随时来感应周围的环境,收集数据,进行静态、动态物体的辨识、侦测与追踪,并结合导航地图数据,进行系统的运算与分析,从而预先让驾驶者察觉到可能发生的危险,有效增加汽车驾驶的舒适性和安全性。 近年来adas市场增长迅速,原来这类系统局限于高端市场,而现在正在进入中端市场,与此同时,许多低技术应用在入门级乘用车领域更加常见,经过改进的新型传感器技术也在为系统布署创造新的机会与策略。
二、环境搭建 vitis ai 库有两种安装方法。一种是通过配置 petalinux 来重构系统,另一种则是在线安装 vitis ai 库,安装 vitis-ai 库后,再安装 vitis-ai 从属库。
(一)系统下载&安装 petalinux 以前没玩过,那就体验一把。先从官网下载petalinux系统镜像(https://china.xilinx.com/member/forms/download/design-license-xef.html?filename=xilinx-kv260-dpu-v2022.2-v3.0.0.img.gz),注意先注册amd账号,然后填写一些信息才能注册成功,压缩文件有3.3g,解压后的文件8.8g。
注意文件命名,vitis ai 版本为v3.0.0,此处有个坑,后续遇到再说。img文件烧录tf卡后上电,petalinux 就这样:
root@xilinx-kv260-starterkit-20222:~/vitis-ai# uname -alinux xilinx-kv260-starterkit-20222 5.15.36-xilinx-v2022.2 #1 smp mon oct 3 07:50:07 utc 2022 aarch64 aarch64 aarch64 gnu/root@xilinx-kv260-starterkit-20222:~/vitis-ai# 映入眼帘的就是2个文件夹,包括鼎鼎大名的vitis-ai :
接下来将在这个文件夹中玩的不亦乐乎。
(二)准备图像包 在官方链接(https://china.xilinx.com/bin/public/opendownload?filename=vitis_ai_runtime_r3.0.0_image_video.tar.gz)下载`vitis_ai_runtime_r3.0.0_image_video.tar.gz,其中包括demo需要的图像和视频文件,下载后解压备用。
三、adas目标识别 vitis ai 提供l了许多实例,其中包括一个adas目标识别的demo,在vitis-ai/examples/vai_runtime/adas_detection中,可执行cpp程序已经编译好,可以直接执行。
在执行demo之前,先看看readme。
before running the program, please download the corresponding model and install it.the model required by this sample is: yolov3_adas_pruned_0_9you can find the detailed informantion of this model under vitis-ai/models/ai-model-zoo/model-list/dk_yolov3_cityscapes_256_512_0.9_5.46g_1.3/model.yamlin the model.yaml, you will find the model's download links for different platforms.please choose the corresponding model and download it.take zcu102/zcu104 as an example, execute the following commands to download and install the model. wget https://www.xilinx.com/bin/public/opendownload?filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r2.5.0.tar.gz -o yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r2.5.0.tar.gz mkdir -p /usr/share/vitis_ai_library/models tar -xzvf yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r2.5.0.tar.gz cp yolov3_adas_pruned_0_9 /usr/share/vitis_ai_library/models -r 把非kv260的内容截掉了,readme基本上就是告诉用户,去vitis ai model zoo下载相应的model并安装。
那就照着guideline开动,将之前图形包中的adas.webm文件拷贝至当前目录,然后执行./adas_detection adas.webm /usr/share/vitis_ai_library/models/yolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.xmodel,嗯,出错了:
**注意,坑来了!**系统提示please re-compile xmodel是不是?要不去重编xmodel?仔细看看问题,原来是系统是vitis ai v3.0,xmodel却是v2.5,导致check fingerprint fail,直接去vitis ai model zoo下载个v3.0的xmodel就好了,说干就干!
root@xilinx-kv260-starterkit-20222:~/vitis-ai/examples/vai_runtime/adas_detection# wget https://www.xilinx.com/bin/public/opendownload?filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz -o yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz--2023-09-27 06:52:41-- https://www.xilinx.com/bin/public/opendownload?filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gzresolving www.xilinx.com... 223.119.248.58, 223.119.248.90connecting to www.xilinx.com|223.119.248.58|:443... connected.http request sent, awaiting response... 302 moved temporarilylocation: https://xilinx-ax-dl.entitlenow.com/dl/ul/2023/01/06/r210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=pjrrj06twqmoh_m1gkvgxw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz [following]--2023-09-27 06:52:41-- https://xilinx-ax-dl.entitlenow.com/dl/ul/2023/01/06/r210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=pjrrj06twqmoh_m1gkvgxw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gzresolving xilinx-ax-dl.entitlenow.com... 223.119.244.25connecting to xilinx-ax-dl.entitlenow.com|223.119.244.25|:443... connected.http request sent, awaiting response... 302 moved temporarilylocation: https://amd-ax-dlf.entitlenow.com/dl/ul/2023/01/06/r210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=pjrrj06twqmoh_m1gkvgxw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz [following]--2023-09-27 06:52:45-- https://amd-ax-dlf.entitlenow.com/dl/ul/2023/01/06/r210771244/yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz?hash=pjrrj06twqmoh_m1gkvgxw&expires=1695855161&filename=yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gzresolving amd-ax-dlf.entitlenow.com... 223.119.248.34, 223.119.248.40, 2402:4f00:4002:400::df77:f828, ...connecting to amd-ax-dlf.entitlenow.com|223.119.248.34|:443... connected.http request sent, awaiting response... 200 oklength: 1875420 (1.8m) [application/octet-stream]saving to: 'yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz'yolov3_adas_pruned_0_9-zcu102_ 100%[================================================== >] 1.79m 1.54mb/s in 1.2s2023-09-27 06:52:50 (1.54 mb/s) - 'yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gz' saved [1875420/1875420]root@xilinx-kv260-starterkit-20222:~/vitis-ai/examples/vai_runtime/adas_detection# 再次执行以下命令:
root@xilinx-kv260-starterkit-20222:~/vitis-ai/examples/vai_runtime/adas_detection# tar -xzvf yolov3_adas_pruned_0_9-zcu102_zcu104_kv260-r3.0.0.tar.gzyolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9/meta.jsonyolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.xmodelyolov3_adas_pruned_0_9/md5sum.txtyolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.prototxtyolov3_adas_pruned_0_9_acc/yolov3_adas_pruned_0_9_acc/yolov3_adas_pruned_0_9_acc.prototxtyolov3_adas_pruned_0_9_acc/yolov3_adas_pruned_0_9_acc.xmodelroot@xilinx-kv260-starterkit-20222:~/vitis-ai/examples/vai_runtime/adas_detection# cp yolov3_adas_pruned_0_9 /usr/share/vitis_ai_library/models -r 四、adas目标识别体验 (一)目标识别 接上hdmi显示器、键盘&鼠标,在kv260上执行(如果在ssh或串口上执行会提示cv::exception):
`./adas_detection video/adas.webm /usr/share/vitis_ai_library/models/yolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.xmodel` 视频在最后,可以看出识别的准确性和实时性都不错,fps保持在40左右。
(二)dashboard监测 kv260在petalinux上提供了一个hardware platform statistics页面,挺有意思的,用于展示系统硬件资源实时消耗情况。监控的内容包括cpu消耗、内存空闲和消耗、电压、温度…
下面是一张执行adas目标识别后cpu使用情况,可以看出cpu使用率一下子拉升了,a53的资源还是紧张了点,要是a72就好了。
最后 马上中秋&国庆来了,终于在节前把第三篇作业完成,祝各位节日快乐!


小米mix2什么时候上市 小米mix2价格是多少?
如何用常用的耐压绝缘测试测量AC/DC转换器隔离电压
中国互联网行业错失一个超级大BOSS平台,该高兴还是该懊悔呢?
微软推出一系列MagSafe游戏配件
基于单/双核Zynq的GigaExpress SBC PCIe卡
基于Vitis AI的ADAS目标识别
高通摊上大事,被台湾罚款51亿,估计只是说说而已
【节能学院】用电预付费系统在工业园区物业管理中的应用
晶体知识:位错的基本类型和特征
基于SiC功率模块的高效逆变器设计方案
新型柔性传感器可精准识别语音
GPU加速的建筑设计3D可视化
MRAM进驻MCU 28nm下将无闪存
世界十大智能家居品牌排行榜
使用泰克TDS3000C系列示波器调试电路
煤矿行业红外热像仪主要用在哪些场景
数码相机电池充电和放电需要注意的地方
电子合同在线签定模拟实验
定义2021年安卓旗舰,骁龙888助力小米11冲击高端市场
数字万用表如何测电流