Xuất ONNX cho các Model YOLO26
Tăng tốc độ suy luận lên ~43%.
- Việc xuất model Ultralytics YOLO26 sang ONNX có thể giúp tăng tốc độ suy luận lên đến 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 tinh giản 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 chuyển đổi model YOLO26 của bạn sang ONNX một cách dễ dàng 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 phát triển ban đầu. Sự phát triển liên tục của ONNX là nỗ lực hợp tác được hỗ trợ bởi nhiều tổ chức như IBM, Amazon (thông qua AWS) và Google. Dự án hướng tới việc 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 chúng được sử dụng trên nhiều 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 trong 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, TFLite, 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. Sự 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 bộ 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 đều cung cấp một giải pháp linh hoạt cho việc triển khai model deployment và khả năng tương thích của machine learning.
Các Tính năng Chính của các Model ONNX
Khả năng xử lý nhiều định dạng của ONNX có thể được quy cho các tính năng chính sau:
-
Biểu diễn Model Chung: ONNX định nghĩa một tập hợp các toán tử chung (như tích chập, các layer, v.v.) và một định dạng dữ liệ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 dịch sang 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.
-
Versioning và Khả năng Tương thích Ngược: ONNX duy trì một hệ thống versioning 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 ở các phiên bản cũ vẫn có thể sử dụng được. Khả năng 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 một cách 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 machine learning, trong đó các nút đại diện cho các phép toán hoặc tính toán, và các cạnh đại diện cho các tensor truyền giữa chúng. Định dạng này dễ dàng thích ứng với các framework khác nhau vốn cũng biểu diễn model dưới dạng đồ thị.
-
Công cụ và Hệ sinh thái: Có một hệ sinh thái phong phú các công cụ xung quanh ONNX hỗ trợ việc chuyển đổi, trực quan hóa và tối ưu hóa model. Những công cụ này giúp các 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 ONNX Phổ biến
Trước khi tìm hiểu cách xuất các model YOLO26 sang định dạng ONNX, hãy xem qua 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 để thực thi trên CPU. Nó cải thiện đáng kể tốc độ suy luận và giúp 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ợ đầy đủ tăng tốc GPU, đặc biệt là NVIDIA CUDA. Điều này cho phép thực thi hiệu quả trên các GPU NVIDIA cho các tác vụ đòi hỏi sức mạnh tính toán cao.
-
Các thiết bị Edge và Di động: ONNX mở rộng sang các thiết bị edge và di động, hoàn hảo cho các kịch bản suy luận tại thiết bị và theo thời gian thực. Nó nhẹ và tương thích với phần cứng edge.
-
Trình duyệt Web: ONNX có thể chạy trực tiếp trong các trình duyệt web, cung cấp sức mạnh cho các ứng dụng AI dựa trên web tương tác và năng động.
Xuất các Model YOLO26 sang ONNX
Bạn có thể mở rộng khả năng tương thích của model và sự 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 một quy trình xuất đơn giản có thể nâng cao đáng kể hiệu suất model của bạn trên các nền tảng khác nhau.
Cài đặt
Để cài đặt gói yêu cầu, hãy chạy:
# Install the required package for YOLO26
pip install ultralyticsĐể biết hướng dẫn chi tiết và các phương pháp tốt nhất liên quan đến quy trình cài đặt, hãy xem hướng dẫn cài đặt YOLO26 của chúng tôi. Trong khi 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 hướng dẫn các vấn đề thường gặp 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ớ xem qua loạt mô hình YOLO26 được Ultralytics cung cấp. Điều này sẽ giúp bạn chọn mô hình phù hợp nhất cho các yêu cầu dự án của mình.
from ultralytics import YOLO
# Load the 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")Các đối số Xuất
Khi xuất model YOLO26 của bạn sang định dạng ONNX, bạn có thể tùy chỉnh quy trình bằng cách sử dụng các đối số khác nhau để tối ưu hóa cho các 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 mục tiêu cho model đã 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 hình ảnh mong muốn cho đầu vào của model. Có thể là một số nguyên cho hình ảnh vuông hoặc một tuple (height, width) cho các kích thước cụ thể. |
half | bool | False | Kích hoạt lượng tử hóa FP16 (độ chính xác một nửa), giảm kích thước model và có khả năng tăng tốc suy luận trên phần cứng được hỗ trợ. |
dynamic | bool | False | Cho phép các kích thước đầu vào động, tăng cườ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 bằng onnxslim, có khả năng cải thiện hiệu suất và khả năng 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 và runtime ONNX khác nhau. Nếu không được đặt, 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), cần thiết cho việc hậu xử lý 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ề quy trình xuất, hãy truy cập trang tài liệu Ultralytics về xuất model.
Triển khai các Model ONNX YOLO26 đã Xuất
Sau khi bạn đã xuất thành công các model Ultralytics YOLO26 của mình sang định dạng ONNX, bước tiếp theo là triển khai các model này trong các 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 các tài nguyên sau:
-
Tài liệu API Python cho ONNX Runtime: 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.
-
Triển khai trên các Thiết bị Edge: Kiểm tra trang tài liệu này để xem các ví dụ khác nhau về việc triển khai các model ONNX trên thiết bị edge.
-
Các Hướng dẫn ONNX trên GitHub: Một bộ sưu tập các hướng dẫn toàn diện bao quát nhiều khía cạnh khác nhau của việc sử dụng và triển khai các model ONNX trong nhiều 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 triển khai hiệu suất cao và có khả năng 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 trên các 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 định dạng xuất đượ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 như mọi môi trường. Tùy thuộc vào nhu cầu cụ thể của mình, bạn cũng có thể muốn khám phá các tùy chọn xuất khác như TensorRT cho 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 tài liệu chính thức của ONNX.
Ngoài ra, nếu bạn muốn biết thêm về các tích hợp Ultralytics YOLO26 khác, hãy truy cập trang hướng dẫn tích hợp của chúng tôi. Bạn sẽ tìm thấy nhiều tài nguyên và thông tin hữu ích ở đó.
Câu hỏi thường gặp (FAQ)
Làm cách nào để xuất các model YOLO26 sang định dạng ONNX bằng Ultralytics?
Để xuất các model YOLO26 của bạn sang định dạng ONNX bằng Ultralytics, hãy làm theo các bước sau:
from ultralytics import YOLO
# Load the 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 tài liệu xuất.
Những lợi ích 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 nhiều lợi ích:
- Khả năng tương thích đa nền tảng: ONNX Runtime hỗ trợ nhiều nền tảng, chẳng hạn như Windows, macOS và Linux, đảm bảo các model của bạn chạy trơn tru trên 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 dành riêng cho phần cứng cho CPU, GPU và các bộ tăng tốc chuyên dụng, mang lại khả năng suy luận hiệu suất 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 được 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 hơn tới 3 lần trên CPU so với các model PyTorch gốc, làm cho nó trở nê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 tài liệu về ONNX Runtime.
Những tùy chọn triển khai nào có sẵn cho các model YOLO26 đã 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 cho suy luận CPU tối ưu.
- GPU: Tận dụng NVIDIA CUDA để tăng tốc GPU hiệu suất cao.
- Các thiết bị Edge: Chạy các model nhẹ trên các thiết bị edge và di động cho suy luận thời gian thực tại thiết bị.
- Trình duyệt Web: Thực thi các model trực tiếp trong các trình duyệt web cho các ứng dụng dựa trên 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ề các tùy chọn triển khai model.
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 giữa các framework machine learning khác nhau một cách liền mạch.
- 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 tận dụng các tối ưu hóa dành riêng cho phần cứng.
- Sự linh hoạt: ONNX hỗ trợ nhiều môi trường triển khai, cho phép bạn sử dụng cùng một model trên các nền tảng khác nhau mà không cần sửa đổi.
- Tiêu chuẩn hóa: ONNX cung cấp một định dạng tiêu chuẩn hóa được hỗ trợ rộng rãi trong toàn ngành, đảm bảo khả năng tương thích lâu dài.
Tham khảo hướng dẫn toàn diện về xuất các model YOLO26 sang ONNX.
Làm cách nào tôi có thể 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 các sự cố phổ biến như không khớp 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 tài liệu ONNX chính thức để xem 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 hướng dẫn về các sự cố thường gặp của Ultralytics.
- 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 hỗ trợ thêm.