C#部署YOLOV5-6.1版本

1、参考链接:https://blog.csdn.net/weixin_49983900/article/details/124866704
yolov5下载地址:https://github.com/ultralytics/yolov5
在这里插入图片描述
2、C#调用yolo的可用方法
使用C#语言调用yolo,网上有好几种方法:
(1)导出onnx模型,c# 部署onnx分类模型。github的代码:[yolo-net-master],直接下载即可。
(2)opencv中调用,c++转c#。网上有一篇教怎么使用opencv调用yolo onnx 模型:https://blog.csdn.net/qq_35135771/article/details/116592203.openCV调用YOLOv5 ONNX模型。需要比较扎实的语言基础,通晓两种语言的转换。
(3)c#中调用python脚本,非常慢。调用前必须打开pycharm,并且保证python文件是可运行、编译无错的。调用时间大概在20s左右,不符合要求。调用代码如下:

 private void RunPythonScript(string sArgName, string args = "", params string[] teps)
        {
            Process p = new Process();
            //string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + sArgName;// 获得python文件的绝对路径(将文件放在c#的debug文件夹中可以这样操作)
            string path = @"F:\输入自己的路径\detect.py";//"H:\\python_codes\\0331test.py";
            p.StartInfo.FileName = @"F:\输入自己的路径\python.exe";//没有配环境变量的话,可以像我这样写python.exe的绝对路径。如果配了,直接写"python.exe"即可
            string sArguments = path;
            ArrayList arrayList = new ArrayList();
            //arrayList.Add("com4");
            //arrayList.Add(57600);
            //arrayList.Add("password");
            foreach (var param in arrayList)//添加参数
            {
                sArguments += " " + sigstr;
            }
            p.StartInfo.Arguments = sArguments;//python命令的参数
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();//启动进程
            Console.ReadLine();
            Console.WriteLine("执行完毕!");//查看是否执行了
   
        }

————————————————
版权声明:本文为CSDN博主「weixin_49983900」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_49983900/article/details/124866704
3、C# 部署onnx目标检测模型
打开yolov5 6.1中的 export.py文件,修改代码,选择自己训练出来的模型路径(导出onnx前要提前配置环境),然后运行就能导出一个onnx模型。
在这里插入图片描述
导出后的模型可以使用Netron软件查看:https://netron.app/,模型是带有切片的。
4、刚刚下载的yolov5-net-master:https://github.com/mentalstack/yolov5-net是直接可以在c#环境下运行的,修改一下文件在这里插入图片描述
将下面这行代码,更改为标签种类+1:
在这里插入图片描述
安装Microsoft.ML.OnnxRuntime安装包:
在这里插入图片描述

然后调成release进行运行,可得到以下测试结果:
在这里插入图片描述
5、实现自己模型的部署:
按照上面方法,将自己训练的pt或者其他模型转换成onnx格式进行导出,然后修改文件路径:
在这里插入图片描述
修改后即可得到自己文件的识别结果:
在这里插入图片描述

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在C#部署YOLOv8,你可以按照以下步骤进行操作: 1. 首先,你需要将YOLOv8的模型文件和权重文件下载到本地。你可以从YOLO官方的GitHub仓库中获取这些文件。 2. 在C#项目中,你需要使用一个深度学习框架,如TensorFlowSharp、CaffeSharp或ONNX Runtime来加载和运行YOLOv8模型。这里以TensorFlowSharp为例。 3. 安装TensorFlowSharp NuGet包,可以使用Visual Studio的NuGet包管理器来完成。 4. 在你的C#代码中,使用TensorFlowSharp来加载YOLOv8模型并进行推理。首先,你需要创建一个TensorFlow会话,并加载YOLOv8的模型文件和权重文件。 ```csharp using TensorFlow; // 创建会话 var session = new TFSession(); // 加载模型 var graph = new TFGraph(); graph.Import(File.ReadAllBytes("path/to/your/model.pb")); // 加载权重 var session = new TFSession(graph); session.GetRunner().AddInput(graph["input"][0], tensor).Fetch(graph["output"][0]).Run(); ``` 5. 接下来,你需要将输入图像转换成模型所需的格式。YOLOv8期望输入图像为416x416像素大小,并且需要进行一些预处理操作,如归一化和填充。 ```csharp // 加载和预处理图像 var image = Image.Load("path/to/your/image.jpg"); var resizedImage = image.Resize(new Size(416, 416)); var tensor = resizedImage.ToTensor(); ``` 6. 最后,你可以使用加载的模型进行推理,并获取检测到的目标框和类别信息。 ```csharp // 进行推理 var outputs = session.GetRunner().AddInput(graph["input"][0], tensor).Fetch(graph["output"][0]).Run(); // 解析输出结果 var boxes = outputs[0].GetValue() as float[,,]; var classes = outputs[1].GetValue() as float[,]; var scores = outputs[2].GetValue() as float[,]; // 处理结果 // ... ``` 以上是一个基本的示例,你可以根据实际情况进行调整和优化。请注意,这只是一个简单的示例,实际上在生产环境中部署YOLOv8可能涉及更多的细节和步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值