Windows10下YOLOv8 TensorRT CUDA加速部署

释放双眼,带上耳机,听听看~!
本文介绍了在Windows10环境下使用YOLOv8、TensorRT和CUDA进行模型加速部署的详细步骤和配置方法。

前言 本文介绍了Windows10下YOLOv8 TensorRT CUDA加速部署。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

  • TensorRT-Alpha基于tensorrt+cuda c实现模型end2end的gpu加速。

  • 关注仓库《TensorRT-Alpha》:github.com/FeiYull/Ten…

  • YOLO系列开个头,更多模型,敬请期待。

  • 提示:如果您对TensorRT不是很熟悉,请务必按照文档安装环境,根据反馈error,基本都是版本不同,造成导出、cuda…编译等error。

  • Windows10环境安装YOLOv8的python环境安装,参考我的另一篇《Win10环境下yolov8快速配置与测试》:blog.csdn.net/m0_7273436…

  • linux下安装环境很简单,下期更新。

  • 本人能力有限,如有错误,还请大家多多包涵,提出意见。

一、加速结果展示

1.1 性能速览

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

model

video resolution

model input size

GPU Memory-Usage

GPU-Util

yolov8n

1920×1080

8x3x640x640

1093MiB/7982MiB

14%

Windows10下YOLOv8 TensorRT CUDA加速部署

yolov8n一个batch中平均每帧运行耗时(ms)

1.2精度对齐

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

Windows10下YOLOv8 TensorRT CUDA加速部署

yolov8n : Offical( left ) vs Ours( right )

Windows10下YOLOv8 TensorRT CUDA加速部署

yolov7-tiny : Offical( left ) vs Ours( right )

Windows10下YOLOv8 TensorRT CUDA加速部署

yolov6s : Offical( left ) vs Ours( right )

Windows10下YOLOv8 TensorRT CUDA加速部署

yolov5s : Offical( left ) vs Ours( right )

YOLOv4 YOLOv3 YOLOR YOLOX略。

二、Windows10环境配置

三步解决win环境配置:

  • 1、安装vs2019、Nvidia驱动、cuda,cudnn、opencv、tensorrt;

  • 2、创建属性表;

  • 3、工程设置,运行; 问题:为什么使用vs2019属性表,而不用cmake? 回答:因为属性表可以做到:一次创建,到处使用。

2.1 安装VS2019

需要Microsoft账号,如果您有别的途径下载安装也可以。

  • 进入:visualstudio.microsoft.com/zh-hans/vs/…

  • 选择:[2019] -> [下载]

  • 在新页面选择:Visual Studio Community 2019 (version 16.11)

  • 下载完成之后安装过程选择如下图:

  • 重启系统

Windows10下YOLOv8 TensorRT CUDA加速部署

2.2 安装库

注:Nvidia相关网站需要注册账号。

2.2.1 安装Nvidia显卡驱动

Windows10下YOLOv8 TensorRT CUDA加速部署

  • 选择:[搜索]->[下载] ->[双击默认安装] -> [重启系统] -> [进入cmd],输入如下指令:

    nvidia-smi

看到如下信息表明驱动正常:

Windows10下YOLOv8 TensorRT CUDA加速部署

2.2.2 安装 cuda11.2

  • 进入: developer.nvidia.com/cuda-toolki…

  • 选择: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 不需要手动设置环境变量,如下图,环境变量都是自动设置的。

Windows10下YOLOv8 TensorRT CUDA加速部署

2.2.3 安装 cudnn8.2.1

  • 进入网站:developer.nvidia.com/rdp/cudnn-a…

  • 选择: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目录中

  • 重启系统

Windows10下YOLOv8 TensorRT CUDA加速部署

2.2.4 下载 tensorrt8.4.2.4

  • 进入网站:developer.nvidia.cn/nvidia-tens…

  • 把这个打勾: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:ThirdPartyTensorRT-8.4.2.4lib”添加到环境变量,如下图:

  • 重启系统

Windows10下YOLOv8 TensorRT CUDA加速部署

2.2.5 OpenCV4.5.5安装

  • 进入:opencv.org/releases/

  • 选择:[OpenCV – 4.5.5] -> [Windows]

  • 下载完成之后,是一个exe的自解压格式,解压到:D:ThirdParty

  • 并将路径:”D:ThirdPartyopencv4.5.5buildbin” 和 “D:ThirdPartyopencv4.5.5buildx64vc15bin”添加到环境变量,如下图:

  • 重启系统 note:我的opencv在D盘,tensorrt在E盘,根据实际情况修改就行了。

Windows10下YOLOv8 TensorRT CUDA加速部署

2.3 创建属性表

一般地,Visual Studio 2019,一个库对应两个属性表文件,分别对应:vs2019的debug模式和release模式,例如:本文中OpenCV创建了这两种。而TensorRT和CUDA只需要创建一种属性表(适用以上两种模式)。

2.3.1 创建OpenCV属性表

创建opencv库debug属性表:

  • step1:基于VS2019随便新建一个C++项目,如下图,项目设置为Debug、X64模式

Windows10下YOLOv8 TensorRT CUDA加速部署

  • step2:如下图,选择:[属性窗口] -> [右击Debug|x64] -> [添加新项目属性表]

Windows10下YOLOv8 TensorRT CUDA加速部署

  • step3:文件命名为:OpenCV4.5.5_DebugX64.props -> [添加]

  • 编辑属性表:[如下图:双击属性表]

Windows10下YOLOv8 TensorRT CUDA加速部署

  • step4:如下图,选择:[通用属性] -> [VC++目录] -> [包含目录] -> [编辑]

Windows10下YOLOv8 TensorRT CUDA加速部署

  • step5:如下图,将两个OpenCV两个头文件目录拷贝进去 -> [确认]

Windows10下YOLOv8 TensorRT CUDA加速部署

  • step6:选择:[通用属性] -> [VC++目录] -> [库目录] -> [编辑] -> 将路径:”D:ThirdPartyopencv4.5.5buildx64vc15lib”拷贝进去 -> [确认]

  • step7:选择:[通用属性] -> [链接器] -> [输入] -> [附加依赖项] -> 将文件名”opencv_world455d.lib”拷贝进去->[确认]小结:到这里,opencv库debug属性表制作完成,release属性表和上述流程一样,唯一区别在于,如下图,项目切换到Release x64模式,新建OpenCV4.5.5_ReleaseX64属性表,然后在step7中,将文件名修改为:”opencv_world455.lib”

Windows10下YOLOv8 TensorRT CUDA加速部署

请记住,制作属性表就3个步骤:

  • 拷贝include路径

  • 拷贝lib路径,外加设置dll到系统环境变量

  • 拷贝lib文件名称

2.3.2 创建TensorRT属性表

右击Debug|x64 or 右击Release|x64新建属性表,重命名为:TensorRT8.4.2.4_X64,

Windows10下YOLOv8 TensorRT CUDA加速部署

依照上一节3个步骤:

  • step1:选择:[通用属性] -> [VC++目录] -> [包含目录] -> [编辑] -> 把上述3个include路径拷贝进去

  • step2:选择:[通用属性] -> [VC++目录] -> [库目录] -> [编辑] -> 把上述lib路径拷贝进去

  • step3:选择:[通用属性] -> [链接器] -> [输入] -> [附加依赖项] -> [编辑] -> 将上述lib文件名称拷贝进去->[确认]最后,修改tensorrt属性表:[通用属性] -> [C/C++] -> [预处理器] -> [预处理器定义] -> 添加指令:_CRT_SECURE_NO_WARNINGS -> [确认]

2.3.3 创建CUDA属性表

CUDA属性表直接白嫖官方,在路径:C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.2extrasvisual_studio_integrationMSBuildExtensionsCUDA 11.2.props

最后,我们应该有了如下属性表文件:

Windows10下YOLOv8 TensorRT CUDA加速部署

其中,cuda 和tensorrt的属性表同时兼容release x64 和debug x64,你再新建TensorRT-Alpha中yolov8 yolov7 yolov6 等项目后,只需要把上述提前做好的属性表引入到工程就行了,当然项目还需要进行简单设置(设置NVCC,避免tensorrt的坑),在后文提到。属性表做到了一次新建,到处使用。

三、YOLOv8模型部署

Windows10环境安装YOLOv8的python环境安装,参考我的另一篇《Win10环境下yolov8快速配置与测试》:blog.csdn.net/m0_7273436…

3.1 获取YOLOv8 onnx文件

直接在网盘下载 weiyun or google driver 或者使用如下命令导出onnx:

Windows10下YOLOv8 TensorRT CUDA加速部署

导出 onnx:

Windows10下YOLOv8 TensorRT CUDA加速部署

3.2 编译 onnx

Windows10下YOLOv8 TensorRT CUDA加速部署

你将会的到例如: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命令行上运行程序,如下:

Windows10下YOLOv8 TensorRT CUDA加速部署

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

Windows10下YOLOv8 TensorRT CUDA加速部署

四、参考

github.com/FeiYull/Ten…

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

深度理解变分自编码器(VAE) | 从入门到精通

计算机视觉入门1v3辅导班

计算机视觉交流群

用于超大图像的训练策略:Patch Gradient Descent

CV小知识讨论与分析(5)到底什么是Latent Space?

【免费送书活动】关于语义分割的亿点思考

新方案:从错误中学习,点云分割中的自我规范化层次语义表示

Transformer交流群

经典文章:Transformer是如何进军点云学习领域的?

CVPR 2023 Workshop | 首个大规模视频全景分割比赛

如何更好地应对下游小样本图像数据?不平衡数据集的建模的技巧和策

U-Net在2022年相关研究的论文推荐

用少于256KB内存实现边缘训练,开销不到PyTorch千分之一

PyTorch 2.0 重磅发布:一行代码提速 30%

Hinton 最新研究:神经网络的未来是前向-前向算法

聊聊计算机视觉入门

FRNet:上下文感知的特征强化模块

DAMO-YOLO | 超越所有YOLO,兼顾模型速度与精度

《医学图像分割》综述,详述六大类100多个算法

如何高效实现矩阵乘?万文长字带你从CUDA初学者的角度入门

近似乘法对卷积神经网络的影响

BT-Unet:医学图像分割的自监督学习框架

语义分割该如何走下去?

轻量级模型设计与部署总结

从CVPR22出发,聊聊CAM是如何激活我们文章的热度!

入门必读系列(十六)经典CNN设计演变的关键总结:从VGGNet到EfficientNet

入门必读系列(十五)神经网络不work的原因总结

入门必读系列(十四)CV论文常见英语单词总结

入门必读系列(十三)高效阅读论文的方法

入门必读系列(十二)池化各要点与各方法总结

TensorRT教程(三)TensorRT的安装教程

TensorRT教程(一)初次介绍TensorRT

TensorRT教程(二)TensorRT进阶介绍

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

长短期记忆网络(LSTM):解决RNN梯度问题的方法

2023-12-17 12:22:14

AI教程

卷积算法与特征提取

2023-12-17 12:37:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索