Meet YOLO26: next-gen vision AI.

Link to this sectionXuấ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 thị giác máy tính, 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 dễ dàng chuyển đổi các model YOLO26 sang ONNX cũng như nâng cao khả năng mở rộng và tí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 🚀

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 việc tạo ra một định dạng tệp mở được thiết kế để biểu diễn các model học máy 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 học sâu đượ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.

ONNX model portability across deep learning frameworks

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 học máy, 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. 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.

ONNX Runtime cross-platform inference acceleration

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 học máy và tính tương thích.

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 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.

Link to this sectionCá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.

Link to this sectionTriể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.

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 đủ khả năng 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.

  • Thiết bị Edge và thiết bị di động: ONNX mở rộng ra các thiết bị edge và di động, 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ư Qualcomm QNN cho các thiết bị Snapdragon và RKNN cho các NPU của 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.

Link to this sectionXuất model YOLO26 sang ONNX#

Bạn có thể mở rộng khả năng tương thích và tính 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 đơ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.

Link to this sectionCài đặt#

Để cài đặt gói cần thiết, hãy chạy:

Cài đặt
# 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 kiểm tra Hướng dẫn cài đặt YOLO26 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 Hướng dẫn 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 đảm bảo xem qua các mô hình YOLO26 được cung cấp bởi Ultralytics. Điều này sẽ giúp bạn chọn mô hình 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, PredictValidate. 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ó.

Xuất (Export)
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'
Dự đoán (Predict)
from ultralytics import YOLO

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Xác thực
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 sectionĐố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ạiMặc địnhMô tả
formatstr'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.
imgszint hoặc tuple640Kí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ể.
quantizeint hoặc strNoneĐộ 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 model _int8.onnx); 32/không thiết lập là FP32. Thay thế các cờ half/int8 đã bị loại bỏ.
datastrNoneDataset YAML được sử dụng để hiệu chuẩn INT8. Nếu bỏ qua với quantize=8, Ultralytics sẽ chọn dataset hiệu chuẩn mặc định cho tác vụ của model.
fractionfloat1.0Tỷ lệ hình ảnh hiệu chuẩn được sử dụng cho lượng tử hóa INT8.
dynamicboolFalseCho 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.
simplifyboolTrueĐơn giản hóa biểu đồ model với onnxslim, có khả năng cải thiện hiệu suất và tính tương thích.
opsetintNoneChỉ đị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.
nmsboolFalseThê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ả.
batchint1Chỉ định kích thước batch inference của model khi xuất hoặc số lượng ảnh tối đa mà model đã xuất sẽ xử lý đồng thời ở chế độ predict.
devicestrNoneChỉ đị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 của Ultralytics về việc xuất.

Link to this sectionTriể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:

  • 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 cách sử dụng ONNX Runtime.

  • Triển khai trên các thiết bị Edge: 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 model ONNX trên edge.

  • Hướng dẫn ONNX trên GitHub: Một bộ sưu tập các bài 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 triển khai hiệu suất 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 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 định dạng xuất được Ultralytics YOLO26 hỗ trợ, cho phép bạn triển khai các model của mình trong hầu như bất kỳ môi trường nào. Tùy thuộc vào nhu cầu cụ thể của mình, bạn 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ị của 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 rất nhiều tài nguyên và thông tin hữu ích ở đó.

Link to this sectionCâu hỏi thường gặp#

Link to this sectionLà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:

Cách sử dụng
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.

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ì?#

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 đượ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 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 tài liệu ONNX Runtime.

Link to this sectionCá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ề 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?#

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ề việc xuất model YOLO26 sang ONNX.

Link to this sectionLà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:

  1. 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.
  2. Kiểm tra tài liệu ONNX chính thức để biết các toán tử và tính năng được hỗ trợ.
  3. 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.
  4. Thử sử dụng các đối số xuất khác như simplify=True hoặc điều chỉnh phiên bản opset.
  5. Đối với các vấn đề về kích thước đầu vào động, hãy thiết lập dynamic=True trong 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.

Bình luận