您好,
会员登录 快速注册
退出 ( 条未读消息)
关于本站 意见反馈 首页

公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!
全部文章分类
  • 人工智能 >

  • 编程语言 >

  • WPF系列 >

  • ASP.NET系列 >

  • Linux >

  • 数据库 >

  • 嵌入式 >

  • WEB技术 >

  • PLC系列 >

  • 微服务与框架 >

  • 小宅DIY >

  • 学习资料 >

OpenCv基础 ANN车牌识别 yolov5车牌识别 指针式仪表识别 ROS系列 YOLO Halcon Detectron2 昇腾AI ChatGPT在线体验 英伟达JETSON ChatGLM ChatTTS FunASR 地平线 ByteTrack 魔搭社区 LangChain
C C# C++ Python Java Go
WPF
ASP.NET小功能 GPS定位系统-MVC GPS定位系统-VUE ASP.NET WebRTC
Linux Linux内核 Shell MakeFile
MySql SqlServer Oracle
STM8 STM32 51单片机
VUE入门 HTML JavaScript CSS layui镜像网站 ElementUi中文官网 element-plus 图标
三菱 欧姆龙 西门子 施耐德 松下 台达
IOTSharp IOTGateway ABP FRAMEWORK Docker
亚克力音响 编程仙途:智驭万法
面试题与技巧 Python入门技能树 微软C#教程
首页 编程之美 工具下载 全国就业 流量地图 文心一言
YOLO
YOLO 学习介绍 Labelme安装与运行 YOLOv5 安装开发环境 YOLOv5 官方数据集训练方法 YOLOv5 自定义数据集训练方法 YOLOv5 GPU训练方法 YOLOv5 调用USB摄像头识别 YOLOv5 在Ubuntu22.10安装运行环境 YOLOv5 实例分割-官方数据集训练方法 YOLOv5 实例分割-Labelme标注与json文件转txt YOLOv5 pt转onnx文件 YOLOv5 pt转engine文件 YOLOv5 C#中进行模型预测(.net版) YOLOv5 C#中进行模型预测(winform版) YOLOv5 C++进行模型预测 YOLOv5-7.0 安装开发环境 YOLOx 安装开发环境 YOLOx 官网数据集训练方法1(VOC) YOLOx 官网数据集训练方法2(COCO) YOLOx 自定义数据集训练方法1(VOC) YOLOx 自定义数据集训练方法2(COCO) YOLOx 调用USB摄像头识别 YOLOv8 安装开发环境 YOLOv8 官方数据集训练方法 YOLOv8 pt转onnx文件与测试 YOLOv11 安装开发环境 YOLOv11 自定义目标检测模型训练
YOLOv5 pt转engine文件
YOLOv5 C#中进行模型预测(winform版)
激萌の小宅 小宅博客网 YOLO

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 13

    累计评价

YOLOv5 C#中进行模型预测(.net版)

1、说明

        在C#中进行模型预测,目前博主使用的是Yolov5Net.Scorer库,该库貌似只支持.net环境下的调用,不支持winform和wpf。并且Yolov5Net.Scorer库只支持矩形检测,不支持实例分割训练出来的模型,这点大伙要注意了。至于实例分割的模型预测和winform、wpf环境下的使用,博主后续会继续研究。

        模型训练博主目前在yolov5-master、yolov5 6.1,这两个版本的yolo中都得到了验证,可行。如果采用的是yolov5 6.1版本进行训练,环境安装会稍微有点坑爹,在博客的后面博主会专门做说明。目前博主将采用yolov5-master版本来做演示。


当前工程源码下载:

链接:https://pan.baidu.com/s/13V8qkzxYjkKuLTwou08oFA

提取码:afav


2、准备工作

参考博客:Yolov5学习全过程:训练+运行+c#部署(无理论全实操)

yolov5下载:https://github.com/ultralytics/yolov5

QQ截图20230505140737.jpg

如果想下载yolov5其他版本,可以选择旁边的Tags选项卡进行下载。

QQ截图20230505140850.jpg

yolov5-net-master下载,里面包含了Yolov5Net.Scorer库源码和官方demo:https://github.com/nihevix/yolov5-net-master


3、YOLO环境安装

        yolov5的环境安装请参考博客:《YOLOv5 安装开发环境》

        如果使用的是yolov5 6.1版本,在搭建虚拟环境时,推荐Python版本为3.8,博主尝试过用3.10,好像没搭建成功,有兴趣的同学可以试试。

        GPU的安装方法可以参考下面两个博客:《Windows11下安装cuda》《YOLOv5 GPU训练方法》


4、YOLO训练

        yolov5-master模型训练请参考这两个博客:《YOLOv5 自定义数据集训练方法》《Labelme安装与运行》

        训练完之后,我们就得到了yolo的pt模型文件了。

        训练命令:

python train.py --img 640 --batch 16 --epochs 300 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights yolov5s.pt --device 0


5、pt转onnx文件   

        进行模型转换时,需要安装一些库,安装完之后,才能执行换行命令,不过yolov5-master可以不必手动安装,程序在进行转换时,如果未检测到onnx,会自动安装,但是yolov5 6.1需要手动安装才行,安装命令如下:

pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime openvino-dev tensorflow-cpu

        1、生成静态模型

python export.py --weights runs/train/exp/weights/best.pt --include onnx

        2、生成动态模型

python export.py --weights runs/train/exp/weights/best.pt --include onnx --dynamic

        从生成效果看,动态模型会比静态模型小一点

QQ截图20230505145205.jpg


6、Yolov5Net.Scorer C#集成与预测

目前Yolov5Net.Scorer库只支持.net环境,不支持winfrom,这个有点坑,博主后续会研究一下如何在winform中进行模型预测。

Yolov5Net.Scorer提供了两个预测模型YoloCocoP5Model和YoloCocoP6Model,yolov5-master和yolov5 6.1转换的onnx模型在P5和P6中都能运行,博主测试过了,我们这边直接使用默认的P5模型来进行演示。

1、修改Yolov5Net.Scorer/Models/YoloCocoP5Model.cs文件:

QQ截图20230505150449.jpg

按如下进行修改调整

QQ截图20230505145955.jpg

QQ截图20230505150153.jpg


Program.cs文件的测试代码如下:

using SixLabors.Fonts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using Yolov5Net.Scorer;
using Yolov5Net.Scorer.Models;

using var image = await Image.LoadAsync<Rgba32>("Assets/000055.jpg");
{
    using var scorer = new YoloScorer<YoloCocoP5Model>("Assets/Weights/best-yibiao-d.onnx");
    {
        var predictions = scorer.Predict(image);

        var font = new Font(new FontCollection().Add("C:/Windows/Fonts/consola.ttf"), 16);

        foreach (var prediction in predictions) // draw predictions
        {
            var score = Math.Round(prediction.Score, 2);

            var (x, y) = (prediction.Rectangle.Left - 3, prediction.Rectangle.Top - 23);

            image.Mutate(a => a.DrawPolygon(new Pen(prediction.Label.Color, 1),
                new PointF(prediction.Rectangle.Left, prediction.Rectangle.Top),
                new PointF(prediction.Rectangle.Right, prediction.Rectangle.Top),
                new PointF(prediction.Rectangle.Right, prediction.Rectangle.Bottom),
                new PointF(prediction.Rectangle.Left, prediction.Rectangle.Bottom)
            ));

            image.Mutate(a => a.DrawText($"{prediction.Label.Name} ({score})",
                font, prediction.Label.Color, new PointF(x, y)));
        }

        await image.SaveAsync("Assets/result.jpg");
    }
}


最终效果如下:

result.jpg


7、yolov5 6.1版本避坑说明

1、Python版本推荐使用3.8,博主尝试过用3.10,好像没搭建成功,有兴趣的同学可以试试。


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

QQ截图20230505150922.jpg

方案1:重新安装numpy

pip uninstall numpy
pip install numpy==1.22

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

找到报错地方,将numpy.int更改为numpy.int_


3、如果出现下面这个问题:

RuntimeError: result type Float can‘t be cast to the desired output type long int

QQ截图20230505151043.jpg

解决方案如下:

参考博客:https://blog.csdn.net/Thebest_jack/article/details/125649451


YOLOv5 pt转engine文件
YOLOv5 C#中进行模型预测(winform版)

友情链接: CSDN激萌の小宅 95知识库 自考题库 罗分明个人网络博客 精益编程leanboot

小宅博客  www.bilibili996.com All Rights Reserved. 备案号: 闽ICP备2024034575号

网站经营许可证  福建省福州市 Copyright©2021-2025 版权所有

小宅博客
首页 智能家居 地图定位
公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 13

    累计评价

YOLOv5 C#中进行模型预测(.net版)

1、说明

        在C#中进行模型预测,目前博主使用的是Yolov5Net.Scorer库,该库貌似只支持.net环境下的调用,不支持winform和wpf。并且Yolov5Net.Scorer库只支持矩形检测,不支持实例分割训练出来的模型,这点大伙要注意了。至于实例分割的模型预测和winform、wpf环境下的使用,博主后续会继续研究。

        模型训练博主目前在yolov5-master、yolov5 6.1,这两个版本的yolo中都得到了验证,可行。如果采用的是yolov5 6.1版本进行训练,环境安装会稍微有点坑爹,在博客的后面博主会专门做说明。目前博主将采用yolov5-master版本来做演示。


当前工程源码下载:

链接:https://pan.baidu.com/s/13V8qkzxYjkKuLTwou08oFA

提取码:afav


2、准备工作

参考博客:Yolov5学习全过程:训练+运行+c#部署(无理论全实操)

yolov5下载:https://github.com/ultralytics/yolov5

QQ截图20230505140737.jpg

如果想下载yolov5其他版本,可以选择旁边的Tags选项卡进行下载。

QQ截图20230505140850.jpg

yolov5-net-master下载,里面包含了Yolov5Net.Scorer库源码和官方demo:https://github.com/nihevix/yolov5-net-master


3、YOLO环境安装

        yolov5的环境安装请参考博客:《YOLOv5 安装开发环境》

        如果使用的是yolov5 6.1版本,在搭建虚拟环境时,推荐Python版本为3.8,博主尝试过用3.10,好像没搭建成功,有兴趣的同学可以试试。

        GPU的安装方法可以参考下面两个博客:《Windows11下安装cuda》《YOLOv5 GPU训练方法》


4、YOLO训练

        yolov5-master模型训练请参考这两个博客:《YOLOv5 自定义数据集训练方法》《Labelme安装与运行》

        训练完之后,我们就得到了yolo的pt模型文件了。

        训练命令:

python train.py --img 640 --batch 16 --epochs 300 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights yolov5s.pt --device 0


5、pt转onnx文件   

        进行模型转换时,需要安装一些库,安装完之后,才能执行换行命令,不过yolov5-master可以不必手动安装,程序在进行转换时,如果未检测到onnx,会自动安装,但是yolov5 6.1需要手动安装才行,安装命令如下:

pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime openvino-dev tensorflow-cpu

        1、生成静态模型

python export.py --weights runs/train/exp/weights/best.pt --include onnx

        2、生成动态模型

python export.py --weights runs/train/exp/weights/best.pt --include onnx --dynamic

        从生成效果看,动态模型会比静态模型小一点

QQ截图20230505145205.jpg


6、Yolov5Net.Scorer C#集成与预测

目前Yolov5Net.Scorer库只支持.net环境,不支持winfrom,这个有点坑,博主后续会研究一下如何在winform中进行模型预测。

Yolov5Net.Scorer提供了两个预测模型YoloCocoP5Model和YoloCocoP6Model,yolov5-master和yolov5 6.1转换的onnx模型在P5和P6中都能运行,博主测试过了,我们这边直接使用默认的P5模型来进行演示。

1、修改Yolov5Net.Scorer/Models/YoloCocoP5Model.cs文件:

QQ截图20230505150449.jpg

按如下进行修改调整

QQ截图20230505145955.jpg

QQ截图20230505150153.jpg


Program.cs文件的测试代码如下:

using SixLabors.Fonts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using Yolov5Net.Scorer;
using Yolov5Net.Scorer.Models;

using var image = await Image.LoadAsync<Rgba32>("Assets/000055.jpg");
{
    using var scorer = new YoloScorer<YoloCocoP5Model>("Assets/Weights/best-yibiao-d.onnx");
    {
        var predictions = scorer.Predict(image);

        var font = new Font(new FontCollection().Add("C:/Windows/Fonts/consola.ttf"), 16);

        foreach (var prediction in predictions) // draw predictions
        {
            var score = Math.Round(prediction.Score, 2);

            var (x, y) = (prediction.Rectangle.Left - 3, prediction.Rectangle.Top - 23);

            image.Mutate(a => a.DrawPolygon(new Pen(prediction.Label.Color, 1),
                new PointF(prediction.Rectangle.Left, prediction.Rectangle.Top),
                new PointF(prediction.Rectangle.Right, prediction.Rectangle.Top),
                new PointF(prediction.Rectangle.Right, prediction.Rectangle.Bottom),
                new PointF(prediction.Rectangle.Left, prediction.Rectangle.Bottom)
            ));

            image.Mutate(a => a.DrawText($"{prediction.Label.Name} ({score})",
                font, prediction.Label.Color, new PointF(x, y)));
        }

        await image.SaveAsync("Assets/result.jpg");
    }
}


最终效果如下:

result.jpg


7、yolov5 6.1版本避坑说明

1、Python版本推荐使用3.8,博主尝试过用3.10,好像没搭建成功,有兴趣的同学可以试试。


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

QQ截图20230505150922.jpg

方案1:重新安装numpy

pip uninstall numpy
pip install numpy==1.22

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

找到报错地方,将numpy.int更改为numpy.int_


3、如果出现下面这个问题:

RuntimeError: result type Float can‘t be cast to the desired output type long int

QQ截图20230505151043.jpg

解决方案如下:

参考博客:https://blog.csdn.net/Thebest_jack/article/details/125649451