Link to this sectionЭкспорт моделей TFLite для развертывания (устарело)#
Начиная с Ultralytics 8.4.83, отдельный формат экспорта tflite был удален и заменен на унифицированный формат Google LiteRT. LiteRT (Lite Runtime) — это следующее поколение и новое название TensorFlow Lite, и он экспортирует ту же самую модель .tflite, которая теперь охватывает развертывание на мобильных устройствах, встроенных системах, edge-устройствах и в браузерах в рамках одного формата.
format="tflite" по-прежнему работает, но выдает предупреждение об устаревании и вместо этого экспортирует модель LiteRT. Используй format="litert" в дальнейшем; актуальные инструкции и параметры экспорта смотри в руководстве по экспорту LiteRT.
Развертывание моделей компьютерного зрения на периферийных или встраиваемых устройствах требует формата, обеспечивающего бесперебойную работу.
Ранее формат экспорта TensorFlow Lite, или TFLite, оптимизировал модели Ultralytics YOLO26 для таких задач, как обнаружение объектов и классификация изображений в граничных (edge) приложениях. Это руководство сохраняет контекст использования устаревшего TFLite; для новых экспортов используй LiteRT.
Link to this sectionПочему TFLite использовался для экспорта?#
Представленный Google в мае 2017 года как часть их фреймворка TensorFlow, TensorFlow Lite, или сокращенно TFLite, был фреймворком глубокого обучения с открытым исходным кодом, разработанным для инференса на устройствах, также известного как граничные вычисления. Он предоставлял разработчикам инструменты для запуска обученных моделей на мобильных, встроенных и IoT-устройствах, а также на обычных компьютерах.
TensorFlow Lite поддерживал широкий спектр платформ, включая встроенные Linux, Android, iOS и микроконтроллеры (MCU). Экспорт в TFLite позволял приложениям запускать модели локально и в автономном режиме.
Link to this sectionКлючевые особенности моделей TFLite#
Модели TFLite предлагают ряд ключевых функций, которые обеспечивают машинное обучение на устройстве, помогая разработчикам запускать свои модели на мобильных, встраиваемых и периферийных устройствах:
-
Локальная оптимизация: TFLite оптимизирован для ML на устройстве, снижая задержку за счет локальной обработки данных, повышая конфиденциальность за счет отсутствия передачи персональных данных и минимизируя размер модели для экономии места.
-
Поддержка нескольких платформ: TFLite предлагает широкую совместимость, поддерживая Android, iOS, встроенный Linux и микроконтроллеры.
-
Разнообразная языковая поддержка: TFLite совместим с различными языками программирования, включая Java, Swift, Objective-C, C++ и Python.
-
Высокая производительность: Достигает превосходной производительности за счет аппаратного ускорения и оптимизации моделей.
Link to this sectionИзмеренная производительность (историческая)#
Эти цифры TFLite сохранены в качестве исторического отчета до/после для перехода с onnx2tf-TFLite на LiteRT: сравнение устаревшего экспорта INT8 TFLite через onnx2tf с новым экспортом LiteRT w8a32 (см. таблицу измеренной производительности LiteRT). Мы делимся ими с командой Google LiteRT, чтобы показать, в чем новый формат litert-torch все еще уступает формату, который он заменил — см. Регрессии форматов ниже.
Сравнение производительности до/после для каждой задачи на графическом процессоре Adreno смартфона Xiaomi 17 (Qualcomm Snapdragon 8 Elite Gen 5, SM8850), измеренное с помощью плагина Ultralytics Flutter версии 0.6.8: устаревшие активы INT8 TFLite из onnx2tf (NHWC, вход images) против новых активов w8a32 LiteRT (NCHW, вход args_0). Оба варианта запущены на LiteRT 2.x в ходе последовательного тестирования с использованием стандартного для Android imgsz. В каждой ячейке указано общее время (препроцессинг + инференс + постпроцессинг) с разбивкой по этапам под ним; оба формата были полностью скомпилированы на GPU.
| Модель | Задача | размер (пиксели) | До onnx2tf INT8 TFLite (мс) | После w8a32 LiteRT (мс) |
|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Сегментация | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | Семантика | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | Классификация | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-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 |
Формат w8a32 LiteRT сравним или превосходит устаревший формат onnx2tf INT8 по общей задержке в пяти из шести задач. Semantic остается проблемным форматом, так как логиты w8a32 NCHW требуют больше времени на инференс, чем устаревшие логиты NHWC, даже после оптимизации препроцессинга. Устаревшие модели onnx2tf работают без изменений на LiteRT 2.x наряду с новыми экспортами NCHW. Официальные активы Android LiteRT размещены в релизе v0.6.6 yolo-flutter-app, подробные результаты тестов приведены в документации по производительности Flutter.
Link to this sectionРегрессии форматов по сравнению с LiteRT#
Обнаружение объектов с помощью YOLO26n на одном устройстве на GPU Adreno смартфона Xiaomi 17 — сравнение устаревшего INT8 TFLite от onnx2tf с четырьмя форматами квантования LiteRT, измеренное за один непрерывный прогон (поэтому инференс является сравнимой метрикой, зависящей от формата):
| Формат Android | Инференс GPU (мс) | Компиляция GPU |
|---|---|---|
| onnx2tf INT8 (устаревший TFLite) | 8.6 | да |
| LiteRT w8a32 (новый официальный) | 8.4 | да |
LiteRT INT8 (quantize=8) | 11.0 | да |
| LiteRT FP32 | 8.8 | да |
LiteRT w8a16 (quantize="w8a16") | (откат к CPU) | нет — ошибка |
Проблемы для команды Google LiteRT / litert-torch, возникшие при миграции рабочих ресурсов Android с onnx2tf TFLite на LiteRT:
- Макет NCHW требует от потребителей данных учета структуры памяти. litert-torch отслеживает модель PyTorch и выдает NCHW
[1,3,H,W]с входными данными типа float, тогда как экспорт onnx2tf TFLite был NHWC[1,H,W,3], что соответствует структуре камеры/растрового изображения. Текущий плагин Flutter записывает планарный формат CHW непосредственно во время упаковки RGB, избегая дополнительного транспонирования HWC→CHW, но простые потребители по-прежнему нуждаются либо в прямой планарной упаковке, либо в дополнительном транспонировании. quantize="w8a16"не компилируется на делегате GPU (OpenCL) и бесшумно переключается на путь CPU, который примерно в 40 раз медленнее (~660 мс против ~17 мс), что делает формат с int16-активациями непригодным для развертывания на GPU.- Статический INT8 (
quantize=8) — самый медленный формат GPU — ~11 мс против ~8.6 мс для эквивалентной устаревшей модели onnx2tf INT8, т.е. путь INT8 самого LiteRT регрессирует по сравнению с форматом, который он заменил. Формат с динамическим диапазоном w8a32 — единственный формат LiteRT, который соответствует скорости старого INT8, поэтому именно он поставляется сейчас. - Семантические модели экспортируются как «сырые» логиты NCHW без возможности ArgMax внутри графа, что вынуждает выполнять неудобный для кэша argmax на стороне хоста по
[1, C, H, W](каждая плоскость класса находится на расстоянии целого H×W). Пути onnx2tf, CoreML и QNN могут вместо этого создавать компактную карту классов. - Выходные тензоры были переименованы в
output_0,output_1, … (вместоIdentity,Identity_1… в onnx2tf), что незаметно нарушило поиск формы вывода во время выполнения, пока потребитель не добавил новые имена.
Соответствующие цифры LiteRT w8a32 (формат, который сейчас поставляется) находятся на странице LiteRT.
Link to this sectionВарианты развертывания в TFLite#
Прежде чем мы рассмотрим пример экспорта для замены на LiteRT, давай разберемся, как обычно используются модели TFLite.
TFLite предлагает различные варианты развертывания моделей машинного обучения на устройствах, включая:
- Развертывание на Android и iOS: Приложения для Android и iOS с использованием TFLite могут анализировать потоки с периферийных камер и данные датчиков для обнаружения и идентификации объектов. TFLite также предлагает нативные библиотеки для iOS, написанные на Swift и Objective-C. На схеме архитектуры ниже показан процесс развертывания обученной модели на платформах Android и iOS с использованием TensorFlow Lite.
-
Реализация на встроенном Linux: Если запуск вывода на Raspberry Pi с использованием руководства Ultralytics не соответствует требованиям по скорости для твоего сценария использования, ты можешь использовать экспортированную модель TFLite для ускорения времени вывода. Кроме того, можно еще больше улучшить производительность, используя устройство Coral Edge TPU.
-
Развертывание на микроконтроллерах: Модели TFLite также можно развертывать на микроконтроллерах и других устройствах, имеющих всего несколько килобайт памяти. Основная среда выполнения занимает всего 16 КБ на процессорах Arm Cortex M3 и может запускать многие базовые модели. Она не требует поддержки операционной системы, стандартных библиотек C или C++, а также динамического распределения памяти.
Link to this sectionЗамени экспорт TFLite на LiteRT#
Для новых экспортов конвертируй свою модель в LiteRT. Результирующая модель сохраняет расширение файла .tflite.
Link to this sectionУстановка#
Чтобы установить необходимые пакеты, выполни:
# Install the required package for YOLO26
pip install ultralyticsПодробные инструкции и лучшие практики по процессу установки ищи в нашем руководстве по установке Ultralytics. Если при установке необходимых пакетов для YOLO26 у тебя возникнут трудности, обратись к нашему руководству по распространенным проблемам за решениями и советами.
Link to this sectionИспользование#
Все модели Ultralytics YOLO26 разработаны с поддержкой экспорта «из коробки», что упрощает их интеграцию в твой рабочий процесс развертывания. Ты можешь просмотреть полный список поддерживаемых форматов экспорта и параметров конфигурации, чтобы выбрать лучшую настройку для своего приложения.
Заменяющий формат LiteRT поддерживает режимы Export, Predict и Validate. Экспортируй модель, а затем загрузи экспортированную модель .tflite для выполнения инференса или проверки точности.
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'from 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")Link to this sectionАргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'litert' | Целевой формат для экспортированной модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров. |
quantize | int или str | None | Точность квантования: 8 (статический INT8, веса int8 + активации int8; требуется калибровочные data/fraction), 'w8a16' (статический, веса int8 + активации int16; требуется калибровочные data/fraction), 'w8a32' (динамический INT8, веса int8 + активации FP32; калибровка не нужна) или 32/не задано (FP32). FP16 не экспортируется отдельно — модель FP32 автоматически запускается в FP16 на делегатах GPU. Заменяет устаревшие флаги half/int8. |
batch | int | 1 | Задает размер пакета (batch) для вывода экспортированной модели или максимальное количество изображений, которые модель будет обрабатывать одновременно в режиме predict. |
data | str | 'coco8.yaml' | Путь к файлу конфигурации dataset (по умолчанию: coco8.yaml), необходимому для квантования. |
fraction | float | 1.0 | Указывает часть датасета, которую нужно использовать для калибровки квантования INT8. Позволяет выполнять калибровку на подмножестве полного датасета, что полезно для экспериментов или при ограниченных ресурсах. Если не указано при включенном INT8, будет использован весь датасет. |
device | str | None | Указывает устройство для экспорта: CPU (device=cpu), MPS для Apple silicon (device=mps). |
Для получения дополнительной информации о процессе экспорта посети страницу документации Ultralytics по экспорту.
Link to this sectionРазвертывание экспортированных моделей YOLO26 TFLite#
После экспорта твоей модели Ultralytics YOLO26 в формат LiteRT ты можешь развернуть полученную модель .tflite. Основным и рекомендуемым первым шагом для запуска модели TFLite является использование метода YOLO("model.tflite"), как описано в предыдущем фрагменте кода. Однако для получения подробных инструкций по развертыванию твоих моделей TFLite в различных других условиях ознакомься со следующими ресурсами:
-
Android: Краткое руководство по интеграции TensorFlow Lite в приложения для Android, содержащее простые шаги по настройке и запуску моделей машинного обучения.
-
iOS: Ознакомься с этим подробным руководством для разработчиков по интеграции и развертыванию моделей TensorFlow Lite в приложениях iOS, где предлагаются пошаговые инструкции и ресурсы.
-
Примеры End-To-End: На этой странице представлен обзор различных примеров TensorFlow Lite, демонстрирующих практические приложения и учебные пособия, предназначенные для помощи разработчикам в реализации TensorFlow Lite в их проектах машинного обучения на мобильных и периферийных устройствах.
Link to this sectionРезюме#
Это руководство сохраняет устаревший рабочий процесс развертывания TFLite. Для новых экспортов используй LiteRT для создания моделей .tflite для сред граничных вычислений.
Для получения дополнительной информации об использовании посети официальную документацию TFLite.
Кроме того, если тебе интересно узнать о других интеграциях Ultralytics YOLO26, загляни на нашу страницу руководств по интеграции. Там ты найдешь много полезной информации.
Link to this sectionFAQ#
Link to this sectionКак мне заменить экспорт TFLite на LiteRT?#
Для нового экспорта используй формат LiteRT. Сначала установи необходимый пакет с помощью:
pip install ultralyticsЗатем используй следующий фрагмент кода для экспорта модели:
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'Для пользователей CLI это можно сделать с помощью:
yolo export model=yolo26n.pt format=litert # creates 'yolo26n.tflite'Для получения подробной информации посети руководство по экспорту Ultralytics.
Link to this sectionКаковы преимущества использования TensorFlow Lite для развертывания моделей YOLO26?#
TensorFlow Lite (TFLite) — это open-source фреймворк глубокого обучения, разработанный для локального вывода, что делает его идеальным для развертывания моделей YOLO26 на мобильных, встраиваемых и IoT-устройствах. Основные преимущества:
- Локальная оптимизация: Минимизируй задержку и повышай конфиденциальность, обрабатывая данные локально.
- Совместимость с платформами: Поддерживает Android, iOS, встроенный Linux и MCU.
- Производительность: Использует аппаратное ускорение для оптимизации скорости и эффективности модели.
Чтобы узнать больше, изучи руководство по TFLite.
Link to this sectionМожно ли запускать модели YOLO26 TFLite на Raspberry Pi?#
Да, ты можешь запускать модели YOLO26 TFLite на Raspberry Pi для повышения скорости инференса. Сначала экспортируй свою модель в формат LiteRT, как объяснялось выше. Затем используй инструмент, например TensorFlow Lite Interpreter, для выполнения модели на твоем Raspberry Pi.
Для дальнейшей оптимизации ты можешь рассмотреть возможность использования Coral Edge TPU. Подробные шаги см. в нашем руководстве по развертыванию на Raspberry Pi и руководстве по интеграции с Edge TPU.
Link to this sectionМогу ли я использовать модели TFLite на микроконтроллерах для предсказаний YOLO26?#
Да, TFLite поддерживает развертывание на микроконтроллерах с ограниченными ресурсами. Основная среда выполнения TFLite требует всего 16 КБ памяти на Arm Cortex M3 и может запускать базовые модели YOLO26. Это делает ее подходящей для развертывания на устройствах с минимальной вычислительной мощностью и памятью.
Чтобы начать, посети руководство TFLite Micro для микроконтроллеров.
Link to this sectionКакие платформы совместимы с экспортированными моделями YOLO26 TFLite?#
TensorFlow Lite обеспечивает широкую совместимость платформ, позволяя развертывать модели YOLO26 на самых разных устройствах, включая:
- Android и iOS: Нативная поддержка через библиотеки TFLite для Android и iOS.
- Встроенный Linux: Идеально подходит для одноплатных компьютеров, таких как Raspberry Pi.
- Микроконтроллеры: Подходит для MCU с ограниченными ресурсами.
Для получения дополнительной информации о вариантах развертывания см. наше подробное руководство по развертыванию.
Link to this sectionКак мне устранить распространенные проблемы при экспорте моделей YOLO26 в LiteRT?#
Если ты столкнулся с ошибками при экспорте моделей YOLO26 в LiteRT, общие решения включают:
- Проверка совместимости пакетов: Убедись, что ты используешь совместимые версии Ultralytics,
litert-torchиai-edge-litert. Обратись к нашему руководству по установке. - Поддержка моделей: Убедись, что конкретная модель YOLO26 поддерживает экспорт в LiteRT, проверив страницу документации по экспорту Ultralytics.
- Проблемы квантования: При использовании квантования INT8 убедись, что путь к набору данных правильно указан в параметре
data.
Дополнительные советы по устранению неполадок ищи в нашем руководстве по распространенным проблемам.