Đánh giá hiệu năng mô hình với Ultralytics YOLO#
Trực quan hóa đánh giá hiệu năng#
Giới thiệu#
Sau khi mô hình được huấn luyện và xác thực, bước tiếp theo hợp lý là đánh giá hiệu năng của mô hình 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à độ chính xác của mô hình trên nhiều định dạng xuất khác nhau.
Xem bản xem trước YOLO27 chưa phát hành để biết các benchmark tốc độ sơ bộ.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
Tại sao việc đánh giá hiệu năng lại quan trọng?#
- Đưa ra quyết định thông minh: Có được cái nhìn sâu sắc 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ả đánh giá hiệu năng.
Các chỉ số quan trọng trong chế độ Benchmark#
- mAP50-95: Dành cho phát hiện đối tượng, phân đoạn và ước lượng tư thế.
- accuracy_top1: Dành cho phân loại hình ảnh.
- Thời gian suy luận: Thời gian xử lý cho mỗi hình ảnh tính bằng mili-giây.
Các format export được hỗ trợ#
- ONNX: Để đạt hiệu năng CPU tối ưu
- TensorRT: Để đạt hiệu suất GPU tối đa
- OpenVINO: Để tối ưu hóa phần cứng Intel
- CoreML, TensorFlow SavedModel và nhiều định dạng khác: 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 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 Ultralytics với các phụ thuộc xuất trước khi chạy benchmark để tránh thiếu gói.
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 Arguments bên dưới để có 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")Arguments#
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 benchmark theo nhu cầu cụ thể của họ và dễ dàng so sánh hiệu năng giữa các định dạng xuất khác nhau.
| Key | Giá trị mặc định | Mô tả |
|---|---|---|
model | None | Chỉ định đường dẫn đến tệp mô hình. Chấp nhận cả định dạng .pt và .yaml, ví dụ: "yolo26n.pt" cho các mô hình được huấn luyện trước hoặc các tệp cấu hình. |
data | None | Đường dẫn tới tệp YAML của tập dữ liệu dùng để benchmark, thường bao gồm các đường dẫn và thiết lập cho dữ liệu xác thực. Ví dụ: "coco8.yaml". Tác vụ phân loại thay vào đó sẽ nhận một thư mục tập dữ liệu hoặc tên tập dữ liệu có sẵn (ví dụ: imagenet10). |
imgsz | 640 | Kích thước hình ảnh đầu vào cho mô hình. Phải là một số nguyên duy nhất cho hình ảnh vuông (ví dụ: 640); benchmark() chỉ hỗ trợ kích thước ảnh vuông. |
quantize | None | Độ chính xác yêu cầu: 16 (FP16) hoặc 8 (INT8; các phương pháp PTQ cần hiệu chuẩn data/fraction, các phương pháp chỉ dùng trọng số thì không); 32/không thiết lập là FP32 nếu định dạng hỗ trợ — định dạng không thể xuất FP32 sẽ từ chối một giá trị 32 rõ ràng hoặc quay về độ chính xác mà nó yêu cầu. Hàng PyTorch gốc không được xuất: chỉ có 16 ảnh hưởng đến nó, chọn suy luận FP16, trong khi 8, 32 và không thiết lập sẽ chạy FP32. Sau đó, mỗi định dạng sẽ chạy suy luận ở độ chính xác khi thực thi của riêng nó. Thay thế các cờ half/int8 đã bị lỗi thời. |
device | 'cpu' | Xác định (các) thiết bị tính toán để benchmark, chẳng hạn như "cpu" hoặc "cuda:0". |
verbose | False | Kiểm soát mức độ chi tiết trong nhật ký ghi lại. Đặt verbose=True để có nhật ký chi tiết. |
eps | 0.001 | Khoảng epsilon nhỏ (mili-giây) được cộng vào thời gian suy luận trên mỗi ảnh trước khi chuyển đổi sang FPS, nhằm tránh lỗi chia cho số không. Hiếm khi được thay đổi. |
format | '' | Chỉ benchmark định dạng xuất được chỉ định (ví dụ: format=onnx). Để trống để kiểm tra tự động 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 của nó thay vì các giá trị trong bảng trên, đáng chú ý là model="yolo26n.pt" và imgsz=160; hãy truyền rõ ràng imgsz để khớp với CLI yolo benchmark.
Các format export#
Quá trình 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 | Argument format | Model | Metadata | Arguments |
|---|---|---|---|---|
| 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 |
nms=None mặc định sử dụng đầu ra thô cho NMS bên ngoài. Thiết lập nms=False để chọn phần đầu không có NMS khả dụng; các định dạng không được hỗ trợ sẽ quay lại đường dẫn đầu ra gốc của chúng. Các mục nms ở trên xác định các định dạng có thể nhúng NMS bằng nms=True.
Xem đầy đủ chi tiết về export trên trang Export.
FAQ#
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 câu lệnh Python hoặc CLI. Ví dụ, để chạy 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 năng dựa trên môi trường triển khai của mình. Chẳng hạn:
- ONNX: Cung cấp tốc độ CPU nhanh hơn tới 3 lần.
- TensorRT: Mang lại tốc độ GPU nhanh hơn tới 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 các 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 đủ.
Đánh giá hiệu năng các mô hình YOLO26 của bạn là rất cần thiết vì một số lý do:
- Đưa ra quyết định thông minh: Hiểu được 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-1 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ế riêng cho 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 suất 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 học máy 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ố 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 của tập dữ liệu (ví dụ:
"coco8.yaml"); tác vụ phân loại thay vào đó sẽ nhận một thư mục tập dữ liệu hoặc tên tập dữ liệu có sẵn (ví dụ:imagenet10). - imgsz: Kích thước hình ảnh đầu vào dạng vuông tính bằ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 cả PyTorch và các định dạng đã xuất để so sánh công bằng. - quantize: Độ chính xác yêu cầu:
16cho FP16,8cho INT8 (hữu ích cho các thiết bị biên);32/không thiết lập là FP32 nếu định dạng hỗ trợ — định dạng không thể xuất FP32 sẽ từ chối một giá trị32rõ ràng hoặc quay về độ chính xác mà nó yêu cầu. Hàng PyTorch gốc không được xuất: chỉ có16ảnh hưởng đến nó, chọn suy luận FP16, trong khi8,32và không thiết lập sẽ chạy FP32. Sau đó, mỗi định dạng sẽ chạy suy luận ở độ chính xác khi thực thi của riêng 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 Arguments.