Đánh giá hiệu năng mô hình với Ultralytics YOLO
Trực quan hóa Benchmark
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
- mAP50-95: Cho phát hiện đối tượng, phân đoạn và ước tính tư thế.
- accuracy_top5: Cho phân loại hình ảnh.
- Thời gian suy luận (Inference Time): Thời gian cần thiết cho mỗi hình ảnh tính bằng mili giây.
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.
- 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 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.
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, verbose và format 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óa | 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 sẵn hoặc các tệp cấu hình. |
data | None | Đườ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". |
imgsz | 640 | Kí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). |
half | False | Kí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. |
int8 | False | Kí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. |
device | None | 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 đầ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ố format | Model | Metadata | Đối số |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n_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:
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, 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. 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ố.