Tăng tốc triển khai mô hình tensorrt yolov8 trong Win10 [Thực tế]
TensorRT-Alpha triển khai khả năng tăng tốc gpu của mô hình end2end dựa trên tensorrt+cuda c++, hỗ trợ win10 và linux, đồng thời đã cập nhật các mô hình vào năm 2023: YOLOv8, YOLOv7, YOLOv6, YOLOv5, YOLOv4, YOLOv3, YOLOX, YOLOR, pphumanseg, u2net, EfficiencyDet. Hãy chú ý đến kho "TensorRT-Alpha": https://github.com/FeiYull/TensorRT-Alpha.
1. Tăng tốc hiển thị kết quả
1.1 Tổng quan về hiệu suất
Hãy xem nhanh hiệu suất mới của yolov8n trên RTX2070m di động (8G):
người mẫu |
độ phân giải video |
kích thước đầu vào mô hình |
Sử dụng bộ nhớ GPU |
Tiện ích GPU |
yolov8n |
1920x1080 |
8x3x640x640 |
1093MiB/7982MiB |
14% |
Hình sau đây hiển thị tổng thời gian chạy của yolov8n, tính bằng mili giây:
Các video thử nghiệm TensorRT-Alpha khác có trong video Bilibili: Bilibili: YOLOv8n Bilibili: YOLOv8s.
1.2 Căn chỉnh chính xác
Dưới đây là kết quả suy luận khung python ở bên trái và kết quả suy luận TensorRT-Alpha ở bên phải.
yolov8n: Chính thức (trái) vs Chúng ta (phải)
yolov7-tiny: Chính thức (trái) so với Chúng ta (phải)
yolov6s: Chính thức (trái) vs Chúng ta (phải)
yolov5s: Chính thức (trái) vs Chúng ta (phải)
YOLOv4 YOLOv3 YOLOR YOLOX.
2. Cấu hình môi trường Windows 10
Ba bước để giải quyết cấu hình môi trường win:
- 1. Cài đặt vs2019, driver Nvidia, cuda, cudnn, opencv, tensorrt;
- 2. Tạo bảng thuộc tính;
- 3. Thiết lập và vận hành dự án;
Câu hỏi: Tại sao nên sử dụng bảng thuộc tính vs2019 thay vì cmake?
Trả lời: Bởi vì bảng thuộc tính có thể làm được điều này: tạo một lần và sử dụng ở mọi nơi.
Mẹo: Nếu bạn phải sử dụng cmake+vs2019 hoặc cmake + clion, vui lòng tham khảo phần phụ lục. Đây là phương pháp của một người xem nhiệt tình để tham khảo.
2.1 Cài đặt VS2019
Cần có tài khoản Microsoft. Nếu bạn có những cách khác để tải xuống và cài đặt nó, bạn có thể.
- Nhập: https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
- Chọn: [2019] -> [Tải xuống]
- Chọn trên trang mới: Visual Studio Community 2019 (phiên bản 16.11)
- Sau khi tải về hoàn tất, quá trình cài đặt lựa chọn như hình dưới:
- Khởi động lại hệ thống
2.2 Thư viện cài đặt
注:Nvidia相关网站需要注册账号.
2.2.1 Cài đặt trình điều khiển card đồ họa Nvidia
- Nhập: https://www.nvidia.cn/Download/index.aspx?lang=cn#
- Chọn theo tình hình thực tế Hình ảnh sau đây là lựa chọn của tôi (đối với RTX3070):
- Chọn: [Search]->[Download] ->[Bấm đúp vào cài đặt mặc định] -> [Khởi động lại hệ thống] -> [Nhập cmd], nhập lệnh sau:
nvidia-smi
Thấy thông tin sau là biết driver bình thường:
2.2.2 Cài đặt cuda11.2
- Nhập: https://developer.nvidia.com/cuda-toolkit-archive
- Chọn: CUDA Toolkit 11.2.0 (Tháng 12 năm 2020)
- Chọn: [Windows] -> [x86_64] -> [10] -> [exe(local)] -> [Download(2.9GB)]
- Bấm đúp để cài đặt, khởi động lại và nhập lệnh sau vào cửa sổ cmd:
nvcc-V
Cửa sổ CMD in thông tin sau để cho biết cuda11.2 được cài đặt bình thường.
nvcc: Trình điều khiển trình biên dịch NVIDIA (R) Cuda Bản quyền (c) 2005-2020 NVIDIA Corporation Được xây dựng vào Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020 Công cụ biên dịch Cuda, bản phát hành 11.2, V11.2.67 Bản dựng cuda_11.2.r11.2/compiler.29373293_0
lưu ý:cuda11.2 không yêu cầu cài đặt thủ công các biến môi trường. Như được hiển thị bên dưới, các biến môi trường được đặt tự động.
2.2.3 Cài đặt cudnn8.2.1
- 进入网站: https://developer.nvidia.com/rdp/cudnn-archive
- Chọn: Download cuDNN v8.2.1 (07/06/2021), cho CUDA 11.x
- Chọn: Thư viện cuDNN cho Windows (x86)
- Bạn sẽ tải xuống gói nén này: "cudnn-11.3-windows-x64-v8.2.1.32_2.zip"
- Sau khi giải nén, các tệp tiêu đề cudnn và tệp thư viện phải được sao chép vào thư mục cài đặt cuda.
- Như hiển thị bên dưới, nhập include vào thư mục nơi cudnn được giải nén, sao chép tất cả các tệp tiêu đề và dán chúng vào CUDA/v11.2/include
- Các file trong lib và bin cũng được sao chép vào thư mục cuda tương ứng.
- Khởi động lại hệ thống
2.2.4 Tải xuống 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
- Tiêu đề: TensorRT 8.4 GA Update 1 cho Windows 10 và CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 và 11.7 ZIP Package
- Bạn sẽ tải xuống gói nén này: "TensorRT-8.4.2.4.Windows10.x86_64.cuda-11.6.cudnn8.4.zip"
- Giải nén nó thành F:\ThirdParty và đổi tên thành: TensorRT-8.4.2.4
- Và thêm đường dẫn "F:\ThirdParty\TensorRT-8.4.2.4\lib" vào biến môi trường, như hiển thị bên dưới:
- Khởi động lại hệ thống
2.2.5 Cài đặt OpenCV4.5.5
- Nhập: https://opencv.org/releases/
- Chọn: [OpenCV – 4.5.5] -> [Windows]
- Sau khi tải về là dạng exe tự giải nén, bạn giải nén ra: D:ThirdParty
- Và thêm các đường dẫn: "D:\ThirdParty\opencv4.5.5\build\bin" và "D:\ThirdParty\opencv4.5.5\build\x64\vc15\bin" vào các biến môi trường, như hiển thị bên dưới:
- Khởi động lại hệ thống
lưu ý: Opencv của tôi nằm trên ổ D và tensorrt nằm trên ổ E. Chỉ cần sửa đổi nó theo tình hình thực tế.
2.3 Tạo bảng thuộc tính
Nhìn chung, trong Visual Studio 2019, một thư viện tương ứng với hai file bảng thuộc tính, tương ứng với: chế độ gỡ lỗi và chế độ phát hành của vs2019. Ví dụ: OpenCV đã tạo ra 2 loại này trong bài viết này. TensorRT và CUDA chỉ cần tạo 1 bảng thuộc tính (áp dụng cho 2 chế độ trên).
2.3.1 Tạo bảng thuộc tính OpenCV
Tạo bảng thuộc tính gỡ lỗi thư viện opencv:
- bước 1: Tạo dự án C++ mới dựa trên VS2019, như hiển thị bên dưới, dự án được đặt ở chế độ Debug và X64
- bước 2: Như hiển thị bên dưới, chọn: [Cửa sổ thuộc tính] -> [Nhấp chuột phải vào Debug|x64] -> [Thêm bảng thuộc tính dự án mới]
- bước 3: Tệp có tên: OpenCV4.5.5_DebugX64.props -> [Thêm]
- Chỉnh sửa bảng thuộc tính: [Như hình bên dưới: click đúp vào bảng thuộc tính]
- bước 4: Như hiển thị bên dưới, chọn: [Thuộc tính chung] -> [Thư mục VC++] -> [Bao gồm thư mục] -> [Chỉnh sửa]
- bước 5: Như hình bên dưới, sao chép hai thư mục tệp tiêu đề OpenCV -> [Xác nhận]
- bước 6: Chọn: [Thuộc tính chung] -> [Thư mục VC++] -> [Thư mục thư viện] -> [Chỉnh sửa] -> Sao chép đường dẫn: "D:\ThirdParty\opencv4.5.5\build\x64\vc15\lib" - > [Xác nhận]
- bước 7: Chọn: [Thuộc tính chung] -> [Trình liên kết] -> [Đầu vào] -> [Phụ thuộc bổ sung] -> Thay đổi tên tệp thành " opencv_world455d.lib "Sao chép nó vào->[Xác nhận]
bản tóm tắt :
Tại thời điểm này, bảng thuộc tính gỡ lỗi của thư viện opencv đã hoàn tất. Bảng thuộc tính phát hành giống như quy trình trên. Sự khác biệt duy nhất là, như được hiển thị bên dưới, dự án chuyển sang chế độ Release x64, tạo ra một OpenCV4. 5.5_ReleaseX64, sau đó ở bước 7, thay đổi tên tệp cho:" opencv_world455.lib "
Hãy nhớ rằng, chỉ có 3 bước để tạo bảng thuộc tính:
- Sao chép bao gồm đường dẫn
- Sao chép đường dẫn lib và đặt dll vào biến môi trường hệ thống
- Sao chép tên tệp lib
2.3.2 Tạo bảng thuộc tính TensorRT
Nhấp chuột phải vào Debug|x64 hoặc nhấp chuột phải vào Release|x64 để tạo bảng thuộc tính mới và đổi tên thành: TensorRT8.4.2.4_X64.
# include Tải về 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 Tải về F:\ThirdParty\TensorRT-8.4.2.4\lib # Thư viện lib (dành cho bản phát hành và gỡ lỗi) nvinfer.lib nvinfer_plugin.lib nvonnxparser.lib nvparsers.lib
Thực hiện theo 3 bước trong phần trước:
- bước 1: Chọn: [Thuộc tính chung] -> [Thư mục VC++] -> [Bao gồm thư mục] -> [Chỉnh sửa] -> Sao chép ba đường dẫn bao gồm ở trên vào
- bước 2: Chọn: [Thuộc tính chung] -> [Thư mục VC++] -> [Thư mục thư viện] -> [Chỉnh sửa] -> Sao chép đường dẫn lib ở trên vào đó
- bước 3: Chọn: [Thuộc tính chung] -> [Trình liên kết] -> [Đầu vào] -> [Phụ thuộc bổ sung] -> [Chỉnh sửa] -> Sao chép tên tệp lib trên vào đó -> [Xác nhận]
Cuối cùng, sửa đổi bảng thuộc tính tensorrt: [Thuộc tính chung] -> [C/C++] -> [Bộ tiền xử lý] -> [Định nghĩa bộ tiền xử lý] -> Thêm lệnh: _CRT_SECURE_NO_WARNINGS -> [Xác nhận]
2.3.3 Tạo bảng thuộc tính CUDA
Bảng thuộc tính CUDA được lấy trực tiếp từ trang web chính thức, trong đường dẫn: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\visual_studio_integration\MSBuildExtensions\CUDA 11.2.props.
Cuối cùng, chúng ta sẽ có tệp bảng thuộc tính sau:
Trong số đó, các bảng thuộc tính của cuda và tensorrt tương thích với cả bản phát hành x64 và debug x64. Sau khi tạo một dự án mới như yolov8 yolov7 yolov6 trong TensorRT-Alpha, bạn chỉ cần giới thiệu các bảng thuộc tính nêu trên đã được chuẩn bị trước. vào dự án **Tất nhiên là dự án Bạn cũng cần thực hiện các cài đặt đơn giản** (thiết lập NVCC để tránh những cạm bẫy của tensorrt), điều này sẽ được đề cập sau. Bảng thuộc tính có thể được tạo một lần và sử dụng ở mọi nơi.
3、YOLOv8模型部署
Để cài đặt YOLOv8 trong môi trường Windows 10, vui lòng tham khảo bài viết khác của tôi "Cấu hình và kiểm tra nhanh Yolov8 trong môi trường Win10": https://blog.csdn.net/m0_72734364/article/details/128815530.
3.1 Nhận tệp 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 # 下载官方权重(".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 Biên dịch onnx
# trtexec.exe Thư mục được lưu trữ: 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=hình ảnh:4x3x640x640 --maxShapes=hình ảnh:8x3x640x640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8m.onnx --saveEngine=yolov8m.trt --buildOnly --minShapes=hình ảnh:1x3x640x640 --optShapes=hình ảnh:4x3x640x640 --maxShapes=hình ảnh:8x3x640x640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8l.onnx --saveEngine=yolov8l.trt --buildOnly --minShapes=hình ảnh:1x3x640x640 --optShapes=hình ảnh:4x3x640x640 --maxShapes=hình ảnh:8x3x640x640 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8x.onnx --saveEngine=yolov8x.trt --buildOnly --minShapes=hình ảnh:1x3x640x640 --optShapes=hình ảnh:4x3x640x640 --maxShapes=hình ảnh:8x3x640x640 # 1280 ../../../../TensorRT-8.4.2.4/bin/trtexec.exe --onnx=yolov8x6.onnx --saveEngine=yolov8x6.trt --buildOnly --minShapes=hình ảnh:1x3x1280x1280 --optShapes=hình ảnh:4x3x1280x1280 --maxShapes=hình ảnh:8x3x1280x1280
你将会的到例如:yolov8n.trt、yolov8s.trt、yolov8m.trt等文件.
3.3 Biên dịch và chạy
3.3.1 Tạo một dự án mới và thiết lập một dự án để tải xuống kho TensorRT-Alpha:
git clone https://github.com/FeiYull/tensorrt-alpha
- Tạo dự án yolov8 C++ mới: tham khảo video của trạm B [Mẹo: bắt đầu từ 0 phút 34 giây, trình bày cách thiết lập trình biên dịch NVCC và cách tránh những cạm bẫy của tensorrt trong môi trường win]:
yolov8 tensorrt phi công chiến đấu thực tế
bản tóm tắt:
Sau khi tạo YOLOv7, YOLOv6 và các dự án khác trong TensorRT-Alpha, bạn chỉ cần thêm bảng thuộc tính được đề cập ở trên vào dự án, sau đó thiết lập dự án như đã đề cập trong "hướng dẫn thực hành tenorrt yolov8" là ổn.
Hướng dẫn này quá chi tiết Ngày nay, có vẻ như rất ít người sẵn sàng đưa ra những hướng dẫn chân thành như vậy một cách miễn phí.
3.3.2 Biên dịch và chạy video trên để thiết lập các tham số dòng lệnh trong vs2019. Bạn cũng có thể chạy chương trình trên dòng lệnh CMD như sau:
# Giải thích các tham số bên dưới # --show nghĩa là kết quả trực quan # --savePath nghĩa là lưu, mặc định là lưu trong thư mục build # --savePath=../ Lưu ở thư mục phía trên ## 640 # Inference picture./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 # Video suy luận./app_yolov8.exe --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=8 --video=../../data/people.mp4 --show --savePath=. ./ # Video camera suy luận trực tuyến ./app_yolov8.exe --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=2 --cam_id=0 --show ## 1280 # suy luận camera ./app_yolov8.exe --model=../../data/yolov8/yolov8x6.trt --size=1280 --batch_size=2 --cam_id=0 --show
Tất cả video trên Bilibili của tôi đang chạy trong môi trường 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 triển khai tăng tốc suy luận mô hình tensorrt cuda TensorRT-Alpha "cơ sở trượt tuyết")].
[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 triển khai tăng tốc suy luận mô hình 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 triển khai tăng tốc suy luận mô hình tensorrt cuda TensorRT-Alpha "Đêm Hàn Quốc")].
4、参考
https://github.com/FeiYull/TensorRT-Alpha 。
phụ lục
Nó được thực hiện bởi một thanh niên nhiệt tình. Anh ấy đã làm việc rất chăm chỉ. Anh ấy thường nhắn tin cho tôi vào lúc 2 hoặc 3 giờ đêm cách đây vài ngày. Tinh thần chiến đấu của anh ấy rất đáng học hỏi.
https://www.bilibili.com/video/BV1SM411i7km/?spm_id_from=333.999.0.0&vd_source=a96c9c3f099f4167807291a34fd50fd5 。
Cuối cùng, bài viết này về việc triển khai tăng tốc mô hình yolov8tensorrt trong Win10 [Thực tế] kết thúc tại đây. Nếu bạn muốn biết thêm về việc triển khai tăng tốc mô hình yolov8tensorrt trong Win10 [Thực tế], vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng tất cả các bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!