Экспорт моделей 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.
Почему TFLite использовался для экспорта?#
Представленный Google в мае 2017 года как часть их фреймворка TensorFlow, TensorFlow Lite, или сокращенно TFLite, был фреймворком глубокого обучения с открытым исходным кодом, разработанным для инференса на устройствах, также известного как граничные вычисления. Он предоставлял разработчикам инструменты для запуска обученных моделей на мобильных, встроенных и IoT-устройствах, а также на обычных компьютерах.
TensorFlow Lite поддерживал широкий спектр платформ, включая встроенные Linux, Android, iOS и микроконтроллеры (MCU). Экспорт в TFLite позволял приложениям запускать модели локально и в автономном режиме.
Ключевые особенности моделей TFLite#
Модели TFLite предлагают ряд ключевых функций, которые обеспечивают машинное обучение на устройстве, помогая разработчикам запускать свои модели на мобильных, встраиваемых и периферийных устройствах:
-
Локальная оптимизация: TFLite оптимизирован для ML на устройстве, снижая задержку за счет локальной обработки данных, повышая конфиденциальность за счет отсутствия передачи персональных данных и минимизируя размер модели для экономии места.
-
Поддержка нескольких платформ: 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 CPU (2 основных ядра с частотой до 4,6 ГГц и 6 производительных ядер с частотой до 3,62 ГГц), GPU Adreno и NPU Hexagon. В этих таблицах сравниваются устаревшие ресурсы onnx2tf INT8 TFLite с кандидатными экспортами 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") | Резервный процессор | нет |
В этом запуске w8a16 переключился на CPU примерно со значением около 660 мс общего времени против примерно 17 мс для форматов GPU. Эти результаты побудили нас выпустить w8a32, но совместимость с делегатами и производительность зависят от устройства и версии среды выполнения. Протестируй целевое устройство и подтверди размещение ускорителя в его логах среды выполнения.
Варианты развертывания в 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 поддерживает режимы 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", 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")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
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 по экспорту.
Развертывание экспортированных моделей 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 в их проектах машинного обучения на мобильных и периферийных устройствах.
Резюме#
Это руководство сохраняет устаревший рабочий процесс развертывания TFLite. Для новых экспортов используй LiteRT для создания моделей .tflite для сред граничных вычислений.
Для получения дополнительной информации об использовании посети официальную документацию TFLite.
Кроме того, если тебе интересно узнать о других интеграциях Ultralytics YOLO26, загляни на нашу страницу руководств по интеграции. Там ты найдешь много полезной информации.
FAQ#
Как мне заменить экспорт 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", imgsz=640) # use imgsz=224 for classificationДля пользователей CLI это можно сделать с помощью:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationДля получения подробной информации посети руководство по экспорту Ultralytics.
Каковы преимущества использования TensorFlow Lite для развертывания моделей YOLO26?#
TensorFlow Lite (TFLite) — это open-source фреймворк глубокого обучения, разработанный для локального вывода, что делает его идеальным для развертывания моделей YOLO26 на мобильных, встраиваемых и IoT-устройствах. Основные преимущества:
- Локальная оптимизация: Минимизируй задержку и повышай конфиденциальность, обрабатывая данные локально.
- Совместимость с платформами: Поддерживает Android, iOS, встроенный Linux и MCU.
- Производительность: Использует аппаратное ускорение для оптимизации скорости и эффективности модели.
Чтобы узнать больше, изучи руководство по TFLite.
Можно ли запускать модели YOLO26 TFLite на Raspberry Pi?#
Да, ты можешь запускать модели YOLO26 TFLite на Raspberry Pi для повышения скорости инференса. Сначала экспортируй свою модель в формат LiteRT, как объяснялось выше. Затем используй инструмент, например TensorFlow Lite Interpreter, для выполнения модели на твоем Raspberry Pi.
Для дальнейшей оптимизации ты можешь рассмотреть возможность использования Coral Edge TPU. Подробные шаги см. в нашем руководстве по развертыванию на Raspberry Pi и руководстве по интеграции с Edge TPU.
Могу ли я использовать модели TFLite на микроконтроллерах для предсказаний YOLO26?#
Да, TFLite поддерживает развертывание на микроконтроллерах с ограниченными ресурсами. Основная среда выполнения TFLite требует всего 16 КБ памяти на Arm Cortex M3 и может запускать базовые модели YOLO26. Это делает ее подходящей для развертывания на устройствах с минимальной вычислительной мощностью и памятью.
Чтобы начать, посети руководство TFLite Micro для микроконтроллеров.
Какие платформы совместимы с экспортированными моделями YOLO26 TFLite?#
TensorFlow Lite обеспечивает широкую совместимость платформ, позволяя развертывать модели YOLO26 на самых разных устройствах, включая:
- Android и iOS: Нативная поддержка через библиотеки TFLite для Android и iOS.
- Встроенный Linux: Идеально подходит для одноплатных компьютеров, таких как Raspberry Pi.
- Микроконтроллеры: Подходит для MCU с ограниченными ресурсами.
Для получения дополнительной информации о вариантах развертывания см. наше подробное руководство по развертыванию.
Как мне устранить распространенные проблемы при экспорте моделей YOLO26 в LiteRT?#
Если ты столкнулся с ошибками при экспорте моделей YOLO26 в LiteRT, общие решения включают:
- Проверка совместимости пакетов: Убедись, что ты используешь совместимые версии Ultralytics,
litert-torchиai-edge-litert. Обратись к нашему руководству по установке. - Поддержка моделей: Убедись, что конкретная модель YOLO26 поддерживает экспорт в LiteRT, проверив страницу документации по экспорту Ultralytics.
- Проблемы квантования: При использовании квантования INT8 убедись, что путь к набору данных правильно указан в параметре
data.
Дополнительные советы по устранению неполадок ищи в нашем руководстве по распространенным проблемам.