Đánh giá hiệu năng mô hình với Ultralytics YOLO

Ultralytics YOLO ecosystem and integrations

Trực quan hóa Benchmark

Làm mới trình duyệt

Bạn có thể cần làm mới trang để xem các biểu đồ chính xác do các vấn đề tiềm ẩn về cookie.

Giới thiệu

Khi mô hình của bạn đã được huấn luyện và kiểm chứng, bước hợp lý tiếp theo là đánh giá hiệu năng của nó trong nhiều kịch bản thực tế. Chế độ Benchmark trong Ultralytics YOLO26 phục vụ mục đích này bằng cách cung cấp một framework mạnh mẽ để đánh giá tốc độ và độ chính xác của mô hình trên nhiều định dạng xuất khác nhau.



Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?

Tại sao Benchmarking lại quan trọng?

  • Quyết định sáng suốt: Hiểu rõ sự đánh đổi giữa tốc độ và độ chính xác.
  • Phân bổ tài nguyên: Hiểu cách các định dạng xuất khác nhau hoạt động trên phần cứng khác nhau.
  • Tối ưu hóa: Tìm hiểu định dạng xuất nào mang lại hiệu năng tốt nhất cho trường hợp sử dụng cụ thể của bạn.
  • Hiệu quả chi phí: Sử dụng tài nguyên phần cứng hiệu quả hơn dựa trên kết quả benchmark.

Các chỉ số chính trong chế độ Benchmark

Các định dạng xuất được hỗ trợ

  • ONNX: Để có hiệu năng CPU tối ưu
  • TensorRT: Để có hiệu quả GPU tối đa
  • OpenVINO: Để tối ưu hóa phần cứng Intel
  • CoreML, TensorFlow SavedModel, và hơn thế nữa: Cho các nhu cầu triển khai đa dạng.
Mẹo
  • Xuất sang ONNX hoặc OpenVINO để tăng tốc CPU lên tới 3 lần.
  • Xuất sang TensorRT để tăng tốc GPU lên tới 5 lần.

Ví dụ sử dụng

Cài đặt khuyến nghị

Cài đặt Ultralytics với các phụ thuộc xuất trước khi benchmark để tránh thiếu các gói thư viện.

pip install ultralytics[export]

Chạy benchmark YOLO26n trên tất cả các định dạng xuất được hỗ trợ (ONNX, TensorRT, v.v.). Xem phần Tham số bên dưới để có danh sách đầy đủ các tùy chọn xuất.

Ví dụ
from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)

# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")

Đối số

Các tham số như model, data, imgsz, half, device, verboseformat cung cấp cho người dùng sự linh hoạt để tinh chỉnh các benchmark theo nhu cầu cụ thể và so sánh hiệu năng của các định dạng xuất khác nhau một cách dễ dàng.

KhóaGiá trị mặc địnhMô tả
modelNoneChỉ định đường dẫn đến tệp mô hình. Chấp nhận cả định dạng .pt.yaml, ví dụ: "yolo26n.pt" cho các mô hình đã được huấn luyện sẵn hoặc các tệp cấu hình.
dataNoneĐường dẫn đến tệp YAML xác định tập dữ liệu để benchmark, thường bao gồm các đường dẫn và cài đặt cho dữ liệu kiểm chứng. Ví dụ: "coco8.yaml".
imgsz640Kích thước hình ảnh đầu vào cho mô hình. Có thể là một số nguyên duy nhất cho hình ảnh vuông hoặc một tuple (width, height) cho hình ảnh không vuông, ví dụ: (640, 480).
halfFalseKích hoạt suy luận FP16 (độ chính xác bán phần), giúp giảm mức sử dụng bộ nhớ và có thể tăng tốc độ trên phần cứng tương thích. Sử dụng half=True để kích hoạt.
int8FalseKích hoạt định lượng INT8 để có hiệu năng tối ưu hơn nữa trên các thiết bị được hỗ trợ, đặc biệt hữu ích cho các thiết bị biên (edge devices). Thiết lập int8=True để sử dụng.
deviceNoneXác định (các) thiết bị tính toán để benchmark, chẳng hạn như "cpu" hoặc "cuda:0".
verboseFalseKiểm soát mức độ chi tiết trong đầu ra nhật ký. Thiết lập verbose=True để có các nhật ký chi tiết.
format''Chỉ benchmark định dạng xuất được chỉ định (ví dụ: format=onnx). Để trống để tự động kiểm tra mọi định dạng được hỗ trợ.

Các định dạng xuất

Các bài kiểm tra benchmark sẽ cố gắng chạy tự động trên tất cả các định dạng xuất có thể được liệt kê bên dưới. Ngoài ra, bạn có thể chạy benchmark cho một định dạng cụ thể bằng cách sử dụng tham số format, vốn chấp nhận bất kỳ định dạng nào được đề cập dưới đây.

Định dạngĐối số formatModelMetadataĐối số
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n_deepx_model/imgsz, int8, data, optimize, device

Xem chi tiết đầy đủ về export trong trang Export.

Câu hỏi thường gặp (FAQ)

Làm thế nào để tôi benchmark hiệu năng mô hình YOLO26 của mình bằng Ultralytics?

Ultralytics YOLO26 cung cấp chế độ Benchmark để đánh giá hiệu năng mô hình của bạn trên các định dạng xuất khác nhau. Chế độ này cung cấp thông tin chi tiết về các chỉ số chính như mean Average Precision (mAP50-95), độ chính xác và thời gian suy luận tính bằng mili giây. Để chạy benchmark, bạn có thể sử dụng Python hoặc các lệnh CLI. Ví dụ, để benchmark trên GPU:

Ví dụ
from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)

Để biết thêm chi tiết về các tham số benchmark, hãy truy cập phần Tham số.

Lợi ích của việc xuất các mô hình YOLO26 sang các định dạng khác nhau là gì?

Xuất các mô hình YOLO26 sang các định dạng khác nhau như ONNX, TensorRTOpenVINO cho phép bạn tối ưu hóa hiệu năng dựa trên môi trường triển khai của mình. Ví dụ:

  • ONNX: Cung cấp tốc độ CPU nhanh hơn gấp 3 lần.
  • TensorRT: Cung cấp tốc độ GPU nhanh hơn gấp 5 lần.
  • OpenVINO: Được tối ưu hóa đặc biệt cho phần cứng Intel.

Các định dạng này nâng cao cả tốc độ và độ chính xác cho mô hình của bạn, giúp chúng hiệu quả hơn cho nhiều ứng dụng thực tế. Truy cập trang Export để biết chi tiết đầy đủ.

Tại sao việc benchmark lại quan trọng khi đánh giá các mô hình YOLO26?

Việc benchmark các mô hình YOLO26 của bạn là cần thiết vì một số lý do:

  • Quyết định sáng suốt: Hiểu rõ sự đánh đổi giữa tốc độ và độ chính xác.
  • Phân bổ tài nguyên: Đánh giá hiệu năng trên các tùy chọn phần cứng khác nhau.
  • Tối ưu hóa: Xác định định dạng xuất nào mang lại hiệu năng tốt nhất cho các trường hợp sử dụng cụ thể.
  • Hiệu quả chi phí: Tối ưu hóa việc sử dụng phần cứng dựa trên kết quả benchmark.

Các chỉ số chính như mAP50-95, độ chính xác Top-5 và thời gian suy luận giúp thực hiện các đánh giá này. Tham khảo phần Các chỉ số chính để biết thêm thông tin.

YOLO26 hỗ trợ những định dạng xuất nào và ưu điểm của chúng là gì?

YOLO26 hỗ trợ nhiều định dạng xuất, mỗi định dạng được thiết kế cho các phần cứng và trường hợp sử dụng cụ thể:

  • ONNX: Tốt nhất cho hiệu năng CPU.
  • TensorRT: Lý tưởng cho hiệu quả GPU.
  • OpenVINO: Được tối ưu hóa cho phần cứng Intel.
  • CoreML & TensorFlow: Hữu ích cho iOS và các ứng dụng ML nói chung.

Để có danh sách đầy đủ các định dạng được hỗ trợ và các ưu điểm tương ứng của chúng, hãy xem phần Các định dạng xuất được hỗ trợ.

Tôi có thể sử dụng các tham số nào để tinh chỉnh benchmark YOLO26 của mình?

Khi chạy benchmark, một số tham số có thể được tùy chỉnh để phù hợp với các nhu cầu cụ thể:

  • model: Đường dẫn đến tệp mô hình (ví dụ: "yolo26n.pt").
  • data: Đường dẫn đến tệp YAML xác định tập dữ liệu (ví dụ: "coco8.yaml").
  • imgsz: Kích thước hình ảnh đầu vào, dưới dạng một số nguyên hoặc một tuple.
  • half: Kích hoạt suy luận FP16 để có hiệu năng tốt hơn.
  • int8: Kích hoạt định lượng INT8 cho các thiết bị biên.
  • device: Chỉ định thiết bị tính toán (ví dụ: "cpu", "cuda:0").
  • verbose: Kiểm soát mức độ chi tiết của nhật ký.

Để có danh sách đầy đủ các tham số, hãy tham khảo phần Tham số.

Bình luận