Bootstrap

Yolo5训练+部署到C# winform推理

记录Yolo5 部署过程

一、YoloV5训练

网上教程很多,参照的博主肆十二的,非常详细。

CSDN链接https://blog.csdn.net/ECHOSON/article/details/121939535

可能问题:

1、训练时如果报下面这个错误,多半原因是numpy版本问题,yolo官方给的是大于等于1.18.5,当你执行pip install -r requirements.txt命令时,他默认安装为1.24,但是在numpy版本更新时numpy.int在NumPy 1.20中已弃用,在NumPy 1.24中已删除。下面给2个解决方案:

方案1:重新安装numpy

pip uninstall numpy

pip install numpy==1.20.3

方案2:改代码(不太推荐)

2、GPU训练时报错

运行yolov5 train.py时出现了这个错误:RuntimeError: result type Float can‘t be cast to the desired output type __int64

原因:

原因是新版本的torch无法自动执行此转换,旧版本torch可以。

loss.py在utils文件夹下,ctrl+f搜索gain,找到gain = torch.ones(7, device=targets.device),将其修改为gain = torch.ones(7, device=targets.device).long(),问题就解决了

二、导出ONNX

使用yolo5的export.py,直接找到 parse_opt更改参数

1、训练时的数据集文件

2、模型权重文件

3、对应图像大小

4、设置导出为ONNX

装下onnx包pip install onnx

成功导出onnx文件

4、可使用NETRON查看模型结构  网址 https://netron.app/

注意查看最后output名称,后面要用到

三、部署到C# winform

1、git上下载yolov5-net

地址:

https://gitcode.com/mirrors/mentalstack/yolov5-net/overview?utm_source=csdn_github_accelerator&isLogin=1

2、使用YoloV5Net.Scorer库,这次使用到的模型是YoloCocoP5Model

3、修改一些参数

4、winform中就可以引用Yolov5Net.Scorer

修改模型路径

踩的坑:

1、运行到下图报错

原因是前面参数public override string[] Outputs { get; set; } = new[] { "output" };与ONNX不一致。

修改一致后OK

参考文章:

YOLO V5 ONNX模型在C# 中部署_c#调用yolo 自定义训练集-CSDN博客

Yolov5部署到winform c#上-CSDN博客

;