跳转到主要内容

Vitis AI library中的模型在自定义单板使用

judy 提交于

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

在Vitis AI设计中,构建模型是其中非常重要的一步。如果使用调用的模型库呢?

<strong>获取DPU Kernel</strong>

下载Vitis AI
<pre>git clone https://github.com/Xilinx/Vitis-AI.git
git checkout v1.2</pre>

<strong>修改DPU配置文件</strong>
将Vitis-AI中的DPU-TRD文件夹拷贝到工程目录中,DPU-TRD文件夹中修改dpu_conf.vh和prj_config。

将dpu_conf.vh中做如下修改:
<pre>$cd DPU-TRD/prj/Vitis/
$vim dpu_conf.vh
//`define B4096
`define B1024</pre>

<center><img src="" alt=""></center>

修改prj_config文件:
<center><img src="" alt=""></center>

<pre>$cd DPU-TRD/prj/Vitis/config_file
$vim prj_config
[clock]

id=0:DPUCZDX8G_1.aclk
id=1:DPUCZDX8G_1.ap_clk_2

[connectivity]

sp=DPUCZDX8G_1.M_AXI_GP0:HPC0
sp=DPUCZDX8G_1.M_AXI_HP0:HP0
sp=DPUCZDX8G_1.M_AXI_HP2:HP1

[advanced]
misc=:solution_name=link

[vivado]
prop=run.impl_1.strategy=Performance_Explore
#param=place.runPartPlacer=0</pre>

生成.xo文件
<pre>make binary_container_1/dpu.xo DEVICE=fzu3_custom</pre>

<strong>编译模型</strong>

下载模型
<pre>$cd Vitis-AI/AI-Model-Zoo
$source ./get_model.sh</pre>

下载文件all_models_1.2.zip,解压模型
<pre>$unzip all_models_1.2.zip</pre>

运行docker
<pre>$cd Vitis-AI
$./docker_run.sh xilinx/vitis-ai:1.2.82
$conda activate vitis-ai-caffe</pre>

<center><img src="" alt=""></center>

进入Tool-Example文件夹,新建modelzoo文件夹,将system.hwh拷贝到modelzoo。
<pre>$cd Tool-Example
$mkdir modelzoo
$cd modelzoo
$cp ../system.hwh ./</pre>

生成.dcf文件
<pre>$dlet -f system.hwh</pre>

修改.json文件

将arch.json文件拷贝到modelzoo。

<strong>Caffe</strong>

创建编译脚本

新建编译输出文件夹compiled_output,新建脚本文件complie_cf_model.sh,内容如下:
<pre>model_name=$1
modelzoo_name=$2
vai_c_caffe \
--prototxt ../../AI-Model-Zoo/all_models_1.2/caffe/${modelzoo_name}/quantized/Edge/deploy.prototxt \
--caffemodel ../../AI-Model-Zoo/all_models_1.2/caffe/${modelzoo_name}/quantized/Edge/deploy.caffemodel \
--arch ./arch.json \
--output_dir ./compiled_output/${modelzoo_name} \
--net_name ${model_name} \
--options "{'mode': 'normal'}"</pre>

运行编译脚本

resnet50
<pre>source ./compile_cf_model.sh resnet50 cf_resnet50_imagenet_244_244_7.7G_1.2</pre>

densebox
<pre>source ./compile_cf_model.sh densebox cf_densebox_wider_360_640_1.11G_1.2</pre>

退出docker

<strong>Vitis编译</strong>
<li>将生成的.elf文件拷贝到vitis工程中</li>
<li>重新编译vitis工程,生成包含网络模型的可执行文件。</li>