首页IT科技YOLOV4 是什么意思(win10下 yolov8 tensorrt模型加速部署【实战】)

YOLOV4 是什么意思(win10下 yolov8 tensorrt模型加速部署【实战】)

时间2025-06-20 23:33:35分类IT科技浏览7214
导读:Windows10下yolov8 tensorrt模型加速部署【实战】...

Windows10下yolov8 tensorrt模型加速部署【实战】

TensorRT-Alpha

基于tensorrt+cuda 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

Linux tensorrt yolov8保姆教程: https://blog.csdn.net/m0_72734364/article/details/128758544

一                       、加速结果展示

1.1 性能速览

🚀快速看看yolov8n 在移动端RTX2070m(8G)的新能表现:

model video resolution model input size GPU Memory-Usage GPU-Util yolov8n 1920x1080 8x3x640x640 1093MiB/7982MiB 14%

下图是yolov8n的运行时间开销        ,单位是ms:

更多TensorRT-Alpha测试录像在B站视频:

B站:YOLOv8n B站:YOLOv8s

1.2精度对齐

下面是左边是python框架推理结果        ,右边是TensorRT-Alpha推理结果                       。

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驱动       、cuda                      ,cudnn        、opencv                       、tensorrt; 2               、创建属性表; 3        、工程设置               ,运行;

问题:为什么使用vs2019属性表        ,而不用cmake?

回答:因为属性表可以做到:一次创建                       ,到处使用               。

提示:如果您一定需要使用cmake+vs2019 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?lang=cn# 依据实际情况选择,如下图是我的选择(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 -V

CMD窗口打印如下信息表示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, release 11.2, V11.2.67 Build cuda_11.2.r11.2/compiler.29373293_0

note: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 把这个打勾: 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& debug) nvinfer.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/128815530

3.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! # 安装 yolov8 conda create -n yolov8 python==3.8 -y conda activate yolov8 pip install ultralytics==8.0.5 pip install onnx==1.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:

# 640 yolo mode=export model=yolov8n.pt format=onnx dynamic=True #simplify=True yolo mode=export model=yolov8s.pt format=onnx dynamic=True #simplify=True yolo mode=export model=yolov8m.pt format=onnx dynamic=True #simplify=True yolo mode=export model=yolov8l.pt format=onnx dynamic=True #simplify=True yolo mode=export model=yolov8x.pt format=onnx dynamic=True #simplify=True # 1280 yolo mode=export model=yolov8x6.pt format=onnx dynamic=True #simplify=True

3.2 编译 onnx

# trtexec.exe在路径:F:\ThirdParty\TensorRT-8.4.2.4\bin # 640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8s.onnx --saveEngine=yolov8s.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8m.onnx --saveEngine=yolov8m.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8l.onnx --saveEngine=yolov8l.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8x.onnx --saveEngine=yolov8x.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640 # 1280 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8x6.onnx --saveEngine=yolov8x6.trt --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280

你将会的到例如:yolov8n.trt                       、yolov8s.trt、yolov8m.trt等文件                       。

3.3 编译运行

3.3.1 新建               、设置项目 下载TensorRT-Alpha仓库:

git clone

https://github.com/FeiYull/tensorrt-alpha 新建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 --size=640 --batch_size=1 --img=../../data/6406407.jpg --show --savePath ./app_yolov8.exe --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=8 --video=../../data/people.mp4 --show --savePath # 推理视频 ./app_yolov8.exe --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=8 --video=../../data/people.mp4 --show --savePath=../ # 在线推理相机视频 ./app_yolov8.exe --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=2 --cam_id=0 --show ## 1280 # infer camera ./app_yolov8.exe --model=../../data/yolov8/yolov8x6.trt --size=1280 --batch_size=2 --cam_id=0 --show

我的B站所有视频都在WIN10环境运行               ,https://space.bilibili.com/2028719613

yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《ski facility》

yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《NewYork-Stree》

yolov7 tensorrt cuda模型推理加速部署TensorRT-Alpha《Korea-Night》

四       、参考

https://github.com/FeiYull/TensorRT-Alpha

附录

一位热心小伙做的        ,他好努力                       ,前几天经常半夜2点               、3点给我留言               ,太卷了,奋斗精神值得学习                       。

https://www.bilibili.com/video/BV1SM411i7km/?spm_id_from=333.999.0.0&vd_source=a96c9c3f099f4167807291a34fd50fd5

声明:本站所有文章                       ,如无特殊说明或标注                       ,均为本站原创发布       。任何个人或组织,在未征得本站同意时               ,禁止复制                       、盗用       、采集        、发布本站内容到任何网站                       、书籍等各类媒体平台               。如若本站内容侵犯了原著者的合法权益                       ,可联系我们进行处理                       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
c++11 可变参数(C语言可变参数,参数传递)