基于TensorRT的YOLO(V3\4\5)模型部署《方案一》

测试环境:

0、Windows 10

1、OpenCV412

2、CUDA11.0(cuda_11.0.2_451.48_win10.exe)

3、cuDNN8.0 (cudnn-11.0-windows-x64-v8.0.4.30.zip)

4、TensorRT-7.1(TensorRT-7.1.3.4.Windows10.x86_64.cuda-11.0.cudnn8.0)

5、vs2017(ReleaseX64)

6、yolo-tensorrt-master(一个开源转换方案,地址:https://github.com/enazoe/yolo-tensorrt

https://github.com/enazoe/yolo-tensorrt/blob/master/yolov5\_tutorial.md

一、安装CUDA11.0

![]()

具体文件名:cuda_11.0.2_451.48_win10.exe

下载地址:https://developer.nvidia.com/cuda-11.0-download-archive?target\_os=Windows&target\_arch=x86\_64&target\_version=10&target\_type=exelocal

二、安装cuDNN8.0

下载地址:https://developer.nvidia.com/rdp/cudnn-download

需要你注册NVIDIA账号,搞一个吧。

下载完毕之后,在桌面解压文件,得到如下图内容(绿色框):

![]()

cuDNN是官方编译好的库,仅需要手动拷贝即可,具体参考上图(CUDA已经安装)

三、TensorRT 7.1安装、测试

下载地址:https://developer.nvidia.com/nvidia-tensorrt-7x-download

下载完毕后解压到D盘根目录:

然后在python环境(我这里用的是conda虚拟环境:yolo5)下安装两个python包:uff和graphsurgeon

pip install uff-0.6.9-py2.py3-none-any.whl
pip install  graphsurgeon-0.4.5-py2.py3-none-any.whl

接着用vs2017打开samples文件夹下的手写文字识别例程,如图:

![]()

修改项目属性,其实就是SDK版本

![]()

新建tensorRT属性表,命名为:TensorRT_X64_Release(以后用得着)

包含目录:D:\TensorRT-7.1.3.4\include

库目录:D:\TensorRT-7.1.3.4\lib

链接器:

myelin64_1.lib
nvinfer.lib
nvinfer_plugin.lib
nvonnxparser.lib
nvparsers.lib

![]()

接着编译生成exe文件,由于这里是测试手写数字识别,但是没有数据,需要下载:

![]()

执行如下图脚本下载图像数据,如图,我已经下载完毕:

python download_pgms.py

![]()

这时候执行上述执行exe文件,使用以下指令:

PS D:\TensorRT-7.1.3.4\bin> .\sample_mnist.exe --datadir D:\TensorRT-7.1.3.4\data\mnist

![]()

四、环境变量设置

在环境变量中添加两个路径(CUDA和TensorRT的动态库,cuDNN其实已经包含在CUDA中)

D:\TensorRT-7.1.3.4\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin

重启系统生效

五、编译yolo-tensorrt-master工程

使用vs2017打开源码包sln文件夹下的sln文件,可能弹框上你升级工程管理文件,确认就行(作者用的是vs2015)。

![]()

设置为release x64模式,看到两个工程,先卸载下面的test_dll,一起批量编译会报错(猜测是下面工程依赖上面生成库)。

第一个工程dll_detector依赖cuda(含cuDNN),tensorRT、opencv,如图,作者已经新建了空的属性表,

![]()

在这里,opencv有现成的,tensorRT在上面已经建好了,而CUDA,我也懒得去修改,这里教大家一个技巧:

我们打开CUDA的安装目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\visual_studio_integration\MSBuildExtensions

可以发现有建立好的CUDA属性表

![]()

直接加载进去就行

![]()

上图绿色圈内实我自定义加进去的属性表,好了,直接编译就行了,编译成功后,我们再编译第二个项目,第二个项目只需要把opencv的属性表加进去就行了

六、模型转换与测试

以下是yolov5原版本测试图:

![]() ![]()

yolo5x(pytorch版) yolo5s(pytorch版)

![]() ![]()

yolo5x(tensorRT版) yolo5s(tensorRT版)

效果自行评价

<br></br><br></br>

参考:https://blog.csdn.net/gulingfengze/article/details/108425949?utm\_medium=distribute.pc\_relevant\_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel\_param&depth\_1-utm\_source=distribute.pc\_relevant\_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel\_param

https://blog.csdn.net/qianshuqinghan/article/details/104776612?utm\_medium=distribute.pc\_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel\_param&depth\_1-utm\_source=distribute.pc\_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel\_param

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。