部署实战 | 手把手教你在Windows下用TensorRT部署YOLOv8(一)

简介: 部署实战 | 手把手教你在Windows下用TensorRT部署YOLOv8(一)

1、加速结果展示


1.1 性能速览

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


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


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

1.2 精度对齐

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

yolov8n : Offical( left ) vs Ours( right )image.pngyolov7-tiny : Offical( left ) vs Ours( right )image.pngyolov6s : Offical( left ) vs Ours( right )image.pngyolov5s : Offical( left ) vs Ours( right )

YOLOv4 YOLOv3 YOLOR YOLOX略。


2、Windows10环境配置


「三步解决win环境配置」

  • 1、安装vs2019、Nvidia驱动、cuda,cudnn、opencv、tensorrt;
  • 2、创建属性表;
  • 3、工程设置,运行;
    问题:为什么使用vs2019属性表,而不用cmake?
    回答:因为属性表可以做到:一次创建,到处使用。

2.1 安装VS2019

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

2.2 安装库

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

2.2.1 安装Nvidia显卡驱动

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

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

image.png

2.2.2 安装 cuda11.2

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

image.png

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目录中
  • 重启系统

image.png

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盘,根据实际情况修改就行了。

image.png

2.3 创建属性表

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

2.3.1 创建OpenCV属性表

创建opencv库debug属性表:

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

image.png

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

image.png

  • step3:文件命名为:OpenCV4.5.5_DebugX64.props -> [添加]
  • 编辑属性表:[如下图:双击属性表]

image.png

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

image.png

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

image.png

  • 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的坑),在后文提到。属性表做到了一次新建,到处使用。

相关文章
|
26天前
|
Java 开发工具
鸿蒙Flutter实战:02-Windows环境搭建踩坑指南
本指南介绍如何搭建鸿蒙Flutter开发环境,包括下载Flutter SDK、配置环境变量(如FLUTTER_STORAGE_BASE_URL、PUB_HOSTED_URL、DEVECO_SDK_HOME等)和检查工具版本。还提到避免项目路径过深、与SDK同盘存放等注意事项,以及解决VsCode无法识别设备的方法。
40 0
|
23天前
|
人工智能 监控 安全
掌握Windows管理利器:WMI命令实战
本文介绍了Windows Management Instrumentation (WMI) 的基本概念和用途,通过多个实用的`wmic`命令示例,如获取CPU信息、查看操作系统详情、管理服务、检查磁盘空间等,展示了WMI在系统维护中的强大功能。适合IT专业人士学习和参考。
|
2月前
|
Windows
Windows操作系统部署安装Kerberos客户端
详细介绍了在Windows操作系统上部署安装Kerberos客户端的完整过程,包括下载安装包、安装步骤、自定义安装路径、修改环境变量、配置hosts文件和Kerberos配置文件,以及安装后的验证步骤。
319 3
Windows操作系统部署安装Kerberos客户端
|
3月前
|
API Docker Windows
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
这篇文章是一份关于Ollama工具的一站式使用指南,涵盖了在Windows系统上安装、使用和定制服务,以及实战案例。
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
|
3月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
65 0
|
3月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
229 0
|
3月前
|
开发框架 JavaScript .NET
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
|
3月前
|
存储 安全 网络安全
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
|
3月前
|
Python Windows
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
|
2天前
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。