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

[C#]使用C#部署yolov8-seg的实例分割的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(@"yolov8s-seg.onnx",1024);

【视频演示和解说】

使用C#部署yolov8-seg的实例分割的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/139292165, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:使用C#部署yolov8的目标检测tensorrt模型,使用C#部署yolov8的旋转框obb检测tensorrt模型,将yolov5-6.2封装成一个类几行代码完成语义分割任务,将yolov8封装成一个类几行代码完成语义分割任务,用C#部署yolov8的tensorrt模型进行目标检测winform最快检测速度,yolov8 TensorRT C++ C#部署,labelme json转yolo工具用于目标检测训练数据集使用教程,labelme转yolov5和yolov7 yolov8实例分割数据集工具使用教程,基于yolov5的单目测距视频演示,使用C#的winform部署yolov8的onnx实例分割模型icon-default.png?t=N7T8https://www.bilibili.com/video/BV1aD42137Z4/?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){var detector = new Yolov8Seg("yolov8s-seg.engine");Mat image1 = Cv2.ImRead(@"person.jpg");var Results = detector.Predict(new List<Mat> { image1 });Mat re_image1 = Visualize.DrawSegResult(Results[0], image1);Cv2.NamedWindow("result",WindowFlags.KeepRatio);Cv2.ImShow("result", re_image1);Cv2.WaitKey(0);}private void button2_Click(object sender, EventArgs e){TensorRtSharp.Custom.Nvinfer.OnnxToEngine(@"yolov8s-seg.onnx",1024);}private void button3_Click(object sender, EventArgs e){var detector = new Yolov8Seg("yolov8s-seg.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();var results = detector.Predict(new List<Mat> { frame });Mat resultImg = Visualize.DrawSegResult(results[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/89373743?spm=1001.2014.3001.5501

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

相关文章:

  • vscode写html不会自动补全
  • 东方博宜1703 - 小明买水果
  • 数据结构:希尔排序
  • 身份认证与口令攻击
  • excel怎么对非数字求和汇总?
  • AI边缘计算盒子在智慧交通的应用
  • USB主机模式——Android
  • python项目中的日志定义
  • Qt for android : libusb在android中使用
  • gitea的git库备份与恢复
  • nacos连接异常did not find the Leader node;
  • JAVA应用服务器如何快速定位CPU问题
  • 【vue】@、@/、../和./的区别
  • apollo版本更新简要概述
  • 【机器学习】深入探索机器学习:利用机器学习探索股票价格预测的新路径
  • 【Leetcode】101. 对称二叉树
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • docker-consul
  • gf框架之分页模块(五) - 自定义分页
  • LeetCode18.四数之和 JavaScript
  • Protobuf3语言指南
  • 分布式熔断降级平台aegis
  • 前嗅ForeSpider采集配置界面介绍
  • 事件委托的小应用
  • 通过几道题目学习二叉搜索树
  • 异常机制详解
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • #1015 : KMP算法
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #NOIP 2014# day.2 T2 寻找道路
  • #控制台大学课堂点名问题_课堂随机点名
  • $(function(){})与(function($){....})(jQuery)的区别
  • (03)光刻——半导体电路的绘制
  • (07)Hive——窗口函数详解
  • (175)FPGA门控时钟技术
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (利用IDEA+Maven)定制属于自己的jar包
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)SvelteKit教程:hello world
  • (一)基于IDEA的JAVA基础10
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)winform之ListView
  • ... 是什么 ?... 有什么用处?
  • .gitignore
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net 中viewstate的原理和使用
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [ SNOI 2013 ] Quare
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)