[C#]winform部署官方yolov8-obb旋转框检测的onnx模型

这篇具有很好参考价值的文章主要介绍了[C#]winform部署官方yolov8-obb旋转框检测的onnx模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【官方框架地址】

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

Yolov8-obb(You Only Look Once version 8 with Oriented Bounding Boxes)是一种先进的对象检测算法,它在传统的Yolov3和Yolov4基础上进行了优化,加入了OBB(Oriented Bounding Box)旋转框检测,能够更精确地检测并定位出目标物体的位置。

在传统的目标检测算法中,通常使用的是固定方向的边界框(Bounding Box),它假设所有物体在图像中的位置都是相对于图像中心来计算的。然而,这种假设并不总是成立,尤其在处理具有明显方向特征的物体时,固定方向的边界框就无法准确地定位物体的真实位置。

Yolov8-obb通过引入OBB旋转框检测,解决了这一问题。它允许边界框以任意角度存在,更能适应不同方向的目标物体。此外,Yolov8-obb还采用了一种称为“anchor”的机制,通过预设一系列不同大小和方向的锚点框,来逼近真实的物体位置。这种机制不仅提高了检测精度,还大大减少了需要训练的参数数量,提高了算法的效率。

除了旋转框检测,Yolov8-obb还在骨干网络、特征金字塔网络、分类器和回归器等方面进行了优化。例如,它采用了CSPDarknet53作为骨干网络,增强了特征提取能力;采用了多尺度特征融合策略,提高了对不同尺度目标的检测能力;采用了新的非极大值抑制算法,进一步筛选出最有可能的物体位置。

总的来说,Yolov8-obb通过引入旋转框检测和一系列优化策略,提高了目标检测的精度和效率,为计算机视觉领域带来了新的突破。

【效果展示】

yolov8-obb,C#,YOLO
【实现部分代码】

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
    {
        Bitmap src = null;
        Yolov8ObbManager detector = null;

        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 = new Bitmap(openFileDialog.FileName);
                pictureBox1.Image = src;


            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(pictureBox1.Image==null)
            {
                return;
            }
            var result = detector.Inference(src);
            var resultImg = detector.DrawImage(src, result);
            pictureBox2.Image = resultImg;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            detector = new Yolov8ObbManager(Application.StartupPath+"\\weights\\yolov8s-obb.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 bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(frame);
                var result = detector.Inference(bmp);
                var resultImg = detector.DrawImage(bmp, result);
                sw.Stop();
                fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);
                sw.Reset();
                frame = OpenCvSharp.Extensions.BitmapConverter.ToMat(new Bitmap(resultImg));
                Cv2.PutText(frame, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);
                //显示结果
                Cv2.ImShow("Result", frame);
                int key = Cv2.WaitKey(10);
                if (key == 27)
                    break;
            }

            capture.Release();
        }
    }
}


【视频演示】

https://www.bilibili.com/video/BV1ki4y1i7up/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee
【测试环境】

vs2019,netframework4.7.2,onnxruntime1.16.3
 文章来源地址https://www.toymoban.com/news/detail-808769.html

到了这里,关于[C#]winform部署官方yolov8-obb旋转框检测的onnx模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [C#]winform部署yolov8图像分类的openvino格式的模型

    【官方框架地址】 https://github.com/ultralytics/ultralytics 【openvino介绍】 OpenVINO是一个针对Intel硬件优化的开源工具包,用于优化和部署深度学习模型。以下是OpenVINO部署模型的主要优点: 高性能:OpenVINO提供了一系列性能优化工具,如模型量化和剪枝等,可以在Intel硬件平台上实现

    2024年01月21日
    浏览(37)
  • [C#]winform部署openvino官方提供的人脸检测模型

    【官方框架地址】 https://github.com/sdcb/OpenVINO.NET 【框架介绍】 OpenVINO(Open Visual Inference Neural Network Optimization)是一个由Intel推出的,针对计算机视觉和机器学习任务的开源工具套件。通过优化神经网络,加速深度学习推理,OpenVINO可以帮助开发者更高效地在Intel硬件上部署机器

    2024年01月21日
    浏览(33)
  • YOLOv8初体验:检测、跟踪、模型部署

    YOLOv8 有两种安装方式,一种是直接用 pip 命令安装: 另外一种是通过源码安装: 安装完成后就可以通过 yolo 命令在命令行进行使用了。 使用 YOLOv8 进行目标检测,可以使用下面的命令: 如果模型权重不存在,程序会自动从GitHub中下载。如果对命令行的参数不了解,可以参考

    2024年02月03日
    浏览(23)
  • 目标检测再升级!YOLOv8模型训练和部署

    YOLOv8 是 Ultralytics 开发的 YOLO(You Only Look Once)物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行

    2024年01月20日
    浏览(33)
  • openvino部署yolov8 检测、分割、分类及姿态模型实例详解

    本文重点参考:https://github.com/openvino-book/yolov8_openvino_cpp/tree/main 文中代码为简便版本,如果要使用请自行修改并封装 openvnio部署模型比较方便和简单,而且不易出错,就是速度慢了点! 下边分别给出 部署源码

    2024年02月16日
    浏览(36)
  • 瑞芯微RK3588 C++部署Yolov8检测和分割模型

    最近这一个月在研究国产瑞芯微板子上部署yolov8的检测和分割模型,踩了很多坑,记录一下部署的过程和遇到的一些问题: 需要的环境和代码主要包括: (1)rknn-toolkit2-1.5.2:工具链,开发环境 (2)rockchip-yolov8:pt模型转onnx模型 (3)yolov8_onnx2rknn:在(2)的基础上转检测

    2024年04月09日
    浏览(42)
  • 2023.01更新 c++下面部署yolov8检测和实例分割模型(七)

    2023.12.05 更新: 新增yolov8的RT-DETR部署 先开贴占个坑。 yolov8:https://github.com/ultralytics/ultralytics 这次的v8更新的是一个框架,里面也可以用v5和v3。 但是这次更新来说,目前模型的检测效果和之前的yolov7刚出来一样,会多出很多误检,在某些情况下这些误检反而效果不好。另外最

    2024年02月11日
    浏览(26)
  • YOLOv8 人体姿态估计(关键点检测) python推理 && ONNX RUNTIME C++部署

    目录   1、下载权重 ​编辑2、python 推理 3、转ONNX格式 4、ONNX RUNTIME C++ 部署 utils.h utils.cpp detect.h detect.cpp main.cpp CmakeList.txt 我这里之前在做实例分割的时候,项目已经下载到本地,环境也安装好了,只需要下载pose的权重就可以 输出:   用netron查看一下:  如上图所是,YOLO

    2024年02月07日
    浏览(35)
  • 目标检测笔记(十四): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

    目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的特定目标并确定其位置。通过训练深度学习模型,如卷积神经网络(CNN),可以实现对各种目标的精确检测。常见的目标检测任务包括:人脸检测、行人检测、车辆检测等。目标检测在安防

    2024年02月07日
    浏览(39)
  • 用于增强现实的实时可穿带目标检测:基于YOLOv8进行ONNX转换和部署

    点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID | 计算机视觉研究院 学习群 | 扫码在主页获取加入方式 计算机视觉研究院专栏 Column of Computer Vision Institute 今天给大家介绍了一种在增强现实(AR)环境中使用机器学习(ML)进行实时目标检测的软件体

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包