当前位置: 首页 > news >正文

[C#]winform部署yolov5实例分割模型onnx

【官方框架地址】

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

YOLOv5实例分割是目标检测算法的一个变种,主要用于识别和分割图像中的多个物体。它是在YOLOv5的基础上,通过添加一个实例分割模块来实现的。

在实例分割中,算法不仅要识别图像中的物体,还要对每个物体进行分割,以获得物体的精确边界。这需要对每个物体实例进行单独的预测,并使用像素级的掩膜来标记物体的边界。

与传统的分割方法相比,YOLOv5实例分割具有更高的速度和准确性。由于它采用了一种端到端的训练方式,因此可以有效地处理各种复杂的背景和光照条件。此外,它还可以处理多个物体在同一像素或同一位置的情况,这在一些场景中是非常有用的。

然而,YOLOv5实例分割也存在一些局限性。例如,它对于小物体的检测效果较差,因为小物体的特征比较微弱。此外,对于遮挡或重叠的物体,它也可能无法准确地识别和分割。

总的来说,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 = null;Yolov5SegManager detector = new Yolov5SegManager();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;}var result = detector.Inference(src);pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(result);}private void Form1_Load(object sender, EventArgs e){detector.LoadWeights(Application.StartupPath+ "\\weights\\yolov5s-seg.onnx", Application.StartupPath + "\\weights\\labels.txt");}private void button3_Click(object sender, EventArgs e){VideoCapture capture = new VideoCapture(0);if (!capture.IsOpened()){Console.WriteLine("video not open!");return;}Mat frame = new Mat();var sw = new Stopwatch();int fps = 0;while (true){capture.Read(frame);if (frame.Empty()){Console.WriteLine("data is empty!");break;}sw.Start();var result = detector.Inference(frame);sw.Stop();fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);sw.Reset();Cv2.PutText(result, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);//显示结果Cv2.ImShow("Result", result);int key = Cv2.WaitKey(10);if (key == 27)break;}capture.Release();}}
}


【源码下载】

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

VS2019,netframwork4.7.2,opencvsharp4.8.0,onnxruntime1.16.3 CPU运行,源码下载后可以直接运行

http://www.lryc.cn/news/289053.html

相关文章:

  • C++核心编程:类和对象 笔记
  • 机器学习实验3——支持向量机分类鸢尾花
  • R语言【taxlist】——clean():移除孤立的记录
  • CentOS 7.9 OS Kernel Update 3.10 to 4.19
  • k8s---安全机制
  • GitHub 一周热点汇总第7期(2024/01/21-01/27)
  • kotlin data clas 数据类
  • Java基础知识-异常
  • 跟着cherno手搓游戏引擎【12】渲染context和首个三角形
  • MybatisPlus二级映射和关联对象ResultMap
  • 低代码开发业务在AIGC时代的应用
  • 惠普1536dnf MFP报52扫描仪错误维修
  • 【MIdjourney】五个特殊物体关键词
  • 2024/1/27 备战蓝桥杯 1
  • 初学数据结构:Java对象的比较
  • mac 10.15.7 Unity 2021.3.14 XCode 12.4 -> Unity IOS 自动安装 Cocoapods 失败解决方法
  • Elasticsearch 中使用MustNot等同于不登录遇到的坑
  • java抽象工厂实战与总结
  • Compose | UI组件(六) | 选择框
  • C++拷贝构造函数、赋值学习整理:
  • [亲测源码]ps软件网页版在线使用 PS网站程序源码 photoshop网页版源码 网页版的ps软件源码
  • 前端大厂面试题探索编辑部——第二期
  • yaml学习笔记
  • 深度强化学习(王树森)笔记04
  • openssl3.2/test/certs - 074 - CT entry
  • Angular组件(一) 分割面板ShrinkSplitter
  • 抖音详情API:视频内容获取与解析技巧
  • SpringBoot中实现阿里云OSS对象存储
  • 大型语言模型 (LLM)全解读
  • Unity - gamma space下还原linear space效果