跳转到主要内容

Vitis AI VART自动驾驶应用

judy 提交于

本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/goJhyq4pvKAWaPf3sXLuXg"&gt; 硬码农二毛哥微信公众号</a></span>

Vitis AI提供两种应用例程,VART和Vitis AI Library,下文详细描述了VART中自动驾驶应用的实现过程。

<strong>编译AI模型</strong>
对于DNNDK API和VART API编译AI库的方式相同,

编译yolov3模型

yolov3模型用于自动驾驶。
<pre>$~/Vitis-AI/AI-Model-Zoo/all_models_1.2/caffe
$cp -r dk_yolov3_cityscapes_256_512_0.9_5.46G_1.2/ ../../../Tool-Example/
$cd ~/Vitis-AI
$./docker_run.sh xilinx/vitis-ai:1.2.82
$conda activate vitis-ai-caffe</pre>

生成.dcf文件,修改.json文件,这两步已经完成。

在readme中:

remove parameter "yolo_height" and "yolo_width" in "transform_param" in data layer, like the following 2 lines:yolo_height: 256,yolo_width: 512,删除这两行进行编译。

运行编译指令
<pre>vai_c_caffe -p dk_yolov3_cityscapes_256_512_0.9_5.46G_1.2/quantized/Edge/deploy.prototxt -c dk_yolov3_cityscapes_256_512_0.9_5.46G_1.2/quantized/Edge/deploy.caffemodel -a arch.json -o dk_yolov3_cityscapes_256_512_0.9_5.46G_1.2/output -n yolov3
</pre>
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553714-22…; alt=""></center>

退出docker,将编译生成的dpu_yolov3.elf模型拷贝到sd卡

<strong>编译AI应用</strong>
VART API

VART(Vitis-AI RunTime) API :使用Xilinx Model Zoo中的模型时使用。

<strong>编译VART应用</strong>
安装交叉编译环境

进入https://github.com/Xilinx/Vitis-AI/tree/v1.2/Vitis-AI-Library#quick-sta…,下载sdk-2020.1.0.0sh。
<pre>$mkdir petalinux_sdk
$cd petalinux_sdk
$./sdk-2020.1.0.0.sh</pre>

创建环境变量
<pre>$source ~/petalinux_sdk/environment-setup-aarch64-xilinx-linux</pre>

下载 vitis_ai_2020.1-r1.2.0.tar.gz,并安装
<pre>$tar -xzvf vitis_ai_2020.1-r1.2.x.tar.gz -C ~/petalinux_sdk/sysroots/
aarch64-xilinx-linux</pre>

交叉编译adas_detection
<pre>$cd ~/Vitis-AI/VART/samples/adas_detection
$bash -x build.sh</pre>

编译后生成1个可执行文件:
<img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553714-22…; alt="">

将生成的文件拷贝到sd卡。

下载 Vitis AI Runtime 1.2.0并拷贝到sd卡

下载vitis_ai_runtime_r1.2.x_image_video.tar.gz并拷贝到sd卡

<strong>启动单板</strong>
yolov3文件夹中的内容包括yolov3模型和可执行文件。
<img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553714-22…; alt="">

查看ip,通过ssh访问单板
<pre>$ifconfig</pre>

<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553714-22…; alt=""></center>

启动单板后,先执行init.sh, XRT环境变量
<pre>$cd /mnt/sd_mmcblk1p1
$source ./init.sh</pre>

进入sd_mmcblk1p1目录
<pre>$cd /mnt/sd_mmcblk1p1
$ cp dpu_sw_optimize.tar.gz vitis-ai-runtime-1.2.0.tar.gz vitis_ai_runtime_r1.2.x_image_video.tar.gz ~/</pre>

运行dpu_sw_optimize
<pre>$cd ~
$tar -xzf dpu_sw_optimize.tar.gz
$cd dpu_sw_optimize/zynqmp/
$./zynqmp_dpu_optimize.sh</pre>

安装 Vitis AI Runtime 1.2.0
<pre>tar -xzvf vitis-ai-runtime-1.2.0.tar.gz
cd ~/vitis-ai-runtime-1.2.0/aarch64/centos
rpm -ivh --force libunilog-1.2.0-r10.aarch64.rpm
rpm -ivh --force libxir-1.2.0-r12.aarch64.rpm
rpm -ivh --force libtarget-factory-1.2.0-r10.aarch64.rpm
rpm -ivh --force libvart-1.2.0-r16.aarch64.rpm
rpm -ivh --force libvitis_ai_library-1.2.0-r15.aarch64.rpm</pre>

<strong>运行VART应用</strong>
解压vitis_ai_runtime_r1.2.x_image_video.tar.gz
<pre>mkdir -p ~/Vitis-AI/VART
tar -xzvf vitis_ai_runtime_r1.2.0_image_video.tar.gz -C ~/Vitis-AI/VART</pre>

修改/etc/vart.conf文件
<pre>firmware:/mnt/sd-mmcblk1p1/dpu.xclbin</pre>

拷贝yolov3文件夹到~/Vitis-AI/VART/samples/adas_detection
<pre>cp -r yolov3 ~/Vitis-AI/VART/samples/adas_detection</pre>

将dpu_yolov3.elf名字修改成yolov3_adas_pruned_0_9.elf

设置显示器
<pre>export DISPLAY=:0.0
xrandr --output DP-1 --mode 640x480</pre>

运行例程
<pre> ./adas_detection video/adas.avi yolov3/yolov3_adas_pruned_0_9.elf</pre>

视频图像
<img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553714-22…; alt="">