Sử dụng tích hợp ONNX để xuất các mô hình YOLO của Ultralytics

Abirami Vina

4 phút đọc

Ngày 2 tháng 5 năm 2025

Tìm hiểu cách xuất các mô hình Ultralytics YOLO, chẳng hạn như Ultralytics YOLO11, bằng cách sử dụng tích hợp ONNX để triển khai đa nền tảng trên nhiều phần cứng khác nhau.

Khi các giải pháp AI bắt đầu được chú ý, hầu hết các mô hình được triển khai trên các máy chủ mạnh mẽ trong môi trường được kiểm soát. Tuy nhiên, khi công nghệ phát triển, việc triển khai đã mở rộng ra xa hơn nhiều so với trung tâm dữ liệu.

Ngày nay, các mô hình AI chạy trên mọi thứ từ máy chủ đám mây và máy tính để bàn đến điện thoại thông minh và thiết bị biên. Sự thay đổi này hỗ trợ xử lý nhanh hơn, chức năng ngoại tuyến và các hệ thống thông minh hơn hoạt động gần hơn với nơi dữ liệu được tạo ra.

Một lĩnh vực mà điều này đặc biệt rõ ràng là thị giác máy tính - một nhánh của AI cho phép máy móc diễn giải dữ liệu trực quan. Nó đang được sử dụng để thúc đẩy các ứng dụng như nhận dạng khuôn mặt, lái xe tự động và phân tích video thời gian thực. Khi các trường hợp sử dụng này phát triển, nhu cầu về các mô hình có thể chạy trơn tru trên nhiều phần cứng và nền tảng khác nhau cũng tăng theo.

Nhưng việc triển khai các mô hình thị giác máy tính trên nhiều mục tiêu triển khai không phải lúc nào cũng đơn giản. Các thiết bị khác nhau về phần cứng, hệ điều hành và khuôn khổ được hỗ trợ, khiến tính linh hoạt và khả năng tương thích trở nên cần thiết.

Đó là lý do tại sao tùy chọn xuất các mô hình thị giác máy tính như Ultralytics YOLO11 sang các định dạng khác nhau là rất quan trọng. Ví dụ, tích hợp ONNX (Open Neural Network Exchange) được Ultralytics hỗ trợ cung cấp một cách thiết thực để thu hẹp khoảng cách giữa đào tạo và triển khai. ONNX là một định dạng mở giúp các mô hình không phụ thuộc vào khuôn khổ và sẵn sàng triển khai trên nhiều nền tảng.

Hình 1. ONNX giúp bạn sử dụng một mô hình được đào tạo trong một khuôn khổ và chạy nó trong một khuôn khổ khác một cách dễ dàng.

Trong bài viết này, chúng ta sẽ xem xét kỹ hơn về tích hợp ONNX được Ultralytics hỗ trợ và khám phá cách bạn có thể xuất mô hình YOLO11 của mình để triển khai linh hoạt trên nhiều nền tảng.

ONNX và ONNX Runtime là gì?

Open Neural Network Exchange là một dự án nguồn mở định nghĩa một định dạng chuẩn cho các mô hình học máy. Được phát triển ban đầu bởi Microsoft và Facebook, nó cho phép các nhà phát triển đào tạo một mô hình trong một khuôn khổ, như PyTorch, và chạy nó trong một khuôn khổ khác, như TensorFlow. Điều này làm cho quá trình phát triển AI linh hoạt hơn, có tính cộng tác và dễ tiếp cận hơn, đặc biệt là trong các lĩnh vực như thị giác máy tính.

ONNX cung cấp một bộ toán tử chung và một định dạng tệp thống nhất, giúp dễ dàng di chuyển các mô hình giữa các công cụ, khung, thời gian chạy và trình biên dịch khác nhau. Thông thường, một mô hình được đào tạo trong một khung không dễ tương thích với một khung khác - nhưng với ONNX, bạn có thể xuất mô hình của mình một lần và triển khai nó ở hầu hết mọi nơi: trên CPU (Bộ xử lý trung tâm), GPU (Bộ xử lý đồ họa) , thiết bị di động hoặc phần cứng biên.

Ngoài ra, ONNX Runtime là một công cụ suy luận hiệu suất cao được phát triển riêng để chạy các mô hình ở định dạng ONNX. Nó được thiết kế để giúp các mô hình ONNX chạy nhanh hơn và hiệu quả hơn trên nhiều nền tảng - bao gồm máy chủ, thiết bị di động và phần cứng biên. ONNX Runtime tương thích với các khuôn khổ phổ biến như PyTorch, TensorFlow, TensorFlow Lite và scikit-learn, giúp dễ dàng tích hợp vào các quy trình công việc khác nhau và triển khai các mô hình bất cứ nơi nào cần.

Hình 2. ONNX và ONNX Runtime cho phép triển khai mô hình đa nền tảng một cách linh hoạt.

Các tính năng chính của ONNX 

Trước khi thảo luận về cách xuất YOLO11 sang định dạng ONNX, chúng ta hãy xem qua một số tính năng chính của định dạng mô hình ONNX. 

Cho dù bạn đang chuyển đổi giữa các công cụ, triển khai sang các thiết bị khác nhau hay nâng cấp hệ thống, ONNX đều giúp mọi thứ hoạt động trơn tru. Sau đây là những điểm làm cho định dạng mô hình ONNX trở nên độc đáo:

  • Một định dạng chuẩn : ONNX sử dụng một cách chung để mô tả cách xây dựng mô hình, như các lớp và hoạt động (hãy nghĩ về chúng như các khối xây dựng). Khi một mô hình được chuyển đổi sang ONNX, nó tuân theo chuẩn này để bất kỳ hệ thống nào hỗ trợ ONNX đều có thể hiểu và chạy nó.
  • Khả năng tương thích ngược: Ngay cả khi ONNX tiếp tục cải thiện, nó vẫn đảm bảo rằng các mô hình cũ hơn vẫn hoạt động với các phiên bản mới hơn. Điều này có nghĩa là bạn không phải đào tạo lại hoặc xây dựng lại các mô hình của mình mỗi khi ONNX có bản cập nhật.
  • Thiết kế mô hình dựa trên đồ thị: Các mô hình ONNX được cấu trúc dưới dạng đồ thị tính toán, trong đó mỗi nút biểu diễn một phép toán (như lớp hoặc hàm toán học) và các cạnh biểu thị luồng dữ liệu. Thiết kế dựa trên đồ thị này tạo điều kiện tích hợp với nhiều hệ thống khác nhau sử dụng các cấu trúc đồ thị tính toán tương tự.
  • Các công cụ thân thiện với nhà phát triển: Đi kèm với nhiều công cụ giúp bạn chuyển đổi, xác thực và tối ưu hóa các mô hình của mình. Các công cụ này đơn giản hóa quá trình di chuyển các mô hình giữa các khuôn khổ khác nhau và có thể tăng tốc triển khai - đặc biệt là đối với các ứng dụng thị giác máy tính.

Tổng quan về tích hợp ONNX

Việc xuất các mô hình Ultralytics YOLO như Ultralytics YOLO11 ở định dạng ONNX rất đơn giản và có thể thực hiện chỉ trong vài bước. 

Để bắt đầu, hãy cài đặt gói Ultralytics Python bằng trình quản lý gói như 'pip'. Có thể thực hiện bằng cách chạy lệnh “pip install ultralytics ” trong dấu nhắc lệnh hoặc terminal để bắt đầu.

Với gói Ultralytics, bạn có thể dễ dàng đào tạo, kiểm tra, tinh chỉnh, xuất và triển khai các mô hình cho nhiều tác vụ thị giác máy tính khác nhau - giúp toàn bộ quá trình nhanh hơn và hiệu quả hơn. Trong khi cài đặt, nếu gặp bất kỳ khó khăn nào, bạn có thể tham khảo hướng dẫn Các vấn đề thường gặp để biết giải pháp và mẹo.

Sau khi cài đặt gói Ultralytics, bạn có thể tải và xuất mô hình YOLO11 sang định dạng ONNX bằng mã bên dưới. Ví dụ này tải mô hình YOLO11 đã được đào tạo trước (yolo11n.pt) và xuất dưới dạng tệp ONNX (yolo11n.onnx), giúp mô hình sẵn sàng triển khai trên nhiều nền tảng và thiết bị khác nhau.

Sau khi chuyển đổi mô hình sang định dạng ONNX, bạn có thể triển khai nó trên nhiều nền tảng khác nhau. 

Ví dụ bên dưới cho thấy cách tải mô hình YOLO11 đã xuất (yolo11n.onnx) và chạy suy luận với mô hình đó. Suy luận đơn giản có nghĩa là sử dụng mô hình đã được đào tạo để đưa ra dự đoán về dữ liệu mới. Trong trường hợp này, chúng ta sẽ sử dụng URL của hình ảnh xe buýt để kiểm tra mô hình.

Khi bạn chạy đoạn mã này, hình ảnh đầu ra sau sẽ được lưu trong thư mục runs/detect/predict.

Hình 3. Chạy suy luận bằng cách sử dụng mô hình YOLO11 đã xuất trên một hình ảnh.

Khi nào bạn nên chọn tích hợp ONNX?

Gói Ultralytics Python hỗ trợ xuất mô hình sang nhiều định dạng, bao gồm TorchScript, CoreML, TensorRT và ONNX. Vậy, tại sao nên chọn ONNX?

Điều làm cho ONNX nổi bật là định dạng này không phụ thuộc vào khuôn khổ. Trong khi nhiều định dạng xuất khác bị ràng buộc với các công cụ hoặc môi trường cụ thể, ONNX sử dụng định dạng chuẩn hóa và một bộ toán tử chung. Điều này làm cho nó có tính di động cao, thân thiện với phần cứng và lý tưởng để triển khai đa nền tảng - cho dù bạn đang làm việc với máy chủ đám mây, ứng dụng di động hay thiết bị biên. 

Sau đây là một số lý do tại sao tích hợp ONNX có thể là lựa chọn lý tưởng cho các dự án YOLO11 của bạn:

  • Triển khai di động: Sau khi xuất sang ONNX, mô hình YOLO11 của bạn có thể được triển khai trên nhiều nền tảng khác nhau mà không cần thay đổi mã hoặc đào tạo lại.
  • Hỗ trợ toàn ngành: ONNX được hỗ trợ bởi các công ty và khuôn khổ AI lớn, khiến nó trở thành định dạng đáng tin cậy và được chấp nhận rộng rãi. Nó đảm bảo khả năng tương thích lâu dài, giống như cách PDF hoạt động trên nhiều thiết bị.
  • Phát triển theo tương lai: Sử dụng ONNX giúp bảo vệ khoản đầu tư vào mô hình của bạn. Khi các công cụ phát triển, ONNX giúp các mô hình của bạn luôn phù hợp và có thể sử dụng được, ngay cả trong môi trường mới hoặc khác biệt.
  • Không có sự ràng buộc của nhà cung cấp: Một số công cụ ràng buộc bạn chỉ sử dụng hệ thống của họ, điều này có thể hạn chế những gì mô hình của bạn có thể làm. ONNX tránh điều đó bằng cách cho phép bạn chọn nền tảng phù hợp nhất với nhu cầu của mình mà không bị mắc kẹt với một thiết lập duy nhất.

Ứng dụng của YOLO11 và định dạng mô hình ONNX

Tiếp theo, chúng ta hãy khám phá một số ứng dụng thực tế mà YOLO11 có thể được triển khai với sự trợ giúp của tích hợp ONNX.

Theo dõi hàng tồn kho tại kho bằng YOLO11

Trong các nhà kho bận rộn, rất khó để theo dõi mọi sản phẩm và gói hàng mọi lúc. Hệ thống thị giác máy tính có thể giúp nhân viên tìm sản phẩm trên kệ và có được thông tin chi tiết như số lượng sản phẩm, loại, v.v. Các hệ thống như vậy có thể hỗ trợ doanh nghiệp tự động quản lý hàng tồn kho khổng lồ của mình và tiết kiệm rất nhiều thời gian cho nhân viên kho.

Cụ thể, trong các kho thông minh , các mô hình YOLO11 được xuất sang ONNX có thể được sử dụng để xác định và đếm các mặt hàng theo thời gian thực bằng camera và thiết bị biên. Mô hình được xuất có thể giúp quét các kệ hoặc pallet để phát hiện mức tồn kho, các mặt hàng bị thiếu hoặc các điểm trống. Vì việc xuất sang ONNX làm cho mô hình nhẹ và hiệu quả, nên nó có thể chạy trực tiếp trên các thiết bị biên nhỏ, chẳng hạn như camera thông minh, loại bỏ nhu cầu về máy chủ đắt tiền hoặc truy cập đám mây liên tục.

Hình 4. Ví dụ về việc sử dụng YOLO11 để phát hiện và đếm gói hàng.

Quản lý chất thải bệnh viện với YOLO11

Các bệnh viện trên khắp thế giới tạo ra một lượng lớn chất thải mỗi ngày, từ găng tay và ống tiêm đã qua sử dụng đến các thiết bị được sử dụng trong quá trình phẫu thuật (như các dụng cụ phẫu thuật dùng một lần hoặc bị ô nhiễm như kéo và dao mổ). Trên thực tế, nghiên cứu cho thấy các bệnh viện tạo ra khoảng 5 triệu tấn chất thải mỗi năm, tương đương với 29 pound chất thải trên một giường mỗi ngày. 

Phân loại rác thải đúng cách là điều cần thiết để đảm bảo vệ sinh, an toàn và tuân thủ các quy định. Với các mô hình YOLO11 được xuất dưới dạng ONNX, các bệnh viện có thể tự động hóa và giám sát việc xử lý rác thải theo thời gian thực.

Ví dụ, camera đặt gần thùng rác ở những khu vực như phòng phẫu thuật hoặc hành lang có thể theo dõi các vật dụng khi chúng bị vứt bỏ. Một mô hình YOLO11 tùy chỉnh, được đào tạo để nhận dạng các loại rác thải y tế khác nhau, có thể phân tích cảnh quay và xác định những gì đang bị vứt bỏ. Nếu một vật dụng rơi vào thùng rác không đúng, như ống tiêm đã qua sử dụng trong thùng rác thông thường, hệ thống có thể được thiết lập để cảnh báo ngay cho nhân viên bằng đèn hoặc âm thanh, giúp ngăn ngừa ô nhiễm và đảm bảo tuân thủ.

Hình 5. Sử dụng YOLO11 để phát hiện dụng cụ y tế.

Giám sát cây trồng được hỗ trợ bởi YOLO11

Biết thời điểm thu hoạch mùa màng thích hợp có thể có tác động lớn đến chất lượng sản phẩm và năng suất chung của trang trại. Theo truyền thống, nông dân dựa vào kinh nghiệm và kiểm tra thủ công - nhưng với những tiến bộ gần đây trong công nghệ, điều đó đang bắt đầu thay đổi.

Hiện nay, với những cải tiến về thị giác máy tính như YOLO11, được xuất dưới định dạng ONNX, nông dân có thể đưa tự động hóa và độ chính xác vào đồng ruộng. Bằng cách sử dụng máy bay không người lái hoặc máy ảnh gắn trên máy kéo hoặc cột, nông dân có thể chụp ảnh cây trồng của họ (như cà chua, táo hoặc lúa mì). Sau đó, YOLO11 có thể được sử dụng để phát hiện các chỉ số chính như màu sắc, kích thước và phân bố cây trồng . Dựa trên thông tin này, nông dân có thể xác định xem cây trồng đã sẵn sàng để thu hoạch, vẫn đang chín hay đã qua thời kỳ đỉnh cao.

Hình 6. YOLO11 có thể được sử dụng để phát hiện cây trồng trong cảnh quay bằng máy bay không người lái trên không. 

Những hạn chế của ONNX cần xem xét

Mặc dù ONNX mang lại nhiều lợi ích như tính di động, khả năng tương thích đa nền tảng và khả năng tương tác giữa các khung, nhưng vẫn có một số hạn chế cần lưu ý:​

  • Kích thước mô hình : Việc chuyển đổi mô hình sang định dạng ONNX đôi khi có thể dẫn đến kích thước tệp lớn hơn so với định dạng gốc của chúng. Các kỹ thuật như lượng tử hóa và cắt tỉa có thể giúp giảm thiểu vấn đề này bằng cách giảm kích thước mô hình mà không ảnh hưởng đáng kể đến hiệu suất.
  • Khả năng tương thích thời gian chạy: Mặc dù ONNX Runtime được thiết kế để tương thích đa nền tảng, hiệu suất và hỗ trợ có thể khác nhau giữa các phần cứng và hệ điều hành khác nhau. 
  • Thách thức gỡ lỗi: Gỡ lỗi các mô hình ONNX có thể phức tạp hơn so với các khuôn khổ gốc như PyTorch hoặc TensorFlow. Thông báo lỗi có thể ít mô tả hơn, khiến việc xác định vấn đề trở nên khó khăn hơn. Tuy nhiên, các công cụ như Netron để trực quan hóa mô hình và khả năng ghi nhật ký của ONNX Runtime có thể hỗ trợ khắc phục sự cố.

Những điểm chính

Xuất Ultralytics YOLO11 sang ONNX giúp bạn dễ dàng sử dụng mô hình thị giác máy tính đã được đào tạo và triển khai ở hầu hết mọi nơi - cho dù đó là trên máy tính xách tay, thiết bị di động hay thậm chí là máy ảnh thông minh nhỏ gọn. Với tích hợp ONNX, bạn không bị ràng buộc với một khuôn khổ hoặc nền tảng duy nhất, mang đến cho bạn sự linh hoạt để chạy mô hình của mình trong môi trường phù hợp nhất với ứng dụng của bạn. 

Điều này giúp quá trình chuyển đổi từ đào tạo sang triển khai thực tế nhanh hơn và hiệu quả hơn. Cho dù bạn đang theo dõi hàng tồn kho trong kho hay đảm bảo chất thải bệnh viện được xử lý đúng cách, thiết lập này giúp hệ thống chạy trơn tru hơn, giảm lỗi và tiết kiệm thời gian quý báu.

Bạn muốn tìm hiểu thêm về thị giác máy tính và AI? Khám phá kho lưu trữ GitHub của chúng tôi, kết nối với cộng đồng của chúng tôi và xem các tùy chọn cấp phép của chúng tôi để khởi động dự án thị giác máy tính của bạn. Nếu bạn đang khám phá những đổi mới như AI trong sản xuấtthị giác máy tính trong ngành công nghiệp ô tô , hãy truy cập các trang giải pháp của chúng tôi để khám phá thêm. 

Hãy cùng xây dựng tương lai
của AI cùng nhau!

Bắt đầu hành trình của bạn với tương lai của máy học

Bắt đầu miễn phí
Liên kết đã được sao chép vào clipboard