中间细节都一样,均可参考:https://raychiu.blog.csdn.net/article/details/122534656
一到四步这些模型转化生成都在服务器上操作即可,比较快,最后的param和bin发送到树莓派使用即可。
一、下载代码和模型并转onnx
#模型在百度云盘密码pogg,模型名字是v5lite-s.pt自行更正为yolov5-lite.pt https://pan.baidu.com/share/init?surl=j0n0K1kqfv1Ouwa2QSnzCQ #下载代码并转onnx git clone https://github.com/ppogg/YOLOv5-Lite.git python models/export.py --weights weights/yolov5-lite.pt --img 640 --batch 1 python -m onnxsim weights/yolov5-lite.onnx weights/yolov5-lite-sim.onnx
二、配置ncnn环境并生成param和bin
~/data/packages/ncnn/build/tools/onnx/onnx2ncnn ./yolov5-lite-sim.onnx yolov5-lite.param yolov5-lite.bin ~/data/packages/ncnn/build/tools/ncnnoptimize yolov5-lite.param yolov5-lite.bin yolov5-lite-opt.param yolov5-lite-opt.bin 65536
三、改param文件设置动态尺寸推理
四、匹配ncnn中yolov5.cpp的输出
param中的:
yolov5.cpp中的:
五、树莓派上重新编译ncnn并拿来其他服务器上生成的param和bin文件推理
未量化的模型执行较慢,大概0.5fps吧
六、量化为int8并在树莓派测试
这里用到ncnn中两个工具:ncnn2table 和 ncnn2int8,前者要做直方图截断、直方图相似度匹配等校验工作,需要用到数据集,我这里用coco的那个5000张图片的数据集,没有的自己百度下载即可:
把数据集发送到服务器,咱们量化操作也在服务器做,比较耗时。
unzip解压,后:
# -type f 是按照普通文件类型find文件名 ,然后导出到imagelist.txt里 find images/ -type f > imagelist.txt
然后:
~/data/packages/ncnn/build/tools/quantize/ncnn2table yolov5-lite-opt.param yolov5-lite-opt.bin ./imagelist.txt yolov5-lite.table mean=[104,117,123] norm=[0.017,0.017,0.017] shape=[640,640,3] pixel=BGR thread=8 method=kl ~/data/packages/ncnn/build/tools/quantize/ncnn2int8 yolov5-lite-opt.param yolov5-lite-opt.bin yolov5-ite-opt-int8.param yolov5-lite-opt-int8.bin yolov5-lite.tabled
第一步点耗时,等一下就好...
最后我们把模型拿到树莓派测试发现快了一些。