[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);

【视频演示和解说】

【部分实现源码】

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();}}
}

【演示源码下载地址】

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【豆伴匠】L1-L12更新完,一站式解决文史积累、阅读、写作难题,弯道超车,寒假必备

合抱之木&#xff0c;生于毫末&#xff1b; 九层之台&#xff0c;起于垒土&#xff1b; 千里之行&#xff0c;始于足下。 豆伴匠是什么&#xff1f; 豆伴匠内容包括&#xff1a;人、文、史、作四个模块&#xff0c;全面覆盖文史知识及读写技巧。 目前&#xff0c;豆伴匠有L…

【408真题】2009-24

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

[C++]红黑树

一、概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍&#xff0c;因而是…

每日一读: 硬件网卡tx支持哪些功能特性offload(ixgbe驱动为例)

ixgbe驱动 rte_eth_dev_info_get -> ixgbe_dev_info_get -> ixgbe_get_tx_port_offloads uint64_t ixgbe_get_tx_port_offloads(struct rte_eth_dev *dev) {uint64_t tx_offload_capa;struct ixgbe_hw *hw IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);tx_…

CIM分级

定义 以建筑信息模型&#xff08;BIM&#xff09;、地理信息系统&#xff08;GIS&#xff09;、物联网&#xff08;IoT&#xff09;等技术为基础&#xff0c;整合城市地上地下、室内室外、历史现状未来多维多尺度信息模型数据和城市感知数据&#xff0c;构建起三维数字空间的城…

c/c++:离开停车场

题目描述(题目链接&#xff09; 你被困在一个多层停车场。您的任务是仅使用楼梯离开停车场。出口总是在一楼的右下角。 创建一个采用矩阵的函数&#xff0c;其中&#xff1a; 0 表示免费停车位。 1 表示楼梯。 2 表示您的起始位置&#xff0c;可以在停车场的任何一层。 出口总…

面试问到Spring中的@Autowired注解,可以这样答

前言 在Spring框架中&#xff0c;依赖注入是一个核心概念&#xff0c;它允许将一个对象的依赖关系外部化并由Spring容器来管理。Autowired注解是实现这一点的关键工具之一。当然&#xff0c;这块知识也是面试官们老生常谈的问题。 下面就跟着博主的步伐&#xff0c;一起来探讨…

GCANet去雾算法

目录 1. 引言 2. 门控上下文注意机制&#xff08;GCA&#xff09; 3. 去雾流程 4. 模型代码 5. GCANet的优势 6. 去雾效果 1. 引言 GCANet(Gate-Controlled Attention Network)是一种用于图像去雾的深度学习算法&#xff0c;通过引入注意力机制来改进传统的去雾方法&…

C#实现纳秒级的计时器功能

常用的 Windows API 方法 GetTickCount() 返回系统启动后经过的毫秒数。另一方面&#xff0c;GetTickCount() 函数仅有 1ms 的分辨精度&#xff0c;精度也很不好。 我们要另外寻找一种方法来精确测量时间。 Win32 API 使用 QueryPerformanceCounter() 和 QueryPerformanceFre…

大模型场景应用汇总(持续更新)

一、应用场景 1.办公场景 智能办公&#xff1a;文案生成&#xff08;协助构建大纲优化表达内容生成&#xff09;、PPT美化&#xff08;自动排版演讲备注生成PPT&#xff09;、数据分析&#xff08;生成公式数据处理表格生成&#xff09;。 智能会议&#xff1a;会议策划&…

P10442 「MYOI-R3」字符串

「MYOI-R3」字符串 题目描述 给定字符串 s , t s,t s,t。 现在你要在 s , t s,t s,t 中删除一些字符并将它们重新排列使 s t st st。 问操作后的 ∣ s ∣ |s| ∣s∣&#xff08;即字符串 s s s 的长度&#xff09;最大是多少&#xff1f; 输入格式 第一行一个字符串…

深入探索 MongoDB:高级索引解析与优化策略

MongoDB 是一种非常流行的 NoSQL 数据库&#xff0c;它支持丰富的索引类型和功能&#xff0c;以提高数据查询的效率和性能。本文将详细介绍 MongoDB 的高级索引&#xff0c;包括基本语法、常用命令、示例、应用场景、注意事项和总结。 基本语法 在 MongoDB 中&#xff0c;可以…

密码学基础概念

加密性 什么是加密&#xff1f; 1.对原有的明文数据&#xff0c;执行某种运算&#xff0c;得到密文数据。 2.密文数据对于未授权人员而言&#xff0c;在一定上程度上加大了解读的难度 3.加密功能用于实现机密性 什么是密钥&#xff1f; 1.如同持有保险柜钥匙才能打开保险柜…

数据结构算法题day05

数据结构算法题day05 题目算法思想代码 题目 从有序表中删除所有其值重复的元素&#xff0c;使表中所有元素的值均不同。算法思想 第一个元素&#xff08;不重复&#xff09;依次向后扫描&#xff0c;不重复就保留&#xff0c;重复&#xff08;不保留&#xff09;就删除所有重…

排序进阶----插入排序,希尔排序

各位看官们好&#xff0c;接下来鄙人想与大家分享的实现被称为六大排序之一的插入排序。其实关于这六大排序在我们最开始就已经接触过了。我们在最开始学习c语言的时候&#xff0c;我们要学习到其中之一的冒泡排序。虽然现在看起来冒泡排序确实是没有太大的实际效果&#xff0c…

【Xilinx约束】create_generated_clock 约束语法介绍

在 Xilinx Vivado 环境中&#xff0c;使用 create_generated_clock 约束来定义由锁相环&#xff08;PLL&#xff09;或时钟管理模块&#xff08;如 MMCM 或 DCM&#xff09;生成的时钟。这个约束用于指定生成时钟的属性&#xff0c;例如时钟的源、相位和频率。 基本语法 以下是…

618必买的数码好物有哪些?盘点兼具设计与实用的数码好物分享

随着618购物节的到来&#xff0c;数码爱好者们又开始跃跃欲试&#xff0c;期待在这个年度大促中寻找到自己心仪的数码好物&#xff0c;在这个数字化时代&#xff0c;数码产品不仅是我们日常生活的必需品&#xff0c;更是提升生活品质的重要工具&#xff0c;那么在众多的数码产品…

【MySQL】 1130 -Host ‘14.*.**.*‘ is not allowed to connect to this MySQL server

这个错误表明MySQL服务器拒绝了来自IP地址为14.*.**.*的主机的连接请求。这通常是由于MySQL用户的主机限制引起的。 要解决这个问题&#xff0c;你需要在MySQL中允许指定主机的连接。你可以按照以下步骤操作&#xff1a; 使用具有足够权限的用户&#xff08;如root用户&#x…

HNU-计算机体系结构-实验1-RISC-V流水线

计算机体系结构 实验1 计科210X 甘晴void 202108010XXX 1 实验目的 参考提供为了更好的理解RISC-V&#xff0c;通过学习RV32I Core的设计图&#xff0c;理解每条指令的数据流和控制信号&#xff0c;为之后指令流水线及乱序发射实验打下基础。 参考资料&#xff1a; RISC-…

Ubuntu20.04升级到22.04之后出现的问题

项目场景&#xff1a; 之前一致使用的是Ubuntu20.04&#xff0c;虽然丑了点&#xff0c;但是用着没什么问题&#xff0c;最近没能按捺住好奇心&#xff0c;升级到了22.04&#xff0c;升级后颜值有所提高&#xff0c;但是也带来了一些问题。 从20.04升级到22.04&#xff0c;起始…