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

    文章

    4343

    浏览量

    46437
  • 模型
    +关注

    关注

    1

    文章

    3816

    浏览量

    52265
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74373
  • OpenCV
    +关注

    关注

    33

    文章

    652

    浏览量

    45074

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【幸狐Omni3576边缘计算套件试用体验】YOLO26 板端部署

    训练模型获取等; YOLO26:目标检测、实例分割、图像分类、姿态估计、旋转框检测等; 准备工作 包括硬件连接、OpenCV 安装、Ultralytics 库部署、
    发表于 04-19 22:02

    部署轻量化YOLO模型

    YOLO物联网聆思CSK6
    的头像 发表于 12-14 07:47 1649次阅读

    爱芯元智携手合作伙伴M5Stack亮相YOLO Vision 2025

    ,现场展示了Ultralytics YOLO11高精度模型的高效端侧部署,因其在边缘AI计算领域的高性能、低功耗的硬实力,成为关注焦点。
    的头像 发表于 11-02 09:20 1390次阅读
    爱芯元智携手合作伙伴M5Stack亮相<b class='flag-5'>YOLO</b> Vision 2025

    如何精准驱动菜品识别模型--基于米尔瑞芯微RK3576边缘计算盒

    /rknn_toolkit2-2.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 3. 模型转换 rknn_model_zoo中包含了很多官方已经适配的模型,包括
    发表于 10-31 21:19

    【飞凌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

    这个套件让树莓派5运行几乎所有YOLO模型!Conda 与 Ultralytics!

    如何在树莓派上设置YOLO计算机视觉?Conda与Ultralytics在本指南中,我们将学习如何使用Conda在树莓派上安装UltralyticsYOLO视觉套件。该套件将允许你运行Ultralytics支持的几乎所有YOLO
    的头像 发表于 07-31 11:51 5860次阅读
    这个套件让树莓派5<b class='flag-5'>运行</b>几乎所有<b class='flag-5'>YOLO</b><b class='flag-5'>模型</b>!Conda 与 Ultralytics!

    RK3576 Yolov11训练部署教程

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

    RK3576 yolo11-seg训练部署教程

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

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

    1.yolov11_track简介(多目标跟踪算法)YOLO11是UltralyticsYOLO系列实时物体检测器的最新版本,重新定义了在尖端准确度、速度和效率方面的可能性。在前几代YOLO版本
    的头像 发表于 07-25 15:21 2163次阅读
    基于RK3576开发板的yolov<b class='flag-5'>11</b>-track多目标跟踪部署教程

    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

    使用Openvino™ GenAI运行Sdxl Turbo模型时遇到错误怎么解决?

    使用 OpenVINO™ GenAI 运行 SDXL Turbo 模型。 遇到的错误: RuntimeError :- Check ov_tokenizer || ov_detokenizer Neither tokenizer
    发表于 06-24 06:38

    无法将Openvino™ 2025.0与onnx运行Openvino™ 执行提供程序 1.16.2 结合使用,怎么处理?

    使用OpenVINO™与英特尔 i5-8500 CPU 和超核处理器 630 iGPU 一起部署模型。 使用了 Microsoft.ML.OnnxRuntime.OpenVino
    发表于 06-24 06:31

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

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