【官方框架地址】
https://github.com/ultralytics/ultralytics.git
 【算法介绍】
YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。
不过 ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用 ultralytics 这个词,原因是 ultralytics 将这个库定位为算法框架,而非某一个特定算法,一个主要特点是可扩展性。其希望这个库不仅仅能够用于 YOLO 系列模型,而是能够支持非 YOLO 模型以及分类分割姿态估计等各类任务。
 总而言之,ultralytics 开源库的两个主要优点是:
- 融合众多当前 SOTA 技术于一体
 - 未来将支持其他 YOLO 系列以及 YOLO 之外的更多算法
 
![[C#]yolov8-onnx在winform部署手势识别模型_v8](https://file.cfanz.cn/uploads/png/2024/10/12/0/4401P2d2Ef.png)
下表为官方在 COCO Val 2017 数据集上测试的 mAP、参数量和 FLOPs 结果。可以看出 YOLOv8 相比 YOLOv5 精度提升非常多,但是 N/S/M 模型相应的参数量和 FLOPs 都增加了不少,从上图也可以看出相比 YOLOV5 大部分模型推理速度变慢了。
模型  | YOLOv5  | params(M)  | FLOPs@640 (B)  | YOLOv8  | params(M)  | FLOPs@640 (B)  | 
n  | 28.0(300e)  | 1.9  | 4.5  | 37.3 (500e)  | 3.2  | 8.7  | 
s  | 37.4 (300e)  | 7.2  | 16.5  | 44.9 (500e)  | 11.2  | 28.6  | 
m  | 45.4 (300e)  | 21.2  | 49.0  | 50.2 (500e)  | 25.9  | 78.9  | 
l  | 49.0 (300e)  | 46.5  | 109.1  | 52.9 (500e)  | 43.7  | 165.2  | 
x  | 50.7 (300e)  | 86.7  | 205.7  | 53.9 (500e)  | 68.2  | 257.8  | 
额外提一句,现在各个 YOLO 系列改进算法都在 COCO 上面有明显性能提升,但是在自定义数据集上面的泛化性还没有得到广泛验证,至今依然听到不少关于 YOLOv5 泛化性能较优异的说法。对各系列 YOLO 泛化性验证也是 MMYOLO 中一个特别关心和重点发力的方向。
【效果展示】
![[C#]yolov8-onnx在winform部署手势识别模型_YOLO_02](https://file.cfanz.cn/uploads/jpeg/2024/10/12/0/062G72b8N4.jpeg)
![[C#]yolov8-onnx在winform部署手势识别模型_Click_03](https://file.cfanz.cn/uploads/jpeg/2024/10/12/0/fe4d5GX17U.jpeg)
![[C#]yolov8-onnx在winform部署手势识别模型_System_04](https://file.cfanz.cn/uploads/jpeg/2024/10/12/0/9VfRE86EQ4.jpeg)
 【实现部分代码】
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/ 【源码下载】
【测试环境】
vs2019
net framework4.7.2
onnxruntime1.16.3
 【参考文献】
[1] https://zhuanlan.zhihu.com/p/598566644










