TensorRT Export for YOLO11 Models
Việc triển khai các mô hình thị giác máy tính trong môi trường hiệu suất cao có thể yêu cầu một định dạng tối đa hóa tốc độ và hiệu quả. Điều này đặc biệt đúng khi bạn triển khai mô hình của mình trên NVIDIA GPU.
By using the TensorRT export format, you can enhance your Ultralytics YOLO11 models for swift and efficient inference on NVIDIA hardware. This guide will give you easy-to-follow steps for the conversion process and help you make the most of NVIDIA's advanced technology in your deep learning projects.
TensorRT
TensorRT , được phát triển bởi NVIDIA , là một bộ phát triển phần mềm (SDK) tiên tiến được thiết kế để suy luận học sâu tốc độ cao. Nó rất phù hợp cho các ứng dụng thời gian thực như phát hiện đối tượng .
Bộ công cụ này tối ưu hóa các mô hình học sâu cho NVIDIA GPU mang lại khả năng hoạt động nhanh hơn và hiệu quả hơn. TensorRT các mô hình trải qua TensorRT tối ưu hóa, bao gồm các kỹ thuật như hợp nhất lớp, hiệu chuẩn độ chính xác (INT8 và FP16), động tensor quản lý bộ nhớ và tự động điều chỉnh hạt nhân. Chuyển đổi các mô hình học sâu thành TensorRT định dạng cho phép các nhà phát triển nhận ra tiềm năng của NVIDIA GPU đầy đủ.
TensorRT được biết đến với khả năng tương thích với nhiều định dạng mô hình khác nhau, bao gồm TensorFlow , PyTorch và ONNX , cung cấp cho các nhà phát triển giải pháp linh hoạt để tích hợp và tối ưu hóa các mô hình từ các khuôn khổ khác nhau. Tính linh hoạt này cho phép triển khai mô hình hiệu quả trên nhiều môi trường phần cứng và phần mềm khác nhau.
Các tính năng chính của TensorRT Mô hình
TensorRT các mô hình cung cấp một loạt các tính năng chính góp phần vào hiệu quả và hiệu suất của chúng trong suy luận học sâu tốc độ cao:
-
Hiệu chuẩn độ chính xác : TensorRT hỗ trợ hiệu chuẩn độ chính xác, cho phép tinh chỉnh các mô hình cho các yêu cầu độ chính xác cụ thể. Điều này bao gồm hỗ trợ cho các định dạng độ chính xác giảm như INT8 và FP16, có thể tăng tốc độ suy luận hơn nữa trong khi vẫn duy trì mức độ chính xác chấp nhận được.
-
Layer Fusion : Sự kết hợp lớp TensorRT quá trình tối ưu hóa bao gồm hợp nhất lớp, trong đó nhiều lớp của mạng nơ-ron được kết hợp thành một hoạt động duy nhất. Điều này làm giảm chi phí tính toán và cải thiện tốc độ suy luận bằng cách giảm thiểu truy cập bộ nhớ và tính toán.
-
Quản lý bộ nhớ Tensor động : TensorRT quản lý hiệu quả tensor sử dụng bộ nhớ trong quá trình suy luận, giảm chi phí bộ nhớ và tối ưu hóa việc phân bổ bộ nhớ. Điều này dẫn đến hiệu quả hơn GPU sử dụng bộ nhớ.
-
Automatic Kernel Tuning: TensorRT applies automatic kernel tuning to select the most optimized GPU kernel for each layer of the model. This adaptive approach ensures that the model takes full advantage of the GPUs computational power.
Tùy chọn triển khai trong TensorRT
Before we look at the code for exporting YOLO11 models to the TensorRT format, let's understand where TensorRT models are normally used.
TensorRT cung cấp một số tùy chọn triển khai và mỗi tùy chọn cân bằng giữa tính dễ tích hợp, tối ưu hóa hiệu suất và tính linh hoạt theo những cách khác nhau:
- Triển khai trong TensorFlow : Phương pháp này tích hợp TensorRT vào trong TensorFlow , cho phép các mô hình được tối ưu hóa chạy trong một TensorFlow môi trường. Nó hữu ích cho các mô hình có sự kết hợp giữa các lớp được hỗ trợ và không được hỗ trợ, vì TF -TRT có thể xử lý những vấn đề này một cách hiệu quả.
-
Standalone TensorRT Runtime API : Cung cấp khả năng kiểm soát chi tiết, lý tưởng cho các ứng dụng quan trọng về hiệu suất. Nó phức tạp hơn nhưng cho phép triển khai tùy chỉnh các toán tử không được hỗ trợ.
-
NVIDIA Triton Inference Server : Một tùy chọn hỗ trợ các mô hình từ nhiều khuôn khổ khác nhau. Đặc biệt phù hợp với suy luận đám mây hoặc biên, nó cung cấp các tính năng như thực thi mô hình đồng thời và phân tích mô hình.
Exporting YOLO11 Models to TensorRT
You can improve execution efficiency and optimize performance by converting YOLO11 models to TensorRT format.
Cài đặt
Để cài đặt gói cần thiết, hãy chạy:
Để biết hướng dẫn chi tiết và các biện pháp thực hành tốt nhất liên quan đến quy trình cài đặt, hãy xem hướng dẫn Cài đặt YOLO11 của chúng tôi. Trong khi cài đặt các gói cần thiết cho YOLO11 , nếu bạn gặp bất kỳ khó khăn nào, hãy tham khảo hướng dẫn Sự cố thường gặp của chúng tôi để biết giải pháp và mẹo.
Cách sử dụng
Trước khi tìm hiểu hướng dẫn sử dụng, hãy chắc chắn kiểm tra phạm vi các mẫu YOLO11 do Ultralytics cung cấp . Điều này sẽ giúp bạn chọn được mẫu phù hợp nhất cho yêu cầu dự án của mình.
Cách sử dụng
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo11n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO("yolo11n.engine")
# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
Để biết thêm chi tiết về quy trình xuất, hãy truy cập trang tài liệu Ultralytics về xuất .
Xuất khẩu TensorRT với lượng tử hóa INT8
Xuất khẩu Ultralytics YOLO mô hình sử dụng TensorRT với độ chính xác INT8 thực hiện lượng tử hóa sau đào tạo (PTQ). TensorRT sử dụng hiệu chuẩn cho PTQ, đo lường sự phân bố các kích hoạt trong mỗi kích hoạt tensor như là YOLO mô hình xử lý suy luận trên dữ liệu đầu vào đại diện, sau đó sử dụng phân phối đó để ước tính giá trị tỷ lệ cho từng tensor . Mỗi lần kích hoạt tensor đó là một ứng cử viên cho lượng tử hóa có thang đo liên quan được suy ra bằng một quá trình hiệu chuẩn.
Khi xử lý các mạng lượng tử ngầm định TensorRT sử dụng INT8 một cách có cơ hội để tối ưu hóa thời gian thực hiện lớp. Nếu một lớp chạy nhanh hơn trong INT8 và đã chỉ định các thang lượng tử hóa trên dữ liệu đầu vào và đầu ra của nó, thì một hạt nhân có độ chính xác INT8 được chỉ định cho lớp đó, nếu không TensorRT chọn độ chính xác là FP32 hoặc FP16 cho hạt nhân dựa trên kết quả nào mang lại thời gian thực thi nhanh hơn cho lớp đó.
Mẹo
Điều quan trọng là phải đảm bảo rằng cùng một thiết bị sẽ sử dụng TensorRT trọng số mô hình để triển khai được sử dụng để xuất với độ chính xác INT8, vì kết quả hiệu chuẩn có thể khác nhau giữa các thiết bị.
Cấu hình Xuất INT8
Các đối số được cung cấp khi sử dụng xuất khẩu cho một Ultralytics YOLO mô hình sẽ rất nhiều ảnh hưởng đến hiệu suất của mô hình được xuất. Chúng cũng cần được lựa chọn dựa trên các tài nguyên thiết bị có sẵn, tuy nhiên các đối số mặc định nên làm việc cho hầu hết Ampere (hoặc mới hơn) NVIDIA GPU rời. Thuật toán hiệu chuẩn được sử dụng là "ENTROPY_CALIBRATION_2"
và bạn có thể đọc thêm chi tiết về các tùy chọn có sẵn trong TensorRT Hướng dẫn dành cho nhà phát triển. Ultralytics các thử nghiệm đã tìm thấy rằng "ENTROPY_CALIBRATION_2"
là lựa chọn tốt nhất và xuất khẩu được cố định bằng cách sử dụng thuật toán này.
-
workspace
: Kiểm soát kích thước (tính bằng GiB) của phân bổ bộ nhớ thiết bị trong khi chuyển đổi trọng số mô hình.-
Điều chỉnh
workspace
giá trị theo nhu cầu hiệu chuẩn và khả năng cung cấp tài nguyên của bạn. Trong khi mộtworkspace
có thể tăng thời gian hiệu chuẩn, nó cho phép TensorRT để khám phá nhiều chiến thuật tối ưu hóa hơn, có khả năng nâng cao hiệu suất mô hình và sự chính xác. Ngược lại, một nhỏ hơnworkspace
có thể giảm thời gian hiệu chuẩn nhưng có thể hạn chế các chiến lược tối ưu hóa, ảnh hưởng đến chất lượng của mô hình lượng tử. -
Mặc định là
workspace=None
, điều này sẽ cho phép TensorRT để tự động phân bổ bộ nhớ, khi cấu hình thủ công, giá trị này có thể cần phải tăng lên nếu hiệu chuẩn bị lỗi (thoát mà không có cảnh báo). -
TensorRT sẽ báo cáo
UNSUPPORTED_STATE
trong quá trình xuất khẩu nếu giá trị choworkspace
lớn hơn bộ nhớ có sẵn của thiết bị, nghĩa là giá trị choworkspace
nên được hạ xuống hoặc thiết lập thànhNone
. -
Nếu như
workspace
được đặt ở giá trị tối đa và hiệu chuẩn bị lỗi/sập, hãy cân nhắc sử dụngNone
để tự động phân bổ hoặc bằng cách giảm các giá trị choimgsz
Vàbatch
để giảm yêu cầu về bộ nhớ. -
Hãy nhớ rằng hiệu chuẩn cho INT8 là riêng cho từng thiết bị , mượn một "cao cấp" GPU để hiệu chuẩn, có thể dẫn đến hiệu suất kém khi suy luận được chạy trên một thiết bị khác.
-
-
batch
: Kích thước lô tối đa sẽ được sử dụng để suy luận. Trong quá trình suy luận, có thể sử dụng các lô nhỏ hơn, nhưng suy luận sẽ không chấp nhận các lô lớn hơn kích thước được chỉ định.
Ghi chú
Trong quá trình hiệu chuẩn, gấp đôi batch
kích thước được cung cấp sẽ được sử dụng. Sử dụng các lô nhỏ có thể dẫn đến việc chia tỷ lệ không chính xác trong quá trình hiệu chuẩn. Điều này là do quy trình điều chỉnh dựa trên dữ liệu mà nó nhìn thấy. Các lô nhỏ có thể không nắm bắt được toàn bộ phạm vi giá trị, dẫn đến các vấn đề với hiệu chuẩn cuối cùng, do đó batch
kích thước được nhân đôi tự động. Nếu không kích thước lô được chỉ định batch=1
, hiệu chuẩn sẽ được chạy ở batch=1 * 2
để giảm thiểu lỗi hiệu chuẩn thang đo.
Thí nghiệm bằng NVIDIA dẫn họ đến việc đề xuất sử dụng ít nhất 500 hình ảnh hiệu chuẩn đại diện cho dữ liệu cho mô hình của bạn, với hiệu chuẩn lượng tử INT8. Đây là hướng dẫn chứ không phải là cứng yêu cầu, và bạn sẽ cần phải thử nghiệm những gì cần thiết để thực hiện tốt cho tập dữ liệu của mình . Vì dữ liệu hiệu chuẩn được yêu cầu cho hiệu chuẩn INT8 với TensorRT , hãy chắc chắn sử dụng data
tranh luận khi int8=True
vì TensorRT và sử dụng data="my_dataset.yaml"
, sẽ sử dụng hình ảnh từ xác thực để hiệu chuẩn với. Khi không có giá trị nào được truyền cho data
với xuất khẩu sang TensorRT với lượng tử hóa INT8, mặc định sẽ là sử dụng một trong các "nhỏ" ví dụ tập dữ liệu dựa trên nhiệm vụ mô hình thay vì đưa ra lỗi.
Ví dụ
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
int8=True,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
- Xuất với trục động, tùy chọn này sẽ được bật theo mặc định khi xuất với
int8=True
ngay cả khi không được thiết lập rõ ràng. Xem xuất khẩu đối số để biết thêm thông tin. - Đặt kích thước lô tối đa là 8 cho mô hình đã xuất, hiệu chuẩn với
batch = 2 * 8
để tránh lỗi tỷ lệ trong quá trình hiệu chuẩn. - Phân bổ 4 GiB bộ nhớ thay vì phân bổ toàn bộ thiết bị cho quá trình chuyển đổi.
- Sử dụng tập dữ liệu COCO để hiệu chuẩn, cụ thể là các hình ảnh được sử dụng để xác thực (tổng cộng 5.000).
# Export a YOLO11n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolo11n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml # creates 'yolov8n.engine''
# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
Bộ nhớ đệm hiệu chuẩn
TensorRT sẽ tạo ra một hiệu chuẩn .cache
có thể được sử dụng lại để tăng tốc độ xuất các trọng số mô hình trong tương lai bằng cách sử dụng cùng một dữ liệu, nhưng điều này có thể dẫn đến hiệu chuẩn kém khi dữ liệu khác nhau rất nhiều hoặc nếu batch
giá trị thay đổi đáng kể. Trong những trường hợp này, hiện tại .cache
nên đổi tên và chuyển đến một thư mục khác hoặc xóa hoàn toàn.
Ưu điểm của việc sử dụng YOLO với TensorRT INT8
-
Giảm kích thước mô hình: Lượng tử hóa từ FP32 sang INT8 có thể giảm kích thước mô hình xuống 4 lần (trên đĩa hoặc trong bộ nhớ), giúp thời gian tải xuống nhanh hơn, giảm yêu cầu lưu trữ và giảm dung lượng bộ nhớ khi triển khai mô hình.
-
Tiêu thụ điện năng thấp hơn: Giảm các hoạt động chính xác cho INT8 được xuất khẩu YOLO Các mô hình này có thể tiêu thụ ít điện năng hơn so với các mô hình FP32, đặc biệt là đối với các thiết bị chạy bằng pin.
-
Tốc độ suy luận được cải thiện: TensorRT tối ưu hóa mô hình cho phần cứng mục tiêu, có khả năng dẫn đến tốc độ suy luận nhanh hơn trên GPU, thiết bị nhúng và bộ tăng tốc.
Lưu ý về tốc độ suy luận
Một vài lệnh suy luận đầu tiên với một mô hình được xuất sang TensorRT INT8 có thể được mong đợi có thời gian xử lý trước, suy luận và/hoặc xử lý sau dài hơn bình thường. Điều này cũng có thể xảy ra khi thay đổi imgsz
trong quá trình suy luận, đặc biệt là khi imgsz
không giống như những gì đã được chỉ định trong quá trình xuất khẩu (xuất khẩu imgsz
được thiết lập như TensorRT "hồ sơ tối ưu").
Nhược điểm của việc sử dụng YOLO với TensorRT INT8
-
Giảm các chỉ số đánh giá: Sử dụng độ chính xác thấp hơn sẽ có nghĩa là
mAP
,Precision
,Recall
hoặc bất kỳ số liệu khác được sử dụng để đánh giá hiệu suất mô hình có thể sẽ tệ hơn một chút. Xem Phần kết quả hiệu suất để so sánh sự khác biệt trongmAP50
VàmAP50-95
khi xuất bằng INT8 trên một mẫu nhỏ các thiết bị khác nhau. -
Tăng thời gian phát triển: Việc tìm ra cài đặt "tối ưu" cho hiệu chuẩn INT8 cho tập dữ liệu và thiết bị có thể mất rất nhiều thời gian thử nghiệm.
-
Phụ thuộc vào phần cứng: Hiệu chuẩn và hiệu suất có thể phụ thuộc rất nhiều vào phần cứng và trọng số mô hình ít có khả năng chuyển nhượng.
Ultralytics YOLO TensorRT Hiệu suất xuất khẩu
NVIDIA A100
Hiệu suất
Đã thử nghiệm với Ubuntu 22.04.3 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
Xem Tài liệu phát hiện để biết các ví dụ sử dụng với các mô hình được đào tạo trên COCO , bao gồm 80 lớp được đào tạo trước.
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 0.52 | 0,51 | 0,56 | 8 | 640 | ||
FP32 | COCO giá trị | 0.52 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Dự đoán | 0.34 | 0,34 | 0,41 | 8 | 640 | ||
FP16 | COCO giá trị | 0.33 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Dự đoán | 0.28 | 0,27 | 0,31 | 8 | 640 | ||
INT8 | COCO giá trị | 0.29 | 0.47 | 0.33 | 1 | 640 |
Xem Segmentation Docs để biết các ví dụ sử dụng với các mô hình được đào tạo trên COCO , bao gồm 80 lớp được đào tạo trước.
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n-seg.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
giá trị mAP 50(Triệu) |
giá trị mAP 50-95 (Nam) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 0.62 | 0,61 | 0,68 | 8 | 640 | ||||
FP32 | COCO giá trị | 0.63 | 0.52 | 0.36 | 0.49 | 0.31 | 1 | 640 | |
FP16 | Dự đoán | 0.40 | 0,39 | 0,44 | 8 | 640 | ||||
FP16 | COCO giá trị | 0.43 | 0.52 | 0.36 | 0.49 | 0.30 | 1 | 640 | |
INT8 | Dự đoán | 0.34 | 0,33 | 0,37 | 8 | 640 | ||||
INT8 | COCO giá trị | 0.36 | 0.46 | 0.32 | 0.43 | 0.27 | 1 | 640 |
Xem Tài liệu phân loại để biết ví dụ sử dụng với các mô hình được đào tạo trên ImageNet , bao gồm 1000 lớp được đào tạo trước.
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n-cls.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
đầu trang-1 | top-5 | batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 0.26 | 0,25 | 0,28 | 8 | 640 | ||
FP32 | Giá trị ImageNet | 0.26 | 0.35 | 0.61 | 1 | 640 | |
FP16 | Dự đoán | 0.18 | 0,17 | 0,19 | 8 | 640 | ||
FP16 | Giá trị ImageNet | 0.18 | 0.35 | 0.61 | 1 | 640 | |
INT8 | Dự đoán | 0.16 | 0,15 | 0,57 | 8 | 640 | ||
INT8 | Giá trị ImageNet | 0.15 | 0.32 | 0.59 | 1 | 640 |
Xem Tài liệu ước tính tư thế để biết các ví dụ sử dụng với các mô hình được đào tạo trên COCO , bao gồm 1 lớp được đào tạo trước, "người".
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n-pose.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
giá trị mAP 50(Trang) |
giá trị mAP 50-95 (Trang) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 0.54 | 0,53 | 0,58 | 8 | 640 | ||||
FP32 | COCO giá trị | 0.55 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
FP16 | Dự đoán | 0.37 | 0,35 | 0,41 | 8 | 640 | ||||
FP16 | COCO giá trị | 0.36 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
INT8 | Dự đoán | 0.29 | 0,28 | 0,33 | 8 | 640 | ||||
INT8 | COCO giá trị | 0.30 | 0.90 | 0.68 | 0.78 | 0.47 | 1 | 640 |
Xem Tài liệu phát hiện định hướng để biết các ví dụ sử dụng với các mô hình được đào tạo trên DOTAv1 , bao gồm 15 lớp được đào tạo trước.
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n-obb.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 0.52 | 0,51 | 0,59 | 8 | 640 | ||
FP32 | DOTAv1 giá trị | 0.76 | 0.50 | 0.36 | 1 | 640 | |
FP16 | Dự đoán | 0.34 | 0,33 | 0,42 | 8 | 640 | ||
FP16 | DOTAv1 giá trị | 0.59 | 0.50 | 0.36 | 1 | 640 | |
INT8 | Dự đoán | 0.29 | 0,28 | 0,33 | 8 | 640 | ||
INT8 | DOTAv1 giá trị | 0.32 | 0.45 | 0.32 | 1 | 640 |
GPU tiêu dùng
Hiệu suất phát hiện (COCO)
Đã thử nghiệm với Windows 10.0.19045, python 3.10.9
, ultralytics==8.2.4
, tensorrt==10.0.0b6
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 1.06 | 0,75 | 1,88 | 8 | 640 | ||
FP32 | COCO giá trị | 1.37 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Dự đoán | 0.62 | 0,75 | 1,13 | 8 | 640 | ||
FP16 | COCO giá trị | 0.85 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Dự đoán | 0.52 | 0,38 | 1,00 | 8 | 640 | ||
INT8 | COCO giá trị | 0.74 | 0.47 | 0.33 | 1 | 640 |
Đã thử nghiệm với Windows 10.0.22631, python 3.11.9
, ultralytics==8.2.4
, tensorrt==10.0.1
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 1.76 | 1,69 | 1,87 | 8 | 640 | ||
FP32 | COCO giá trị | 1.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Dự đoán | 0.86 | 0,75 | 1,00 | 8 | 640 | ||
FP16 | COCO giá trị | 1.43 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Dự đoán | 0.80 | 0,75 | 1,00 | 8 | 640 | ||
INT8 | COCO giá trị | 1.35 | 0.47 | 0.33 | 1 | 640 |
Đã thử nghiệm với Pop!_OS 22.04 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 2.84 | 2,84 | 2,85 | 8 | 640 | ||
FP32 | COCO giá trị | 2.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Dự đoán | 1.09 | 1.09 | 1.10 | 8 | 640 | ||
FP16 | COCO giá trị | 1.20 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Dự đoán | 0.75 | 0,74 | 0,75 | 8 | 640 | ||
INT8 | COCO giá trị | 0.76 | 0.47 | 0.33 | 1 | 640 |
Thiết bị nhúng
Hiệu suất phát hiện (COCO)
Đã thử nghiệm với JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12
, ultralytics==8.2.16
, tensorrt==10.0.1
Ghi chú
Thời gian suy luận được hiển thị cho mean
, min
(nhanh nhất) và max
(chậm nhất) cho mỗi bài kiểm tra sử dụng trọng số được đào tạo trước yolov8n.engine
Độ chính xác | Kiểm tra đánh giá | nghĩa là (bệnh đa xơ cứng) |
tối thiểu | tối đa (bệnh đa xơ cứng) |
giá trị mAP 50(B) |
giá trị mAP 50-95(B) |
batch |
kích cỡ (điểm ảnh) |
---|---|---|---|---|---|---|---|
FP32 | Dự đoán | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
FP32 | COCO giá trị | 6.17 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Dự đoán | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
FP16 | COCO giá trị | 3.19 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Dự đoán | 2.30 | 2,29 | 2,35 | 8 | 640 | ||
INT8 | COCO giá trị | 2.32 | 0.46 | 0.32 | 1 | 640 |
Thông tin
Xem hướng dẫn bắt đầu nhanh của chúng tôi về NVIDIA Jetson với Ultralytics YOLO để tìm hiểu thêm về thiết lập và cấu hình.
Phương pháp đánh giá
Mở rộng các phần bên dưới để biết thông tin về cách các mô hình này được xuất và thử nghiệm.
Cấu hình xuất khẩu
Xem chế độ xuất để biết chi tiết về các đối số cấu hình xuất.
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, half=True)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)
Dự đoán vòng lặp
Xem chế độ dự đoán để biết thêm thông tin.
Cấu hình xác thực
Nhìn thấy val
cách thức để tìm hiểu thêm về các đối số cấu hình xác thực.
Deploying Exported YOLO11 TensorRT Models
Having successfully exported your Ultralytics YOLO11 models to TensorRT format, you're now ready to deploy them. For in-depth instructions on deploying your TensorRT models in various settings, take a look at the following resources:
-
Triển khai Ultralytics với Triton Server : Hướng dẫn của chúng tôi về cách sử dụng NVIDIA 'S Triton Suy luận (trước đây TensorRT Suy luận) Máy chủ dành riêng để sử dụng với Ultralytics YOLO mô hình.
-
Triển khai mạng nơ-ron sâu với NVIDIA TensorRT : Bài viết này giải thích cách sử dụng NVIDIA TensorRT để triển khai mạng lưới nơ-ron sâu trên GPU - nền tảng triển khai hiệu quả.
-
AI đầu cuối cho PC chạy NVIDIA : Triển khai NVIDIA TensorRT : Bài đăng trên blog này giải thích cách sử dụng NVIDIA TensorRT để tối ưu hóa và triển khai các mô hình AI trên NVIDIA - Máy tính cá nhân.
-
Kho lưu trữ GitHub cho NVIDIA TensorRT : : Đây là kho lưu trữ GitHub chính thức chứa mã nguồn và tài liệu cho NVIDIA TensorRT .
Bản tóm tắt
In this guide, we focused on converting Ultralytics YOLO11 models to NVIDIA's TensorRT model format. This conversion step is crucial for improving the efficiency and speed of YOLO11 models, making them more effective and suitable for diverse deployment environments.
Để biết thêm thông tin về cách sử dụng, hãy xem tài liệu chính thức TensorRT .
If you're curious about additional Ultralytics YOLO11 integrations, our integration guide page provides an extensive selection of informative resources and insights.
CÂU HỎI THƯỜNG GẶP
How do I convert YOLO11 models to TensorRT format?
To convert your Ultralytics YOLO11 models to TensorRT format for optimized NVIDIA GPU inference, follow these steps:
-
Cài đặt gói cần thiết :
-
Export your YOLO11 model:
For more details, visit the YOLO11 Installation guide and the export documentation.
What are the benefits of using TensorRT for YOLO11 models?
Using TensorRT to optimize YOLO11 models offers several benefits:
- Tốc độ suy luận nhanh hơn : TensorRT tối ưu hóa các lớp mô hình và sử dụng hiệu chuẩn độ chính xác (INT8 và FP16) để tăng tốc suy luận mà không làm giảm đáng kể độ chính xác.
- Hiệu quả bộ nhớ : TensorRT quản lý tensor bộ nhớ động, giảm chi phí và cải thiện GPU sử dụng bộ nhớ.
- Layer Fusion : Kết hợp nhiều lớp thành các thao tác duy nhất, giảm độ phức tạp khi tính toán.
- Kernel Auto-Tuning : Tự động lựa chọn tối ưu hóa GPU hạt nhân cho mỗi lớp mô hình, đảm bảo hiệu suất tối đa.
Để biết thêm thông tin, hãy khám phá các tính năng chi tiết của TensorRT tại đây và đọc phần tổng quan về TensorRT của chúng tôi.
Can I use INT8 quantization with TensorRT for YOLO11 models?
Yes, you can export YOLO11 models using TensorRT with INT8 quantization. This process involves post-training quantization (PTQ) and calibration:
-
Xuất bằng INT8 :
-
Chạy suy luận :
Để biết thêm chi tiết, hãy tham khảo phần xuất TensorRT với lượng tử hóa INT8 .
How do I deploy YOLO11 TensorRT models on an NVIDIA Triton Inference Server?
Deploying YOLO11 TensorRT models on an NVIDIA Triton Inference Server can be done using the following resources:
- Triển khai Ultralytics YOLOv8 với Triton Server : Hướng dẫn từng bước về cách thiết lập và sử dụng Triton Máy chủ suy luận.
- Tài liệu NVIDIA Triton Inference Server : Chính thức NVIDIA tài liệu hướng dẫn chi tiết về các tùy chọn triển khai và cấu hình.
Những hướng dẫn này sẽ giúp bạn tích hợp YOLOv8 mô hình hóa hiệu quả trong nhiều môi trường triển khai khác nhau.
Những cải tiến về hiệu suất được quan sát thấy là gì? YOLOv8 mô hình xuất khẩu sang TensorRT ?
Cải thiện hiệu suất với TensorRT có thể thay đổi tùy theo phần cứng được sử dụng. Sau đây là một số điểm chuẩn điển hình:
-
NVIDIA A100 :
- Suy luận FP32 : ~0,52 ms / hình ảnh
- Suy luận FP16 : ~0,34 ms / hình ảnh
- Suy luận INT8 : ~0,28 ms / hình ảnh
- Giảm nhẹ mAP với độ chính xác INT8, nhưng cải thiện đáng kể về tốc độ.
-
GPU tiêu dùng (ví dụ: RTX 3080) :
- Suy luận FP32 : ~1,06 ms / hình ảnh
- Suy luận FP16 : ~0,62 ms / hình ảnh
- Suy luận INT8 : ~0,52 ms / hình ảnh
Tiêu chuẩn hiệu suất chi tiết cho các cấu hình phần cứng khác nhau có thể được tìm thấy trong phần hiệu suất .
Để có cái nhìn sâu sắc toàn diện hơn về TensorRT hiệu suất, hãy tham khảo tài liệu Ultralytics và báo cáo phân tích hiệu suất của chúng tôi.