Yolov4部署到ZYNQ系列3-模型转换、量化和编译

文章目录

  • 前言
  • 一、模型转换
  • 二、量化和编译环境部署
    • 1. docker环境的反复试探和安装失败的原因
    • 2. 虚拟机上安装docker环境
  • 三、量化和编译
  • 总结


前言

本文参照上一节的工作,使用Vitis AI-1.4与Vitis-AI 2.5的工具来做量化和编译。
本次项目目前尚未做到对量化后模型进行测试,不过已经做了相关的数据集准备,只是由于时间紧张,测试结果并没有如预期那样,不由得怀疑是源码出了一些问题。后续会贴出来!
本次使用上一节得到的模型进行模型转换、量化和编译。


一、模型转换

将上一节得到的/backup/yolov4-custom-nomish_best.weights使用如下几个链接完成任务:

Vitis AI-1.4文件:https://github.com/Xilinx/Vitis-AI-Tutorials/tree/1.4/Design_Tutorials/07-yolov4-tutorial/scripts/convert_yolov4.py
转Keras、Tensorflow框架模型文件:https://github.com/david8862/keras-YOLOv3-model-set

参照给出的convert_yolov4.py文件修改、存放部分内容,运行该.py文件即可经过两次转换后得到模型结果。

二、量化和编译环境部署

1. docker环境的反复试探和安装失败的原因

本来放在云服务器上使用

https://github.com/Xilinx/Vitis-AI

给出的文件进行安装,后来发现在gpushare上无法安装docker,理由其实追根朔源下去,会发现无法成功安装的原因是gpushare上缺了需要OS内核编译的ip_tables模块,导致哪怕用了modprobe模块导入工具都不会成功。另外,想试着安装docker的朋友也不建议在win10子带linux子系统上安装,还是不会成功的,这条路我趟过了。我的方法是在虚拟机上安装。虚拟机上用ubuntu18.04可以安装成功。

2. 虚拟机上安装docker环境

有了ubuntu18.04以后使用如下步骤安装dokcer
首先,看看是否已经装了docker,使用

docker -v   # 查看docker版本

随后设置仓库

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common # 安装apt依赖包,用于通过https来获取仓库
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - #添加docker的官方gpg密钥
密钥为9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

随后设置稳定版仓库

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

之后进入安装环节

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
docker -v
sudo docker run hello-world

三、量化和编译

关于Vitis-AI 2.5需要参照手册把OS交叉编译环境安装好。

https://docs.xilinx.com/r/en-US/ug1414-vitis-ai

随后直接

docker pull xilinx/vitis-ai-cpu:latest

打开

vitis_ai_tensorflow

随后我们利用

scripts/quantize_yolov4.sh
scripts/compile_yolov4.sh

分别做量化和编译
Yolov4部署到ZYNQ系列3-模型转换、量化和编译_第1张图片

围绕Vitis-AI开发流程:
1、通过前述Darknet得到的.weights权重模型,或者Pytorch得到的.pt模型(该模型所含参数远远多于平常.pt模型,为适应部署,仅需提取ckpt[model]转化为float32并以save_dict保存),可以通过模型转换工具转变为keras框架下的.h5文件,随后再转变为tensorflow框架下的.pb文件。
2、量化采用docker下的vitis-ai-tensorflow环境中的vai_q_tensorflow量化器,通过input_fn.py.pb模型文件依次经过calibtestgenerate得到deploy_model.pb文件,其中calib需要做PTSQ(训练后静态量化)和QAT(感知量化),test用于评估,generate用于产生.pb压缩后模型文件。
3、编译采用DPUCZDX8GZCU102架构ip,也就是arch.json文件(加密)与.pb文件经过vitis_c_tensorflow编译器得到.xmodel文件,确定PL侧和PS侧分配。
4、部署基于Vitis-AI-Library,使用Yolov4的测试文件加载.xmodel模型运行到ZYNQ Ultrascale+MPSOC上。


总结

本文介绍了模型转换工具使用流程,量化和编译的环境部署和实现。

你可能感兴趣的:(Yolov4与ZYNQ,docker,容器,运维)