1. 程式人生 > 實用技巧 >基於TensorRT的YOLO(V3\4\5)模型部署

基於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工程

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