栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

yolov5量化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

yolov5量化

量化过程:

        模型提取:onnx

        模型转化:ncnn

        int8量化

一、环境

shufflev2-yolov5的源码和权重 地址链接:https://github.com/ppogg/shufflev2-yolov5

ncnn部署:Linux环境下ncnn安装+protobuf+opencv_zhangxue1232的博客-CSDN博客

二、onnx模型提取

cd /home/ding/zhangxue/YOLOv5-Lite/YOLOv5-Lite/
#将.pt文件用onnx转化为.onnx文件
python models/export.py --weights weights/v5lite-s.pt --img 640 --batch 1 
#onnxsim 精简模型
python -m onnxsim weight/v5lite-s.onnx weight/yolov5-lite-sim.onnx

 三、转化为ncnn模型

cd /home/ding/zhangxue/YOLOv5-Lite/ncnn-master/build/tools/onnx/
 ./onnx2ncnn yolov5-lite-sim.onnx yolov5ss.param yolov5ss.bin

把yolov5-lite-sim.onnx模型复制到ncnn-master/build/tools/onnx/路径下

yolov5ss.bin和yolov5ss.param是新得到的

cd /home/ding/下载/ncnn-master/build/tools/

把刚才生成的yolov5ss.bin和yolov5ss.param复制到该路径下

新生成yolov5-lite-opt.bin和yolov5-lite-opt.param

为了实现动态尺寸图片处理,需要对yolov5ss-opt.param的reshape操作进行修改:

把以上三处reshape的尺度统统改成-1:

四、处理修改

ncnn官方的yolov5.cpp需要修改两处地方

anchor信息是在 models/yolov5ss-1.0.yaml,需要根据自己的数据集聚类后的anchor进行对应的修改:

 

修改以下部分,修改三处对应于permute的三处

 

 

五、Int8量化

  • 校验表数据集请使用coco_val那5000张数据集;

  • mean和val的数值需要和原先自己训练模型时候设定的数值保持一致,在yolov5ss.cpp里也需要保持一致;

/ncnn-master/build/tools/quantize/ 

find images/ -type f > imagelist.txt
./ncnn2table yolov5ss-opt.param yolov5ss-opt.bin imagelist.txt yolov5ss.table mean=[104,117,123] norm=[0.017,0.017,0.017] shape=[640,640,3] pixel=BGR thread=8 method=kl
./ncnn2int8 yolov5ss-opt.param yolov5ss-opt.bin yolov5ss-opt-int8.param yolov5ss-opt-int8.bin yolov5ss.table
 

 

 

 

 实现了!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号