赞
踩
前段时间研究了Pytorch
的环境配置,之后便从github
上下载了yolov5
的源码,并在自己的电脑端配置好对应的环境并运行,最后发现生成的权重文件yolov5s.pt
不仅可以通过量化压缩成onxx模型,而且还可以使用TensorRT
推理加速生成engine模型,这对使得模型部署在移动端具有很大的优势,于是便尝试着在自己的电脑上通过TensorRT
部署yolov5
模型。
现在网上有很多可以参考的博客,但大多数都是针对某一个环节进行了仔细的解释说明,这在前期的学习中不免会让人产生云里雾里的感觉,难以从一个全局的角度去看待这个问题,换句话说就是很少有把整个流程先总结下来,先让我们知道需要那些模块,该准备些什么模块,以及这些模块之间又有什么样的联系,然后再细分到各个小模块去说明解释。所以今天就从这个角度去发出,总结一下最近学习的一些内容。
在此之前假设你已经掌握了Pytorch
、CUDA
、cuDNN
的基础知识以及配置好了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
的工作实在是太赞了! 源码地址点这里
略
网址:cuda-toolkit
略
网址: cudnn
略
安装cuda
这里解答几点疑惑
cuda
版本, 且不同版本之间不会覆盖cuda
之间的切换,只需将环境变量的路径置前即可。我这里安装了两个cuda版本,所以有两个文件夹
1. 安装cuDNN
cuDNN
压缩包解压cuda\bin
中的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin
cuda\include
中的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include
cuda\lib
中的文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib
4步完成cuDNN安装
2. 安装TensorRT
TensorRT
压缩包解压TensorRT-7.0.0.11\include
中头文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include
TensorRT-7.0.0.11\lib
中所有lib
文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
TensorRT-7.0.0.11\lib
中所有dll
文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
4步完成TensorRT安装
3. 验证TensorRT是否安装成功
VS2015
打开 TensorRT-7.0.0.11\samples\sampleMNIST\sample_mnist.sln
VS2015
中,右键工程,选择属性->配置属性->常规->目标平台版本->8.1
VS2015
中,右键工程,选择属性->配置属性->常规->平台工具集->vs2015(v140)
anaconda
进入TensorRT-7.0.0.11\data\mnist
目录,运行python download_pgms.py
TensorRT-7.0.0.11\bin
,双击sample_mnist.exe
,如果没有报错则说配置成功。第6步运行出现如下结果,则说明配置成功
注:如果提示没有.pgm
文件,则检查第5步
是否下载了数据
1. 下载Cmake
软件
略
2. 配置OpenCV环境变量
OpenCV_DIR
Path
中添加OpenCV343
路径
3. 修改tensorrtx/yolov5/CMakeLists.txt文件中的OpenCV和TensorRT路径
注: CMakeLists.txt
为生成VS
工程的配置文件,源码为作者的路径,需要设置成自己的路径,主要是 OpenCV
和TensorRT
的路径
4. 利用Cmake
软件编译生成yolov5
的VS
工程
CMake
source code
为源码的路径 build the binaries
为生成的VS
工程的路径 Configure
,然后选择VS
的版本以及x64
平台Generate
生成项目
注:配置时出现这样红色的警告忽略
注:最后一步生成报错也忽略,然后打开工程
5. 打开yolov5
的VS
工程,生成engine模型
build the binaries
路径下,打开yolov5的工程\tensorrtx\yolov5\build\Debug
文件下生成了一个yolov5.exe
文件cmd
进入到\tensorrtx\yolov5\build\Debug
目录下,然后执行yolov5.exe -s
命令, 可以看到在当前目录下生成了一个yolov5.engine
文件,说明转换成功。\tensorrtx\yolov5\build\Debug
目录下新建一个samples
文件夹然后放入测试图片,最好通过cmd
执行yolov5.exe -d ../samples
,调用yolov5.engine
进行测试
最后打个广告,点个赞再走!
在中间的过程中可能会出现以下问题:
dll
,请检测自己的cuDNN
,和TensorRT
是否安装成功。Assertion failed: engine != nullptr
错误,请检查自己的TensorRT版本是否匹配。CMake
生成的yolov5
的VS
工程编译不通过,请检查自己的cuda
, cuDNN
, 以及TensorRT
的版本。如果想进一步将YOLOv5模型封装成dll供其他模块调用可以参考另一篇博文:
GIF图效果演示如下:
##################################################################
已帮助很多小伙伴实现了自己小项目
深夜跟小伙伴一起远程debug,虽然各种奇奇怪怪的报错,但也一起熬夜乐在其中
看到小伙伴的电脑上成功封装,并推理出结果,那一刻感觉互相所有的付出都是值得的,
#############################################################################
拓展
另推荐一门深蓝学院开设讲解TensorRT模型加速的线上课程,可以对TensorRT整体框架的细节理解和运用都能起到很好的帮助:
欢迎大家去我主页左侧扫码了解相关课程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。