环境推荐

  1. cuda: cuda_11.8.0_522.06_windows.exe
  2. cudnn: cudnn-windows-x86_64-8.6.0.163_cuda11-archive
  3. Anaconda3: Anaconda3-2023.09-0-Windows-x86_64
  4. yolov5: yolov5-6.2
  5. 原始模型: yolov5s.pt

第一种:本地转换

第一步导出onnx模型

python export.py --weights [pt模型位置] --include onnx --img [推理大小] --batch 1

简化模型

安装库:pip install onnx-simplifier
python -m onnxsim [onnx模型位置] [要保存的位置]

本地转换ncnn模型

注:本地转换需要自行编译 onnx2ncnn 否则会出现模型错误,本地编译NCNN请看本人另一篇文章
注:本地转换自行编译的 ncnnoptimize 经测试无法优化模型,建议下载官方编译好的进行替换,如果你知道怎么解决欢迎评论

onnx2ncnn.exe [优化后的onnx模型位置] [要保存的param文件位置] [要保存的bin文件位置]
ncnnoptimize.exe [param文件位置] [bin文件位置] [要保存优化后的param文件位置] [要保存的优化后bin文件位置] 65536

第二种:在线转为ncnn模型

热心网友提供的在线转换工具

模型修改

注:NCNN模型转换完后不算真的完,你还需要对模型进行修改。否则使用会出现一些问题。如果你的Reshape有6各分支,那么恭喜你,我也不知道怎么办,请确保训练环境模型与我一致,如果你有解决方法,欢迎留言讨论。

修改前

1
2
3
4
5
6
7
8
Reshape                  /model.24/Reshape        1 1 /model.24/m.0/Conv_output_0 /model.24/Reshape_output_0 0=6400 1=6 2=3
Permute /model.24/Transpose 1 1 /model.24/Reshape_output_0 output 0=1
Convolution /model.24/m.1/Conv 1 1 /model.20/cv3/act/Mul_output_0_splitncnn_0 /model.24/m.1/Conv_output_0 0=18 1=1 5=1 6=4608
Reshape /model.24/Reshape_1 1 1 /model.24/m.1/Conv_output_0 /model.24/Reshape_1_output_0 0=1600 1=6 2=3
Permute /model.24/Transpose_1 1 1 /model.24/Reshape_1_output_0 354 0=1
Convolution /model.24/m.2/Conv 1 1 /model.23/cv3/act/Mul_output_0 /model.24/m.2/Conv_output_0 0=18 1=1 5=1 6=9216
Reshape /model.24/Reshape_2 1 1 /model.24/m.2/Conv_output_0 /model.24/Reshape_2_output_0 0=400 1=6 2=3
Permute /model.24/Transpose_2 1 1 /model.24/Reshape_2_output_0 366 0=1

修改后

1
2
3
4
5
6
7
8
Reshape                  /model.24/Reshape        1 1 /model.24/m.0/Conv_output_0 /model.24/Reshape_output_0 0=-1 1=6 2=3
Permute /model.24/Transpose 1 1 /model.24/Reshape_output_0 output 0=1
Convolution /model.24/m.1/Conv 1 1 /model.20/cv3/act/Mul_output_0_splitncnn_0 /model.24/m.1/Conv_output_0 0=18 1=1 5=1 6=4608
Reshape /model.24/Reshape_1 1 1 /model.24/m.1/Conv_output_0 /model.24/Reshape_1_output_0 0=-1 1=6 2=3
Permute /model.24/Transpose_1 1 1 /model.24/Reshape_1_output_0 output1 0=1
Convolution /model.24/m.2/Conv 1 1 /model.23/cv3/act/Mul_output_0 /model.24/m.2/Conv_output_0 0=18 1=1 5=1 6=9216
Reshape /model.24/Reshape_2 1 1 /model.24/m.2/Conv_output_0 /model.24/Reshape_2_output_0 0=-1 1=6 2=3
Permute /model.24/Transpose_2 1 1 /model.24/Reshape_2_output_0 output2 0=1

推荐视频

https://www.bilibili.com/video/BV13u411P71K/?spm_id_from=333.337.search-card.all.click&vd_source=7b93e4971e0b76ca82f4f87bb8546573