Win10系统下 Tensorrt C++部署yolov5

1. TensorRt介绍

TensorRt是一个有助于在NVIDIA图形处理单元(GPU)上高性能推理c++库。它旨在与TesnsorFlow、Caffe、Pytorch以及MXNet等训练框架以互补的方式进行工作,专门致力于在GPU上快速有效地进行网络推理。一般的深度学习项目,训练时为了加快速度,会使用多 GPU 并行训练。但在部署推理时,为了降低成本,往往使用单个 GPU 机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署,部署端也要有与训练时相同的深度学习环。由于现阶段性能好的模型一般做的都很大,参数很多,而且部署端的机器性能存在差异,不可避免的会降低推理速度。TensorRT 则是对训练好的模型进行优化,当你的网络训练完之后,可以将训练模型文件直接丢进 TensorRT中,而不再需要依赖深度学习框架(Pytorch,TensorFlow 等)。详细介绍可点击如下链接:https://zhuanlan.zhihu.com/p/35

2. 环境搭建

VS2017 + CUDA11.0 + CUDNN8.0.5 + opencv3.4.1 + TensorRT8.2.2.1 + Cmake3.17.1

VS2017和Cmake的安装较为简单,网上自行百度安装即可。

2.1 CUDA11.0 + CUDNN8.0.5

CUDN和CUDNN的安装要根据自己的电脑显卡选择对应的版本,可参考:https://blog.csdn.net/weixin_44

2.2 opcv3.4.1

可参考:https://blog.csdn.net/qq_412778

2.3 TensorRT8.2.2.1

2.3.1 根据自己的CUDA版本下载对应的tensorrt:https://developer.nvidia.com/nv

Win10系统下 Tensorrt C++部署yolov5_第1张图片

2.3.2解压tensorRt文件

1.将 TensorRT-8.2.2.1\include中头文件 copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include

2.将TensorRT-8.2.2.1\lib 中所有lib文件 copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64

3.将TensorRT-8.2.2.1\lib 中所有dll文件copy 到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin

2.3.3.验证TensorRT是否安装好

进入 TensorRT-8.2.2.1/samples/sampleMNIST中,用vs2017打开sample_mnist.sln

项目属性里搞定包含目录(D:\tensorrt\include)和库目录(D:\tensorrt\lib)

项目属性->链接器->输入->附加依赖性->把tensorrt.lib中lib文件的名字加入

在sample_mnist.sln下,重新生成解决方案,再执行,若出现类似数字的图案,即认为配置TensorRT成功

Win10系统下 Tensorrt C++部署yolov5_第2张图片

3. yolov5的TensorRT加速

yolov5 github地址:https://github.com/ultralytics/yolov5

原Tensorrtx github地址:https://github.com/wang-xinyu/tensorrtx

注意两者的版本要对应

Win10系统下 Tensorrt C++部署yolov5_第3张图片

yolov5

Win10系统下 Tensorrt C++部署yolov5_第4张图片

tensorrt

这里我们使用的tensorrt地址为:http://github.com/Monday-Leo/Yolov5_Tensorrt_Win10

使用的模型为官方模型yolov5s.pt

3.1 将仓库中的gen_wts.pyh和下载好的yolov5s.pt复制到yolov5根目录下

Win10系统下 Tensorrt C++部署yolov5_第5张图片

3.2终端运行:

python gen_wts.py -w yolov5s.pt -o yolov5s.wts

-w为pt模型的路径, -o为输出wts模型的路径

或者在pycharm的右上角输入parameters参数:

Win10系统下 Tensorrt C++部署yolov5_第6张图片

运行后在目录中可以得到wts模型

3.3 Cmake编译

在仓库中新建build文件夹

Win10系统下 Tensorrt C++部署yolov5_第7张图片

Cmake选择仓库目录以及新建的build目录

点击左下角的configure,选择自己的VS版本,选择X64,之后点击finish

Win10系统下 Tensorrt C++部署yolov5_第8张图片

没有错误之后点击generate

最后点击open project

Win10系统下 Tensorrt C++部署yolov5_第9张图片

在vs中打开项目后,打开yololayer.h文件,注意将类别,输入尺寸改为自己的,这里我们不做改变

在Release状态下重新生成yolov5项目

Win10系统下 Tensorrt C++部署yolov5_第10张图片

编译成功后在build/Release文件夹中会有生成的exe文件

将之前生成的yolov5s.wts复制到该文件夹下,cmd后的输入

yolov5 -s yolov5s.wts yolov5s.engine s

运行后会生成engine文件

Win10系统下 Tensorrt C++部署yolov5_第11张图片
Win10系统下 Tensorrt C++部署yolov5_第12张图片
Win10系统下 Tensorrt C++部署yolov5_第13张图片

最后将想要检测的图片放入文件夹中,这里我放在img中,输入:

yolov5 -d yolov5s.engine ./img
Win10系统下 Tensorrt C++部署yolov5_第14张图片

可以看到推理速度相对于之前快了好几倍

4.测试结果

Win10系统下 Tensorrt C++部署yolov5_第15张图片
Win10系统下 Tensorrt C++部署yolov5_第16张图片

你可能感兴趣的:(YOLO,人工智能,深度学习)