记录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
地址:
2、使用YoloV5Net.Scorer库,这次使用到的模型是YoloCocoP5Model
3、修改一些参数
4、winform中就可以引用Yolov5Net.Scorer
修改模型路径
踩的坑:
1、运行到下图报错
原因是前面参数public override string[] Outputs { get; set; } = new[] { "output" };与ONNX不一致。
修改一致后OK
参考文章: