<optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

<code id="6y7f6"></code>

  • <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
    <code id="6y7f6"><form id="6y7f6"></form></code>

      【實戰】yolov8 tensorrt win10部署

      Win10下yolov8 tensorrt模型加速部署【實戰】

      TensorRT-Alpha基于tensorrt+cuda c++實現模型end2end的gpu加速,支持win10、linux,在2023年已經更新模型:YOLOv8, YOLOv7, YOLOv6, YOLOv5, YOLOv4, YOLOv3, YOLOX, YOLOR,pphumanseg,u2net,EfficientDet。
      關注倉庫《TensorRT-Alpha》:https://github.com/FeiYull/TensorRT-Alpha

      一、加速結果展示

      1.1 性能速覽

      ??快速看看yolov8n 在移動端RTX2070m(8G)的新能表現:

      model video resolution model input size GPU Memory-Usage GPU-Util
      yolov8n 1920x1080 8x3x640x640 1093MiB/7982MiB 14%

      下圖是yolov8n的運行時間開銷,單位是ms:
      在這里插入圖片描述

      更多TensorRT-Alpha測試錄像在B站視頻:
      B站:YOLOv8n
      B站:YOLOv8s

      在這里插入圖片描述

      1.2精度對齊

      下面是左邊是python框架推理結果,右邊是TensorRT-Alpha推理結果。
      yolov8n : Offical( left ) vs Ours( right )

      yolov8n : Offical( left ) vs Ours( right )

      在這里插入圖片描述

      yolov7-tiny : Offical( left ) vs Ours( right )

      在這里插入圖片描述

      yolov6s : Offical( left ) vs Ours( right )

      在這里插入圖片描述

      yolov5s : Offical( left ) vs Ours( right )

      YOLOv4 YOLOv3 YOLOR YOLOX略。

      二、Windows10環境配置

      三步解決win環境配置

      • 1、安裝vs2019、Nvidia驅動、cuda,cudnn、opencv、tensorrt;
      • 2、創建屬性表;
      • 3、工程設置,運行;
        問題:為什么使用vs2019屬性表,而不用cmake?
        回答:因為屬性表可以做到:一次創建,到處使用。
        提示:如果您一定需要使用cmake+vs2019 or cmake + clion,請參考附錄,這是一位熱心觀眾的方法,供參考。

      2.1 安裝VS2019

      需要Microsoft賬號,如果您有別的途徑下載安裝也可以。

      請添加圖片描述

      - 重啟系統

      2.2 安裝庫

      注:Nvidia相關網站需要注冊賬號。

      2.2.1 安裝Nvidia顯卡驅動

      請添加圖片描述

      • 選擇:[搜索]->[下載] ->[雙擊默認安裝] -> [重啟系統] -> [進入cmd],輸入如下指令:
      nvidia-smi
      

      看到如下信息表明驅動正常:

      請添加圖片描述

      2.2.2 安裝 cuda11.2

      nvcc -V
      

      CMD窗口打印如下信息表示cuda11.2安裝正常

      nvcc: NVIDIA (R) Cuda compiler driver
      Copyright (c) 2005-2020 NVIDIA Corporation
      Built on Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020
      Cuda compilation tools, release 11.2, V11.2.67
      Build cuda_11.2.r11.2/compiler.29373293_0
      

      note:cuda11.2 不需要手動設置環境變量,如下圖,環境變量都是自動設置的。

      請添加圖片描述

      2.2.3 安裝 cudnn8.2.1

      • 進入網站:https://developer.nvidia.com/rdp/cudnn-archive
      • 選擇: Download cuDNN v8.2.1 (June 7th, 2021), for CUDA 11.x
      • 選擇: cuDNN Library for Windows (x86)
      • 你將會下載這個壓縮包: "cudnn-11.3-windows-x64-v8.2.1.32_2.zip"
      • 解壓之后,cudnn的頭文件、庫文件都要拷貝到cuda安裝目錄。
      • 如下圖,進入cudnn解壓所在文件夾中include,拷貝所有頭文件,粘貼到CUDA/v11.2/include中
      • lib、bin中的文件也拷貝到對應cuda目錄中
      • 重啟系統

      請添加圖片描述

      2.2.4 下載 tensorrt8.4.2.4

      • 進入網站: https://developer.nvidia.cn/nvidia-tensorrt-8x-download
      • 把這個打勾: I Agree To the Terms of the NVIDIA TensorRT License Agreement
      • 選擇: TensorRT 8.4 GA Update 1
      • 選擇: TensorRT 8.4 GA Update 1 for Windows 10 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 and 11.7 ZIP Package
      • 你將會下載這個壓縮包: "TensorRT-8.4.2.4.Windows10.x86_64.cuda-11.6.cudnn8.4.zip"
      • 解壓到F:\ThirdParty,并重命名為:TensorRT-8.4.2.4
      • 并將路徑"F:\ThirdParty\TensorRT-8.4.2.4\lib"添加到環境變量,如下圖:
      • 重啟系統

      請添加圖片描述

      2.2.5 OpenCV4.5.5安裝

      • 進入:https://opencv.org/releases/
      • 選擇:[OpenCV – 4.5.5] -> [Windows]
      • 下載完成之后,是一個exe的自解壓格式,解壓到:D:\ThirdParty
      • 并將路徑:"D:\ThirdParty\opencv4.5.5\build\bin" 和 "D:\ThirdParty\opencv4.5.5\build\x64\vc15\bin"添加到環境變量,如下圖:
      • 重啟系統
        note:我的opencv在D盤,tensorrt在E盤,根據實際情況修改就行了。

      請添加圖片描述

      2.3 創建屬性表

      一般地,Visual Studio 2019,一個庫對應兩個屬性表文件,分別對應:vs2019的debug模式和release模式,例如:本文中OpenCV創建了這兩種。而TensorRT和CUDA只需要創建一種屬性表(適用以上兩種模式)。

      2.3.1 創建OpenCV屬性表

      創建opencv庫debug屬性表:

      • step1:基于VS2019隨便新建一個C++項目,如下圖,項目設置為Debug、X64模式

      請添加圖片描述

      • step2:如下圖,選擇:[屬性窗口] -> [右擊Debug|x64] -> [添加新項目屬性表]

      請添加圖片描述

      • step3:文件命名為:OpenCV4.5.5_DebugX64.props -> [添加]
      • 編輯屬性表:[如下圖:雙擊屬性表]

      請添加圖片描述

      • step4:如下圖,選擇:[通用屬性] -> [VC++目錄] -> [包含目錄] -> [編輯]

      請添加圖片描述

      • step5:如下圖,將兩個OpenCV兩個頭文件目錄拷貝進去 -> [確認]

      請添加圖片描述

      • step6:選擇:[通用屬性] -> [VC++目錄] -> [庫目錄] -> [編輯] -> 將路徑:"D:\ThirdParty\opencv4.5.5\build\x64\vc15\lib"拷貝進去 -> [確認]
      • step7:選擇:[通用屬性] -> [鏈接器] -> [輸入] -> [附加依賴項] -> 將文件名"opencv_world455d.lib"拷貝進去->[確認]
        小結

        到這里,opencv庫debug屬性表制作完成,release屬性表和上述流程一樣,唯一區別在于,如下圖,項目切換到Release x64模式,新建OpenCV4.5.5_ReleaseX64屬性表,然后在step7中,將文件名修改為:"opencv_world455.lib"

      請添加圖片描述

      請記住,制作屬性表就3個步驟:

      • 拷貝include路徑
      • 拷貝lib路徑,外加設置dll到系統環境變量
      • 拷貝lib文件名稱

      2.3.2 創建TensorRT屬性表

      右擊Debug|x64 or 右擊Release|x64新建屬性表,重命名為:TensorRT8.4.2.4_X64,

      # include路徑
      F:\ThirdParty\TensorRT-8.4.2.4\include
      F:\ThirdParty\TensorRT-8.4.2.4\samples\common
      F:\ThirdParty\TensorRT-8.4.2.4\samples\common\windows
      # lib路徑
      F:\ThirdParty\TensorRT-8.4.2.4\lib
      # lib文件名稱(for release& debug)
      nvinfer.lib
      nvinfer_plugin.lib
      nvonnxparser.lib
      nvparsers.lib
      

      依照上一節3個步驟:

      • step1:選擇:[通用屬性] -> [VC++目錄] -> [包含目錄] -> [編輯] -> 把上述3個include路徑拷貝進去
      • step2:選擇:[通用屬性] -> [VC++目錄] -> [庫目錄] -> [編輯] -> 把上述lib路徑拷貝進去
      • step3:選擇:[通用屬性] -> [鏈接器] -> [輸入] -> [附加依賴項] -> [編輯] -> 將上述lib文件名稱拷貝進去->[確認]
        最后,修改tensorrt屬性表:[通用屬性] -> [C/C++] -> [預處理器] -> [預處理器定義] -> 添加指令:_CRT_SECURE_NO_WARNINGS -> [確認]

      2.3.3 創建CUDA屬性表

      CUDA屬性表直接白嫖官方,在路徑:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\visual_studio_integration\MSBuildExtensions\CUDA 11.2.props

      最后,我們應該有了如下屬性表文件:

      請添加圖片描述

      其中,cuda 和tensorrt的屬性表同時兼容release x64 和debug x64,你再新建TensorRT-Alpha中yolov8 yolov7 yolov6 等項目后,只需要把上述提前做好的屬性表引入到工程就行了,**當然項目還需要進行簡單設置**(設置NVCC,避免tensorrt的坑),在后文提到。屬性表做到了一次新建,到處使用。
      

      三、YOLOv8模型部署

      Windows10環境安裝YOLOv8,參考我的另一篇《Win10環境下yolov8快速配置與測試》:https://blog.csdn.net/m0_72734364/article/details/128815530

      3.1 獲取YOLOv8onnx文件

      直接在網盤下載 weiyun or google driver 或者使用如下命令導出onnx:

      # ?? yolov8 官方倉庫: https://github.com/ultralytics/ultralytics
      # ?? yolov8 官方教程: https://docs.ultralytics.com/quickstart/
      # ??TensorRT-Alpha will be updated synchronously as soon as possible!
      
      # 安裝 yolov8
      conda create -n yolov8 python==3.8 -y
      conda activate yolov8
      pip install ultralytics==8.0.5
      pip install onnx==1.12.0
      
      # 下載官方權重(".pt" file)
      https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt
      https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt
      https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8m.pt
      https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8l.pt
      https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt
      https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x6.pt
      

      導出 onnx:

      # 640
      yolo mode=export model=yolov8n.pt format=onnx dynamic=True    #simplify=True
      yolo mode=export model=yolov8s.pt format=onnx dynamic=True    #simplify=True
      yolo mode=export model=yolov8m.pt format=onnx dynamic=True    #simplify=True
      yolo mode=export model=yolov8l.pt format=onnx dynamic=True    #simplify=True
      yolo mode=export model=yolov8x.pt format=onnx dynamic=True    #simplify=True
      # 1280
      yolo mode=export model=yolov8x6.pt format=onnx dynamic=True   #simplify=True
      

      3.2 編譯 onnx

      # trtexec.exe在路徑:F:\ThirdParty\TensorRT-8.4.2.4\bin
      # 640
      ../../../../TensorRT-8.4.2.4/bin/trtexec.exe   --onnx=yolov8n.onnx  --saveEngine=yolov8n.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
      ../../../../TensorRT-8.4.2.4/bin/trtexec.exe   --onnx=yolov8s.onnx  --saveEngine=yolov8s.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
      ../../../../TensorRT-8.4.2.4/bin/trtexec.exe   --onnx=yolov8m.onnx  --saveEngine=yolov8m.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
      ../../../../TensorRT-8.4.2.4/bin/trtexec.exe   --onnx=yolov8l.onnx  --saveEngine=yolov8l.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
      ../../../../TensorRT-8.4.2.4/bin/trtexec.exe   --onnx=yolov8x.onnx  --saveEngine=yolov8x.trt  --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
      # 1280
      ../../../../TensorRT-8.4.2.4/bin/trtexec.exe   --onnx=yolov8x6.onnx  --saveEngine=yolov8x6.trt  --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280
      

      你將會的到例如:yolov8n.trt、yolov8s.trt、yolov8m.trt等文件。

      3.3 編譯運行

      3.3.1 新建、設置項目
      下載TensorRT-Alpha倉庫:

      git clone https://github.com/FeiYull/tensorrt-alpha
      
      • 新建yolov8 C++項目:參考B站視頻【提示:從0分34秒開始,演示如何設置NVCC編譯,如何避免tensorrt在win環境的坑】:
        yolov8 tensorrt 實戰之先導
        小結:
        后續創建TensorRT-Alpha中YOLOv7、 YOLOv6等工程之后,只需要將上文中的屬性表添加到工程,然后按照《yolov8 tensorrt 實戰之先導》提到的設置工程就OK。
        這篇教程太詳細了,這年頭,好像很少有人愿意免費給出這么誠意的教程。

      3.3.2 編譯運行
      上面視頻在vs2019中設置命令行參數,您也可以在CMD命令行上運行程序,如下:

      # 下面參數解釋
      # --show 表示可視化結果
      # --savePath 表示保存,默認保存在build目錄
      # --savePath=../ 保存在上一級目錄
      
      ## 640
      # 推理圖片
      ./app_yolov8.exe  --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=1  --img=../../data/6406407.jpg   --show --savePath
      ./app_yolov8.exe  --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=8  --video=../../data/people.mp4  --show --savePath
      
      # 推理視頻
      ./app_yolov8.exe  --model=../../data/yolov8/yolov8n.trt     --size=640 --batch_size=8  --video=../../data/people.mp4  --show --savePath=../
      
      # 在線推理相機視頻
      ./app_yolov8.exe  --model=../../data/yolov8/yolov8n.trt     --size=640 --batch_size=2  --cam_id=0  --show
      
      ## 1280
      # infer camera
      ./app_yolov8.exe  --model=../../data/yolov8/yolov8x6.trt     --size=1280 --batch_size=2  --cam_id=0  --show
      

      我的B站所有視頻都在WIN10環境運行,https://space.bilibili.com/2028719613

      [video(video-zRQTyZp3-1675415874102)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=778153500)(image-https://img-blog.csdnimg.cn/img_convert/4faa0b726044d139a1282d3883c6ed08.jpeg)(title-yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《ski facility》)]

      [video(video-Ej2C6hgr-1675415817040)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=650665729)(image-https://img-blog.csdnimg.cn/img_convert/04c8cb5b7ebe3fd410e4af53548a668f.jpeg)(title-yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《NewYork-Stree》)]

      [video(video-xbOkXTEV-1675415667896)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=565721755)(image-https://img-blog.csdnimg.cn/img_convert/a4469f9c7a048393d4fee5b7bba2893d.jpeg)(title-yolov7 tensorrt cuda模型推理加速部署TensorRT-Alpha《Korea-Night》)]

      四、參考

      https://github.com/FeiYull/TensorRT-Alpha

      附錄

      一位熱心小伙做的,他好努力,前幾天經常半夜2點、3點給我留言,太卷了,奮斗精神值得學習。

      請添加圖片描述

      https://www.bilibili.com/video/BV1SM411i7km/?spm_id_from=333.999.0.0&vd_source=a96c9c3f099f4167807291a34fd50fd5

      posted @ 2023-02-04 17:44  FeiYull  閱讀(173)  評論(0編輯  收藏  舉報
      欧洲黄色网页链接入口,免费A级毛片无码无遮挡久久影院,a免费黄色网址,国产一级黄色的网站
      <optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

      <code id="6y7f6"></code>

    1. <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
      <code id="6y7f6"><form id="6y7f6"></form></code>