yolov3(ultralytics yaml版) pytorch->onnx->ncnn

此命令将预训练的 YOLOv3模型(默认yolov3.pt,或者yolov3-tiny.pt)导出为 ONNX、TorchScript 和 CoreML 格式。

python models/export.py --weights weights/yolov3.pt --img 640 --batch 1

输出:
在这里插入图片描述在这里插入图片描述
3 个导出的模型(yolov3.mlmodel , yolov3.onnx , yolov3.torchscript.pt)将与原始 PyTorch 模型一起保存

python detect.py --weights weights/yolov5s.onnx --view-img

速度慢

推荐使用Netron Viewer来可视化导出的模型,显示网络结构:

python
import netron
netron.start('yolov3.onnx')

在这里插入图片描述

五,简化onnx文件

1.安装简化器

pip install onnx-simplifier

2.执行指令

python -m onnxsim  onnx_inputpath onnx_outputpath
python -m onnxsim yolov3-tiny.onnx yolov3-tiny-sim.onnx(tiny版)

在这里插入图片描述

六、onnx转换为 ncnn 模型

~/ncnn/build/tools/onnx$ onnx2ncnn yolov3-tiny-sim.onnx yolov3-tiny-sim.param yolov3-tiny-sim.bin

ncnnoptimize优化:
用 ncnnoptimize 过一遍模型,顺便转为 fp16 存储减小模型体积,两种都OK一样。

$ ncnnoptimize yolov5s.param yolov5s.bin yolov5s-opt.param yolov5s-opt.bin 65536
$ ncnnoptimize yolov5s.param yolov5s.bin yolov5s-opt.param yolov5s-opt.bin 1

其中最后的flag 如果是0指的的是fp32,如果是1指的是fp16
在这里插入图片描述


版权声明:本文为W1995S原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。