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 )yolov7-tiny : Offical( left ) vs Ours( right )yolov6s : Offical( left ) vs Ours( right )yolov5s : 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账号,如果您有别的途径下载安装也可以。
- 进入: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的坑),在后文提到。属性表做到了一次新建,到处使用。