要使用您自有的模型,您的模型框架应包含在 Vitis AI Library 作用域内。本节为您展示了如何将经过重新训练的 YOLOv3 Caffe 模型部署到基于 Vitis AI Library 的 ZCU102 平台上。
- 从 https://github.com/Xilinx/Vitis-AI 下载对应的 Docker 镜像。
- 加载和运行 Docker。
- 在主机侧创建文件夹,并将浮动模型置于其中,然后使用 Vitis AI 量化器来量化模型。如需了解更多详情,请参阅 Vitis AI 用户指南(UG1414)。
- 使用 Vitis AI 编译器将该模型编译到 xmodel 文件,例如,yolov3_custom.xmodel。如需了解更多信息,请参阅 Vitis AI 用户指南(UG1414)。
- 创建 yolov3_custom.prototxt,如以下片段所示。
model { name: "yolov3_custom" kernel { name: "yolov3_custom" mean: 0.0 mean: 0.0 mean: 0.0 scale: 0.00390625 scale: 0.00390625 scale: 0.00390625 } model_type : YOLOv3 yolo_v3_param { num_classes: 20 anchorCnt: 3 layer_name: "59" layer_name: "67" layer_name: "75" conf_threshold: 0.3 nms_threshold: 0.45 biases: 10 biases: 13 biases: 16 biases: 30 biases: 33 biases: 23 biases: 30 biases: 61 biases: 62 biases: 45 biases: 59 biases: 119 biases: 116 biases: 90 biases: 156 biases: 198 biases: 373 biases: 326 test_mAP: false } }
注释: 仅当使用 Vitis AI Library API_1 时,<model_name>.prototxt 文件才有效。使用 Vitis AI Library API_2 时,程序需手动加载并读取模型参数。欲知详情,请参阅 Vitis-AI/examples/Vitis-AI-Library/samples/dpu_task/yolov3/demo_yolov3.cpp 文件。
- 创建 demo_yolov3.cpp 文件。请参阅 Vitis-AI/examples/Vitis-AI-Library/samples/dpu_task/yolov3/demo_yolov3.cpp 文件获取参考信息。
- 如下所示创建 build.sh 文件,或者从 Vitis AI Library 演示复制该文件并对其进行修改。
#/bin/sh CXX=${CXX:-g++} $CXX -std=c++17 -O3 -I. -o demo_yolov3 demo_yolov3.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lglog -lxnnpp-xnnpp -lvitis_ai_library-model_config -lprotobuf -lvitis_ai_library-dpu_task
- 退出 Docker 工具系统,启动 Docker 运行时系统。
- 对程序进行交叉编译,并生成名为 demo_yolov3 的可执行文件。
sh -x build.sh
- 在目标侧的 /usr/share/vitis_ai_library/models 文件夹内创建模型文件夹。
mkdir yolov3_custom /usr/share/vitis_ai_library/models
注释: /usr/share/vitis_ai_library/models 是用于读取模型的程序的默认位置。您也可以将模型文件夹置于与可执行程序相同的模型文件夹内。 - 将 yolov3_custom.xmodel 和 yolov3_custom.prototxt 文件复制到目标,并将其置于 /usr/share/vitis_ai_library/models/yolov3_custom 位置。
scp yolov3_custom.xmodel yolov3_custom.prototxt root@IP_OF_BOARD:/usr/share/vitis_ai_library/models/yolov3_custom
- 使用 scp 将可执行程序复制到目标开发板。
scp demo_yolov3 root@IP_OF_BOARD:~/
- 在目标开发板上执行程序,以获取如下结果。运行该程序前,请确保目标开发板上已安装 Vitis AI Library,并准备好您要测试的图像。
./demo_yolov3 yolov3_custom sample.jpg