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ị gỡ bỏ và được thay thế bằng định dạng hợp nhất Google LiteRT. LiteRT (Lite Runtime) là thế hệ tiếp theo và là tên mới của TensorFlow Lite, đồng thời xuất cùng một model .tflite — hiện hỗ trợ triển khai trên thiết bị di động, thiết bị nhúng, thiết bị edge và trình duyệt trong 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à thay vào đó xuất model LiteRT. Từ nay hãy sử dụng format="litert"; để xem hướng dẫn và các tùy chọn xuất hiện tại, hãy 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ị edge hoặc thiết bị nhúng yêu cầu 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 các model Ultralytics YOLO26 cho những tác vụ như phát hiện đối tượng và phân loại ảnh trong các ứng dụng edge. Hướng dẫn này giữ lại bối cảnh triển khai TFLite cũ; hãy sử dụng LiteRT cho các lần xuất mới.
Tại sao TFLite được sử 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, 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 edge. Framework này cung cấp cho developer các công cụ để thực thi model đã huấn luyện trên thiết bị di động, thiết bị nhúng và thiết bị IoT, cũng như máy tính truyền thống.
TensorFlow Lite hỗ trợ nhiều nền tảng, bao gồm Linux nhúng, Android, iOS và các bộ vi điều khiển (MCUs). Việc 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 hỗ trợ machine learning trên thiết bị, giúp developer chạy model trên thiết bị di động, thiết bị nhúng và thiết bị edge:
-
Tối ưu hóa trên thiết bị: TFLite được tối ưu 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 nền tảng rộng, hỗ trợ Android, iOS, Linux nhúng và các bộ vi điều khiển.
-
Hỗ trợ đa dạng 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 (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. Snapdragon 8 Elite Gen 5 3 nm
(SM8850) có CPU Qualcomm Oryon 8 lõi (2 lõi Prime lên đến 4,6 GHz và 6 lõi Performance lên đến 3,62 GHz),
GPU Adreno và NPU Hexagon. Các bảng này so sánh những asset TFLite INT8 cũ được tạo bằng onnx2tf với các bản xuất
litert-torch thử nghiệm được đánh giá trong quá trình di chuyển. Các asset phát hành sau đó đã được ghi đè bằng các bản xuất
được chuẩn hóa, vì vậy các con số này không mô tả các byte asset v0.6.6 hiện tại. Xem
các bảng hiệu năng LiteRT để biết số đo hiện tại.
Cả hai định dạng đều chạy trong cùng một phép đo GPU liên tiếp với 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 phân tách theo từng giai đoạn bên dưới; log native xác nhận rằng cả hai
định dạng đều chuyển toàn bộ graph cho LiteRT OpenCL (LITERT_CL) trên GPU Adreno.
| Model | Task | kích thước (pixel) | Cũ onnx2tf INT8 TFLite (ms) | Thử nghiệm w8a32 LiteRT (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 | Semantic | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | Classify | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | Pose | 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 |
Cùng một lần chạy di chuyển cũng so sánh các định dạng lượng tử hóa của YOLO26n detect. Suy luận là chỉ số có thể so sánh và phụ thuộc vào định dạng:
| Định dạng Android | Suy luận GPU (ms) | Biên dịch GPU |
|---|---|---|
| onnx2tf INT8 (TFLite cũ) | 8.6 | có |
| LiteRT w8a32 (thử nghiệm) | 8.4 | có |
LiteRT INT8 (quantize=8) | 11.0 | có |
| LiteRT FP32 | 8.8 | có |
LiteRT w8a16 (quantize="w8a16") | Dự phòng CPU | không |
Trong lần chạy này, w8a16 chuyển sang CPU dự phòng với tổng thời gian khoảng 660 ms, so với khoảng 17 ms đối với các định dạng GPU. Các 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 trên thiết bị mục tiêu và xác nhận vị trí của accelerator trong log runtime.
Các tùy chọn triển khai trong TFLite#
Trước khi xem ví dụ xuất thay thế bằng LiteRT, hãy tìm hiểu cách model TFLite thường được sử dụ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 với Android và iOS: Cả ứng dụng Android và iOS sử dụng TFLite đều có thể phân tích luồng camera và cảm biến trên edge để phát hiện và nhận dạng đối tượng. TFLite cũng cung cấp các thư viện iOS native đượ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 lên nền tảng Android và iOS bằng TensorFlow Lite.
-
Triển khai với Linux nhúng: Nếu chạy suy luận trên Raspberry Pi bằng Hướng dẫn Ultralytics không đáp ứng yêu cầu tốc độ cho trường hợp sử dụng của bạn, bạn có thể sử dụng model TFLite đã xuất để tăng tốc thời gian 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 với bộ vi điều khiển: Model TFLite cũng có thể được triển khai trên bộ 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ỉ cần 16 KB trên Arm Cortex M3 và có thể chạy nhiều model cơ bản. Runtime này không yêu cầu hỗ trợ hệ điều hành, bất kỳ thư viện C hoặc C++ tiêu chuẩn nào hay cấp phát bộ nhớ động.
Thay thế bản xuất TFLite bằng LiteRT#
Đối với các lần xuất mới, hãy chuyển đổi model sang LiteRT. Model kết quả vẫn giữ phần mở rộng tệp .tflite.
Cài đặt#
Để cài đặt các package bắt buộc, hãy chạy:
# Install the required package for YOLO26
pip install ultralyticsĐể xem hướng dẫn chi tiết và các best practice liên quan đến quy trình cài đặt, hãy tham khảo 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 xem hướng dẫn Các vấn đề Thường gặp để tìm giải pháp và mẹo xử lý.
Cách sử dụng#
Tất cả model Ultralytics YOLO26 đều được thiết kế để hỗ trợ xuất ngay khi cài đặt, giúp dễ dàng tích hợp vào quy trình triển khai mà bạn lựa chọn. Bạn có thể xem danh sách đầy đủ các định dạng xuất và tùy chọn cấu hình được hỗ trợ để chọn thiết lập phù hợp nhất cho ứng dụng của mình.
Định dạng LiteRT thay thế hỗ trợ các mode Export, Predict và Validate. Hãy xuất model, sau đó nạp model .tflite đã xuất để chạy suy luận hoặc xác thực độ chính xác.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert", imgsz=640) # use imgsz=224 for classificationfrom ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Đối số Export#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'litert' | Định dạng đích của model đã export, 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 input của model. Có thể là một số nguyên đối với ảnh vuông hoặc một tuple (height, width) cho các 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 calibration data/fraction), 'w8a16' (tĩnh, trọng số int8 + activation int16; cần calibration data/fraction), 'w8a32' (INT8 động, trọng số int8 + activation FP32; không cần calibration) hoặc 32/không đặt (FP32). FP16 không được xuất riêng — model FP32 sẽ tự động chạy ở FP16 trên các GPU delegate. Thay thế các flag half/int8 đã ngừng sử dụng. |
batch | int | 1 | Chỉ định batch inference size của model export hoặc số image tối đa mà model đã export sẽ xử lý đồng thời trong mode predict. |
data | str | None | Đường dẫn đến YAML của dataset, bắt buộc cho quá trình lượng tử hóa; với bài toán classification, thay vào đó cần cung cấp thư mục dataset hoặc tên dataset tích hợp sẵn. Nếu bỏ qua cùng với quantize=8 hoặc 'w8a16', Ultralytics sẽ chọn dataset calibration 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 các tỷ lệ/số lượng [train, val, test]. Với danh sách gồm hai mục, test để trống, còn 0 sẽ bỏ qua mục này. |
device | str | None | Chỉ định thiết bị dùng để xuất: CPU (device=cpu), MPS cho Apple silicon (device=mps). |
Để biết thêm chi tiết về quy trình export, hãy truy cập trang tài liệu Ultralytics về export.
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 thu được. Bước đầu tiên và đượ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 code 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 về cách tích hợp TensorFlow Lite vào ứng dụng Android, cung cấp các bước dễ thực hiện để 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ề cách 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 cung cấp tổng quan về nhiều ví dụ TensorFlow Lite, minh họa các ứng dụng thực tế và tutorial giúp developer triển khai TensorFlow Lite trong các dự án machine learning trên thiết bị di động và edge.
Tóm tắt#
Hướng dẫn này giữ lại workflow triển khai TFLite cũ. Đối với các lần xuất mới, hãy sử dụng LiteRT để tạo model .tflite cho môi trường điện toán edge.
Để 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 bạn quan tâm đến 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. Bạn sẽ tìm thấy nhiều thông tin và nội dung hữu ích tại đó.
FAQ#
Đối với bản xuất mới, hãy sử dụng định dạng LiteRT. Trước tiên, cài đặt package bắt buộc bằng lệnh:
pip install ultralyticsSau đó, sử dụng đoạn code sau để xuất model:
from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export the model to LiteRT format model.export(format="litert", imgsz=640) # use imgsz=224 for classificationNgườ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 export của Ultralytics.
TensorFlow Lite (TFLite) là framework deep learning mã nguồn mở được thiết kế cho suy luận trên thiết bị, rất 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 bao 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: Sử 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 để cải thiện 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 đó, sử dụng một công cụ như TensorFlow Lite Interpreter để thực thi 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. Để xem 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.
Có, TFLite hỗ trợ triển khai trên các bộ vi điều khiển có tài nguyên hạn chế. Runtime cốt lõi của TFLite chỉ cần 16 KB bộ nhớ trên Arm Cortex M3 và có thể chạy các model YOLO26 cơ bản. Điều này khiến TFLite phù hợp để triển khai trên các thiết bị có năng lực tính toán và bộ nhớ tối thiểu.
Để bắt đầu, hãy truy cập hướng dẫn TFLite Micro cho bộ vi điều khiển.
TensorFlow Lite cung cấp khả năng tương thích nền tảng rộng, cho phép bạn triển khai model YOLO26 trên nhiều loại thiết bị, bao gồm:
- Android và iOS: Hỗ trợ native thông qua các thư viện TFLite dành cho Android và iOS.
- Linux nhúng: Lý tưởng cho các máy tính bo mạch đơn như Raspberry Pi.
- Bộ vi điều khiển: Phù hợp với các 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, các giải pháp thường dùng bao gồm:
- Kiểm tra khả năng tương thích của package: Đảm bảo bạn đang sử dụng các phiên bản tương thích của Ultralytics,
litert-torchvàai-edge-litert. Hãy 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 kiểm tra trang tài liệu export của Ultralytics.
- Vấn đề về 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.
Để xem thêm các mẹo khắc phục sự cố, hãy truy cập hướng dẫn Các vấn đề 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 sử dụng các phiên bản tương thích của Ultralytics,