Экспорт модели TFLite для развёртывания (устарел)#
В Ultralytics 8.4.83 самостоятельный формат экспорта tflite был удалён и заменён унифицированным форматом Google LiteRT. LiteRT (Lite Runtime) — это новое поколение и новое название TensorFlow Lite; он экспортирует ту же модель .tflite, охватывая теперь развёртывание на мобильных устройствах, встроенных системах, периферийных устройствах и в браузерах в одном формате.
format="tflite" по-прежнему работает, но выводит предупреждение об устаревании и экспортирует модель LiteRT. В дальнейшем используй format="litert"; актуальные инструкции и параметры экспорта смотри в руководстве по экспорту в LiteRT.
Для развёртывания моделей компьютерного зрения на периферийных или встроенных устройствах нужен формат, обеспечивающий стабильную производительность.
Прежний формат экспорта TensorFlow Lite или TFLite оптимизировал модели Ultralytics YOLO26 для таких задач, как обнаружение объектов и классификация изображений в периферийных приложениях. В этом руководстве сохранён контекст развёртывания с устаревшим TFLite; для новых экспортов используй LiteRT.
Почему для экспорта использовали TFLite?#
TensorFlow Lite, или TFLite, был представлен Google в мае 2017 года как часть фреймворка TensorFlow. Это фреймворк глубокого обучения с открытым исходным кодом, предназначенный для инференса на устройствах, также известного как периферийные вычисления. Он предоставлял разработчикам инструменты для запуска обученных моделей на мобильных, встроенных и IoT-устройствах, а также на обычных компьютерах.
TensorFlow Lite поддерживал широкий спектр платформ, включая встроенный Linux, Android, iOS и микроконтроллеры (MCU). Экспорт в TFLite позволял приложениям запускать модели локально и без подключения к сети.
Ключевые возможности моделей TFLite#
Модели TFLite обладают множеством ключевых возможностей для машинного обучения непосредственно на устройстве: они помогают разработчикам запускать модели на мобильных, встроенных и периферийных устройствах.
-
Оптимизация для работы на устройстве: TFLite оптимизирует модели для машинного обучения непосредственно на устройстве, сокращая задержки за счёт локальной обработки данных, повышая конфиденциальность за счёт отказа от передачи персональных данных и уменьшая размер модели для экономии места.
-
Поддержка различных платформ: TFLite совместим с широким спектром платформ, включая Android, iOS, встроенный Linux и микроконтроллеры.
-
Поддержка разных языков программирования: TFLite совместим с различными языками программирования, включая Java, Swift, Objective-C, C++ и Python.
-
Высокая производительность: высокая производительность достигается благодаря аппаратному ускорению и оптимизации моделей.
Измеренная производительность (исторические данные)#
Эти результаты были получены с плагином Ultralytics для Flutter 0.6.8 и LiteRT 2.1.5 на Android 16/API 36 на Xiaomi 17 с 12 ГБ памяти LPDDR5X. Его 3-нм Snapdragon 8 Elite Gen 5 (SM8850) оснащён 8-ядерным процессором Qualcomm Oryon (2 производительных ядра Prime с частотой до 4,6 ГГц и 6 ядер Performance с частотой до 3,62 ГГц), GPU Adreno и NPU Hexagon. В этих таблицах сравниваются устаревшие ресурсы TFLite INT8, созданные с помощью onnx2tf, и варианты экспорта litert-torch, проверенные в ходе миграции. Позднее выпущенные ресурсы были перезаписаны стандартизированными экспортами, поэтому эти значения не описывают текущие байты ресурса v0.6.6. Актуальные измерения смотри в таблицах производительности LiteRT.
Оба формата запускались в одном последовательном цикле тестирования на GPU при указанных размерах входных данных. Каждая ячейка содержит общее время (предобработка + инференс + постобработка), а ниже приведено время каждого этапа; системные журналы подтвердили, что оба формата передавали весь граф LiteRT OpenCL (LITERT_CL) на GPU Adreno.
| Модель | Задача | размер (пиксели) | Устаревший 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 |
В ходе того же цикла миграции также сравнивались форматы квантования для детектора YOLO26n. Для сравнения форматов подходит метрика инференса, зависящая от формата:
| Формат 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 | нет |
В этом тестировании w8a16 переключился на CPU: общее время составило около 660 мс против примерно 17 мс для форматов с GPU. Эти результаты стали причиной выпуска w8a32, однако совместимость с делегатами и производительность зависят от устройства и версии среды выполнения. Проверь производительность на целевом устройстве и убедись по журналам среды выполнения, что задействован ускоритель.
Варианты развёртывания в TFLite#
Прежде чем рассмотреть пример экспорта в замену 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++ либо динамическое выделение памяти.
Замени экспорт TFLite на LiteRT#
Для новых экспортов преобразуй модель в формат LiteRT. Полученная модель сохраняет расширение файла .tflite.
Установка#
Чтобы установить необходимые пакеты, выполни команду:
# Install the required package for YOLO26
pip install ultralyticsПодробные инструкции и рекомендации по установке смотри в руководстве по установке Ultralytics. Если при установке пакетов, необходимых для YOLO26, возникнут сложности, решения и советы найдешь в руководстве по распространенным проблемам.
Использование#
Все модели Ultralytics YOLO26 изначально поддерживают экспорт, поэтому их легко интегрировать в предпочтительный процесс развёртывания. Чтобы выбрать оптимальную конфигурацию для своего приложения, посмотри полный список поддерживаемых форматов экспорта и параметров конфигурации.
Формат LiteRT, пришедший на смену прежнему, поддерживает режимы экспорта, предсказания и валидации. Экспортируй модель, затем загрузи экспортированную модель .tflite, чтобы выполнить инференс или проверить её точность.
from ultralytics import YOLO
# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")
# Экспортировать модель в формат LiteRT
model.export(format="litert", imgsz=640) # используй imgsz=224 для классификацииfrom ultralytics import YOLO
# Загрузи экспортированную модель TFLite
model = YOLO("yolo26n.tflite")
# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Загрузи экспортированную модель TFLite
model = YOLO("yolo26n.tflite")
# Проверить точность на наборе данных COCO8
metrics = model.val(data="coco8.yaml")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
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 | Задаёт размер пакета изображений для инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict. |
data | str | None | Путь к YAML-файлу набора данных, необходимому для квантования; для классификации вместо него укажи каталог набора данных или имя встроенного набора данных. Если quantize=8 или 'w8a16' не заданы, Ultralytics выберет набор данных для калибровки по умолчанию для задачи модели. |
fraction | float, int или list | 1.0 | Подмножество для калибровки, заданное как доля, количество изображений или [train, val, test] отношения/количества. Если список содержит два элемента, test остаётся без изменений, а 0 пропускает его. |
device | str | None | Указывает устройство для экспорта: CPU (device=cpu), MPS для Apple silicon (device=mps). |
Подробнее о процессе экспорта смотри на странице документации Ultralytics об экспорте.
Развёртывание экспортированных моделей YOLO26 TFLite#
После экспорта модели Ultralytics YOLO26 в формате LiteRT можно развёртывать полученную модель .tflite. Основной и рекомендуемый первый шаг для запуска модели TFLite — использовать метод YOLO("model.tflite"), описанный в предыдущем фрагменте кода. Подробные инструкции по развёртыванию моделей TFLite в других средах смотри в следующих ресурсах:
-
Android: краткое руководство по интеграции TensorFlow Lite в приложения Android с простыми пошаговыми инструкциями по настройке и запуску моделей машинного обучения.
-
iOS: подробное руководство для разработчиков по интеграции и развёртыванию моделей TensorFlow Lite в приложениях iOS с пошаговыми инструкциями и полезными ресурсами.
-
Примеры полного цикла: на этой странице представлен обзор различных примеров TensorFlow Lite, практических приложений и учебных материалов, которые помогут разработчикам использовать TensorFlow Lite в проектах машинного обучения для мобильных и периферийных устройств.
Итоги#
В этом руководстве описан прежний процесс развёртывания с TFLite. Для новых экспортов используй LiteRT, чтобы создавать модели .tflite для периферийных вычислений.
Дополнительную информацию об использовании смотри в официальной документации TFLite.
Если тебя интересуют другие интеграции Ultralytics YOLO26, загляни на нашу страницу руководства по интеграциям. Там ты найдёшь много полезной информации и рекомендаций.
Часто задаваемые вопросы#
Для нового экспорта используй формат LiteRT. Сначала установи необходимый пакет:
pip install ultralyticsЗатем экспортируй модель с помощью следующего фрагмента кода:
from ultralytics import YOLO # Загрузи модель YOLO26 model = YOLO("yolo26n.pt") # Экспортировать модель в формат LiteRT model.export(format="litert", imgsz=640) # используй imgsz=224 для классификацииЕсли ты используешь CLI, выполни эту команду:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationПодробнее смотри в руководстве Ultralytics по экспорту.
TensorFlow Lite (TFLite) — это фреймворк с открытым исходным кодом для глубокого обучения, предназначенный для инференса непосредственно на устройстве, что делает его идеальным для развёртывания моделей YOLO26 на мобильных, встроенных и IoT-устройствах. Ключевые преимущества:
- Оптимизация для работы на устройстве: локальная обработка данных сокращает задержки и повышает конфиденциальность.
- Совместимость с платформами: поддерживаются Android, iOS, встроенный Linux и MCU.
- Производительность: аппаратное ускорение повышает скорость и эффективность моделей.
Подробнее смотри в руководстве по TFLite.
Да, модели YOLO26 TFLite можно запускать на Raspberry Pi, чтобы ускорить инференс. Сначала экспортируй модель в формат LiteRT, как описано выше. Затем воспользуйся таким инструментом, как TensorFlow Lite Interpreter, чтобы запустить модель на Raspberry Pi.
Для дополнительной оптимизации можно использовать Coral Edge TPU. Подробные инструкции смотри в нашем руководстве по развёртыванию на Raspberry Pi и руководстве по интеграции Edge TPU.
TFLite поддерживает развёртывание на микроконтроллерах с ограниченными ресурсами: для основной среды выполнения требуется всего 16 КБ памяти на Arm Cortex M3, и она может запускать многие базовые модели. Однако модели YOLO26 обычно слишком велики для типичного объёма памяти микроконтроллеров, поэтому для YOLO26 лучше подходят одноплатные компьютеры, мобильные устройства или специализированные ускорители.
Чтобы начать работу, изучи руководство по TFLite Micro для микроконтроллеров.
TensorFlow Lite совместим со множеством платформ, поэтому модели YOLO26 можно развёртывать на широком спектре устройств, включая:
- Android и iOS: встроенная поддержка через библиотеки TFLite для Android и iOS.
- Встроенный Linux: подходит для одноплатных компьютеров, таких как Raspberry Pi.
- Микроконтроллеры: подходят для MCU с ограниченными ресурсами.
Подробнее о вариантах развёртывания смотри в нашем подробном руководстве по развёртыванию.
Если при экспорте моделей YOLO26 в LiteRT возникают ошибки, попробуй следующие решения:
- Проверь совместимость пакетов: убедись, что используешь совместимые версии Ultralytics,
litert-torchиai-edge-litert. Обратись к нашему руководству по установке. - Поддержка модели: проверь, поддерживает ли нужная модель YOLO26 экспорт в LiteRT, на странице документации по экспорту Ultralytics.
- Проблемы с квантованием: при квантовании INT8 убедись, что путь к набору данных правильно указан в параметре
data.
Дополнительные советы по устранению неполадок смотри в нашем руководстве по распространённым проблемам.
- Проверь совместимость пакетов: убедись, что используешь совместимые версии Ultralytics,