Bảo mật sẵn sàng cho doanh nghiệp: Tuân thủ ISO 27001 + SOC 2 Type I.

Link to this sectionXuất mô hình TFLite để triển khai (Đã ngừng hỗ trợ)#

Đã lỗi thời — được thay thế bằng LiteRT

Kể từ Ultralytics 8.4.83, định dạng xuất tflite độc lập đã bị xóa bỏ và thay thế bằng định dạng Google LiteRT hợp nhất. LiteRT (Lite Runtime) là thế hệ tiếp theo và là tên gọi mới của TensorFlow Lite, đồng thời nó xuất ra cùng một model .tflite — giờ đây bao quát việc triển khai trên thiết bị di động, nhúng, biên và trình duyệt trong một định dạng duy nhất.

format="tflite" vẫn hoạt động nhưng sẽ đưa ra cảnh báo lỗi thời và thay vào đó xuất ra model LiteRT. Hãy sử dụng format="litert" kể từ bây giờ; để biết hướng dẫn và tùy chọn xuất hiện tại, hãy xem hướng dẫn xuất LiteRT.

TensorFlow Lite edge deployment framework

Việc triển khai các model computer vision trên thiết bị biên 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 hay TFLite trước đây đã tối ưu hóa các mô hình Ultralytics YOLO26 cho các tác vụ như phát hiện đối tượngphân loại hình ảnh trong các ứng dụng biên (edge applications). Hướng dẫn này lưu trữ ngữ cảnh triển khai TFLite cũ; hãy sử dụng LiteRT cho các bản xuất mới.

Link to this sectionTại sao TFLite lại được sử dụng để xuất mô hình?#

Đượ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 viết 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ị (on-device inference), còn được gọi là edge computing. Nó cung cấp cho các nhà phát triển công cụ để thực thi các mô hình đã huấn luyện trên các thiết bị di động, nhúng, IoT, cũng như các 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à vi điều khiển (MCU). Các bản xuất TFLite cho phép các ứng dụng chạy mô hình cục bộ và ngoại tuyến.

Link to this sectionCác Tính năng Chính của Model TFLite#

Model TFLite cung cấp một loạt các tính năng chính cho phép machine learning trên thiết bị bằng cách hỗ trợ nhà phát triển 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ị (On-device Optimization): 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 thiểu kích thước model để tiết kiệm không gian.

  • Hỗ trợ Đa nền tảng: TFLite cung cấp khả năng tương thích nền tảng sâu rộng, hỗ trợ Android, iOS, Linux nhúng và vi điều khiển.

  • Hỗ trợ Ngôn ngữ Đa dạ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 được hiệu năng vượt trội thông qua tăng tốc phần cứng và tối ưu hóa model.

Link to this sectionHiệu suất đo lường (lịch sử)#

Tham chiếu trước/sau cho việc chuyển đổi định dạng

Các số liệu TFLite này được lưu giữ như một bản ghi lịch sử trước/sau cho quá trình chuyển đổi onnx2tf-TFLite → LiteRT: bản xuất INT8 TFLite legacy onnx2tf bên dưới so với bản xuất LiteRT w8a32 mới (xem bảng Hiệu suất đo lường của LiteRT). Chúng được chia sẻ với nhóm Google LiteRT để chỉ ra nơi định dạng litert-torch mới vẫn còn chậm hơn so với định dạng mà nó thay thế — xem Các vấn đề hồi quy định dạng bên dưới.

So sánh trước/sau theo tác vụ trên GPU Adreno của thiết bị Xiaomi 17 (Qualcomm Snapdragon 8 Elite Gen 5, SM8850), được đo lường thông qua Ultralytics Flutter plugin 0.6.8: các tài nguyên INT8 TFLite kế thừa từ onnx2tf (NHWC, input images) so với các tài nguyên w8a32 LiteRT mới (NCHW, input args_0), cả hai đều chạy trên LiteRT 2.x trong cùng một chuỗi quét liên tục ở imgsz của phiên bản Android được xuất xưởng. Mỗi ô hiển thị tổng thời gian (tiền xử lý + suy luận + hậu xử lý) với mức phân tách từng giai đoạn bên dưới; cả hai định dạng đều được biên dịch hoàn toàn trên GPU.

Mô hìnhTác vụkích thước
(pixel)
Trước
onnx2tf INT8 TFLite
(ms)
Sau
w8a32 LiteRT
(ms)
YOLO26nDetect64014.0
1.8 / 8.1 / 4.2
13.5
1.9 / 8.1 / 3.5
YOLO26n-segSegment64030.1
1.9 / 20.3 / 8.0
28.6
1.8 / 20.1 / 6.7
YOLO26n-semNgữ nghĩa64026.4
1.9 / 16.4 / 8.1
32.9
1.8 / 23.0 / 8.2
YOLO26n-clsClassify2243.5
0.9 / 2.2 / 0.4
3.2
1.0 / 2.2 / 0.1
YOLO26n-posePose64017.4
2.4 / 9.9 / 5.1
14.0
1.9 / 9.3 / 2.8
YOLO26n-obbOBB64013.9
3.0 / 8.3 / 2.7
13.0
2.9 / 7.9 / 2.3

w8a32 LiteRT đạt hiệu suất tương đương hoặc vượt trội hơn định dạng INT8 kế thừa từ onnx2tf ở năm trên sáu tác vụ về độ trễ tổng thể. Semantic vẫn là điểm suy giảm định dạng vì các logit NCHW của w8a32 tiêu tốn nhiều thời gian suy luận hơn các logit NHWC kế thừa, ngay cả sau khi làm sạch tiền xử lý. Các mô hình onnx2tf kế thừa vẫn chạy bình thường trên LiteRT 2.x cùng với các tệp xuất NCHW mới. Các tài nguyên LiteRT chính thức cho Android được lưu trữ tại bản phát hành yolo-flutter-app v0.6.6, với hồ sơ kiểm chuẩn chi tiết trong tài liệu hiệu suất Flutter.

Link to this sectionHồi quy định dạng so với LiteRT#

Phát hiện YOLO26n trên cùng một thiết bị Adreno GPU của Xiaomi 17 — định dạng TFLite INT8 kế thừa từ onnx2tf so với bốn định dạng lượng tử hóa LiteRT, tất cả được đo lường trong một lần chạy liên tục (do đó suy luận là chỉ số có thể so sánh được và phụ thuộc vào định dạng):

Định dạng AndroidSuy luận GPU (ms)Biên dịch GPU
onnx2tf INT8 (TFLite legacy)8.6
LiteRT w8a32 (chính thức mới)8.4
LiteRT INT8 (quantize=8)11.0
LiteRT FP328.8
LiteRT w8a16 (quantize="w8a16")(CPU fallback)không — lỗi

Các vấn đề dành cho nhóm Google LiteRT / litert-torch, phát sinh khi chuyển đổi các asset Android sản xuất từ onnx2tf TFLite sang LiteRT:

  1. Cấu trúc NCHW giúp các thành phần tiêu dùng nhận biết được bố cục. litert-torch theo dấu mô hình PyTorch và xuất ra NCHW [1,3,H,W] với input float, trong khi bản xuất TFLite từ onnx2tf là NHWC [1,H,W,3] — khớp với bố cục camera/bitmap. Plugin Flutter hiện tại ghi trực tiếp dữ liệu phẳng CHW trong quá trình đóng gói RGB, tránh việc phải chuyển vị HWC→CHW riêng biệt, nhưng các thành phần tiêu dùng đơn giản hơn vẫn cần đóng gói phẳng trực tiếp hoặc thực hiện thêm một bước chuyển vị.
  2. quantize="w8a16" không biên dịch được trên delegate GPU (OpenCL) và âm thầm fallback về đường dẫn CPU, chậm hơn khoảng 40 lần (khoảng 660 ms so với khoảng 17 ms), khiến định dạng int16-activation không thể sử dụng cho việc triển khai trên GPU.
  3. Static INT8 (quantize=8) là định dạng GPU chậm nhất — khoảng 11 ms so với khoảng 8.6 ms cho model INT8 onnx2tf legacy tương đương, tức là đường dẫn INT8 của chính LiteRT bị hồi quy so với định dạng mà nó thay thế. w8a32 dải động là định dạng LiteRT duy nhất khớp với tốc độ của INT8 cũ, đó là lý do tại sao nó hiện được sử dụng.
  4. Các model semantic xuất dưới dạng logit NCHW thô mà không có tùy chọn ArgMax trong đồ thị, buộc phải thực hiện argmax phía máy chủ kém hiệu quả với cache trên [1, C, H, W] (mỗi lớp phân loại cách nhau một khoảng H×W đầy đủ). Các đường dẫn onnx2tf, CoreML và QNN có thể xuất ra một bản đồ phân loại nhỏ gọn thay thế.
  5. Các output tensor đã được đổi tên thành output_0, output_1, … (so với Identity, Identity_1, … của onnx2tf), điều này âm thầm phá vỡ việc tra cứu shape đầu ra trong runtime cho đến khi consumer thêm các tên mới.

Các con số tương ứng của LiteRT w8a32 (định dạng hiện được sử dụng) nằm trên trang LiteRT.

Link to this sectionCác Tùy chọn Triển khai trong TFLite#

Trước khi xem xét ví dụ về bản xuất thay thế bằng LiteRT, hãy cùng tìm hiểu cách các mô hình TFLite thường được sử dụng.

TFLite cung cấp nhiều tùy chọn triển khai trên thiết bị cho các model machine learning, bao gồm:

  • Triển khai với Android và iOS: Cả ứng dụng Android và iOS với TFLite đều có thể phân tích các luồng camera và cảm biến tại 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 SwiftObjective-C. Sơ đồ kiến trúc dưới đây cho thấy quy trình triển khai một model đã huấn luyện lên các nền tảng Android và iOS bằng cách sử dụng TensorFlow Lite.

TensorFlow Lite deployment architecture for mobile

  • Triển khai với Linux Nhúng: Nếu việc chạy suy luận trên Raspberry Pi sử dụ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 Vi điều khiển: Model TFLite cũng có thể được triển khai trên các 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ỉ vừa với 16 KB trên Arm Cortex M3 và có thể chạy nhiều model cơ bản. Nó không yêu cầu hỗ trợ hệ điều hành, bất kỳ thư viện chuẩn C hoặc C++ nào, hay cấp phát bộ nhớ động.

Link to this sectionThay thế bản xuất TFLite bằng LiteRT#

Đối với các bản xuất mới, hãy chuyển đổi mô hình của bạn sang LiteRT. Mô hình kết quả vẫn giữ đuôi tệp .tflite.

Link to this sectionCài đặt#

Để cài đặt các 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 xem Hướng dẫn cài đặt Ultralytics 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 các vấn đề thường gặp để tìm giải pháp và mẹo.

Link to this sectionCách sử dụng#

Tất cả các mô hình Ultralytics YOLO26 đều được thiết kế để hỗ trợ xuất ngay lập tức, giúp dễ dàng tích hợp chúng vào quy trình triển khai ưa thích của bạ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 tốt nhất cho ứng dụng của mình.

Định dạng LiteRT thay thế hỗ trợ các chế độ Export, PredictValidate. Hãy xuất mô hình của bạn, sau đó tải mô hình .tflite đã xuất để chạy suy luận hoặc xác thực độ 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 LiteRT format
model.export(format="litert")  # creates 'yolo26n.tflite'
Dự đoán (Predict)
from ultralytics import YOLO

# Load the exported TFLite model
model = YOLO("yolo26n.tflite")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Xác thực
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")

Link to this sectionĐối số xuất#

Đối sốLoạiMặc địnhMô tả
formatstr'litert'Đị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: 8 (INT8 tĩnh, trọng số int8 + kích hoạt int8; cần hiệu chuẩn data/fraction), 'w8a16' (tĩnh, trọng số int8 + kích hoạt int16; cần hiệu chuẩn data/fraction), 'w8a32' (INT8 động, trọng số int8 + kích hoạt FP32; không cần hiệu chuẩn), hoặc 32/không thiết lập (FP32). FP16 không được xuất riêng — một model FP32 chạy tự động ở định dạng FP16 trên các delegate GPU. Thay thế các cờ half/int8 đã lỗi thời.
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.
datastr'coco8.yaml'Đường dẫn đến tệp cấu hình dataset (mặc định: coco8.yaml), cần thiết cho việc lượng tử hóa (quantization).
fractionfloat1.0Chỉ định phân đoạn của dataset để sử dụng cho hiệu chuẩn lượng tử hóa INT8. Cho phép hiệu chuẩn trên một tập hợp con của toàn bộ dataset, hữu ích cho các thử nghiệm hoặc khi tài nguyên hạn chế. Nếu không được chỉ định trong khi INT8 đã được bật, toàn bộ dataset sẽ được sử dụng.
devicestrNoneChỉ định thiết bị để xuất: 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 TFLite đã Xuất#

Sau khi xuất mô hình Ultralytics YOLO26 của bạn sang định dạng LiteRT, bạn có thể triển khai mô hình .tflite kết quả. Bước đầu tiên quan trọng và được khuyến nghị để chạy một mô hình 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, để có hướng dẫn chuyên sâu về việc triển khai các mô hình TFLite của bạn trong nhiều môi trường khác, hãy xem qua các tài nguyên sau:

  • Android: Hướng dẫn nhanh để tích hợp TensorFlow Lite vào các ứng dụng Android, cung cấp các bước dễ làm theo để thiết lập và chạy các model machine learning.

  • iOS: Kiểm tra hướng dẫn chi tiết này dành cho nhà phát triển về việc tích hợp và triển khai các model TensorFlow Lite trong các ứng dụng iOS, cung cấp hướng dẫn từng bước và các tài nguyên.

  • Các Ví dụ End-To-End: Trang này cung cấp tổng quan về các ví dụ khác nhau của TensorFlow Lite, giới thiệu các ứng dụng thực tế và các hướng dẫn được thiết kế để giúp nhà phát triển triển khai TensorFlow Lite trong các dự án machine learning của họ trên các thiết bị di động và biên.

Link to this sectionTóm tắt#

Hướng dẫn này lưu trữ quy trình triển khai TFLite cũ. Đối với các bản xuất mới, hãy sử dụng LiteRT để tạo các mô hình .tflite cho các môi trường edge computing.

Để 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 tò mò về các tích hợp khác của Ultralytics YOLO26, hãy kiểm tra 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 thông tin và thông tin chi tiết hữu ích ở đó.

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

Link to this sectionLàm cách nào để thay thế bản xuất TFLite bằng LiteRT?#

Đối với bản xuất mới, hãy sử dụng định dạng LiteRT. Đầu tiên, cài đặt gói cần thiết bằng cách sử dụng:

pip install ultralytics

Sau đó, sử dụng đoạn mã sau để xuất model của bạn:

from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to LiteRT format
model.export(format="litert")  # creates 'yolo26n.tflite'

Đối với người dùng CLI, bạn có thể thực hiện việc này với:

yolo export model=yolo26n.pt format=litert # creates 'yolo26n.tflite'

Để biết thêm chi tiết, hãy truy cập hướng dẫn xuất Ultralytics.

Link to this sectionNhững lợi ích của việc sử dụng TensorFlow Lite để triển khai model YOLO26 là gì?#

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ị, làm cho nó trở nên lý tưởng để triển khai các model YOLO26 trên các 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 thiểu độ trễ và tăng cường quyền riêng tư bằng cách xử lý dữ liệu cục bộ.
  • 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 hóa tốc độ và hiệu quả của model.

Để tìm hiểu thêm, hãy kiểm tra hướng dẫn TFLite.

Link to this sectionCó thể chạy các model YOLO26 TFLite trên Raspberry Pi không?#

Có, bạn có thể chạy các mô hình YOLO26 TFLite trên Raspberry Pi để cải thiện tốc độ suy luận. Đầu tiên, hãy xuất mô hình của bạn 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 mô hình trên Raspberry Pi của bạn.

Để 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 Pihướng dẫn tích hợp Edge TPU của chúng tôi.

Link to this sectionTôi có thể sử dụng model TFLite trên vi điều khiển cho các dự đoán YOLO26 không?#

Có, TFLite hỗ trợ triển khai trên các vi điều khiển có tài nguyên hạn chế. Runtime cốt lõi của TFLite chỉ yêu cầu 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 làm cho nó phù hợp để triển khai trên các thiết bị có sức mạnh 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 Vi điều khiển.

Link to this sectionNhững nền tảng nào tương thích với các model YOLO26 đã xuất sang TFLite?#

TensorFlow Lite cung cấp khả năng tương thích nền tảng sâu rộng, cho phép bạn triển khai các model YOLO26 trên nhiều thiết bị, bao gồm:

  • Android và iOS: Hỗ trợ gốc thông qua các thư viện TFLite Android và iOS.
  • Linux nhúng: Lý tưởng cho các máy tính bo mạch đơn như Raspberry Pi.
  • Vi điều khiển: Phù hợp cho các MCU với tài nguyên bị 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.

Link to this sectionLàm cách nào để khắc phục các vấn đề thường gặp trong quá trình xuất mô hình YOLO26 sang LiteRT?#

Nếu bạn gặp lỗi khi xuất mô hình YOLO26 sang LiteRT, các giải pháp phổ biến bao gồm:

  • Kiểm tra tính tương thích của gói: Đảm bảo rằng bạn đang sử dụng các phiên bản tương thích của Ultralytics, litert-torchai-edge-litert. Tham khảo hướng dẫn cài đặt của chúng tôi.
  • Hỗ trợ mô hình: Xác minh rằng mô hình YOLO26 cụ thể có hỗ trợ xuất LiteRT hay không bằng cách kiểm tra trang tài liệu về xuất của Ultralytics.
  • Các 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 tập dữ liệu của bạn được chỉ định chính xác trong tham số data.

Để biết thêm các mẹo khắc phục sự cố, hãy truy cập Hướng dẫn Vấn đề Thường gặp của chúng tôi.

Bình luận