Xuất ONNX cho các model YOLO26#
~43% suy luận nhanh hơn.
- Việc xuất model Ultralytics YOLO26 sang ONNX có thể mang lại tốc độ suy luận nhanh hơn tới 43%, cho phép triển khai nhanh chóng và hiệu quả hơn.
Thông thường, khi triển khai các model computer vision, bạn sẽ cần một định dạng model vừa linh hoạt vừa tương thích với nhiều nền tảng.
Việc xuất các model Ultralytics YOLO26 sang định dạng ONNX giúp đơn giản hóa quá trình triển khai và đảm bảo hiệu suất tối ưu trên nhiều môi trường khác nhau. Hướng dẫn này sẽ chỉ cho bạn cách dễ dàng chuyển đổi các model YOLO26 sang ONNX và nâng cao khả năng mở rộng cũng như hiệu quả của chúng trong các ứng dụng thực tế.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX và ONNX Runtime#
ONNX, viết tắt của Open Neural Network Exchange, là một dự án cộng đồng do Facebook và Microsoft ban đầu phát triển. Quá trình phát triển liên tục của ONNX là nỗ lực hợp tác được hỗ trợ bởi các tổ chức khác nhau như IBM, Amazon (thông qua AWS) và Google. Dự án nhằm mục đích tạo ra một định dạng tệp mở được thiết kế để biểu diễn các model machine learning theo cách cho phép sử dụng chúng trên các framework AI và phần cứng khác nhau.
Các model ONNX có thể được sử dụng để chuyển đổi liền mạch giữa các framework khác nhau. Ví dụ, một model deep learning được huấn luyện bằng PyTorch có thể được xuất sang định dạng ONNX và sau đó dễ dàng nhập vào TensorFlow.
Ngoài ra, các model ONNX có thể được sử dụng với ONNX Runtime. ONNX Runtime là một trình tăng tốc đa nền tảng linh hoạt cho các model machine learning tương thích với các framework như PyTorch, TensorFlow, scikit-learn, v.v.
ONNX Runtime tối ưu hóa quá trình thực thi các model ONNX bằng cách tận dụng các khả năng đặc thù của phần cứng. Quá trình tối ưu hóa này cho phép các model chạy hiệu quả và đạt hiệu suất cao trên nhiều nền tảng phần cứng, bao gồm CPU, GPU và các trình tăng tốc chuyên dụng.
Dù được sử dụng độc lập hay kết hợp với ONNX Runtime, ONNX cung cấp một giải pháp linh hoạt cho việc model deployment và tính tương thích trong machine learning.
Các tính năng chính của model ONNX#
Khả năng xử lý nhiều định dạng khác nhau của ONNX có thể được quy cho các tính năng chính sau:
-
Biểu diễn model chung: ONNX xác định một bộ toán tử chung (như tích chập, các lớp, v.v.) và một định dạng dữ liệu tiêu chuẩn. Khi một model được chuyển đổi sang định dạng ONNX, kiến trúc và trọng số của nó sẽ được chuyển đổi thành biểu diễn chung này. Sự thống nhất này đảm bảo rằng model có thể được hiểu bởi bất kỳ framework nào hỗ trợ ONNX.
-
Phiên bản và tính tương thích ngược: ONNX duy trì một hệ thống phiên bản cho các toán tử của nó. Điều này đảm bảo rằng ngay cả khi tiêu chuẩn phát triển, các model được tạo trong các phiên bản cũ hơn vẫn có thể sử dụng được. Tính tương thích ngược là một tính năng quan trọng giúp ngăn chặn các model trở nên lỗi thời nhanh chóng.
-
Biểu diễn model dựa trên đồ thị: ONNX biểu diễn các model dưới dạng đồ thị tính toán. Cấu trúc dựa trên đồ thị này là một cách phổ quát để biểu diễn các model học máy, trong đó các nút đại diện cho các thao tác hoặc tính toán, và các cạnh đại diện cho các tensor chảy giữa chúng. Định dạng này dễ dàng thích ứng với nhiều framework vốn cũng biểu diễn các model dưới dạng đồ thị.
-
Công cụ và hệ sinh thái: Xung quanh ONNX tồn tại một hệ sinh thái phong phú gồm các công cụ hỗ trợ chuyển đổi, trực quan hóa và tối ưu hóa model. Những công cụ này giúp nhà phát triển làm việc với các model ONNX dễ dàng hơn và chuyển đổi model giữa các framework khác nhau một cách liền mạch.
Cách sử dụng phổ biến của ONNX#
Trước khi đi sâu vào cách xuất model YOLO26 sang định dạng ONNX, hãy cùng xem xét nơi các model ONNX thường được sử dụng.
Triển khai trên CPU#
Các model ONNX thường được triển khai trên CPU do khả năng tương thích với ONNX Runtime. Runtime này được tối ưu hóa cho việc thực thi trên CPU. Nó cải thiện đáng kể tốc độ suy luận và làm cho việc triển khai trên CPU theo thời gian thực trở nên khả thi.
Các tùy chọn triển khai được hỗ trợ#
Mặc dù các model ONNX thường được sử dụng trên CPU, chúng cũng có thể được triển khai trên các nền tảng sau:
-
Tăng tốc GPU: ONNX hỗ trợ hoàn toàn việc tăng tốc GPU, đặc biệt là NVIDIA CUDA. Đối với việc huấn luyện và suy luận nguyên bản trên GPU AMD, hãy sử dụng PyTorch ROCm; tệp ONNX vẫn yêu cầu một runtime tương thích với AMD.
-
Thiết bị Edge và Mobile: ONNX mở rộng sang các thiết bị edge và mobile, hoàn hảo cho các kịch bản suy luận trên thiết bị và thời gian thực. Nó nhẹ và tương thích với phần cứng edge, đồng thời đóng vai trò là nền tảng cho các định dạng NPU của nhà cung cấp như Huawei Ascend, Qualcomm QNN cho các thiết bị Snapdragon, và RKNN cho các NPU Rockchip.
-
Trình duyệt web: ONNX có thể chạy trực tiếp trong các trình duyệt web, hỗ trợ các ứng dụng AI tương tác và năng động dựa trên nền tảng web.
Các tác vụ được hỗ trợ#
Tính năng xuất ONNX hỗ trợ tất cả bảy tác vụ của Ultralytics. Phân đoạn ngữ nghĩa và ước tính chiều sâu chỉ khả dụng với YOLO26, dòng duy nhất tích hợp sẵn các đầu ra đó.
Xuất model YOLO26 sang ONNX#
Bạn có thể mở rộng khả năng tương thích của model và tính linh hoạt trong triển khai bằng cách chuyển đổi các model YOLO26 sang định dạng ONNX. Ultralytics YOLO26 cung cấp quy trình xuất đơn giản có thể cải thiện đáng kể hiệu suất của model trên các nền tảng khác nhau.
Cài đặt#
Để cài đặt gói cần thiết, hãy chạy:
# Install the required package for YOLO26
pip install ultralyticsĐể có hướng dẫn chi tiết và các best practice liên quan đến quá trình cài đặt, hãy xem YOLO26 Installation guide của chúng tôi. Trong quá trình cài đặt các gói cần thiết cho YOLO26, nếu bạn gặp bất kỳ khó khăn nào, hãy tham khảo Common Issues guide của chúng tôi để tìm giải pháp và mẹo.
Cách sử dụng#
Trước khi đi sâu vào hướng dẫn sử dụng, hãy nhớ khám phá các YOLO26 models offered by Ultralytics. Điều này sẽ giúp bạn chọn được model phù hợp nhất cho các yêu cầu dự án của mình.
Định dạng ONNX hỗ trợ các chế độ Export, Predict và Validate. Hãy xuất model của bạn, sau đó tải model đã xuất để chạy suy luận hoặc xác thực độ chính xác của nó.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Đối số xuất#
Khi xuất model YOLO26 sang định dạng ONNX, bạn có thể tùy chỉnh quy trình bằng nhiều đối số khác nhau để tối ưu hóa cho nhu cầu triển khai cụ thể của mình:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'onnx' | Định dạng đích cho model được xuất, xác định khả năng tương thích với các môi trường triển khai khác nhau. |
imgsz | int hoặc tuple | 640 | Kích thước ảnh mong muốn cho đầu vào của model. Có thể là một số nguyên cho ảnh vuông hoặc một tuple (height, width) cho các kích thước cụ thể. |
quantize | int hoặc str | None | Độ chính xác lượng tử hóa: 16 (FP16) hoặc 8 (lượng tử hóa tĩnh INT8 với ONNX Runtime sử dụng ảnh hiệu chuẩn từ data, tạo ra một model _int8.onnx); 32/không đặt là FP32. Thay thế cho các cờ half/int8 đã lỗi thời. |
data | str | None | Tệp YAML của tập dữ liệu được sử dụng để hiệu chỉnh INT8; riêng phân loại (classification) sẽ lấy thư mục tập dữ liệu hoặc tên tập dữ liệu có sẵn. Nếu bỏ qua với quantize=8, Ultralytics sẽ chọn tập dữ liệu hiệu chỉnh mặc định cho tác vụ của model. |
fraction | float | 1.0 | Tỷ lệ hình ảnh hiệu chuẩn được sử dụng cho lượng tử hóa INT8. |
dynamic | bool | False | Cho phép kích thước đầu vào động, tăng tính linh hoạt trong việc xử lý các kích thước hình ảnh khác nhau. |
simplify | bool | True | Đơn giản hóa đồ thị model với onnxslim, có khả năng cải thiện hiệu suất và tính tương thích. |
opset | int | None | Chỉ định phiên bản ONNX opset để tương thích với các trình phân tích cú pháp và runtime ONNX khác nhau. Nếu không được thiết lập, nó sẽ sử dụng phiên bản được hỗ trợ mới nhất. |
nms | bool | False | Thêm Non-Maximum Suppression (NMS), rất cần thiết cho việc xử lý hậu kỳ phát hiện chính xác và hiệu quả. |
batch | int | 1 | Chỉ định kích thước suy luận batch của model xuất hoặc số lượng ảnh tối đa mà model xuất sẽ xử lý đồng thời ở chế độ predict. |
device | str | None | Chỉ định thiết bị để xuất: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps). |
Để biết thêm chi tiết về quá trình xuất, hãy truy cập trang tài liệu của Ultralytics về việc xuất model.
Triển khai các model YOLO26 ONNX đã xuất#
Sau khi đã xuất thành công các model Ultralytics YOLO26 sang định dạng ONNX, bước tiếp theo là triển khai các model này trong nhiều môi trường khác nhau. Để biết hướng dẫn chi tiết về cách triển khai các model ONNX của bạn, hãy xem qua các tài nguyên sau:
-
ONNX Runtime Python API Documentation: Hướng dẫn này cung cấp thông tin thiết yếu để tải và chạy các model ONNX bằng ONNX Runtime.
-
Deploying on Edge Devices: Hãy xem trang tài liệu này để biết các ví dụ khác nhau về việc triển khai các model ONNX trên edge.
-
ONNX Tutorials on GitHub: Một bộ sưu tập các hướng dẫn toàn diện bao gồm nhiều khía cạnh khác nhau về việc sử dụng và triển khai các model ONNX trong các kịch bản khác nhau.
-
Triton Inference Server: Tìm hiểu cách triển khai các model ONNX của bạn với Triton Inference Server của NVIDIA để có các bản triển khai hiệu suất cao, có thể mở rộng.
Tóm tắt#
Trong hướng dẫn này, bạn đã học cách xuất các model Ultralytics YOLO26 sang định dạng ONNX để tăng khả năng tương tác và hiệu suất của chúng trên nhiều nền tảng khác nhau. Bạn cũng đã được giới thiệu về ONNX Runtime và các tùy chọn triển khai ONNX.
Xuất ONNX chỉ là một trong nhiều export formats được hỗ trợ bởi Ultralytics YOLO26, cho phép bạn triển khai các model của mình trong hầu hết mọi môi trường. Tùy thuộc vào nhu cầu cụ thể của bạn, bạn cũng có thể muốn khám phá các tùy chọn xuất khác như TensorRT để đạt hiệu suất GPU tối đa hoặc CoreML cho các thiết bị Apple.
Để biết thêm chi tiết về cách sử dụng, hãy truy cập ONNX official documentation.
Ngoài ra, nếu bạn muốn biết thêm về các tích hợp khác của Ultralytics YOLO26, hãy truy cập integration guide page của chúng tôi. Bạn sẽ tìm thấy rất nhiều tài nguyên và thông tin hữu ích ở đó.
Câu hỏi thường gặp#
Làm thế nào để tôi xuất các model YOLO26 sang định dạng ONNX bằng Ultralytics?#
Để xuất các model YOLO26 sang định dạng ONNX bằng Ultralytics, hãy làm theo các bước sau:
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")Để biết thêm chi tiết, hãy truy cập export documentation.
Ưu điểm của việc sử dụng ONNX Runtime để triển khai các model YOLO26 là gì?#
Sử dụng ONNX Runtime để triển khai các model YOLO26 mang lại một số ưu điểm:
- Khả năng tương thích đa nền tảng: ONNX Runtime hỗ trợ nhiều nền tảng khác nhau như Windows, macOS và Linux, đảm bảo các model của bạn chạy mượt mà trong các môi trường khác nhau.
- Tăng tốc phần cứng: ONNX Runtime có thể tận dụng các tối ưu hóa đặc thù của phần cứng cho CPU, GPU và các trình tăng tốc chuyên dụng, cung cấp hiệu suất suy luận cao.
- Khả năng tương tác giữa các framework: Các model được huấn luyện trong các framework phổ biến như PyTorch hoặc TensorFlow có thể dễ dàng chuyển đổi sang định dạng ONNX và chạy bằng ONNX Runtime.
- Tối ưu hóa hiệu suất: ONNX Runtime có thể cung cấp tốc độ nhanh gấp 3 lần trên CPU so với các model PyTorch gốc, biến nó thành lựa chọn lý tưởng cho các kịch bản triển khai nơi tài nguyên GPU bị hạn chế.
Tìm hiểu thêm bằng cách xem ONNX Runtime documentation.
Các tùy chọn triển khai nào có sẵn cho các model YOLO26 đã được xuất sang ONNX?#
Các model YOLO26 đã xuất sang ONNX có thể được triển khai trên nhiều nền tảng bao gồm:
- CPU: Sử dụng ONNX Runtime để suy luận tối ưu trên CPU.
- GPU: Tận dụng NVIDIA CUDA để tăng tốc GPU hiệu suất cao.
- Thiết bị Edge: Chạy các model nhẹ trên các thiết bị edge và di động để suy luận thời gian thực ngay trên thiết bị.
- Trình duyệt web: Thực thi model trực tiếp trong các trình duyệt web cho các ứng dụng web tương tác.
- Dịch vụ đám mây: Triển khai trên các nền tảng đám mây hỗ trợ định dạng ONNX để suy luận có khả năng mở rộng.
Để biết thêm thông tin, hãy khám phá hướng dẫn của chúng tôi về model deployment options.
Tại sao tôi nên sử dụng định dạng ONNX cho các model Ultralytics YOLO26?#
Sử dụng định dạng ONNX cho các model Ultralytics YOLO26 mang lại nhiều lợi ích:
- Khả năng tương tác: ONNX cho phép các model được chuyển đổi liền mạch giữa các framework học máy khác nhau.
- Tối ưu hóa hiệu suất: ONNX Runtime có thể nâng cao hiệu suất model bằng cách sử dụng các tối ưu hóa đặc thù của phần cứng.
- Tính linh hoạt: ONNX hỗ trợ nhiều môi trường triển khai khác nhau, cho phép bạn sử dụng cùng một model trên nhiều nền tảng mà không cần chỉnh sửa.
- Tiêu chuẩn hóa: ONNX cung cấp một định dạng tiêu chuẩn được hỗ trợ rộng rãi trong toàn ngành, đảm bảo tính tương thích lâu dài.
Tham khảo hướng dẫn toàn diện về exporting YOLO26 models to ONNX.
Làm cách nào để khắc phục sự cố khi xuất các model YOLO26 sang ONNX?#
Khi xuất các model YOLO26 sang ONNX, bạn có thể gặp phải các vấn đề thường gặp như không khớp phiên bản phụ thuộc hoặc các toán tử không được hỗ trợ. Để khắc phục các sự cố này:
- Xác minh rằng bạn đã cài đặt đúng phiên bản của các phụ thuộc cần thiết.
- Kiểm tra ONNX documentation chính thức để biết các toán tử và tính năng được hỗ trợ.
- Xem lại các thông báo lỗi để tìm manh mối và tham khảo Ultralytics Common Issues guide.
- Thử sử dụng các đối số xuất khác nhau như
simplify=Truehoặc điều chỉnh phiên bảnopset. - Đối với các vấn đề về kích thước đầu vào động, hãy đặt
dynamic=Truetrong quá trình xuất.
Nếu sự cố vẫn tiếp diễn, hãy liên hệ với bộ phận hỗ trợ của Ultralytics để được trợ giúp thêm.