赞
踩
这些天再通过Vitis Ai 3.0平台来量化yolov5模型的并且部署到zcu102板子上的时候一直遇到检测结果比较离谱的问题,因此想要发个贴请教下大佬们。
首先在虚拟机中应用的相关系统和环境为:
在使用coco和coco128数据集训练ylov5n模型后,我尝试了几种方法在Vitis Ai 3.0上进行量化,然后在ZCU102上部署。量化的结果是满意和合格的,其map也能在在0.3左右,图片检测的结果也比较正常。但是一旦编译完成之后上板测试,检测的结果就有点离谱了,有时定位错误,有时甚至无法探测到目标。例如,下图1sample1来自数据集coco128,部署到板上测试产生的结果如下图sample1_result所示。它的瞄框太离谱了,完全无法使用。
下面是我尝试的几种方法或者测试例子,但无一例外最终上板测试时结果都跟上面一致。
我试过使用文件夹嚛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
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来获得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
编译的命令和上面一致,但是结果仍然离谱。
如果直接用运行train.py产生的best.pt文件,还是上述一致的方法生成xmodel,量化时结果也正常,但上板就寄了。。。
现在感觉量化时calib和test结果都没啥问题,我感觉可能出现问题的环节就是生成xmodel以及编译时,以至于上板结果总是出错。希望有遇到相关问题的大佬能够一起讨论或者帮忙解答,感激不尽。
同时我也发布在了vitis ai官方git的issue下面,欢迎大家评论。
vitis ai github issue 1319
也可以联系我的邮箱:2260376317@qq.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。