当前位置:   article > 正文

[C#]C# winform部署yolov8目标检测的openvino模型_c# yolov8manager

c# yolov8manager

【官方框架地址】

https://github.com/ultralytics/ultralytics
openvino介绍】

OpenVINO(Open Visual Inference & Neural Network Optimization)是由Intel推出的,用于加速深度学习模型推理的工具套件。它旨在提高计算机视觉和深度学习应用的性能,特别是在边缘计算和实时推理场景中。

OpenVINO的核心功能包括对多种深度学习框架的支持、高效的模型优化和推理引擎,以及跨多种硬件平台的可扩展性。它支持包括TensorFlow、Caffe、PyTorch等在内的主流深度学习框架,并能够将这些框架的模型转换为OpenVINO的中间表示格式(Intermediate Representation,IR),从而实现对模型的优化和加速。

优化过程包括对模型的剪枝、量化、压缩等操作,以减小模型大小、降低计算复杂度,并提高推理速度。推理引擎则负责将优化后的模型部署到实际的硬件平台上,如Intel的处理器、GPU、FPGA等,实现高效的推理计算。

此外,OpenVINO还提供了一系列的工具和库,如Inference Engine、Media SDK等,用于简化深度学习应用的开发和部署。这些工具和库提供了丰富的计算机视觉和深度学习算法库,以及对音频、视频、图像等多媒体数据的处理能力,使得开发者能够更加便捷地构建各种智能应用。

总的来说,OpenVINO是一个功能强大、易用性强的工具套件,它为开发者提供了从模型训练到推理的一站式解决方案,使得深度学习技术能够更好地应用于实际场景中,提高计算机视觉和人工智能应用的性能和效率。

【效果展示】


【实现部分代码】

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using OpenCvSharp;
  12. namespace FIRC
  13. {
  14. public partial class Form1 : Form
  15. {
  16. Mat src = new Mat();
  17. Yolov8Manager detector = new Yolov8Manager();
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22. private void button1_Click(object sender, EventArgs e)
  23. {
  24. OpenFileDialog openFileDialog = new OpenFileDialog();
  25. openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";
  26. openFileDialog.RestoreDirectory = true;
  27. openFileDialog.Multiselect = false;
  28. if (openFileDialog.ShowDialog() == DialogResult.OK)
  29. {
  30. src = Cv2.ImRead(openFileDialog.FileName);
  31. pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);
  32. }
  33. }
  34. private void button2_Click(object sender, EventArgs e)
  35. {
  36. if(pictureBox1.Image==null)
  37. {
  38. return;
  39. }
  40. var result = detector.Inference(src);
  41. var resultMat = detector.DrawImage(result,src);
  42. pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap
  43. }
  44. private void Form1_Load(object sender, EventArgs e)
  45. {
  46. detector.LoadWeights(Application.StartupPath+ "\\weights\\yolov8n.xml");
  47. }
  48. private void button3_Click(object sender, EventArgs e)
  49. {
  50. VideoCapture capture = new VideoCapture(0);
  51. if (!capture.IsOpened())
  52. {
  53. Console.WriteLine("video not open!");
  54. return;
  55. }
  56. Mat frame = new Mat();
  57. var sw = new Stopwatch();
  58. int fps = 0;
  59. while (true)
  60. {
  61. capture.Read(frame);
  62. if (frame.Empty())
  63. {
  64. Console.WriteLine("data is empty!");
  65. break;
  66. }
  67. sw.Start();
  68. var result = detector.Inference(src);
  69. var resultMat = detector.DrawImage(result, src);
  70. sw.Stop();
  71. fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);
  72. sw.Reset();
  73. Cv2.PutText(resultMat, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);
  74. //显示结果
  75. Cv2.ImShow("Result", resultMat);
  76. int key = Cv2.WaitKey(10);
  77. if (key == 27)
  78. break;
  79. }
  80. capture.Release();
  81. }
  82. }
  83. }


【视频演示】

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

vs2019,opencvsharp4.8.0,netframework4.7.2

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号