Đánh giá hiệu năng mô hình với Ultralytics YOLO#
Trực quan hóa kết quả Benchmark#
Giới thiệu#
Sau khi mô hình của bạn đã được huấn luyện và xác thực, bước hợp lý tiếp theo là đánh giá hiệu suất của nó trong các kịch bản thực tế khác nhau. 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à accuracy 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 việc Benchmark lại quan trọng?#
- Quyết định sáng suốt: Có được thông tin chi tiết về 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 các 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#
- mAP50-95: Dành cho object detection, phân đoạn và ước 1 lượng tư thế.
- accuracy_top1: Dành cho image classification.
- Thời gian suy luận (Inference Time): Thời gian tính cho mỗi ảnh tính bằng mili giây.
Các định dạng xuất được hỗ trợ#
- ONNX: Để đạt hiệu năng CPU tối ưu
- TensorRT: Để đạt hiệu quả GPU tối đa
- OpenVINO: Để tối ưu hóa phần cứng Intel
- CoreML, TensorFlow SavedModel và nhiều hơn nữa: Cho các nhu cầu triển khai đa dạng.
- Xuất sang ONNX hoặc OpenVINO để tăng tốc độ CPU lên đến 3 lần.
- Xuất sang TensorRT để tăng tốc độ GPU lên đến 5 lần.
Ví dụ Sử dụng#
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 cho 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 để biết danh sách đầy đủ các tùy chọn xuất.
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")Tham số#
Các tham số như model, data, imgsz, quantize, device, verbose và format cung cấp cho người dùng sự linh hoạt để tinh chỉnh các benchmark cho phù hợp với nhu cầu cụ thể của họ và dễ dàng so sánh hiệu suất của các định dạng xuất khác nhau.
| Khóa | Giá trị mặc định | Mô tả |
|---|---|---|
model | None | Chỉ định đường dẫn đến tệp mô hình. Hấp nhận cả hai định dạng .pt và .yaml, ví dụ: "yolo26n.pt" cho các mô hình đã huấn luyện trước hoặc các tệp cấu hình. |
data | None | Đường dẫn đến YAML của tập dữ liệu để benchmark, thường bao gồm các đường dẫn và cài đặt cho validation data. Ví dụ: "coco8.yaml". Phân loại thay vào đó nhận một thư mục tập dữ liệu hoặc tên tập dữ liệu tích hợp sẵn (ví dụ: imagenet10). |
imgsz | 640 | Kích thước ảnh đầu vào cho mô hình. Phải là một số nguyên duy nhất cho ảnh vuông (ví dụ: 640); benchmark() chỉ hỗ trợ kích thước ảnh vuông. |
quantize | None | Độ chính xác lượng tử hóa: 16 (FP16) hoặc 8 (INT8/PTQ; cần hiệu chuẩn data/fraction); 32/chưa đặt là FP32. Thay thế các cờ half/int8 đã lỗi thời. |
device | 'cpu' | Xác định thiết bị tính toán cho benchmark, chẳng hạn như "cpu" hoặc "cuda:0". |
verbose | False | Kiểm soát mức độ chi tiết trong đầu ra nhật ký. Đặt verbose=True để xem nhật ký chi tiết. |
eps | 0.001 | Epsilon nhỏ (tính bằng mili giây) được thêm vào thời gian inference trên mỗi ảnh trước khi chuyển đổi sang FPS, nhằm tránh lỗi chia cho số không. Tham số này hiếm khi được thay đổi. |
format | '' | Benchmark chỉ đị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ợ. |
Hàm độc lập benchmark() (from ultralytics.utils.benchmarks import benchmark) sử dụng các giá trị mặc định chữ ký riêng thay vì các giá trị bảng ở trên, đáng chú ý là model="yolo26n.pt" và imgsz=160; truyền imgsz một cách rõ ràng để khớp với yolo benchmark CLI.
Các định dạng xuất#
Các 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, chấp nhận bất kỳ định dạng nào được đề cập bên dưới.
| Định dạng | Đối số format | Mô hình | Metadata | Tham số |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
Xem chi tiết đầy đủ về export tại trang Export.
Câu hỏi thường gặp#
Ultralytics YOLO26 cung cấp chế độ Benchmark để đánh giá hiệu suất của mô hình 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 lệnh Python hoặc 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, device=0)Để biết thêm chi tiết về các tham số benchmark, hãy truy cập phần Arguments.
Xuất các mô hình YOLO26 sang các định dạng khác nhau như ONNX, TensorRT và OpenVINO cho phép bạn tối ưu hóa hiệu suất 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 gấp 3 lần.
- TensorRT: Cung cấp tốc độ GPU nhanh 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 của mô hình, giúp chúng hiệu quả hơn cho nhiều ứng dụng thực tế khác nhau. Truy cập trang Export để biết chi tiết đầy đủ.
Việc đo lường hiệu năng các model YOLO26 của bạn là cần thiết vì nhiều 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, Top-1 accuracy và thời gian suy luận giúp thực hiện các đánh giá này. Tham khảo phần Key Metrics để biết thêm thông tin.
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 các ứng dụng iOS và 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 Supported Export Formats.
Khi chạy benchmark, một số đối 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 model (ví dụ: "yolo26n.pt").
- data: Đường dẫn đến YAML của tập dữ liệu (ví dụ:
"coco8.yaml"); phân loại thay vào đó nhận một thư mục tập dữ liệu hoặc tên tập dữ liệu tích hợp sẵn (ví dụ:imagenet10). - imgsz: Kích thước ảnh đầu vào vuông dưới dạng một số nguyên duy nhất, chẳng hạn như
640. Chế độ Benchmark sử dụng cùng một kích thước ảnh vuông trên PyTorch và các định dạng đã xuất để so sánh công bằng. - quantize: Độ chính xác lượng tử hóa:
16cho FP16,8cho INT8 (hữu ích cho các thiết bị biên);32/chưa đặt là FP32. - 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 Arguments.