Экспорт моделей YOLO в LiteRT для развёртывания на периферийных устройствах и в вебе#
LiteRT (сокращение от Lite Runtime) — высокопроизводительная среда выполнения Google для ИИ на устройстве. Это следующее поколение и новое название TensorFlow Lite (TFLite), использующее тот же формат моделей .tflite. С LiteRT одна экспортированная модель Ultralytics YOLO развёртывается на мобильных, встраиваемых и периферийных устройствах, а также в браузере — охватывая всё, что раньше по отдельности поддерживали форматы экспорта tflite и tfjs, теперь в рамках одной экосистемы.
Watch: How to Export Ultralytics YOLO26 to Google LiteRT | Deploy Vision AI on Android & iOS | Mobile AI 📱🚀
Формат экспорта LiteRT оптимизирует модели для таких задач, как обнаружение объектов, сегментация, оценка позы и классификация, чтобы они быстро работали в автономном режиме на широком спектре устройств.
Официальный плагин Ultralytics YOLO для Flutter из коробки запускает экспортированные в LiteRT модели .tflite на Android — с обработкой видео с камеры в реальном времени, предсказаниями для отдельных изображений, ускорением на GPU и автоматической загрузкой моделей для всех семи задач YOLO26, включая Depth. Для устройств Apple используй экспорт CoreML, а для NPU Qualcomm Snapdragon — интеграцию Qualcomm QNN.
Экспортируй модели классификации в imgsz=224. Экспортируй модели обнаружения, сегментации, семантической сегментации, оценки глубины, позы и OBB в
imgsz=640. Этот стандарт 224/640 используется официальными мобильными ресурсами LiteRT, CoreML и QNN.
Официальный NPM-пакет Ultralytics YOLO запускает экспортированные в LiteRT модели .tflite непосредственно в браузере через LiteRT.js, без сервера и Python, — с обработкой изображения с веб-камеры в реальном времени, предсказаниями для отдельных изображений и ускорением WebGPU (с автоматическим переходом на CPU/WASM) для всех шести задач YOLO26 (обнаружение, сегментация, поза, OBB, классификация, семантическая сегментация). В WebGPU это часто примерно в ~2 раза быстрее, чем ONNX Runtime Web.
npm i @ultralytics/yolo @litertjs/coreЗачем экспортировать модели в LiteRT?#
LiteRT — это фреймворк с открытым исходным кодом, предназначенный для вывода на устройстве, также известного как периферийные вычисления. Он предоставляет разработчикам инструменты для выполнения обученных моделей на мобильных, встраиваемых и IoT-устройствах, обычных компьютерах, а через LiteRT.js — непосредственно в веб-браузерах и Node.js.
Один формат модели — для любых целевых платформ:
- Мобильные и встраиваемые устройства: Android, iOS, встраиваемый Linux и микроконтроллеры (MCU).
- Периферийные ускорители: совместимость с Coral Edge TPU для дополнительного ускорения.
- Браузер и Node.js: LiteRT.js запускает ту же модель
.tfliteв вебе с ускорением WebGPU/WASM, устраняя необходимость в отдельном экспорте TensorFlow.js.
Ключевые особенности моделей LiteRT#
- Оптимизация на устройстве: снижает задержку за счёт локальной обработки данных, повышает конфиденциальность благодаря отсутствию передачи персональных данных и уменьшает размер модели для экономии места.
- Поддержка нескольких платформ: работает на Android, iOS, встраиваемом Linux, микроконтроллерах и современных веб-браузерах.
- Аппаратное ускорение: использует XNNPACK на CPU и ускорение GPU через OpenCL, Metal и WebGPU. Делегат GPU по умолчанию работает в FP16 для дополнительного ускорения.
- Квантизация: поддерживает FP32, статический INT8 (
quantize=8, веса int8 + активации int8), статический INT16-activation (quantize="w8a16", веса int8 + активации int16 для более высокой точности) и динамический INT8 (quantize="w8a32", веса int8 + активации FP32, данные калибровки не требуются), чтобы сжимать модели и ускорять вывод с минимальной потерей точности. - Поддержка различных языков: совместимость с Java/Kotlin, Swift, Objective-C, C++, Python и JavaScript.
Измеренная производительность#
Аппаратное обеспечение: Xiaomi 17 с 12 ГБ памяти LPDDR5X и Android 16 / API 36. Его 3-нм Snapdragon 8 Elite Gen 5 (SM8850) оснащён 8-ядерным CPU Qualcomm Oryon (2 производительных ядра Prime с частотой до 4,6 ГГц и 6 ядер Performance с частотой до 3,62 ГГц), GPU Adreno и NPU Hexagon.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 52.2 1.8 / 48.1 / 2.4 | 15.8 2.3 / 8.9 / 4.6 |
| YOLO26n-seg | Segment | 640 | 73.4 1.8 / 65.6 / 6.0 | 33.2 1.8 / 23.8 / 7.6 |
| YOLO26n-sem | Семантическая сегментация | 640 | 61.2 1.8 / 51.1 / 8.3 | 34.2 1.8 / 24.0 / 8.3 |
| YOLO26n-depth | Глубина | 640 | 124.4 1.9 / 115.1 / 7.4 | 23.0 1.8 / 13.5 / 7.7 |
| YOLO26n-cls | Классификация | 224 | 4.4 0.4 / 4.0 / 0.0 | 3.1 0.8 / 2.1 / 0.2 |
| YOLO26n-pose | Позы | 640 | 57.4 1.8 / 53.8 / 1.8 | 16.6 2.7 / 10.1 / 3.9 |
| YOLO26n-obb | OBB | 640 | 50.3 1.8 / 47.2 / 1.4 | 11.7 1.8 / 7.8 / 2.0 |
- Значения скорости — это задержки пакетной обработки одного изображения: среднее значение для 15 запусков после 3 прогревочных запусков на
bus.jpg, измеренное с помощью0.6.10плагина Ultralytics для Flutter и стандартизированных ресурсовv0.6.6. Порядок CPU/GPU чередовался между задачами в одном последовательном прогоне. Нативные журналы подтвердили, что каждая строка для CPU использовала LiteRT CPU/XNNPACK, а каждая строка для GPU передавала полный граф LiteRT OpenCL (LITERT_CL). - Экспорт LiteRT напрямую трассирует модель PyTorch, создавая NCHW
.tfliteс входными данными float. Делегат GPU компилирует весь граф (здесь все семь задач выполняются на GPU Adreno), аw8a32не требует данных калибровки. Вместо предположений о прежнем формате NHWC onnx2tf или именах выходовIdentityследует считывать формы тензоров и имена сигнатур; передавай данные RGB непосредственно в виде планарного CHW или транспонируй их перед выводом. Экспорт семантической сегментации возвращает логиты NCHW и требует вычисления argmax по классам на стороне хоста. Официальные ресурсы для Android размещены в релизеv0.6.6приложения yolo-flutter-app, а подробные результаты бенчмарка — в документе о производительности Flutter. - Результаты для соответствующего NPU Hexagon Snapdragon и показатели LiteRT CPU/GPU приведены в интеграции Qualcomm QNN.
- Сравни результаты CPU/ускорителя Apple в интеграции CoreML.
В следующих прогонах на устройствах используются те же стандартизированные ресурсы v0.6.6.
Google Pixel 10#
Аппаратное обеспечение: Google Pixel 10 с 12 ГБ памяти и Android 16 / API 36. Его 3-нм Google Tensor G5 оснащён 8-ядерным CPU (1 ядро Prime с частотой до 3,78 ГГц, 5 ядер Performance с частотой до 3,05 ГГц и 2 энергоэффективных ядра с частотой до 2,25 ГГц), GPU PowerVR D-Series и Google TPU. Тактовые частоты ядер и название драйвера GPU были считаны с устройства, на котором выполнялся бенчмарк, поскольку Google не публикует их в связанных спецификациях.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 53.3 1.5 / 50.2 / 1.6 | 45.5 3.8 / 37.7 / 4.0 |
| YOLO26n-seg | Segment | 640 | 87.7 1.8 / 78.5 / 7.5 | 50.9 3.0 / 36.9 / 10.9 |
| YOLO26n-sem | Семантическая сегментация | 640 | 68.6 1.5 / 59.0 / 8.0 | 71.6 1.5 / 59.5 / 10.6 |
| YOLO26n-depth | Глубина | 640 | 120.3 1.5 / 112.5 / 6.3 | 52.5 2.0 / 37.5 / 13.0 |
| YOLO26n-cls | Классификация | 224 | 4.0 0.3 / 3.4 / 0.2 | 17.6 0.9 / 16.7 / 0.1 |
| YOLO26n-pose | Позы | 640 | 59.7 1.5 / 57.0 / 1.2 | 46.6 3.8 / 39.2 / 3.5 |
| YOLO26n-obb | OBB | 640 | 52.0 1.5 / 48.9 / 1.7 | 45.5 4.0 / 38.5 / 2.9 |
Бенчмарк: среднее значение для 15 вызовов predict() после 3 прогревочных запусков на bus.jpg с использованием ultralytics_yolo, 0.6.10 и
официальных ресурсов v0.6.6. Порядок CPU/GPU чередуется между задачами в одном последовательном прогоне. Нативные журналы подтвердили, что
каждая строка для CPU использовала LiteRT CPU/XNNPACK, а каждая строка для GPU передавала полный граф LiteRT OpenCL (LITERT_CL).
Samsung Galaxy S26#
Аппаратное обеспечение: Samsung Galaxy S26 (SM-S942B) с 12 ГБ памяти и Android 16 / API 36. Его 2-нм Exynos 2600 оснащён 10-ядерным CPU Armv9.3 (1 ядро C1-Ultra с частотой до 3,8 ГГц, 3 производительных ядра C1-Pro с частотой до 3,26 ГГц и 6 энергоэффективных ядер C1-Pro с частотой до 2,76 ГГц), GPU Xclipse 960 и NPU Samsung.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 36.7 1.3 / 33.8 / 1.7 | 16.4 1.4 / 12.3 / 2.6 |
| YOLO26n-seg | Segment | 640 | 54.6 1.2 / 48.0 / 5.3 | 32.8 1.3 / 24.5 / 7.0 |
| YOLO26n-sem | Семантическая сегментация | 640 | 47.8 1.2 / 38.4 / 8.1 | 34.2 1.3 / 24.9 / 8.0 |
| YOLO26n-depth | Глубина | 640 | 92.9 1.2 / 84.8 / 6.9 | 33.5 1.3 / 22.4 / 9.8 |
| YOLO26n-cls | Классификация | 224 | 2.7 0.2 / 2.3 / 0.2 | 2.6 0.2 / 2.4 / 0.0 |
| YOLO26n-pose | Позы | 640 | 42.8 1.3 / 40.5 / 1.0 | 18.4 1.4 / 14.1 / 2.9 |
| YOLO26n-obb | OBB | 640 | 37.5 1.3 / 35.1 / 1.2 | 18.8 2.5 / 14.6 / 1.8 |
Бенчмарк: среднее значение для 15 вызовов predict() после 3 прогревочных запусков на bus.jpg с использованием ultralytics_yolo, 0.6.10 и
официальных ресурсов v0.6.6. Порядок CPU/GPU чередуется между задачами в одном последовательном прогоне. Нативные журналы подтвердили, что
каждая строка для CPU использовала LiteRT CPU/XNNPACK, а каждая строка для GPU передавала полный граф LiteRT OpenCL (LITERT_CL).
Xiaomi 17T Pro#
Аппаратное обеспечение: Xiaomi 17T Pro (2602EPTC0G) с 12 ГБ памяти LPDDR5X и Android 16 / API 36. Его 3-нм MediaTek Dimensity 9500 (MT6993) оснащён 8-ядерным CPU Armv9.3 (1 ядро C1-Ultra с частотой до 4,21 ГГц, 3 ядра C1-Premium с частотой до 3,5 ГГц и 4 ядра C1-Pro с частотой до 2,7 ГГц), GPU Mali-G1 Ultra MC12 и NPU MediaTek NPU 990.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 45.4 1.3 / 42.1 / 2.0 | 26.6 1.9 / 22.0 / 2.7 |
| YOLO26n-seg | Segment | 640 | 126.2 2.6 / 113.9 / 9.7 | 46.7 2.6 / 33.3 / 10.8 |
| YOLO26n-sem | Семантическая сегментация | 640 | 117.9 2.6 / 98.8 / 16.5 | 74.3 2.6 / 54.7 / 17.0 |
| YOLO26n-depth | Глубина | 640 | 182.4 2.5 / 167.6 / 12.3 | 47.8 2.5 / 32.3 / 12.9 |
| YOLO26n-cls | Классификация | 224 | 6.2 0.4 / 5.3 / 0.4 | 7.4 0.4 / 6.9 / 0.1 |
| YOLO26n-pose | Позы | 640 | 97.6 2.5 / 93.3 / 1.8 | 28.6 2.5 / 23.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 91.5 2.6 / 85.8 / 3.2 | 27.5 2.7 / 21.8 / 2.9 |
Бенчмарк: среднее значение для 15 вызовов predict() после 3 прогревочных запусков на bus.jpg с использованием ultralytics_yolo, 0.6.10 и
официальных ресурсов v0.6.6. Порядок CPU/GPU чередуется между задачами в одном последовательном прогоне. Нативные журналы подтвердили, что
каждая строка для CPU использовала LiteRT CPU/XNNPACK, а каждая строка для GPU передавала полный граф LiteRT OpenCL (LITERT_CL).
Поддерживаемые задачи#
Экспорт LiteRT поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, поставляемом с такими головами.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Детекция | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Оценка глубины | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Поза | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Экспорт в LiteRT: преобразование твоей модели YOLO#
Ты можешь повысить эффективность выполнения на устройстве и расширить варианты развёртывания, преобразовав модели в формат LiteRT.
Установка#
Чтобы установить необходимый пакет, выполни:
# Install the required package for YOLO
pip install ultralyticsПодробные инструкции и рекомендации смотри в нашем руководстве по установке Ultralytics. Если возникнут трудности, обратись к нашему руководству по распространённым проблемам.
Экспорт LiteRT в настоящее время поддерживается на Linux x86_64 и macOS. Сама экспортированная модель .tflite работает на всех платформах, поддерживаемых LiteRT (мобильных, встраиваемых и периферийных устройствах, а также в браузере).
Использование#
Все модели Ultralytics YOLO поддерживают экспорт из коробки. Формат LiteRT поддерживает режимы Export, Predict и Validate, поэтому ты можешь экспортировать модель, а затем загрузить её для выполнения вывода или локальной проверки точности.
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
model = YOLO("yolo26n.pt")
# Dynamic INT8: int8 weights, FP32 activations - no calibration data needed
model.export(format="litert", quantize="w8a32", imgsz=640) # use imgsz=224 for classification
# Static INT8: int8 weights + int8 activations - needs calibration data
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640) # use 224 for classification
# Static w8a16: int8 weights + int16 activations (higher accuracy) - needs calibration data
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640) # use 224 for classificationfrom ultralytics import YOLO
# Load the exported LiteRT model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported LiteRT 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/unset (FP32). FP16 не экспортируется отдельно (см. примечание ниже). Заменяет устаревшие флаги half/int8. |
batch | int | 1 | Задаёт размер пакета при инференсе экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict. |
data | str | None | YAML-файл датасета, используемый для калибровки INT8; для классификации вместо этого требуется каталог датасета или встроенное имя датасета. Если параметр не указан вместе с quantize=8 или 'w8a16', Ultralytics выбирает датасет калибровки по умолчанию для задачи модели. |
device | str | None | Задаёт устройство для экспорта. Экспорт LiteRT выполняется на CPU (device=cpu). |
В отличие от устаревшего экспорта tflite, LiteRT не требует отдельного экспорта FP16. Модель FP32 .tflite работает с половинной точностью во время выполнения при использовании GPU-делегата (WebGPU, OpenCL, Metal) — это официальный подход LiteRT к инференсу FP16.
Подробнее о процессе экспорта см. на странице документации Ultralytics об экспорте.
Развёртывание экспортированных моделей YOLO LiteRT#
После экспорта модели Ultralytics YOLO в LiteRT ты можешь развернуть её на разных платформах. Самый быстрый способ проверить её локально — метод YOLO("yolo26n.tflite"), показанный выше. Для развёртывания в других средах смотри следующие ресурсы:
Мобильные и встраиваемые устройства#
- Android: краткое руководство по интеграции LiteRT в приложения Android.
- iOS: руководство по интеграции и развёртыванию моделей LiteRT в приложениях iOS.
- Встраиваемый Linux и Raspberry Pi: запускай модели LiteRT на одноплатных компьютерах, при необходимости используя ускорение Coral Edge TPU.
- Микроконтроллеры: развёртывание на MCU всего с несколькими килобайтами памяти — среда выполнения занимает примерно 16 КБ на Arm Cortex-M3.
Браузер и Node.js (LiteRT.js)#
- Обзор LiteRT.js: запускай ту же модель
.tfliteнепосредственно в браузере с ускорением WebGPU/WASM, исключая вычисления на стороне сервера и сохраняя данные на устройстве пользователя. - Примеры от начала до конца: практические примеры и руководства по реализации LiteRT на мобильных, периферийных и веб-платформах.
Итоги#
В этом руководстве мы рассмотрели экспорт моделей Ultralytics YOLO в формат LiteRT. Объединяя развёртывание на мобильных и периферийных устройствах (ранее TFLite) и в браузере (ранее TF.js) в одну модель .tflite, LiteRT делает твои модели YOLO более быстрыми, компактными и переносимыми практически на любые устройства.
Подробнее смотри в официальной документации LiteRT.
Если тебе интересны другие интеграции Ultralytics YOLO, загляни на нашу страницу руководства по интеграциям, где ты найдёшь множество полезных ресурсов.
Часто задаваемые вопросы#
Используй библиотеку Ultralytics, чтобы экспортировать модель YOLO в LiteRT (
.tflite). Сначала установи пакет: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 по экспорту.
LiteRT — это новое название TensorFlow Lite: тот же формат модели
.tflite, та же архитектура среды выполнения, переименованная Google. В Ultralytics единый формат экспортаlitertтеперь охватывает оба сценария, для которых раньше требовались два отдельных формата:- Старый формат
tflite→ развёртывание на мобильных, встраиваемых и периферийных устройствах. - Старый формат
tfjs→ развёртывание в браузере и Node.js, которое теперь выполняется с помощью LiteRT.js, использующего тот же файл.tflite.
Если у тебя уже есть файл
.tflite, ты можешь загрузить его напрямую с помощьюYOLO("model.tflite"), и он будет выполняться через бэкенд LiteRT.- Старый формат
Да. Экспортируй модель в формат LiteRT, а затем запусти её на Raspberry Pi, чтобы повысить скорость инференса. Для дальнейшей оптимизации рассмотри Coral Edge TPU. Подробные инструкции смотри в нашем руководстве по развёртыванию на Raspberry Pi.
Да. LiteRT.js запускает ту же экспортированную модель
.tfliteнепосредственно в веб-браузере или приложении Node.js с ускорением WebGPU/WASM. Это заменяет прежний рабочий процесс TensorFlow.js — отдельный экспорт для браузера не нужен: просто разверни модель LiteRT с помощью среды выполнения LiteRT.js.Да — во время выполнения. Модель LiteRT FP32 автоматически работает в FP16 при запуске на GPU-делегате (WebGPU, OpenCL или Metal), что является официальным подходом LiteRT. Поэтому отдельный экспорт FP16 не нужен; для дополнительного сжатия используй INT8-квантизацию с
quantize=8.Если при экспорте моделей YOLO в LiteRT возникают ошибки, попробуй следующие распространённые решения:
- Проверь платформу: экспорт LiteRT поддерживается в Linux x86_64 и macOS. Убедись, что твоя среда соответствует этим требованиям.
- Проверь совместимость пакетов: убедись, что используешь совместимую версию Ultralytics. Обратись к нашему руководству по установке.
- Проблемы с квантизацией: при использовании INT8-квантизации убедись, что путь к датасету правильно указан в параметре
data.
Дополнительные советы по устранению неполадок смотри в нашем руководстве по распространённым проблемам.