Xuất model TFLite để triển khai (Đã ngừng sử dụng)#
Kể từ Ultralytics 8.4.83, định dạng xuất độc lập tflite đã bị loại bỏ và thay thế bằng định dạng hợp nhất Google LiteRT. LiteRT (Lite Runtime) là thế hệ tiếp theo và tên mới của TensorFlow Lite, đồng thời xuất cùng model .tflite — hiện hỗ trợ triển khai trên thiết bị di động, hệ thống nhúng, thiết bị biên và trình duyệt bằng một định dạng duy nhất.
format="tflite" vẫn hoạt động nhưng phát cảnh báo ngừng sử dụng và xuất model LiteRT thay thế. Từ nay hãy dùng format="litert"; để xem hướng dẫn và tùy chọn xuất hiện tại, tham khảo hướng dẫn xuất LiteRT.
Việc triển khai các model thị giác máy tính trên thiết bị biên hoặc thiết bị nhúng đòi hỏi một định dạng có thể đảm bảo hiệu năng liền mạch.
Định dạng xuất TensorFlow Lite hoặc TFLite trước đây tối ưu hóa các model Ultralytics YOLO26 cho những tác vụ như phát hiện đối tượng và phân loại hình ảnh trong các ứng dụng biên. Hướng dẫn này giữ lại bối cảnh triển khai TFLite cũ; hãy dùng LiteRT cho các lần xuất mới.
Tại sao TFLite từng được dùng để xuất model?#
Được Google giới thiệu vào tháng 5 năm 2017 như một phần của framework TensorFlow, TensorFlow Lite, hay gọi tắt là TFLite, là một framework deep learning mã nguồn mở được thiết kế cho suy luận trên thiết bị, còn được gọi là điện toán biên. Framework này cung cấp cho developer các công cụ để chạy model đã huấn luyện trên thiết bị di động, thiết bị nhúng, thiết bị IoT cũng như máy tính thông thường.
TensorFlow Lite hỗ trợ nhiều nền tảng, bao gồm Linux nhúng, Android, iOS và vi điều khiển (MCU). Các bản xuất TFLite cho phép ứng dụng chạy model cục bộ và ngoại tuyến.
Các tính năng chính của model TFLite#
Model TFLite cung cấp nhiều tính năng chính giúp triển khai machine learning trên thiết bị, hỗ trợ developer chạy model trên thiết bị di động, thiết bị nhúng và thiết bị biên:
-
Tối ưu hóa trên thiết bị: TFLite tối ưu hóa cho ML trên thiết bị, giảm độ trễ bằng cách xử lý dữ liệu cục bộ, tăng cường quyền riêng tư bằng cách không truyền dữ liệu cá nhân và giảm kích thước model để tiết kiệm dung lượng.
-
Hỗ trợ nhiều nền tảng: TFLite có khả năng tương thích rộng với các nền tảng, hỗ trợ Android, iOS, Linux nhúng và vi điều khiển.
-
Hỗ trợ nhiều ngôn ngữ: TFLite tương thích với nhiều ngôn ngữ lập trình, bao gồm Java, Swift, Objective-C, C++ và Python.
-
Hiệu năng cao: Đạt hiệu năng vượt trội nhờ tăng tốc phần cứng và tối ưu hóa model.
Hiệu năng đo được (dữ liệu lịch sử)#
Các kết quả này được ghi nhận bằng plugin Flutter của Ultralytics 0.6.8 và LiteRT 2.1.5 trên Android 16/API 36 trên Xiaomi 17 với bộ nhớ LPDDR5X 12 GB. Bộ xử lý 3 nm Snapdragon 8 Elite Gen 5 (SM8850) có CPU Qualcomm Oryon 8 lõi (2 lõi Prime tối đa 4.6 GHz và 6 lõi Performance tối đa 3.62 GHz), GPU Adreno và NPU Hexagon. Các bảng này so sánh các asset TFLite INT8 cũ từ onnx2tf với các bản xuất litert-torch ứng viên được đánh giá trong quá trình chuyển đổi. Sau đó, các asset phát hành đã bị ghi đè bằng các bản xuất được chuẩn hóa, vì vậy những con số này không mô tả byte của asset v0.6.6 hiện tại. Xem các bảng hiệu năng LiteRT để biết số liệu đo hiện tại.
Cả hai định dạng đều chạy trong cùng một lượt kiểm tra GPU liên tiếp ở các kích thước đầu vào được nêu. Mỗi ô là tổng thời gian (tiền xử lý + suy luận + hậu xử lý), kèm phân rã theo từng giai đoạn bên dưới; log gốc xác nhận cả hai định dạng đều chuyển toàn bộ graph cho LiteRT OpenCL (LITERT_CL) chạy trên GPU Adreno.
| Model | Tác vụ | kích thước (pixel) | Cũ TFLite INT8 onnx2tf (ms) | Ứng viên LiteRT w8a32 (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Segment | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | Ngữ nghĩa | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | Phân loại | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | Tư thế | 640 | 17.4 2.4 / 9.9 / 5.1 | 14.0 1.9 / 9.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 13.9 3.0 / 8.3 / 2.7 | 13.0 2.9 / 7.9 / 2.3 |
Trong cùng đợt chuyển đổi, các định dạng lượng tử hóa của YOLO26n detect cũng được so sánh. Suy luận là chỉ số có thể so sánh và phụ thuộc vào định dạng:
| Định dạng Android | Thời gian suy luận GPU (ms) | Biên dịch GPU |
|---|---|---|
| onnx2tf INT8 (TFLite cũ) | 8.6 | có |
| LiteRT w8a32 (ứng viên) | 8.4 | có |
LiteRT INT8 (quantize=8) | 11.0 | có |
| LiteRT FP32 | 8.8 | có |
LiteRT w8a16 (quantize="w8a16") | CPU dự phòng | không |
Trong lần chạy này, w8a16 chuyển về CPU, mất khoảng 660 ms tổng cộng so với khoảng 17 ms của các định dạng GPU. Những kết quả này là cơ sở để phát hành w8a32, nhưng khả năng tương thích và hiệu năng của delegate phụ thuộc vào thiết bị và phiên bản runtime. Hãy benchmark thiết bị mục tiêu và xác nhận vị trí chạy accelerator trong log runtime.
Các tùy chọn triển khai TFLite#
Trước khi xem ví dụ xuất thay thế bằng LiteRT, hãy tìm hiểu cách sử dụng model TFLite thông thường.
TFLite cung cấp nhiều tùy chọn triển khai model machine learning trên thiết bị, bao gồm:
- Triển khai trên Android và iOS: Ứng dụng Android và iOS dùng TFLite đều có thể phân tích luồng camera và dữ liệu cảm biến trên thiết bị biên để phát hiện và nhận diện đối tượng. TFLite cũng cung cấp các thư viện iOS gốc được viết bằng Swift và Objective-C. Sơ đồ kiến trúc bên dưới minh họa quy trình triển khai model đã huấn luyện trên nền tảng Android và iOS bằng TensorFlow Lite.
-
Triển khai trên Linux nhúng: Nếu chạy suy luận trên Raspberry Pi theo hướng dẫn của Ultralytics không đáp ứng yêu cầu tốc độ của trường hợp sử dụng, bạn có thể dùng model TFLite đã xuất để tăng tốc suy luận. Ngoài ra, có thể cải thiện hiệu năng hơn nữa bằng cách sử dụng thiết bị Coral Edge TPU.
-
Triển khai trên vi điều khiển: Model TFLite cũng có thể được triển khai trên vi điều khiển và các thiết bị khác chỉ có vài kilobyte bộ nhớ. Runtime cốt lõi chỉ chiếm 16 KB trên Arm Cortex M3 và có thể chạy nhiều model cơ bản. Runtime không yêu cầu hệ điều hành, thư viện C hoặc C++ tiêu chuẩn hay cấp phát bộ nhớ động.
Thay thế xuất TFLite bằng LiteRT#
Với các lần xuất mới, hãy chuyển đổi model sang LiteRT. Model tạo ra vẫn giữ phần mở rộng tệp .tflite.
Cài đặt#
Để cài đặt các package 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ốt nhất về quy trình cài đặt, hãy xem hướng dẫn cài đặt Ultralytics. Nếu gặp khó khăn khi cài đặt các package cần thiết cho YOLO26, hãy tham khảo hướng dẫn khắc phục sự cố thường gặp để tìm giải pháp và mẹo hữu ích.
Cách sử dụng#
Tất cả model Ultralytics YOLO26 đều được thiết kế để hỗ trợ xuất ngay từ đầu, giúp bạn dễ dàng tích hợp chúng vào quy trình triển khai mong muốn. Bạn có thể xem danh sách đầy đủ các định dạng xuất được hỗ trợ và tùy chọn cấu hình để chọn thiết lập phù hợp nhất cho ứng dụng.
Định dạng LiteRT thay thế hỗ trợ các chế độ Export, Predict và Validate. Hãy xuất model, sau đó tải model .tflite đã xuất để chạy suy luận hoặc xác thực độ chính xác.
from ultralytics import YOLO
# Nạp model YOLO26
model = YOLO("yolo26n.pt")
# Xuất model sang định dạng LiteRT
model.export(format="litert", imgsz=640) # dùng imgsz=224 cho phân loạifrom ultralytics import YOLO
# Tải model TFLite đã xuất
model = YOLO("yolo26n.tflite")
# Chạy suy luận
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Tải model TFLite đã xuất
model = YOLO("yolo26n.tflite")
# # Đánh giá độ chính xác trên bộ dữ liệu COCO8
metrics = model.val(data="coco8.yaml")Các tham số xuất model#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'litert' | Định dạng đích của model đã xuất, xác định khả năng tương thích với nhiều môi trường triển khai. |
imgsz | int hoặc tuple | 640 | Kích thước ảnh mong muốn cho đầu vào model. Có thể là số nguyên cho ảnh vuông hoặc tuple (height, width) để chỉ định kích thước cụ thể. |
quantize | int hoặc str | None | Độ chính xác lượng tử hóa: 8 (INT8 tĩnh, trọng số int8 + activation int8; cần dữ liệu hiệu chuẩn data/fraction), 'w8a16' (tĩnh, trọng số int8 + activation int16; cần dữ liệu hiệu chuẩn data/fraction), 'w8a32' (INT8 động, trọng số int8 + activation FP32; không cần hiệu chuẩn) hoặc 32/không đặt (FP32). FP16 không được xuất riêng — model FP32 tự động chạy ở FP16 trên GPU delegate. Thay thế các flag half/int8 không còn được dùng. |
batch | int | 1 | Chỉ định kích thước batch suy luận của model khi xuất hoặc số lượng ảnh tối đa mà model đã xuất xử lý đồng thời ở chế độ predict. |
data | str | None | Đường dẫn đến YAML của dataset, cần thiết cho lượng tử hóa; riêng bài toán phân loại sẽ dùng thư mục dataset hoặc tên dataset tích hợp sẵn. Nếu không chỉ định cùng quantize=8 hoặc 'w8a16', Ultralytics sẽ chọn dataset hiệu chuẩn mặc định cho tác vụ của model. |
fraction | float, int hoặc list | 1.0 | Tập con hiệu chuẩn dưới dạng tỷ lệ, số lượng ảnh hoặc tỷ lệ/số lượng [train, val, test]. Danh sách gồm hai mục giữ test ở dạng đầy đủ, còn 0 sẽ bỏ qua mục này. |
device | str | None | Chỉ định thiết bị dùng để export: 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 model YOLO26 TFLite đã xuất#
Sau khi xuất model Ultralytics YOLO26 sang định dạng LiteRT, bạn có thể triển khai model .tflite được tạo ra. Bước đầu tiên được khuyến nghị để chạy model TFLite là sử dụng phương thức YOLO("model.tflite"), như đã nêu trong đoạn mã sử dụng trước đó. Tuy nhiên, để xem hướng dẫn chuyên sâu về triển khai model TFLite trong nhiều môi trường khác, hãy tham khảo các tài nguyên sau:
-
Android: Hướng dẫn bắt đầu nhanh để tích hợp TensorFlow Lite vào ứng dụng Android, cung cấp các bước dễ làm theo để thiết lập và chạy model machine learning.
-
iOS: Tham khảo hướng dẫn chi tiết dành cho developer về tích hợp và triển khai model TensorFlow Lite trong ứng dụng iOS, với hướng dẫn từng bước và các tài nguyên liên quan.
-
Ví dụ đầu-cuối: Trang này tổng quan các ví dụ TensorFlow Lite khác nhau, giới thiệu ứng dụng thực tế và hướng dẫn giúp developer triển khai TensorFlow Lite trong các dự án machine learning trên thiết bị di động và thiết bị biên.
Tóm tắt#
Hướng dẫn này giữ lại quy trình triển khai TFLite cũ. Với các lần xuất mới, hãy dùng LiteRT để tạo model .tflite cho môi trường điện toán biên.
Để 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 TFLite.
Ngoài ra, nếu muốn tìm hiểu các tích hợp Ultralytics YOLO26 khác, hãy xem trang hướng dẫn tích hợp của chúng tôi. Tại đó có nhiều thông tin và nội dung hữu ích.
Câu hỏi thường gặp#
Với lần xuất mới, hãy dùng định dạng LiteRT. Trước tiên, cài đặt package cần thiết bằng lệnh:
pip install ultralyticsSau đó, dùng đoạn mã sau để xuất model:
from ultralytics import YOLO # Nạp model YOLO26 model = YOLO("yolo26n.pt") # Xuất model sang định dạng LiteRT model.export(format="litert", imgsz=640) # dùng imgsz=224 cho phân loạiNgười dùng CLI có thể thực hiện việc này bằng lệnh:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationĐể biết thêm chi tiết, hãy truy cập hướng dẫn xuất model của Ultralytics.
TensorFlow Lite (TFLite) là một framework deep learning mã nguồn mở được thiết kế cho suy luận trên thiết bị, phù hợp để triển khai model YOLO26 trên thiết bị di động, thiết bị nhúng và thiết bị IoT. Các lợi ích chính gồm:
- Tối ưu hóa trên thiết bị: Giảm độ trễ và tăng cường quyền riêng tư bằng cách xử lý dữ liệu cục bộ.
- Khả năng tương thích nền tảng: Hỗ trợ Android, iOS, Linux nhúng và MCU.
- Hiệu năng: Tận dụng tăng tốc phần cứng để tối ưu tốc độ và hiệu quả của model.
Để tìm hiểu thêm, hãy xem hướng dẫn TFLite.
Có, bạn có thể chạy model YOLO26 TFLite trên Raspberry Pi để tăng tốc độ suy luận. Trước tiên, hãy xuất model sang định dạng LiteRT như đã giải thích ở trên. Sau đó, dùng công cụ như TensorFlow Lite Interpreter để chạy model trên Raspberry Pi.
Để tối ưu hóa thêm, bạn có thể cân nhắc sử dụng Coral Edge TPU. Để biết các bước chi tiết, hãy tham khảo hướng dẫn triển khai Raspberry Pi và hướng dẫn tích hợp Edge TPU.
TFLite hỗ trợ triển khai trên vi điều khiển có tài nguyên hạn chế: runtime cốt lõi chỉ cần 16 KB bộ nhớ trên Arm Cortex M3 và có thể chạy nhiều model cơ bản. Tuy nhiên, model YOLO26 thường quá lớn so với dung lượng bộ nhớ của vi điều khiển thông thường, vì vậy máy tính bo mạch đơn, thiết bị di động hoặc accelerator chuyên dụng là các mục tiêu phù hợp hơn cho YOLO26.
Để bắt đầu, hãy truy cập hướng dẫn TFLite Micro dành cho vi điều khiển.
TensorFlow Lite có khả năng tương thích rộng với nền tảng, cho phép triển khai model YOLO26 trên nhiều loại thiết bị, bao gồm:
- Android và iOS: Hỗ trợ gốc thông qua các thư viện TFLite dành cho Android và iOS.
- Linux nhúng: Phù hợp với các máy tính bo mạch đơn như Raspberry Pi.
- Vi điều khiển: Phù hợp với MCU có tài nguyên hạn chế.
Để biết thêm thông tin về các tùy chọn triển khai, hãy xem hướng dẫn triển khai chi tiết của chúng tôi.
Nếu gặp lỗi khi xuất model YOLO26 sang LiteRT, bạn có thể áp dụng các giải pháp phổ biến sau:
- Kiểm tra khả năng tương thích của package: Đảm bảo bạn đang dùng các phiên bản tương thích của Ultralytics,
litert-torchvàai-edge-litert. Tham khảo hướng dẫn cài đặt của chúng tôi. - Hỗ trợ model: Xác minh model YOLO26 cụ thể có hỗ trợ xuất sang LiteRT hay không bằng cách xem trang tài liệu xuất của Ultralytics.
- Sự cố lượng tử hóa: Khi sử dụng lượng tử hóa INT8, hãy đảm bảo đường dẫn dataset được chỉ định chính xác trong tham số
data.
Để biết thêm mẹo khắc phục sự cố, hãy truy cập hướng dẫn Các sự cố thường gặp của chúng tôi.
- Kiểm tra khả năng tương thích của package: Đảm bảo bạn đang dùng các phiên bản tương thích của Ultralytics,