0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenVINO C#如何运行YOLO11实例分割模型

英特尔物联网 来源:OpenCV学堂 2025-04-29 09:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来源:OpenCV学堂

OpenVINO2025 C#支持

开源的支持项目来自颜国进老师贡献,已经被OpenVINO官方收录,项目网址:

https://gitee.com/linbei_cht/OpenVINO-CSharp-API

efc239ca-21b3-11f0-9310-92fbcf53809c.png

安装非常容易,只要在VS2022里面点击一下即可安装。最新版本已经是OpenVINO2025支持。

YOLO11实例分割

YOLO11是YOLOv5跟YOLOv8作者推出最新升级版本模型,支持分类、检测、分割、姿态评估、OBB。这里以YOLO11实例分割模型为例,演示OpenVINO C#如何运行,YOLO11-seg模型的输入与输出。

efe189d8-21b3-11f0-9310-92fbcf53809c.png

代码是我在OpenVINO-CSharp-API作者开源的YOLOv8对象检测的代码基础上修改而成。调用检测代码如下:

publicvoidDetect()
{
 // Set the video path and model path
 stringvideo_path="D:/images/video/play_scoers.mp4";
 stringmodel_path="D:/python/yolov5-7.0/yolo11n-seg.onnx";
 // Create a new Core object and read the model
 Corecore=newCore();
 Modelmodel=core.read_model(model_path);
 CompiledModelcompiled_model=core.compile_model(model,"GPU");
 // Create a list of InferRequest objects
  Listrequests =newList{ compiled_model.create_infer_request(), compiled_model.create_infer_request() };
 // Create a new VideoCapture object and read the video
 VideoCapturecapture=newVideoCapture(video_path);
 if(!capture.IsOpened())
  {
    Console.WriteLine("Error: Video not found!");
   return;
  }
 Matframe=newMat();
 Matnext_frame=newMat();
  capture.Read(frame);
 floatscale=0.0f;
 float[] input_data = preprocess(frame, out scale);
  requests[0].get_input_tensor().set_data(input_data);
  requests[0].start_async();
 Stopwatchsw=newStopwatch();
 float[] total_infs =newfloat[3];
  ListclassList = File.ReadAllLines("D:/python/yolov5-7.0/classes.txt").Select(line => line.Trim()).ToList();
 while(true)
  {
   if(!capture.Read(next_frame))
    {
     break;
    }
    sw.Restart();
    input_data = preprocess(frame, out scale);
    requests[1].get_input_tensor().set_data(input_data);
    requests[1].start_async();
    requests[0].wait();
   float[] det_data = requests[0].get_tensor("output0").get_data(8400*116);
   float[] seg_data = requests[0].get_tensor("output1").get_data(32*160*160);
   Matrgb_mask=newMat(frame.Size(), frame.Type());
   DetResultresult=postprocess(det_data, seg_data, scale, rgb_mask);
    sw.Stop();
    total_infs[0] = sw.ElapsedMilliseconds;
    Cv2.PutText(frame,"Inference: "+ (1000.0/ total_infs[0]).ToString("0.00") +"FPS "+ (total_infs[0]).ToString("0.00") +"ms",newOpenCvSharp.Point(20,40), HersheyFonts.HersheyPlain,2,newScalar(255,0,255),2);
    result.update_lable(classList);
    Visualize.draw_det_result(result, frame);
    Cv2.AddWeighted(frame,0.5, rgb_mask,0.5,0, frame);
    Cv2.ImShow("C# YOLO11-OpenVINO-Seg演示 - OpenCV学堂", frame);
   // Press 'ESC' to exit the program
   if(Cv2.WaitKey(1) ==27)
    {
     break;
    }
    swap(requests);
    frame = next_frame;
    rgb_mask.Release();
  }
}

后处理实现细节

这个实现最大的坑在后处理部分,要基于全局编码信息乘以每个检测BOX区域的编码信息,才可以解码得到每个BOX对象的掩膜。实现的代码如下:

Matroi_mask=roi_masks[index];
Matm=roi_mask * mask_info;
for(intcol=0; col < m.Cols; col++)
{
    m.At(0, col) = sigmoid_function(m.At(0, col));
}

最后根据得到掩膜直接设置BOX区域的颜色即可,代码如下:

rgb_mask[box].SetTo(new Scalar(0,0,255), box_m);
re.add(classIds[index], confidences[index], positionBoxes[index]);

然后把得到RGB彩色掩膜图像跟BOX框绘制图像相加记得到最终输出结果图像。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    4038

    浏览量

    45578
  • 模型
    +关注

    关注

    1

    文章

    3649

    浏览量

    51719
  • 代码
    +关注

    关注

    30

    文章

    4942

    浏览量

    73159
  • OpenCV
    +关注

    关注

    33

    文章

    651

    浏览量

    44427

原文标题:C# YOLO11-OpenVINO实例分割

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【飞凌OK-MX9596-C开发板试用】①开箱图赏、跑分测试、yolo模型三箭齐发

    的 Python 库,尤其以 YOLO(You Only Look Once) 系列模型为核心,提供了简单易用的接口,支持目标检测、实例分割、姿态估计等任务。本文将详细介绍 ultra
    发表于 10-07 18:53

    如何进行YOLO模型转换?

    我目前使用的转模型代码如下 from ultralytics import YOLOimport cv2import timeimport nncaseimport# 加载预训练的YOLO模型
    发表于 08-14 06:03

    RK3576 Yolov11训练部署教程

    1.Yolo11简介YOLO11系列是YOLO家族中最先进的(SOTA)、最轻量级、最高效的模型,其表现优于其前辈。它由Ultralytics创建,该组织发布了YOLOv8,这是迄今为
    的头像 发表于 07-25 15:22 819次阅读
    RK3576 Yolov<b class='flag-5'>11</b>训练部署教程

    RK3576 yolo11-seg训练部署教程

    1.yolov11-seg简介yolov11-seg是YOLO(YouOnlyLookOnce)系列的最新成员,专为实时实例分割任务设计。它
    的头像 发表于 07-25 15:21 1288次阅读
    RK3576 <b class='flag-5'>yolo11</b>-seg训练部署教程

    k230执行yolov11分割任务显示“MPY: soft reboot”,是怎么回事?

    ]]# 初始化YOLO11实例yolo=YOLO11(task_type=\"segment\",mode=\"image\",kmodel_path
    发表于 07-18 07:41

    【HZ-RK3568开发板免费体验】04 YOLOv11 模型转换为RKNN并在板端部署

    aarch64,目标模型yolo11 ./build-linux.sh -t rk3568 -a aarch64 -d yolo11 编译结果如下所示 3.3 部署并运行Demo 将
    发表于 07-02 14:01

    基于RK3576开发板的yolov11-track多目标跟踪部署教程

    YOLO11是 Ultralytics YOLO系列实时物体检测器的最新版本,重新定义了在尖端准确度、速度和效率方面的可能性。在前几代 YOLO 版本的显著进步基础上,YOLO11
    的头像 发表于 05-24 15:07 2246次阅读
    基于RK3576开发板的yolov<b class='flag-5'>11</b>-track多目标跟踪部署教程

    RK3576 Yolov11训练部署教程

    YOLO11 系列是 YOLO 家族中最先进的 (SOTA)、最轻量级、最高效的模型,其表现优于其前辈。它由 Ultralytics 创建,该组织发布了 YOLOv8,这是迄今为止最稳定、使用最广泛的
    的头像 发表于 04-03 09:35 1765次阅读
    RK3576 Yolov<b class='flag-5'>11</b>训练部署教程

    如何使用OpenVINO运行对象检测模型

    无法确定如何使用OpenVINO运行对象检测模型
    发表于 03-06 07:20

    使用Yolo-v3-TF运行OpenVINO™对象检测Python演示时的结果不准确的原因?

    通过模型下载器下载了 yolo-v3-tf: ./downloader.py --name yolo-v3-tf 通过模型 优化器转换模型
    发表于 03-06 06:31

    运行OpenVINO™找不到模型优化器,为什么?

    运行OpenVINO™找不到模型优化器,运行模型下载程序命令并收到错误消息: omz_downloader:找不到命令
    发表于 03-05 08:16

    为什么无法在运行C++推理中读取OpenVINO模型

    使用模型优化器 2021.1 版OpenVINO™转换模型 使用 Runtime 2022.3 版本在 C++ 推理实现 ( core.read_model()) 中读取
    发表于 03-05 06:17

    C#集成OpenVINO™:简化AI模型部署

    在开源测控、机器视觉、数采与分析三大领域中,如何快速将AI模型集成到应用程序中, 实现AI赋能和应用增值? 最容易的方式是:在C#中,使用 OpenVINO工具套件 集成AI模型。 1
    的头像 发表于 02-17 10:03 2530次阅读
    <b class='flag-5'>C#</b>集成<b class='flag-5'>OpenVINO</b>™:简化AI<b class='flag-5'>模型</b>部署

    C#中使用OpenVINO™:轻松集成AI模型

    与分析三大领域中,如何快速将AI模型集成到应用程序中,实现AI赋能和应用增值?最容易的方式是:在C#中,使用OpenVINO™工具套件集成AI模型。 一,什么是
    的头像 发表于 02-07 14:05 1671次阅读
    <b class='flag-5'>C#</b>中使用<b class='flag-5'>OpenVINO</b>™:轻松集成AI<b class='flag-5'>模型</b>!

    【米尔RK3576开发板评测】+项目名称3、使用rknn 进行图像检测

    前言 目标是在板子上跑一下yolo11,直接通过配置官方的模型环境来实现。 先github拉取一下rockchip开源出来的模型 https://github.com/airockchip
    发表于 01-03 21:03