TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署TensorRT系列之 Linux下 yolox tensorrt模型加速部署TensorRT系列之 Linux下 u2net tensorrt模型加速部署更多点我进去…文章目录Windows10下yolov8 tensorrt模型加速部署【实战】一、加速结果展示1.1 性能速览1.2精度对齐二、Windows10环境配置2.1 安装VS20192.2 安装库2.2.1 安装Nvidia显卡驱动2.2.2 安装 cuda11.22.2.3 安装 cudnn8.2.12.2.4 下载 tensorrt8.4.2.42.2.5 OpenCV4.5.5安装2.3 创建属性表2.3.1 创建OpenCV属性表2.3.2 创建TensorRT属性表2.3.3 创建CUDA属性表三、YOLOv8模型部署3.1 获取YOLOv8onnx文件3.2 编译 onnx3.3 编译运行四、如何部署自己训练的yolov8模型五、参考附录Windows10下yolov8 tensorrt模型加速部署【实战】TensorRT-Alpha基于tensorrtcuda c实现模型end2end的gpu加速支持win10、linux在2023年已经更新模型YOLOv8, YOLOv7, YOLOv6, YOLOv5, YOLOv4, YOLOv3, YOLOX, YOLOR,pphumanseg,u2net,EfficientDet。关注仓库《TensorRT-Alpha》https://github.com/FeiYull/TensorRT-Alpha/tree/legacyLinux tensorrt yolov8保姆教程: https://blog.csdn.net/m0_72734364/article/details/128758544一、加速结果展示1.1 性能速览快速看看yolov8n 在移动端RTX2070m(8G)的新能表现modelvideo resolutionmodel input sizeGPU Memory-UsageGPU-Utilyolov8n1920x10808x3x640x6401093MiB/7982MiB14%下图是yolov8n的运行时间开销单位是ms更多TensorRT-Alpha测试录像在B站视频B站YOLOv8nB站YOLOv8s1.2精度对齐下面是左边是python框架推理结果右边是TensorRT-Alpha推理结果。yolov8n : Offical( left ) vs Ours( right )yolov7-tiny : Offical( left ) vs Ours( right )yolov6s : Offical( left ) vs Ours( right )yolov5s : Offical( left ) vs Ours( right )YOLOv4 YOLOv3 YOLOR YOLOX略。二、Windows10环境配置三步解决win环境配置1、安装vs2019、Nvidia驱动、cudacudnn、opencv、tensorrt2、创建属性表3、工程设置运行注一定是先安装vs2019再安装cuda顺序不能颠倒因为cuda会自动给vs2019安装插件。问题为什么使用vs2019属性表而不用cmake回答因为属性表可以做到一次创建到处使用。提示如果您一定需要使用cmakevs2019 or cmake clion请参考附录这是一位热心观众的方法供参考。2.1 安装VS2019需要Microsoft账号如果您有别的途径下载安装也可以。进入https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/选择[2019] - [下载]在新页面选择 Visual Studio Community 2019 (version 16.11)下载完成之后安装过程选择如下图重启系统2.2 安装库注Nvidia相关网站需要注册账号。2.2.1 安装Nvidia显卡驱动进入 https://www.nvidia.cn/Download/index.aspx?langcn#依据实际情况选择如下图是我的选择(for RTX3070)选择[搜索]-[下载] -[双击默认安装] - [重启系统] - [进入cmd]输入如下指令nvidia-smi看到如下信息表明驱动正常2.2.2 安装 cuda11.2进入: https://developer.nvidia.com/cuda-toolkit-archive选择CUDA Toolkit 11.2.0 (December 2020)选择[Windows] - [x86_64] - [10] - [exe(local)] - [Download(2.9GB)]双击安装重启在cmd窗口输入如下指令nvcc-VCMD窗口打印如下信息表示cuda11.2安装正常nvcc: NVIDIA(R)Cuda compiler driver Copyright(c)2005-2020 NVIDIA Corporation Built on Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020 Cuda compilation tools, release11.2, V11.2.67 Build cuda_11.2.r11.2/compiler.29373293_0note:cuda11.2 不需要手动设置环境变量如下图环境变量都是自动设置的。2.2.3 安装 cudnn8.2.1进入网站https://developer.nvidia.com/rdp/cudnn-archive选择 Download cuDNN v8.2.1 (June 7th, 2021), for CUDA 11.x选择 cuDNN Library for Windows (x86)你将会下载这个压缩包: “cudnn-11.3-windows-x64-v8.2.1.32_2.zip”解压之后cudnn的头文件、库文件都要拷贝到cuda安装目录。如下图进入cudnn解压所在文件夹中include拷贝所有头文件粘贴到CUDA/v11.2/include中lib、bin中的文件也拷贝到对应cuda目录中重启系统2.2.4 下载 tensorrt8.4.2.4进入网站https://developer.nvidia.cn/nvidia-tensorrt-8x-download网站更新2023.12https://developer.nvidia.com/nvidia-tensorrt-8x-download顺便法克 Nvidia把这个打勾 I Agree To the Terms of the NVIDIA TensorRT License Agreement选择: TensorRT 8.4 GA Update 1选择: TensorRT 8.4 GA Update 1 for Windows 10 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 and 11.7 ZIP Package你将会下载这个压缩包: “TensorRT-8.4.2.4.Windows10.x86_64.cuda-11.6.cudnn8.4.zip”解压到F:\ThirdParty并重命名为TensorRT-8.4.2.4并将路径F:\ThirdParty\TensorRT-8.4.2.4\lib添加到环境变量如下图重启系统2.2.5 OpenCV4.5.5安装进入https://opencv.org/releases/选择[OpenCV – 4.5.5] - [Windows]下载完成之后是一个exe的自解压格式解压到D:\ThirdParty并将路径“D:\ThirdParty\opencv4.5.5\build\bin” 和 D:\ThirdParty\opencv4.5.5\build\x64\vc15\bin添加到环境变量如下图重启系统note我的opencv在D盘tensorrt在E盘根据实际情况修改就行了。2.3 创建属性表一般地Visual Studio 2019一个库对应两个属性表文件分别对应vs2019的debug模式和release模式例如本文中OpenCV创建了这两种。而TensorRT和CUDA只需要创建一种属性表(适用以上两种模式)。2.3.1 创建OpenCV属性表创建opencv库debug属性表step1基于VS2019随便新建一个C项目如下图项目设置为Debug、X64模式step2如下图选择[属性窗口] - [右击Debug|x64] - [添加新项目属性表]step3文件命名为OpenCV4.5.5_DebugX64.props - [添加]编辑属性表[如下图双击属性表]step4如下图选择[通用属性] - [VC目录] - [包含目录] - [编辑]step5如下图将两个OpenCV两个头文件目录拷贝进去 - [确认]step6选择[通用属性] - [VC目录] - [库目录] - [编辑] - 将路径D:\ThirdParty\opencv4.5.5\build\x64\vc15\lib拷贝进去 - [确认]step7选择[通用属性] - [链接器] - [输入] - [附加依赖项] - 将文件名opencv_world455d.lib拷贝进去-[确认]小结到这里opencv库debug属性表制作完成release属性表和上述流程一样唯一区别在于如下图项目切换到Release x64模式新建OpenCV4.5.5_ReleaseX64属性表然后在step7中将文件名修改为“opencv_world455.lib”请记住制作属性表就3个步骤拷贝include路径拷贝lib路径外加设置dll到系统环境变量拷贝lib文件名称2.3.2 创建TensorRT属性表右击Debug|x64 or 右击Release|x64新建属性表重命名为TensorRT8.4.2.4_X64# include路径F:\ThirdParty\TensorRT-8.4.2.4\include F:\ThirdParty\TensorRT-8.4.2.4\samples\common# F:\ThirdParty\TensorRT-8.4.2.4\samples\common\windows # 这个路径文件不需要包含# lib路径F:\ThirdParty\TensorRT-8.4.2.4\lib# lib文件名称for release debugnvinfer.lib nvinfer_plugin.lib nvonnxparser.lib nvparsers.lib依照上一节3个步骤step1选择[通用属性] - [VC目录] - [包含目录] - [编辑] - 把上述3个include路径拷贝进去step2选择[通用属性] - [VC目录] - [库目录] - [编辑] - 把上述lib路径拷贝进去step3选择[通用属性] - [链接器] - [输入] - [附加依赖项] - [编辑] - 将上述lib文件名称拷贝进去-[确认]最后修改tensorrt属性表[通用属性] - [C/C] - [预处理器] - [预处理器定义] - 添加指令_CRT_SECURE_NO_WARNINGS - [确认]2.3.3 创建CUDA属性表CUDA属性表直接白嫖官方在路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\visual_studio_integration\MSBuildExtensions\CUDA 11.2.props最后我们应该有了如下属性表文件其中cuda 和tensorrt的属性表同时兼容release x64 和debug x64你再新建TensorRT-Alpha中yolov8 yolov7 yolov6 等项目后只需要把上述提前做好的属性表引入到工程就行了当然项目还需要进行简单设置(设置NVCC避免tensorrt的坑)在后文提到。属性表做到了一次新建到处使用。三、YOLOv8模型部署Windows10环境安装YOLOv8参考我的另一篇《Win10环境下yolov8快速配置与测试》https://blog.csdn.net/m0_72734364/article/details/1288155303.1 获取YOLOv8onnx文件直接在网盘下载 weiyun or google driver 或者使用如下命令导出onnx:# yolov8 官方仓库: https://github.com/ultralytics/ultralytics# yolov8 官方教程: https://docs.ultralytics.com/quickstart/# TensorRT-Alpha will be updated synchronously as soon as possible!# 安装 yolov8conda create-nyolov8python3.8-yconda activate yolov8 pipinstallultralytics8.0.5 pipinstallonnx1.12.0# 下载官方权重(.pt file)https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8m.pt https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8l.pt https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x6.pt导出 onnx:# 640yolomodeexportmodelyolov8n.ptformatonnxdynamicTrueopset12#simplifyTrueyolomodeexportmodelyolov8s.ptformatonnxdynamicTrueopset12#simplifyTrueyolomodeexportmodelyolov8m.ptformatonnxdynamicTrueopset12#simplifyTrueyolomodeexportmodelyolov8l.ptformatonnxdynamicTrueopset12#simplifyTrueyolomodeexportmodelyolov8x.ptformatonnxdynamicTrueopset12#simplifyTrue# 1280yolomodeexportmodelyolov8x6.ptformatonnxdynamicTrueopset12#simplifyTrue新增更新如何使用代码导出onnx文件。在yolov8官方源码目录下新建my_export.py文件如下代码yaml是官方提供的配置文件如果是自己训练的模型那就设置为自定义yaml文件即可。fromultralyticsimportYOLO# Load a modelmodelYOLO(ultralytics/cfg/models/v8/yolov8.yaml)modelYOLO(yolov8n.pt)# load an official model# Export the modelmodel.export(formatonnx,dynamicTrue,opset12)# 第2、3个参数禁止修改3.2 编译 onnx# trtexec.exe在路径F:\ThirdParty\TensorRT-8.4.2.4\bin# 640../../../../TensorRT-8.4.2.4/bin/trtexec.exe--onnxyolov8n.onnx--saveEngineyolov8n.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec.exe--onnxyolov8s.onnx--saveEngineyolov8s.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec.exe--onnxyolov8m.onnx--saveEngineyolov8m.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec.exe--onnxyolov8l.onnx--saveEngineyolov8l.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640../../../../TensorRT-8.4.2.4/bin/trtexec.exe--onnxyolov8x.onnx--saveEngineyolov8x.trt--buildOnly--minShapesimages:1x3x640x640--optShapesimages:4x3x640x640--maxShapesimages:8x3x640x640# 1280../../../../TensorRT-8.4.2.4/bin/trtexec.exe--onnxyolov8x6.onnx--saveEngineyolov8x6.trt--buildOnly--minShapesimages:1x3x1280x1280--optShapesimages:4x3x1280x1280--maxShapesimages:8x3x1280x1280你将会的到例如yolov8n.trt、yolov8s.trt、yolov8m.trt等文件。3.3 编译运行3.3.1 新建、设置项目下载TensorRT-Alpha仓库gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacy新建yolov8 C项目参考B站视频【提示从0分34秒开始演示如何设置NVCC编译如何避免tensorrt在win环境的坑】yolov8 tensorrt 实战之先导小结后续创建TensorRT-Alpha中YOLOv7、 YOLOv6等工程之后只需要将上文中的属性表添加到工程然后按照《yolov8 tensorrt 实战之先导》提到的设置工程就OK。这篇教程太详细了这年头好像很少有人愿意免费给出这么诚意的教程。3.3.2 编译运行上面视频在vs2019中设置命令行参数您也可以在CMD命令行上运行程序如下# 下面参数解释# --show 表示可视化结果# --savePath 表示保存默认保存在build目录# --savePath../ 保存在上一级目录## 640# 推理图片./app_yolov8.exe--model../../data/yolov8/yolov8n.trt--size640--batch_size1--img../../data/6406407.jpg--show--savePath./app_yolov8.exe--model../../data/yolov8/yolov8n.trt--size640--batch_size4--video../../data/people.mp4--show--savePath# 推理视频./app_yolov8.exe--model../../data/yolov8/yolov8n.trt--size640--batch_size4--video../../data/people.mp4--show--savePath../# 在线推理相机视频./app_yolov8.exe--model../../data/yolov8/yolov8n.trt--size640--batch_size2--cam_id0--show## 1280# infer camera./app_yolov8.exe--model../../data/yolov8/yolov8x6.trt--size1280--batch_size2--cam_id0--show我的B站所有视频都在WIN10环境运行https://space.bilibili.com/2028719613yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《ski facility》yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《NewYork-Stree》yolov7 tensorrt cuda模型推理加速部署TensorRT-Alpha《Korea-Night》四、如何部署自己训练的yolov8模型未必避免文章太长直接给出演示视频yolov8 tensorrt 部署自己训练的模型五、参考https://github.com/FeiYull/TensorRT-Alpha/tree/legacy附录
