[C#]使用onnxruntime部署yolov8-onnx印章检测

【官方框架地址】

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

YOLOv8是目标检测领域中的一种先进算法,它是YOLO(You Only Look Once)系列算法的最新发展。YOLO算法以其高效和实时的性能而著名,而YOLOv8则进一步提升了这些特点。

YOLOv8的核心思想是将目标检测任务视为回归问题,通过单次前向传播直接在图像上预测出目标的边界框和类别概率。相比于之前的版本,YOLOv8在模型结构、训练策略和性能优化等方面进行了改进。

在模型结构方面,YOLOv8采用了更深的卷积神经网络,通过增加网络层数和引入更多的特征提取模块来提取更丰富的图像特征。这种结构的设计使得模型能够更好地捕捉目标的细节和上下文信息,从而提高了检测的准确性。

在训练策略方面,YOLOv8采用了多种技巧来提升模型的泛化能力和鲁棒性。例如,它采用了数据增强技术来扩充训练数据集,使得模型能够在各种场景下都能取得较好的检测效果。此外,YOLOv8还引入了损失函数的改进,使得模型在训练过程中能够更好地优化目标边界框的定位和分类。

总的来说,YOLOv8是一种高效且实时的目标检测算法,它在保持YOLO系列算法简洁性的同时,通过改进模型结构和训练策略,提升了检测准确性和鲁棒性。这使得YOLOv8在实际应用中具有更广泛的适用性,可以应用于各种场景下的目标检测任务。

【效果展示】


【实现部分代码】

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();Yolov8Manager ym = new Yolov8Manager();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){}}
}


【训练的数据集】

模型采用下面的数据集进行官方yolov8模型训练https://download.csdn.net/download/FL1623863129/88702554?spm=1001.2014.3001.5501
【源码下载】

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

vs2019

onnxruntime1.16.3

opencvsharp4.8.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/323388.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmoryOS Ability页面的生命周期

接入穿山甲SDK app示例: android 数独小游戏 经典数独休闲益智 广告接入示例: Android 个人开发者如何接入广告SDK,实现app流量变现 Ability页面的生命周期 学习前端,第一步最重要的是要理解,页面启动和不同场景下的生命周期的…

STM32 CubeMX产生的程序架构

使用STM32CubeMX产生启动相关代码,配置各种外设。在后续程序开发过程中,有可能使用STM32CubeMX逐步产生使用的代码,为了将其产生的代码和我们程序隔离,一种可行的程序架构如下: 在此架构中,STM32CubeMX产生…

【数据分析实战】冰雪大世界携程景区评价信息情感分析采集词云

文章目录 引言数据采集数据集展示数据预处理 数据分析评价总体情况分析本人浅薄分析 各游客人群占比分析本人浅薄分析 各评分雷达图本人浅薄分析 差评词云-可视化本人浅薄分析 好评词云-可视化本人浅薄分析 综合分析写在最后 今年冬天,哈尔滨冰雪旅游"杀疯了&q…

微服务应用可观测性解决方案介绍

目录 一、可观测性出现背景 二、什么是可观测性(Observability) 2.1 可观测性的不同解析 2.1.1 百度维基解析 2.1.2 IBM解析 2.1.3 CNCF(云原生计算机基金会)组织解析 2.1.4 我的个人理解 2.2 可观测性和监控的区别与联系 …

探讨芯片封装的技术、工艺以及与之相关的知识

芯片封装作为芯片技术中的重要环节,扮演着保护和连接芯片的关键角色。通过封装工艺,芯片能够与外界进行通信并在实际应用中发挥作用。本文将深入探讨芯片封装的技术、工艺以及与之相关的知识。 芯片封装的概念与意义 芯片封装是指将芯片封装在特定的封…

PyCharm社区版设置简体中文界面

点击“File”, 出现的菜单中点击“Settings”, 在弹出的界面中,选“Plugins”, 然后在右边输入框中输入“chinese”, 在搜索结果中,选中Chinese(Simplified) Language Pack, 点击右边的“install”即可 最后“r…

SD杂症:TemporalKit的key关键帧无图片问题

本地安装好temporalkit后,进行Ebsynth预处理后,居然发现key文件夹里,没有一张图片 搜遍百度,搜到了原因,也搜到了解决方案 但是。。。。这个解决方案我觉得很不cool,像个打补丁的老师傅,缝缝补补…

Linux第4步_安装VMwareTools

安装Ubuntu操作系统后,就可以安装VMwareTools了,目的是实现“电脑和虚拟机之间互相复制粘贴文件”。 1、双击桌面图标“VMware Workstation Pro”,然后点击下图中的“开机”,打开虚拟机电源。 2、双击下图中的用户名“zgq” 3、…

自学 c++ 要掌握哪些技巧和方法?

自学 c 要掌握哪些技巧和方法? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&…

钼铁,需求量将推动市场进入新一轮发展浪潮

钼铁是一种重要的冶金原料,广泛用于制造高速钢、不锈钢、合金钢、特殊钢等钢材,并且被广泛应用于核工业、电子工业、航空航天等高技术产业领域。随着钢铁市场的不断发展,钼铁市场也逐渐壮大,下面将从全球市场和中国市场分析其发展…

chrome浏览器自动填充密码的字号设置不生效

问题 刷新浏览器初始化字号很小 随便点击一下就会恢复我设置的字号大小 原因 给表单设置自动填充 autocomplete“on” 后,chrome会默认给自动填充的input表单加上 input:-webkit-autofill 私有属性 解决办法 方法一,对私有属性设置样式&#xff0…

C++完成使用map Update数据 非二进制

1、在LXMysql.h和LXMysql.cpp分别定义和编写关于pin语句的代码 //获取更新数据的sql语句 where语句中用户要包含where 更新std::string GetUpdatesql(XDATA kv, std::string table, std::string where); std::string LXMysql::GetUpdatesql(XDATA kv, std::string table, std…