zoukankan      html  css  js  c++  java
  • 基于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

  • 相关阅读:
    移动端调试利器-vConsole
    html手机调试
    vue实现PC端分辨率适配
    uniapp 判断 IOS和Android的GPS是否开启并设置启动
    Fiddler抓包工具使用
    js对象数组多字段排序
    时间戳转换时间格式
    从一个数组中删除另一个数组中存在的元素
    Python_下载二次登录后的页面源码
    Python_ip被封用代理
  • 原文地址:https://www.cnblogs.com/winslam/p/13816143.html
Copyright © 2011-2022 走看看