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

[C#]使用C#部署yolov10的目标检测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

cuda和tensorrt版本和上述环境版本不一样的需要重新编译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实现,流程如下

下载源码:https://github.com/THU-MIG/yolov10

并按照官方要求安装好环境:

conda create -n yolov10 python=3.9
conda activate yolov10
pip install -r requirements.txt
pip install -e .

下载yolov10n.pt模型:https://huggingface.co/jameslahm/yolov10n

将Pytorch导出onnx:

# End-to-End ONNX
yolo export model=jameslahm/yolov10{n/s/m/b/l/x} format=onnx opset=13 simplify

将onnx转成tensorrt模型:

trtexec --onnx=yolov10n/s/m/b/l/x.onnx --saveEngine=yolov10n/s/m/b/l/x.engine --fp16

最后将转换好的tenorrt模型使用C#源码即可

【视频演示和解说】

使用C#部署yolov10的目标检测tensorrt模型_哔哩哔哩_bilibili测试环境:win10 x64vs2019cuda11.7+cudnn8.8.0TensorRT-8.6.1.6opencvsharp==4.9.0.NET Framework4.7.2特别注意:环境一定要对上,否则无法正常运行,具体可以参考我的博客和录制视频。博客地址:https://blog.csdn.net/FL1623863129/article/details/139682652, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:用C#部署yolov8的tensorrt模型进行目标检测winform最快检测速度,使用纯opencv部署yolov8目标检测模型onnx,[深度学习][目标检测][面试提问]Batch Normalization批归一化,使用C++部署yolov9的tensorrt模型进行目标检测,labelme json转yolo工具用于目标检测训练数据集使用教程,基于yolov8+bytetrack实现目标追踪视频演示,【yolo标题党的无奈】TRT快不等于TRT快- -!,C++使用纯opencv部署yolov9的onnx模型,yolov5自动标注工具自动打标签目标检测自动标注使用教程,C#实现全网yolov7目前最快winform目标检测icon-default.png?t=N7T8https://www.bilibili.com/video/BV17S411P7he/?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){Yolov10Det detector = new Yolov10Det("yolov10n.engine");Mat image1 = Cv2.ImRead(@"E:\person.jpg");List<DetResult> detResults = detector.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){}private void button3_Click(object sender, EventArgs e){Yolov10Det detector = new Yolov10Det("yolov10n.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/89432589

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

http://www.lryc.cn/news/373143.html

相关文章:

  • Linux CFS 调度器 (1):概述
  • HBase中Master初始化错误~
  • Hive on Spark版本兼容性
  • grep命令知多少
  • [java]windows和linux下jdk1.8安装包所有版本系列下载地址汇总
  • Electron+Vue开源软件:洛雪音乐助手V2.8畅享海量免费歌曲
  • CAPL通过addTimeToMeasurementStartTime或者getLocalTime获取本地时间
  • 谷歌上架,APP被移除了,没封号,换个包名还能重新提审上架?
  • Docker部署MaxKB 知识库(提高问答命中率)
  • LeetCode739每日温度
  • 【Qt】Qt中的几种Timer
  • Excel 多列组合内容循环展开
  • Vue2+Element-ui实现el-table表格自适应高度
  • 【人工智能】开发AI可能获刑?加州1047草案详解
  • 机器学习二分类数据集预处理全流程实战讲解
  • 大模型应用:LangChain-Golang核心模块使用
  • 【Tkinter界面】Canvas 图形绘制(03/5)
  • 【CS.PL】Lua 编程之道: 基础语法和数据类型 - 进度16%
  • centos7 xtrabackup mysql 基本测试(3)---虚拟机环境 安装mysql
  • Java Native Interface 使用指南
  • 代码随想录算法训练营第三十九天 | 62.不同路径、63. 不同路径 II、343. 整数拆分、96.不同的二叉搜索树
  • C/C++函数指针、C#委托是什么?
  • 红队攻防渗透技术实战流程:组件安全:JacksonFastJsonXStream
  • Perl 语言学习进阶
  • LangGraph实战:从零分阶打造人工智能航空客服助手
  • R可视化:R语言基础图形合集
  • mysql导入sql文件失败及解决措施
  • JS:获取鼠标点击位置
  • 使用开源的zip.cpp和unzip.cpp实现压缩包的创建与解压(附源码)
  • npm 异常:peer eslint@“>=1.6.0 <7.0.0“ from eslint-loader@2.2.1