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

[C#]yolov8-onnx在winform部署手势识别模型

【官方框架地址】

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

YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

不过 ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用 ultralytics 这个词,原因是 ultralytics 将这个库定位为算法框架,而非某一个特定算法,一个主要特点是可扩展性。其希望这个库不仅仅能够用于 YOLO 系列模型,而是能够支持非 YOLO 模型以及分类分割姿态估计等各类任务。
总而言之,ultralytics 开源库的两个主要优点是:

  • 融合众多当前 SOTA 技术于一体
  • 未来将支持其他 YOLO 系列以及 YOLO 之外的更多算法

下表为官方在 COCO Val 2017 数据集上测试的 mAP、参数量和 FLOPs 结果。可以看出 YOLOv8 相比 YOLOv5 精度提升非常多,但是 N/S/M 模型相应的参数量和 FLOPs 都增加了不少,从上图也可以看出相比 YOLOV5 大部分模型推理速度变慢了。

模型YOLOv5params(M)FLOPs@640 (B)YOLOv8params(M)FLOPs@640 (B)
n28.0(300e)1.94.537.3 (500e)3.28.7
s37.4 (300e)7.216.544.9 (500e)11.228.6
m45.4 (300e)21.249.050.2 (500e)25.978.9
l49.0 (300e)46.5109.152.9 (500e)43.7165.2
x50.7 (300e)86.7205.753.9 (500e)68.2257.8


额外提一句,现在各个 YOLO 系列改进算法都在 COCO 上面有明显性能提升,但是在自定义数据集上面的泛化性还没有得到广泛验证,至今依然听到不少关于 YOLOv5 泛化性能较优异的说法。对各系列 YOLO 泛化性验证也是 MMYOLO 中一个特别关心和重点发力的方向。

【效果展示】


【实现部分代码】

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){ym.LoadWeights(Application.StartupPath+ "\\weights\\best.onnx", Application.StartupPath + "\\weights\\labels.txt");}private void btn_video_Click(object sender, EventArgs e){}}
}


【视频演示】

bilibili.com/video/BV1L64y1E7Fc/
【源码下载】

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

vs2019

net framework4.7.2

onnxruntime1.16.3
【参考文献】

[1] https://zhuanlan.zhihu.com/p/598566644

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

相关文章:

  • 【uniapp】 uniapp 修改tabBar图标大小和navigationBar字体大小
  • Visual Studio 2017 + opencv4.6 + contribute + Cmake(Aruco配置版本)指南
  • 自定义事件总线
  • 212.【2023年华为OD机试真题(C卷)】堆内存申请(排序和贪心算法-JavaPythonC++JS实现)
  • Flink Watermark和时间语义
  • HarmonyOS UI框架简介
  • 编程羔手解决Maven引入多个版本的依赖包,导致包冲突了
  • C#,入门教程(08)——基本数据类型及使用的基础知识
  • 分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机多特征分类预测
  • 计算机二级Python选择题考点——公共基础部分
  • 《微机原理与应用》期末考试题库(附答案解析)
  • 如何在Android Glide中结合使用CenterCrop和自定义圆角变换(图片部分圆角矩形)
  • 华为机考-手拍球游戏
  • 【线上问题】两台服务器的时间不一致导致jwt解析错误
  • 58.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏菜单文字资源读取的逆向分析
  • Vue-2、初识Vue
  • 机器学习项目标记图像数据 - 安装LabelImg及功能介绍
  • 12.15 log 122.买卖股票的最佳时机 II,55. 跳跃游戏
  • Redis - 挖矿病毒 db0 库 backup 反复出现解决方案
  • LiveGBS流媒体平台GB/T28181常见问题-国标编号是什么设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道
  • Unity ShaderGraph 技能冷却转圈效果
  • C++上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法
  • 如何正确安装Axure插件?详细步骤分享
  • [SwiftUI]工程最低适配iOS13
  • MyBatis-Plus框架学习笔记
  • 【Java】——期末复习题题库(六)
  • 【水文】实现四则运算的简易计算器
  • 计算机毕业设计-----ssm+mysql实现的JavaWeb酒店管理系统
  • 安防监控EasyCVR视频融合/汇聚平台大华热成像摄像机智能告警上报配置步骤
  • 关于“Python”的核心知识点整理大全64