基於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版)

 

 

效果自行評價



 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM