【測試通過環境】
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,這也太全了!圖像處理、特征提取、目標檢測、圖像檢索、圖像分類、圖像修復、醫療影像等七大計算機視覺算法一口氣學完!https://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才可以運行。