Ultralytics YOLO27:

Экспорт моделей TFLite для развёртывания (устарело)#

Устарело — заменено LiteRT

Начиная с Ultralytics 8.4.83 отдельный формат экспорта tflite удалён и заменён унифицированным форматом Google LiteRT. LiteRT (облегчённая среда выполнения) — это следующее поколение и новое название TensorFlow Lite; он экспортирует ту же модель .tflite, которая теперь охватывает развёртывание на мобильных, встраиваемых и периферийных устройствах, а также в браузере в едином формате.

format="tflite" по-прежнему работает, но выводит предупреждение об устаревании и экспортирует модель LiteRT. В дальнейшем используй format="litert"; текущие инструкции и параметры экспорта смотри в руководстве по экспорту LiteRT.

TensorFlow Lite edge deployment framework

Развёртывание моделей компьютерного зрения на периферийных или встраиваемых устройствах требует формата, способного обеспечить стабильную производительность.

Прежний формат экспорта TensorFlow Lite или TFLite оптимизировал модели Ultralytics YOLO26 для таких задач, как обнаружение объектов и классификация изображений в периферийных приложениях. Это руководство сохраняет контекст развёртывания legacy-формата TFLite; для новых экспортов используй LiteRT.

Почему для экспорта использовался TFLite?#

Представленный Google в мае 2017 года как часть фреймворка TensorFlow, TensorFlow Lite, или сокращённо TFLite, был фреймворком глубокого обучения с открытым исходным кодом, предназначенным для выполнения инференса на устройстве, также известного как периферийные вычисления. Он предоставлял разработчикам инструменты для запуска обученных моделей на мобильных, встраиваемых и 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-ядерным CPU Qualcomm Oryon (2 производительных ядра Prime с частотой до 4,6 ГГц и 6 ядер Performance с частотой до 3,62 ГГц), GPU Adreno и NPU Hexagon. В этих таблицах сравниваются legacy-ресурсы onnx2tf INT8 TFLite с кандидатными экспортами litert-torch, оценёнными во время миграции. Впоследствии ресурсы выпуска были перезаписаны стандартизированными экспортами, поэтому эти числа не описывают текущие байты ресурса v0.6.6. Текущие измерения смотри в таблицах производительности LiteRT.

Оба формата выполнялись в одном последовательном тесте GPU при указанных размерах входных данных. Каждая ячейка показывает общее время (предобработка + инференс + постобработка), а разбивка по этапам приведена под ним; нативные журналы подтвердили, что оба формата передавали полный граф LiteRT OpenCL (LITERT_CL) на GPU Adreno.

МодельЗадачаразмер
(пиксели)
Legacy
onnx2tf INT8 TFLite
(мс)
Кандидат
w8a32 LiteRT
(мс)
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-semСемантическая сегментация64026.4
1.9 / 16.4 / 8.1
32.9
1.8 / 23.0 / 8.2
YOLO26n-clsКлассификация2243.5
0.9 / 2.2 / 0.4
3.2
1.0 / 2.2 / 0.1
YOLO26n-poseПозы64017.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

В ходе этого же прогона миграции также сравнивались форматы квантования для детекции YOLO26n. Инференс — сопоставимая метрика, зависящая от формата:

Формат AndroidИнференс на GPU (мс)Компилируется на GPU
onnx2tf INT8 (legacy TFLite)8.6да
LiteRT w8a32 (кандидат)8.4да
LiteRT INT8 (quantize=8)11.0да
LiteRT FP328.8да
LiteRT w8a16 (quantize="w8a16")Резервный режим CPUнет

В этом прогоне w8a16 перешёл на CPU: общее время составило около 660 мс против примерно 17 мс для форматов GPU. Эти результаты послужили основанием для поставки w8a32, однако совместимость делегата и производительность зависят от устройства и версии среды выполнения. Протестируй целевое устройство и подтверди размещение ускорителя в журналах среды выполнения.

Варианты развёртывания в TFLite#

Прежде чем рассмотреть пример экспорта с заменой на LiteRT, разберёмся, как обычно используются модели TFLite.

TFLite предлагает различные варианты развёртывания моделей машинного обучения на устройстве, включая:

  • Развёртывание на Android и iOS: приложения Android и iOS с TFLite могут анализировать потоки с камер и данные датчиков на периферийных устройствах, чтобы обнаруживать и идентифицировать объекты. TFLite также предлагает нативные библиотеки iOS, написанные на Swift и Objective-C. На приведённой ниже архитектурной схеме показан процесс развёртывания обученной модели на платформах Android и iOS с использованием TensorFlow Lite.

TensorFlow Lite deployment architecture for mobile

  • Реализация во встроенном 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 пакетов возникнут трудности, обратись к руководству по распространенным проблемам, где encontrarás решения и советы.

Использование#

Все модели 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 classification
Predict
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")

Аргументы экспорта#

АргументТипПо умолчаниюОписание
formatstr'litert'Целевой формат экспортированной модели, определяющий совместимость с различными средами развёртывания.
imgszint или tuple640Требуемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для указания конкретных размеров.
quantizeint или strNoneТочность квантования: 8 (статический INT8, веса int8 + активации int8; требуется калибровка data/fraction), 'w8a16' (статический, веса int8 + активации int16; требуется калибровка data/fraction), 'w8a32' (динамический INT8, веса int8 + активации FP32; калибровка не требуется) или 32/не задано (FP32). FP16 не экспортируется отдельно — модель FP32 автоматически выполняется в FP16 на делегатах GPU. Заменяет устаревшие флаги half/int8.
batchint1Задаёт размер пакета при инференсе экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict.
datastrNoneПуть к YAML-файлу датасета, необходимому для квантования; для классификации вместо него указывается каталог датасета или имя встроенного датасета. Если параметр не задан вместе с quantize=8 или 'w8a16', Ultralytics выбирает стандартный калибровочный датасет для задачи модели.
fractionfloat, int или list1.0Подмножество для калибровки в виде доли, количества изображений или значений [train, val, test] — долей/количеств. В списках из двух элементов test оставляет полный набор, а 0 пропускает его.
devicestrNoneУказывает устройство для экспорта: 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 в проектах машинного обучения для мобильных и периферийных устройств.

Итоги#

Это руководство сохраняет legacy-процесс развёртывания TFLite. Для новых экспортов используй LiteRT, чтобы создавать модели .tflite для сред периферийных вычислений.

Дополнительные сведения об использовании смотри в официальной документации TFLite.

Если тебя интересуют другие интеграции Ultralytics YOLO26, загляни на нашу страницу с руководством по интеграциям. Там ты найдёшь много полезной информации и рекомендаций.

Часто задаваемые вопросы#

  • Для нового экспорта используй формат 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 (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 поддерживает развёртывание на микроконтроллерах с ограниченными ресурсами. Среде выполнения TFLite требуется всего 16 КБ памяти на Arm Cortex M3, и она может запускать базовые модели YOLO26. Поэтому TFLite подходит для развёртывания на устройствах с минимальными вычислительными ресурсами и объёмом памяти.

    Чтобы начать работу, ознакомься с руководством 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.

    Дополнительные советы по устранению неполадок смотри в нашем руководстве по распространённым проблемам.

Комментарии