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

news2025/3/3 5:12:00

【测试通过环境】

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.coloradmin.cn/o/1822948.html

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

相关文章

Python基于 Jupyter Notebook 的图形可视化工具库之ipysigma使用详解

概要 在数据科学和网络分析中,图(Graph)结构是一种常用的数据结构,用于表示实体及其关系。为了方便图数据的可视化和交互操作,ipysigma 提供了一个基于 Jupyter Notebook 的图形可视化工具。通过 ipysigma,用户可以在 Jupyter Notebook 中创建、编辑和展示图结构,方便进…

Vue基础面试题(二)

文章目录 1.Vue 单页应用与多页应用的区别2.Vue template 到 render 的过程3. Vue data 中某一个属性的值发生改变后&#xff0c;视图会立即同步执行重新渲染吗&#xff1f;4.Vue的优点5.vue如何监听对象或者数组某个属性的变化6.Vue模版编译原理7. 对SSR的理解8.Vue的性能优化…

现货白银实时交易平台的成长阶段 你出在哪个阶段?

很多人喜欢在现货白银平台上做模拟交易&#xff0c;因为他们认为现货白银实时交易平台上交易太痛苦了&#xff0c;不光随时会面临风险&#xff0c;而且还可能让自己出现大的亏损。如果投资者认为痛苦&#xff0c;那笔者觉得投资者不妨将在现货白银实时交易平台上做交易&#xf…

前端数据模拟Mock.js

新建mock-demo的项目&#xff0c;安装npm install mockjs 新建index.js //引入mockjs import Mock from mockjs //设置延迟时间 // Mock.setup({ // timeout:4000 // }) //使用mockjs模拟数据 Mock.mock(/product/search,{"ret":0,"data":{"mtim…

6年前端社招一个月上岸20K经历,附简历

面经哥只做互联网社招面试经历分享&#xff0c;关注我&#xff0c;每日推送精选面经&#xff0c;面试前&#xff0c;先找面经哥 本人普通本科6年前端经历&#xff0c;从年前开始准备跳槽&#xff0c;一开始感觉自己履历算不上突出&#xff0c;经历过迷茫和沮丧的时候&#xff0…

即时聊天系统

功能描述 该项目是一个前后端分离的即时聊天项目&#xff0c;前端采用vue2、后端使用springboot以mysql8.0作为数据库。 项目功能包含了单聊、群聊功能。在此基础上增加了对好友的功能操作&#xff0c;如备注设为通知、视频聊天、语音聊天、置顶、拉入黑名单、清空聊天记录等。…

小白如何入门编程?零基础入门指南,助你一步步成为编程达人!

零基础编程入门先学什么&#xff1f;编程语言有几百种&#xff0c;我们应该怎么选择。想学习编程&#xff0c;加入互联网行业&#xff0c;哪一个更有前途&#xff1f;在小白学习编程会有各种各样的问题&#xff0c;今天小编我就来为你解答。 一、程序员的类别 程序员从事的人…

Nginx部署Vue项目css文件能加载但是不生效

目录 问题描述问题解决 问题描述 Nginx部署打包后的Vue项目css文件能加载但是不生效&#xff0c; 问题解决 查看响应标头&#xff0c;发现不对劲&#xff0c; Content-Type: text/plain正确的应该是 Content-Type: text/css根本原因是nginx没有告诉浏览器正确的文件类型 所…

如何下载proDAD V4软件及详细安装步骤

简介&#xff1a; proDAD Adorage 是一款一体化的效果库&#xff0c;完美拥有所有的效果&#xff0c;集所有Adorage卷于一体&#xff0c;该系列包含13种可用套装中的17,000多种效果。 对于每种情况都能获得完美的效果&#xff0c;支持Adobe、avid、Corel、Cyberlink、MAGIX等多…

【Android】打开需要NDK的项目的一些报错的问题解决

文章简述 在打开一个新的项目的时候&#xff0c;遇到了一些问题&#xff0c;记录一下问题的解决步骤。 问题1 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring project :app. > NDK not configured. Download it with SDK m…

redis 06 集群

1.节点&#xff0c;这里是把节点加到集群中的操作&#xff0c;跟主从结构不同 这里是在服务端使用命令&#xff1a; 例子&#xff1a; 2.启动节点 节点服务器 首先&#xff0c;先是服务器节点自身有一个属性来判断是不是可以使用节点功能 一般加入集群中的节点还是用r…

24K 纯干干干货:深入探讨 JavaScript 中变量相等性判断

比较两个变量是否相等&#xff0c;确切得说是内容是否相等&#xff0c;首先要划分为引用数据类型之间、基本数据类型之间和引用数据类型和基本数据类型之间&#xff08;这一种使用场景比较少&#xff09;这三种情形。因为引用数据类型和基本数据类型数据存储的方式是不一样的。…

AI模型究竟应该开源还是闭源?

随着人工智能技术的飞速发展&#xff0c;关于AI模型是否应该开源的问题引起了广泛关注。特别是最近Elon Musk对OpenAI及其领导层提起诉讼&#xff0c;指责其违背了开源的初心&#xff0c;这一争论变得更加激烈。在这篇博客中&#xff0c;我们将探讨开源与闭源AI模型的优缺点&am…

HTML制作一个太阳、地球、月球之间的绕转动画

大家好&#xff0c;今天制作一个太阳、地球、月球之间的绕转动画&#xff01; 先看具体效果&#xff1a; 要制作一个太阳、地球、月球之间的绕转动画&#xff0c;我们需要结合HTML、CSS和JavaScript。由于CSS动画和JavaScript动画各有优缺点&#xff0c;这里我将给出一个使用…

【前端速通系列|第一篇】ES6核心语法

文章目录 1.ES6简介2.let和const3.解构4.链判断5.参数默认值6.箭头函数7.模板字符串8.Promise9.Async函数10.Await关键字11.模块化 1.ES6简介 ES6 是 ECMAScript 2015 的缩写&#xff0c;是 ECMAScript 语言标准的第6个版本。ECMAScript 是 JavaScript 语言的国际标准化组织制…

如何在3天内开发一个鸿蒙app

华为鸿蒙操作系统&#xff08;HarmonyOS&#xff09;自2.0版本正式上线以来&#xff0c;在短时间内就部署超过了2亿台设备&#xff0c;纵观全球操作系统的发展史&#xff0c;也是十分罕见的。与其他手机操作系统不同&#xff0c;HarmonyOS自诞生之日起&#xff0c;就是一款面向…

【vue】终端 常用代码 和其他注意

一、安装 以下全拿 qrcode.vue 举例 1. 搜版本 例子&#xff1a;搜 qrcode.vue的版本代码&#xff1a; npm view qrcode.vue versions 2.卸载 代码&#xff1a; npm uninstall qrcode.vue 3.安装 带版本 例子&#xff1a;安装 1.7.0 版本代码&#xff1a; npm i qrcode…

GaussDB技术解读——GaussDB架构介绍(三)

目录 9 智能关键技术方案 智能关键技术一&#xff1a;自治运维系统 智能关键技术二&#xff1a;库内AI引擎 智能关键技术三&#xff1a;智能优化器 10 驱动接口关键技术方案 GaussDB架构介绍&#xff08;二&#xff09;从数据持久化存取层(DataNode)关键技术方案、全局事…

【LeetCode 92.】 反转链表 II

1.题目 虽然本题很好拆解&#xff0c;但是实现起来还是有一些难度的。 2. 分析 尽可能抽象问题&#xff0c;然后简化代码 我在写本题的时候&#xff0c;遇到了下面这两个问题&#xff1a; 没有把[left,right] 这个区间的链表给断开&#xff0c;所以导致反转起来非常麻烦。…

梁建章等Nature发表论文:混合办公使员工离职率下降1/3

近日&#xff0c;斯坦福大学 Nicholas Bloom、香港中文大学&#xff08;深圳&#xff09;经管学院韩若冰、携程集团联合创始人兼董事局主席梁建章&#xff0c;在国际顶尖学术期刊 Nature 上发表了题为&#xff1a;Hybrid working from home improves retention without damagin…