中間細節都一樣,均可參考: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
第一步點耗時,等一下就好...
最后我們把模型拿到樹莓派測試發現快了一些。