NCNN部署yolov5s

jupiter
2022-06-16 / 0 评论 / 808 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年06月16日,已超过730天没有更新,若内容或图片失效,请留言反馈。

1.NCNN编译安装

参考:Linux下如何安装ncnn

2.模型转换(pt->onnx->ncnn)

$\color{red}{此路不通,转出来的param文件中的Reshape的参数是错的}$

2.1 pt模型转换onnx

# pt-->onnx
python export.py --weights yolov5s.pt --img 640 --batch 1
#安装onnx-simplifier
pip install onnx-simplifier 
# onnxsim 精简模型
python -m onnxsim yolov5s.onnx yolov5s-sim.onnx 
Simplifying...
Finish! Here is the difference:
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃            ┃ Original Model ┃ Simplified Model ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ Add        │ 10             │ 10               │
│ Concat     │ 17             │ 17               │
│ Constant   │ 20             │ 0                │
│ Conv       │ 60             │ 60               │
│ MaxPool    │ 3              │ 3                │
│ Mul        │ 69             │ 69               │
│ Pow        │ 3              │ 3                │
│ Reshape    │ 6              │ 6                │
│ Resize     │ 2              │ 2                │
│ Sigmoid    │ 60             │ 60               │
│ Split      │ 3              │ 3                │
│ Transpose  │ 3              │ 3                │
│ Model Size │ 28.0MiB        │ 28.0MiB          │
└────────────┴────────────────┴──────────────────┘

2.2 使用onnx2ncnn.exe 转换模型

  • 把你的ncnn/build/tools/onnx加入到环境变量
onnx2ncnn yolov5s-sim.onnx yolov5s_6.0.param yolov5s_6.0.bin

2.3 调用测试

yolov5s_6.0.paramyolov5s_6.0.bin模型copy到ncnn/build/examples/位置,运行下面命令

./yolov5 image-path

就会出现Segmentation fault (core dumped)的报错

3.模型转换(pt->torchscript->ncnn)

3.1 pt模型转换torchscript

# pt-->torchscript
python export.py --weights yolov5s.pt --include torchscript --train

3.2 下载编译好的 pnnx 工具包执行转换

  • pnnx下载地址:https://github.com/pnnx/pnnx
  • 执行转换,获得 yolov5s.ncnn.paramyolov5s.ncnn.bin 模型文件,指定 inputshape 并且额外指定 inputshape2 转换成支持动态 shape 输入的模型
 ./pnnx yolov5s.torchscript inputshape=[1,3,640,640] inputshape2=[1,3,320,320]

3.3 调用测试

直接测试的相关文件下载:yolov5_pnnx.zip
yolov5s.ncnn.paramyolov5s.ncnn.bin 模型copy到ncnn/build/examples/位置,运行下面命令

./yolov5_pnnx image-path

image-20220616141000565

参考资料

  1. yolov5 模型部署NCNN(详细过程)
  2. Linux&Jetson Nano下编译安装ncnn
  3. YOLOv5转NCNN过程
  4. Jetson Nano 移植ncnn
  5. 详细记录u版YOLOv5目标检测ncnn实现(第二版)
0

评论 (0)

打卡
取消