当前位置:   article > 正文

通过Vitis Ai 3.0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解!_yolo vitis ai

yolo vitis ai

通过Vitis Ai 3.0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解!

这些天再通过Vitis Ai 3.0平台来量化yolov5模型的并且部署到zcu102板子上的时候一直遇到检测结果比较离谱的问题,因此想要发个贴请教下大佬们。

首先在虚拟机中应用的相关系统和环境为:

  • OS: Ubuntu 20.04.6 Linux System
  • Vitis ai docker images: xilinx/vitis-ai-pytorch-cpu:ubuntu2004-3.0.0.106
  • the model we use is Yolov5_nano(yolov5n_nndct.yaml)
  • the traning code and quantification code are officially downloaded from yolov5

在使用cocococo128数据集训练ylov5n模型后,我尝试了几种方法在Vitis Ai 3.0上进行量化,然后在ZCU102上部署。量化的结果是满意和合格的,其map也能在在0.3左右,图片检测的结果也比较正常。但是一旦编译完成之后上板测试,检测的结果就有点离谱了,有时定位错误,有时甚至无法探测到目标。例如,下图1sample1来自数据集coco128,部署到板上测试产生的结果如下图sample1_result所示。它的瞄框太离谱了,完全无法使用。

sample1sample1_result
下面是我尝试的几种方法或者测试例子,但无一例外最终上板测试时结果都跟上面一致。

量化官方的pt模型

我试过使用文件夹嚛yolov5_nano/float中的yolov5n float.pt来进行量化。在Linux终端vitis ai 3.0环境中中执行的命令是:

 python val.py --data ./data/coco128.yaml --weights ./float/yolov5n_float.pt --batch-size 4 --imgsz 640 --conf-thres 0.5 --iou-thres 0.65 --quant_mode calib --nndct_quant
 python val.py --data ./data/coco128.yaml --weights ./float/yolov5n_float.pt --batch-size 1 --imgsz 640 --conf-thres 0.5 --iou-thres 0.65 --quant_mode test --nndct_quant
 python val.py --data ./data/coco128.yaml --weights ./float/yolov5n_float.pt --batch-size 1 --imgsz 640 --conf-thres 0.5 --iou-thres 0.65 --quant_mode test --nndct_quant --dump_xmodel
  • 1
  • 2
  • 3

calib和test的结果从图片上来看是正常的,并且测试的map也能在0.3左右。但是一旦按照下面的命令编译生成xmodel并部署到zcu102板子上面时,结果就像上面的图片一样了,完全不正常。

vai_c_xir -x ./Model_0_int.xmodel -a /opt/vitis_ai/compiler/arch/DPUCZDX8G/ZCU102/arch.json -o ./ -n model

量化由train.py和export.py导出的模型

我还尝试运行train.py来获得best.pt文件,然后在yolov5文件夹中使用export.py来生成xmodel。在终端中运行的命令是:

python train.py --weights ./float/yolov5n_float.pt --data ./data/coco128.yaml --batch-size 4 --cfg ./models/yolov5n_nndct.yaml --epochs 10 --nndct_quant --hyp ./data/hyps/hyp.scratch-med.yaml --device cpu
python export.py --weights ./runs/train/exp7/weights/best.pt --data ./data/coco128.yaml --batch-size 1 --conf-thres 0.5 --iou-thres 0.65 --include nndct
  • 1
  • 2

编译的命令和上面一致,但是结果仍然离谱。

直接量化train.py产生的模型

如果直接用运行train.py产生的best.pt文件,还是上述一致的方法生成xmodel,量化时结果也正常,但上板就寄了。。。

现在感觉量化时calib和test结果都没啥问题,我感觉可能出现问题的环节就是生成xmodel以及编译时,以至于上板结果总是出错。希望有遇到相关问题的大佬能够一起讨论或者帮忙解答,感激不尽。

同时我也发布在了vitis ai官方git的issue下面,欢迎大家评论。
vitis ai github issue 1319
也可以联系我的邮箱:2260376317@qq.com

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/971232
推荐阅读
相关标签
  

闽ICP备14008679号