[C#]C# OpenVINO部署yolov8实例分割模型

【官方框架地址】

https://github.com/ultralytics/ultralytics.git
【算法介绍】

YOLOv8 抛弃了前几代模型的 Anchor-Base。

YOLO 是一种基于图像全局信息进行预测的目标检测系统。自 2015 年 Joseph Redmon、Ali Farhadi 等人提出初代模型以来,领域内的研究者们已经对 YOLO 进行了多次更新迭代,模型性能越来越强大。现在,YOLOv8 已正式发布。

YOLOv8 是由小型初创公司 Ultralytics 创建并维护的,值得注意的是 YOLOv5 也是由该公司创建的。
【效果展示】

【实现部分代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;

namespace FIRC
{
    public partial class Form1 : Form
    {
        Mat src = new Mat();
        Yolov8SegManager ym = new Yolov8SegManager();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
              
                src = Cv2.ImRead(openFileDialog.FileName);
                pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);


            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(pictureBox1.Image==null)
            {
                return;
            }
            Stopwatch sw = new Stopwatch();
            sw.Start();
            var result = ym.Inference(src);
            sw.Stop();
            this.Text = "耗时" + sw.Elapsed.TotalSeconds + "秒";
            var resultMat = ym.DrawImage(src,result);
            pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ym.LoadWeights(Application.StartupPath+ "\\weights\\yolov8s-seg.onnx", Application.StartupPath + "\\weights\\labels.txt");

        }

        private void btn_video_Click(object sender, EventArgs e)
        {
        
  
        }
    }
}


【视频演示】

https://www.bilibili.com/video/BV1fe411S7ag/
【源码下载】

https://download.csdn.net/download/FL1623863129/88696606
【测试环境】

vs2019

netframework4.8

opencvsharp4.8.0

opencvsharp

注意无需额外安装openvino运行库直接可以运行

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在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可能涉及更多的细节和步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值