[C#]winform部署yolov5-onnx模型

【官方框架地址】

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

Yolov5,全称为You Only Look Once version 5,是计算机视觉领域目标检测算法的一个里程碑式模型。该模型由ultralytics团队开发,并因其简洁高效的特点而备受关注。Yolov5在保留了前代模型(Yolov3)优点的同时,进一步优化了网络结构,提高了检测速度和准确率。

Yolov5的核心思想是利用深度学习和神经网络,对输入的图像进行多尺度特征提取,并利用回归方法预测出图像中目标物体的位置和类别信息。相较于传统的目标检测算法,Yolov5具有更高的检测精度和更快的运行速度。

Yolov5模型结构主要包括三个部分:骨干网络(Backbone)、特征金字塔网络(Feature Pyramid Network)和检测头(Detection Head)。

  1. 骨干网络:Yolov5采用了轻量级的网络结构,如CSPDarknet53和EfficientNet等,用于提取图像的多尺度特征。这些网络结构在保持高性能的同时,显著降低了模型的计算复杂度。
  2. 特征金字塔网络:特征金字塔网络在骨干网络的基础上,进一步提取多尺度的特征信息,为后续的目标检测提供丰富的特征信息。
  3. 检测头:检测头负责根据特征金字塔网络输出的特征信息,进行目标物体的位置和类别预测。Yolov5采用了类似于anchor box的方法,通过预测物体与anchor box的交并比(Intersection over Union)和类别信息,实现目标检测。

相较于前代模型,Yolov5在训练过程中采用了许多优化策略,如数据增强、学习率衰减、知识蒸馏等,进一步提高了模型的性能。此外,Yolov5还支持多任务学习(Multi-task Learning),可以在同一模型中同时进行目标检测、实例分割和关键点检测等任务,提高了模型的泛化能力。

在实际应用中,Yolov5表现出了优秀的性能。在COCO、PASCAL VOC等目标检测数据集上,Yolov5取得了领先于其他算法的准确率。此外,由于Yolov5的简洁高效特点,该模型在移动设备、嵌入式系统等领域也有着广泛的应用前景。

总的来说,Yolov5是计算机视觉领域目标检测算法的一个重要进展。它不仅提高了目标检测的准确率和速度,而且具有较低的计算复杂度和良好的泛化能力。未来,随着深度学习技术的不断发展,相信会有更多优秀的目标检测算法涌现出来,推动计算机视觉领域的技术进步。

【效果展示】


【参考实现部分代码】

using SixLabors.Fonts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using System;
using Yolov5Net.Scorer;
using Yolov5Net.Scorer.Models;using var image = await Image.LoadAsync<Rgba32>("Assets/test.jpg");
{using var scorer = new YoloScorer<YoloCocoP5Model>("Assets/Weights/yolov5n.onnx");{var predictions = scorer.Predict(image);var font = new Font(new FontCollection().Add("C:/Windows/Fonts/consola.ttf"), 16);foreach (var prediction in predictions) // draw predictions{var score = Math.Round(prediction.Score, 2);var (x, y) = (prediction.Rectangle.Left - 3, prediction.Rectangle.Top - 23);image.Mutate(a => a.DrawPolygon(new Pen(prediction.Label.Color, 1),new PointF(prediction.Rectangle.Left, prediction.Rectangle.Top),new PointF(prediction.Rectangle.Right, prediction.Rectangle.Top),new PointF(prediction.Rectangle.Right, prediction.Rectangle.Bottom),new PointF(prediction.Rectangle.Left, prediction.Rectangle.Bottom)));image.Mutate(a => a.DrawText($"{prediction.Label.Name} ({score})",font, prediction.Label.Color, new PointF(x, y)));}await image.SaveAsync("Assets/result.jpg");}
}


【源码下载】
【测试环境】

vs2019
netframework4.7.2
onnxruntime1.16.3
opencvsharp4.8.0

注意模型在yolov5-6.0和yolov5-7.0测试通过,<6.0不支持
 

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

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

相关文章

验证端口连通性的工具 telent nc

验证端口连通性的工具 telent nc 1、怎么验证端口连通性的工具2、telnet3、nc 1、怎么验证端口连通性的工具 telent nc这2个工具都可以验证端口连通性 2、telnet 命令格式 默认是验证tcp端口连通性 telnet ip port如果需要验证udp端口连通性 需要加上 -u telnet -u ip por…

固态继电器SSR光耦OR-806A ,对标替代AQW212

固态继电器 VL60V输出端击穿电压光耦 高隔离电压 60 至 600V 输出耐受电压 工业温度范围&#xff1a;-40 to 85℃ 高灵敏度和高速响应 特征 输入和输出之间的高隔离电压 &#xff08;Viso&#xff1a;5000 V rms&#xff09;。 控制低电平模拟信号 高灵敏度和高速响应 …

Java常用类---日期时间类

日期时间类 Date类 简介 在Java中&#xff0c;Date类用来封装当前的日期和时间。Date类提供两个构造函数来初始化对象&#xff0c;如下所示。 通过Date() 使用当前日期和时间来初始化对象。 通过Date(long millisec) 来初始化对象&#xff0c;其中的参数是从1970年1月1日起…

day1·算法-双指针

今天是第一天&#xff0c;GUNDOM带你学算法&#xff0c;跟上我的节奏吗&#xff0c;一起闪击蓝桥杯&#xff01; 正文展开&#xff0c;今天先上点小菜供大家想用&#xff0c;如有错误或者建议直接放评论区&#xff0c;我会一个一个仔细查看的哦。 双方指针问题一般是在数组中…

react 学习笔记

一、创建虚拟dom ReactDOM.render(虚拟dom&#xff0c;要渲染的节点) <body><div id"test"></div><!-- 引入react核心库 --><script src"../js/react.development.js"></script><!-- 引入react-dom&#xff0c;用…

基于elementUI封装的带复选框el-checkbox的下拉多选el-select组件

效果图&#xff1a; 组件&#xff1a;MultipleSelect.vue <template><el-select v-model"selectValues" v-bind"$attrs" v-on"listeners" multiple placeholder"请选择" style"width: 50%" change"changeSel…

接口测试快速上手指南

大量线上BUG表明&#xff0c;对接口进行测试可以有效提升产品质量&#xff0c;暴露手工测试时难以发现的问题&#xff0c;同时也能缩短测试周期&#xff0c;提升测试效率。但在实际执行过程中&#xff0c;接口测试被很多同学打上了“上手难&#xff0c;门槛高”的标签。 本文旨…

【书生·浦语大模型实战营04】《(4)XTuner 大模型单卡低成本微调实战》学习笔记

《(4)XTuner 大模型单卡低成本微调实战》 课程文档&#xff1a;《XTuner 大模型单卡低成本微调实战》 1 Finetune简介 LLM的下游应用中&#xff0c;增量预训练和指令跟随是经常会用到两种的微调模式 1.1 增量预训练微调 使用场景&#xff1a;让基座模型学习到一些新知识&a…

matplotlib教程(一)—— 入门基础

前言 Matplotlib 是 Python 的绘图库&#xff0c;它能让使用者很轻松地将数据图形化&#xff0c;并且提供多样化的输出格式&#xff1b;它可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等 在使用它之前&#xff0c;应导入&#xff1a;import matp…

【计算机组成原理】程序的转换及机器级表示 常用计算机术语英文缩写汇总

编码 二进制编码的十进制数&#xff08;BCD&#xff09;&#xff1a;Binary Coded Decimal美国信息交换标准代码&#xff08;ASCII&#xff09;&#xff1a;American Standard Code for Information Interchange 数据的排列顺序 最低有效位&#xff08;LSB&#xff09;&…

Docker安装Elesticsearch7详细步骤

​ 1、创建安装目录 mkdir -p /usr/local/docker/es-docker 2、配置虚拟内存 如果不配置&#xff0c;后面启动es会报错。 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 配置如下 vi /etc/sysctl.conf vm.max_map_coun…

基于Hadoop的网上购物行为大数据分析及预测系统【flask+echarts+机器学习】前后端交互

有需要本项目或者部署的系统可以私信博主&#xff0c;提供远程部署和讲解 本研究基于淘宝用户行为的开源数据展开大数据分析研究&#xff0c;通过Hadoop大数据分析平台对阿里天池公开的开源数据集进行多维度的用户行为分析&#xff0c;为电商销售提供可行性决策。 首先我们将大…