yolov5部署之七步完成tensorRT模型推理加速

96 篇文章 19 订阅
25 篇文章 1 订阅

前言

    前段时间研究了Pytorch的环境配置,之后便从github上下载了yolov5的源码,并在自己的电脑端配置好对应的环境并运行,最后发现生成的权重文件yolov5s.pt不仅可以通过量化压缩成onxx模型,而且还可以使用TensorRT推理加速生成engine模型,这对使得模型部署在移动端具有很大的优势,于是便尝试着在自己的电脑上通过TensorRT部署yolov5模型。
     现在网上有很多可以参考的博客,但大多数都是针对某一个环节进行了仔细的解释说明,这在前期的学习中不免会让人产生云里雾里的感觉,难以从一个全局的角度去看待这个问题,换句话说就是很少有把整个流程先总结下来,先让我们知道需要那些模块,该准备些什么模块,以及这些模块之间又有什么样的联系,然后再细分到各个小模块去说明解释。所以今天就从这个角度去发出,总结一下最近学习的一些内容。
在此之前假设你已经掌握了PytorchCUDAcuDNN的基础知识以及配置好了yolov5的环境并调试运行过源码

:如果还没有掌握上述基础知识,可以参考另外两篇博文
1.深度学习之Pytorch环境搭建
2.yolov5部署之环境配置及源码测试

首先整个过程分为以下7个步骤(模块):

  • step 1. 下载yolov5源码以及tensorrtx源码,并将yolov5s.pt转为.wts模型。
  • step 2. 确定并下载自己准备使用的CUDA版本。
  • step 3. 根据自己的CUDA版本下载对应版本的cuDNN以及TensorRT
  • step 4. 根据自己使用的VS版本下载对应版本的OpenCV
  • step 5. 安装CUDA
  • step 6. 安装cuDNN、TensorRT以及验证TensorRT是否安装成功
  • step 7. 下载Cmake软件,利用Cmake软件编译生成yolov5的VS工程,测试并完成推理

下面将从这个7个步骤,逐步进行解释,首先贴出我的环境:

  • 系统 : WIN 10
  • cuda_10.2.89_441.22_win10
  • cudnn-10.2-windows10-x64-v8.1.1.33
  • TensorRT-7.0.0.11.Windows10.x86_64.cuda-10.2.cudnn7.6
  • OpenCV 3.4.3
  • CMake 3.9.16

代码版本:

  • yolov5 3.0
  • tensorrtx 3.0
git clone -b v3.0 https://github.com/ultralytics/yolov5.git
git clone -b yolov5-v3.0 https://github.com/wang-xinyu/tensorrtx.git

这里不得不说一下wang-xinyu的工作实在是太赞了! 源码地址点这里

step 1. 下载yolov5源码以及tensorrtx源码,并将yolov5s.pt转为.wts模型

  • 将tensorrtx源码中的gen_wts.py复制到yolov5源码中并运行,生成.wts模型。
    在这里插入图片描述

step 2. 确定并下载自己准备使用的CUDA版本。


网址:cuda-toolkit
在这里插入图片描述

step 3. 根据自己的CUDA版本下载对应版本的cuDNN以及TensorRT


网址: cudnn
在这里插入图片描述

step 4. 根据自己使用的VS版本下载对应版本的OpenCV

step 5. 安装CUDA

安装cuda这里解答几点疑惑

  • 安装直接默认即可,不用设置不同的路径,设置相同路径不会互相影响。
  • 一台电脑安装可以安装多个cuda版本, 且不同版本之间不会覆盖
  • 不同版本的cuda之间的切换,只需将环境变量的路径置前即可。

我这里安装了两个cuda版本,所以有两个文件夹
在这里插入图片描述

step 6. 安装cuDNN、TensorRT以及验证TensorRT是否安装成功

1. 安装cuDNN

  • 1 将cuDNN压缩包解压
  • 2 将cuda\bin中的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin
  • 3 将cuda\include中的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include
  • 4 将cuda\lib中的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib

4步完成cuDNN安装

2. 安装TensorRT

  • 1 将TensorRT压缩包解压
  • 2 将 TensorRT-7.0.0.11\include中头文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include
  • 3 将TensorRT-7.0.0.11\lib 中所有lib文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
  • 4 将TensorRT-7.0.0.11\lib 中所有dll文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin

4步完成TensorRT安装

3. 验证TensorRT是否安装成功

  • 1-用VS2015 打开 TensorRT-7.0.0.11\samples\sampleMNIST\sample_mnist.sln
  • 2- 在VS2015中,右键工程,选择属性->配置属性->常规->目标平台版本->8.1
  • 3- 在VS2015中,右键工程,选择属性->配置属性->常规->平台工具集->vs2015(v140)
  • 4- 右键工程->重新生成
  • 5- 用anaconda 进入TensorRT-7.0.0.11\data\mnist 目录,运行python download_pgms.py
  • 6- 进入TensorRT-7.0.0.11\bin,双击sample_mnist.exe,如果没有报错则说配置成功。

在这里插入图片描述

第6步运行出现如下结果,则说明配置成功
:如果提示没有.pgm文件,则检查第5步是否下载了数据
在这里插入图片描述

step 7. 下载Cmake软件,利用Cmake软件编译生成yolov5的VS工程,测试并完成推理

1. 下载Cmake软件

2. 配置OpenCV环境变量

  • 1-新建一个系统变量OpenCV_DIR
  • 2- 在系统变量Path中添加OpenCV343路径

在这里插入图片描述

在这里插入图片描述
3. 修改tensorrtx/yolov5/CMakeLists.txt文件中的OpenCV和TensorRT路径

注: CMakeLists.txt为生成VS工程的配置文件,源码为作者的路径,需要设置成自己的路径,主要是 OpenCVTensorRT的路径
在这里插入图片描述

4. 利用Cmake软件编译生成yolov5VS工程

  • 1- 打开CMake
  • 2- source code 为源码的路径 build the binaries 为生成的VS工程的路径
  • 3- 路径设置完成后,点击左下方 Configure,然后选择VS的版本以及x64平台
  • 4- 点击Generate生成项目
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
注:配置时出现这样红色的警告忽略
在这里插入图片描述
注:最后一步生成报错也忽略,然后打开工程在这里插入图片描述

5. 打开yolov5VS工程,生成engine模型

  • 1- 在刚刚设置的build the binaries 路径下,打开yolov5的工程
  • 2- 编译生成
  • 3- 可以看到在\tensorrtx\yolov5\build\Debug文件下生成了一个yolov5.exe文件
  • 4- cmd进入到\tensorrtx\yolov5\build\Debug目录下,然后执行yolov5.exe -s 命令, 可以看到在当前目录下生成了一个yolov5.engine文件,说明转换成功。
  • 5- 在\tensorrtx\yolov5\build\Debug目录下新建一个samples文件夹然后放入测试图片,最好通过cmd执行yolov5.exe -d ../samples,调用yolov5.engine进行测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后打个广告,点个赞再走!

总结

在中间的过程中可能会出现以下问题:

  • 找不到dll,请检测自己的cuDNN,和TensorRT是否安装成功。
  • 如果有Assertion failed: engine != nullptr错误,请检查自己的TensorRT版本是否匹配。
  • 如果CMake生成的yolov5VS工程编译不通过,请检查自己的cuda, cuDNN, 以及TensorRT的版本。

如果想进一步将YOLOv5模型封装成dll供其他模块调用可以参考另一篇博文:

yolov5部署之dll封装并调用的方法

GIF图效果演示如下

在这里插入图片描述

##################################################################

66.如果需要封装远程技术支持请私信我

已帮助很多小伙伴实现了自己小项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

深夜跟小伙伴一起远程debug,虽然各种奇奇怪怪的报错,但也一起熬夜乐在其中
在这里插入图片描述

看到小伙伴的电脑上成功封装,并推理出结果,那一刻感觉互相所有的付出都是值得的,
在这里插入图片描述

#############################################################################


视觉与控制前沿公众号,第一时间获取最有价值的前沿视觉与控制文章。

在这里插入图片描述

公众号链接视觉与控制公众号

拓展

另推荐一门深蓝学院开设讲解TensorRT模型加速的线上课程,可以对TensorRT整体框架的细节理解和运用都能起到很好的帮助:

链接:深度神经网络加速 cuDNN 与 TensorRT

欢迎大家去我主页左侧扫码了解相关课程
评论 113
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Christo3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值