基于TensorRT的YOLO(V345)模型部署《方案一》

测试环境:

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.4include

库目录:D:TensorRT-7.1.3.4lib

链接器:

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

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

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

python download_pgms.py

 

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

PS D:TensorRT-7.1.3.4in> .sample_mnist.exe --datadir D:TensorRT-7.1.3.4datamnist

四、环境变量设置

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

D:TensorRT-7.1.3.4lib
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.0in

重启系统生效

五、编译yolo-tensorrt-master工程

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

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

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

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

我们打开CUDA的安装目录:C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.0extrasvisual_studio_integrationMSBuildExtensions

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

 直接加载进去就行

 

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

六、模型转换与测试

以下是yolov5原版本测试图:

  

                           yolo5x(pytorch版)                                                    yolo5s(pytorch版)

   

                           yolo5x(tensorRT版)                                                yolo5s(tensorRT版)

效果自行评价



参考: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

原文地址:https://www.cnblogs.com/winslam/p/13816143.html