在Vitis AI设计中,构建模型是其中非常重要的一步。如果使用调用的模型库呢?
获取DPU Kernel
- 下载Vitis AI
git clone https://github.com/Xilinx/Vitis-AI.git
git checkout v1.2
修改DPU配置文件
将Vitis-AI中的DPU-TRD文件夹拷贝到工程目录中,DPU-TRD文件夹中修改dpu_conf.vh和prj_config。
- 将dpu_conf.vh中做如下修改:
$cd DPU-TRD/prj/Vitis/
$vim dpu_conf.vh
//`define B4096
`define B1024
- 修改prj_config文件:
$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
- 生成.xo文件
make binary_container_1/dpu.xo DEVICE=fzu3_custom
编译模型
- 下载模型
$cd Vitis-AI/AI-Model-Zoo
$source ./get_model.sh
下载文件all_models_1.2.zip,解压模型
$unzip all_models_1.2.zip
- 运行docker
$cd Vitis-AI
$./docker_run.sh xilinx/vitis-ai:1.2.82
$conda activate vitis-ai-caffe
进入Tool-Example文件夹,新建modelzoo文件夹,将system.hwh拷贝到modelzoo。
$cd Tool-Example
$mkdir modelzoo
$cd modelzoo
$cp ../system.hwh ./
- 生成.dcf文件
$dlet -f system.hwh
- 修改.json文件
将arch.json文件拷贝到modelzoo。
Caffe
- 创建编译脚本
新建编译输出文件夹compiled_output,新建脚本文件complie_cf_model.sh,内容如下:
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'}"
- 运行编译脚本
resnet50
source ./compile_cf_model.sh resnet50 cf_resnet50_imagenet_244_244_7.7G_1.2
densebox
source ./compile_cf_model.sh densebox cf_densebox_wider_360_640_1.11G_1.2
- 退出docker
Vitis编译
- 将生成的.elf文件拷贝到vitis工程中
- 重新编译vitis工程,生成包含网络模型的可执行文件。
本文由博客一文多发平台 OpenWrite 发布!