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

[C#]使用C#部署yolov8的目标检测tensorrt模型

【测试通过环境】

win10 x64
vs2019
cuda11.7+cudnn8.8.0
TensorRT-8.6.1.6
opencvsharp==4.9.0
.NET Framework4.7.2

NVIDIA GeForce RTX 2070 Super

版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll,TensorRtExtern源码地址:TensorRT-CSharp-API/src/TensorRtExtern at TensorRtSharp2.0 · guojin-yan/TensorRT-CSharp-API · GitHub

Windows版 CUDA安装参考:Windows版 CUDA安装_win cuda安装-CSDN博客

【特别注意】

tensorrt依赖不同硬件需要自己从onnx转换tensorrt,转换就是调用api实现,比如

TensorRtSharp.Custom.Nvinfer.OnnxToEngine(@"C:\Users\Administrator\Desktop\yolov8n.onnx",1024);

【视频演示和解说】

使用C#部署yolov8的目标检测tensorrt模型_哔哩哔哩_bilibili测试环境:win10 x64vs2019cuda11.7+cudnn8.8.0TensorRT-8.6.1.6opencvsharp==4.9.0.NET Framework4.7.2特别注意:环境一定要对上,否则无法正常运行,具体可以参考我的博客和录制视频。博客地址:blog.csdn.net/FL1623863129/article/details/139282375, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:YOLOv10杀疯了!Github上刚刚发布!超热乎的实时端到端目标检测来了!CV方向的初学者请速速看过来!,北京籍前华为首名女黑客瑾瑾 在b站坚持直播编程到凌晨 可直播间却仅1在线,用C#部署yolov8的tensorrt模型进行目标检测winform最快检测速度,C#模型部署平台:基于YOLOv8目标检测模型的视频检测,yolov10 tensorrt C++ 推理!全网首发!,将yolov5-6.2封装成一个类几行代码完成语义分割任务,labelme json转yolo工具用于目标检测训练数据集使用教程,C#YOLO工业滑轨螺丝缺失检测~示例,使用纯opencv部署yolov8目标检测模型onnx,这也太全了!图像处理、特征提取、目标检测、图像检索、图像分类、图像修复、医疗影像等七大计算机视觉算法一口气学完!icon-default.png?t=N7T8https://www.bilibili.com/video/BV1t142127dW/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

【部分实现源码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FIRC;
using OpenCvSharp;
using TrtCommon;
using TensorRtSharp;
using TensorRtSharp.Custom;
using System.Diagnostics;namespace WindowsFormsApp1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Yolov8Det yolov8Det = new Yolov8Det("yolov8n.engine");Mat image1 = Cv2.ImRead(@"E:\person.jpg");List<DetResult> detResults = yolov8Det.Predict(new List<Mat> { image1 });Mat re_image1 = Visualize.DrawDetResult(detResults[0], image1);Cv2.ImShow("image1", re_image1);Cv2.WaitKey(0);}private void button2_Click(object sender, EventArgs e){TensorRtSharp.Custom.Nvinfer.OnnxToEngine(@"C:\Users\Administrator\Desktop\yolov8n.onnx",1024);}private void button3_Click(object sender, EventArgs e){Yolov8Det detector = new Yolov8Det("yolov8n.engine");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();List<DetResult> detResults = detector.Predict(new List<Mat> { frame });Mat resultImg = Visualize.DrawDetResult(detResults[0], frame);sw.Stop();fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);sw.Reset();Cv2.PutText(resultImg, "FPS=" + fps, new OpenCvSharp.Point(30, 30), HersheyFonts.HersheyComplex, 1.0, new Scalar(255, 0, 0), 3);//显示结果Cv2.ImShow("Result", resultImg);int key = Cv2.WaitKey(10);if (key == 27)break;}capture.Release();}}
}

【演示源码下载地址】https://download.csdn.net/download/FL1623863129/89372271

注意源码提供上面对应环境的dll,只需要安装上面一样cuda+cudnn和tensorrt版本即可正常运行。如果您不安装一样版本不能正常运行。此时需要重新编译TensorRtExtern.dll,此外由于tensorrt依赖硬件不一样电脑可能无法共用tensorrt模型,所以必须要重新转换onnx模型到engine才可以运行。

相关文章:

  • docker运行centos提示Operation not permitted
  • JVM-JAVA-双亲委派机制
  • 智慧医院物联网建设-统一管理物联网终端及应用
  • 问题排查|记录一次基于mymuduo库开发的服务器错误排查(回响服务器无法正常工作)
  • Solidworks 提取模型中的零件,并组合成一个新的零件,放入特征库
  • 浅谈配置元件之计数器
  • HarmonyOS鸿蒙学习笔记(25)相对布局 RelativeContainer详细说明
  • 探索大模型技术及其前沿应用——TextIn文档解析技术
  • Python魔术方法
  • liunx配置网络的命令
  • mac电脑鼠标键盘共享软件:ShareMouse for Mac 激活版
  • CV每日论文--2024.6.4
  • 【干货】超详细域名申请和备案流程,分别需要哪些资料?
  • 性能测试学习-基本使用-元件组件介绍(二)
  • CSS - 元素竖向百分比的基准值是什么?
  • (三)从jvm层面了解线程的启动和停止
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • CentOS 7 修改主机名
  • DOM的那些事
  • GraphQL学习过程应该是这样的
  • Hibernate最全面试题
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • javascript从右向左截取指定位数字符的3种方法
  • Java方法详解
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js面向对象
  • Node项目之评分系统(二)- 数据库设计
  • php面试题 汇集2
  • Spring核心 Bean的高级装配
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 电商搜索引擎的架构设计和性能优化
  • 构造函数(constructor)与原型链(prototype)关系
  • 聊聊directory traversal attack
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 小程序01:wepy框架整合iview webapp UI
  • 异常机制详解
  • Linux权限管理(week1_day5)--技术流ken
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # SpringBoot 如何让指定的Bean先加载
  • (003)SlickEdit Unity的补全
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (HAL库版)freeRTOS移植STMF103
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (学习日记)2024.01.19
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ./configure、make、make install 命令
  • .form文件_SSM框架文件上传篇
  • .gitattributes 文件
  • .jks文件(JAVA KeyStore)