Link to this sectionXuất ONNX cho các model YOLO26#
~43% tăng tốc suy luận.
- Xuất model Ultralytics YOLO26 sang ONNX có thể mang lại mức tăng tốc suy luận lên đến 43%, cho phép triển khai nhanh hơn 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 quy 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 dễ dàng các model YOLO26 sang ONNX, đồng thời nâng cao khả năng mở rộng và hiệu quả trong các ứng dụng thực tế.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
Link to this sectionONNX 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 khởi xướng. 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 tạo ra một định dạng file 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. 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 đó nhập dễ dàng vào TensorFlow.
Ngoài ra, các model ONNX có thể được sử dụng với ONNX Runtime. ONNX Runtime là 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.
Cho dù được sử dụng độc lập hay kết hợp cùng ONNX Runtime, ONNX mang đến 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.
Link to this sectionCá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 tập hợp chung các toán tử (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 dịch sang biểu diễn chung này. Sự đồ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 đánh số 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 machine learning, 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 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ợ 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 lập trình viên làm việc với các model ONNX và chuyển đổi model giữa các framework khác nhau một cách liền mạch dễ dàng hơn.
Link to this sectionCách sử dụng phổ biến của ONNX#
Trước khi chúng ta đi sâu vào 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.
Link to this sectionTriển khai trên CPU#
Các model ONNX thường được triển khai trên CPU do tính tương thích với ONNX Runtime. Trình runtime này được tối ưu hóa cho 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 thời gian thực trở nên khả thi.
Link to this sectionCá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 khả năng tính toán cao.
-
Thiết bị biên và di động: ONNX mở rộng ra các thiết bị biên và di động, hoàn hảo cho các kịch bản suy luận thời gian thực và trên thiết bị. Nó nhẹ và tương thích với phần cứng biên, đồng thời đóng vai trò là nền tảng cho các định dạng NPU từ nhà cung cấp như Qualcomm QNN cho 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, cung cấp năng lượng cho các ứng dụng AI tương tác và năng động trên nền tảng web.
Link to this sectionXuất model YOLO26 sang ONNX#
Bạn có thể mở rộng khả năng tương thích và linh hoạt khi triển khai model 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 trực quan có thể cải thiện đáng kể hiệu suất model của bạn trên các nền tảng khác nhau.
Link to this sectionCài đặt#
Để cài đặt gói cần thiết, 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ối ưu liên quan đến quy trình cài đặt, hãy kiểm tra 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 về các vấn đề phổ biến để tìm giải pháp và mẹo.
Link to this sectionCách sử dụng#
Trước khi đi sâu vào hướng dẫn sử dụng, hãy chắc chắn kiểm tra danh mục các model YOLO26 do Ultralytics cung cấp. Điều này sẽ giúp bạn chọn model phù hợp nhất cho 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 kiểm tra độ 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", int8=True, 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")Link to this sectionCác đối số xuất (Export Arguments)#
Khi xuất model YOLO26 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 nhu cầu triển khai cụ thể của bạn:
| Đố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 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 định lượng 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 các phần cứng được hỗ trợ. |
int8 | bool | False | Kích hoạt định lượng tĩnh INT8 với ONNX Runtime sử dụng các hình ảnh hiệu chuẩn từ data, tạo ra một model _int8.onnx. |
data | str | None | Tệp YAML của tập dữ liệu được sử dụng cho hiệu chuẩn INT8. Nếu bỏ qua với int8=True, Ultralytics sẽ chọn tập dữ liệu hiệu chuẩn 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 định lượng 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 thay đổi. |
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à khả năng tương thích. |
opset | int | None | Chỉ định phiên bản opset của ONNX để tương thích với các trình phân tích cú pháp và trình runtime ONNX khác nhau. Nếu không được đặt, 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 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 lô suy luận của model xuất hoặc số lượng hình ả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.
Link to this sectionTriển khai các model YOLO26 ONNX đã xuất#
Sau khi bạn đã 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 các môi trường khác nhau. Để biết hướng dẫn chi tiết về việc 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 của ONNX Runtime: Hướng dẫn này cung cấp thông tin cần thiết để tải và chạy các model ONNX bằng ONNX Runtime.
-
Triển khai trên thiết bị biên: Kiểm tra trang tài liệu này để xem các ví dụ khác nhau về triển khai model ONNX trên thiết bị biên.
-
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 gồm nhiều khía cạnh khác nhau của việc sử dụng và triển khai 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 triển khai hiệu năng cao và có khả năng mở rộng.
Link to this sectionTó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 nhiều nền tảng. 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 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 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 để đạ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 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 hữu ích và thông tin chi tiết ở đó.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionLà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 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 tài liệu về xuất model.
Link to this sectionƯu điểm của việc sử dụng ONNX Runtime để triển khai các model YOLO26 là gì?#
Việc 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, 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 đặc thù phần cứng cho CPU, GPU và các bộ tăng tốc chuyên dụng, mang lại hiệu suất suy luận cao.
- Khả năng tương tá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, biến nó thành lựa chọn lý tưởng cho các kịch bản triển khai nơi nguồn tài nguyên GPU bị hạn chế.
Tìm hiểu thêm bằng cách kiểm tra tài liệu ONNX Runtime.
Link to this sectionNhữ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 để suy luận CPU được tối ưu hóa.
- GPU: Tận dụng NVIDIA CUDA để tăng tốc GPU hiệu năng cao.
- Thiết bị biên: Chạy các model nhẹ trên các thiết bị biên và di động để suy luận thời gian thực trên 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 tương tác trên nền tảng web.
- 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ó thể 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.
Link to this sectionTại sao tôi nên sử dụng định dạng ONNX cho các model Ultralytics YOLO26?#
Việc 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 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, 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 trên 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 model YOLO26 sang ONNX.
Link to this sectionLàm thế nào để tôi có thể xử lý 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 sự cố thường gặp như xung đột dependency hoặc các toán tử không được hỗ trợ. Để khắc phục các vấn đề này:
- Xác minh rằng bạn đã cài đặt đúng phiên bản của các dependency 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 vấn đề phổ biến của Ultralytics.
- Thử sử dụng các đối số xuất khác 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.