Экспорт моделей YOLO в LiteRT для развёртывания на периферийных устройствах и в вебе#
LiteRT (сокращение от Lite Runtime) — высокопроизводительная среда выполнения Google для ИИ непосредственно на устройстве. Это новое поколение TensorFlow Lite (TFLite), использующее новый вариант названия, и оно работает с тем же форматом модели .tflite. С LiteRT одну экспортированную модель Ultralytics YOLO можно развернуть на мобильных и встраиваемых устройствах, периферийных устройствах и в браузере — возможности, для которых раньше требовались отдельные форматы экспорта tflite и tfjs, теперь объединены в одном решении.
Смотри: Как экспортировать Ultralytics YOLO26 в Google LiteRT | Развертывание ИИ для компьютерного зрения на Android и iOS | Мобильный ИИ 📱🚀
Формат экспорта LiteRT оптимизирует модели для таких задач, как обнаружение объектов, сегментация, оценка позы и классификация, обеспечивая быструю автономную работу на широком спектре устройств.
Официальный плагин Ultralytics YOLO для Flutter сразу запускает экспорты LiteRT .tflite на Android. Он поддерживает инференс с камеры в реальном времени, предсказания для одного изображения, ускорение на GPU и автоматическое скачивание моделей для всех семи задач YOLO26, включая глубину. Для устройств Apple используй экспорт CoreML, а для NPU Qualcomm Snapdragon — интеграцию Qualcomm QNN.
Экспортируй модели классификации с размером imgsz=224. Экспортируй модели detect, segment, semantic, depth, pose и OBB с размером imgsz=640. Этот стандарт 224/640 используется в официальных мобильных ресурсах LiteRT, CoreML и QNN.
Официальный npm-пакет Ultralytics YOLO запускает экспорты LiteRT .tflite прямо в браузере с помощью LiteRT.js — сервер и Python не нужны. Поддерживаются инференс с веб-камеры в реальном времени, предсказания для одного изображения и ускорение WebGPU (с автоматическим переходом на CPU/WASM) для шести задач YOLO26 (detect, segment, semantic, classify, pose, 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 17 / API 37. В его 3-нм Snapdragon 8 Elite Gen 5 (SM8850) установлены 8-ядерный CPU Qualcomm Oryon (2 Prime-ядра с частотой до 4.6 ГГц и 6 производительных ядер с частотой до 3.62 ГГц), GPU Adreno и NPU Hexagon.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) | NPU LiteRT FP32 (мс) |
|---|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 36.9 1.9 / 32.6 / 2.3 | 10.6 1.8 / 6.2 / 2.6 | 10.1 3.5 / 4.0 / 2.5 |
| YOLO26n-seg | Сегментация | 640 | 50.5 1.9 / 42.9 / 5.8 | 18.0 1.9 / 9.5 / 6.6 | 19.2 3.6 / 5.9 / 9.7 |
| YOLO26n-sem | Семантическая | 640 | 45.7 1.9 / 35.7 / 8.2 | 30.6 1.9 / 20.5 / 8.3 | 25.8 3.6 / 11.0 / 11.3 |
| YOLO26n-depth | Глубина | 640 | 66.8 2.2 / 55.0 / 9.7 | 21.9 2.1 / 10.1 / 9.8 | 24.8 4.3 / 6.0 / 14.5 |
| YOLO26n-cls | Классификация | 224 | 3.6 0.3 / 3.3 / 0.0 | 2.0 0.4 / 1.4 / 0.2 | 1.5 0.6 / 0.7 / 0.3 |
| YOLO26n-pose | Поза | 640 | 39.9 2.0 / 36.5 / 1.4 | 10.0 1.8 / 6.7 / 1.4 | 11.5 3.5 / 4.2 / 3.8 |
| YOLO26n-obb | OBB | 640 | 36.3 2.0 / 33.2 / 1.2 | 10.1 2.6 / 5.9 / 1.6 | 8.2 3.5 / 3.7 / 0.9 |
- Значения скорости — это задержки при пакетном инференсе одного изображения: среднее значение по 15 запускам после 3 прогревочных запусков на
bus.jpg, измеренное с помощью плагина Ultralytics для Flutter0.7.1и официальных ресурсовv0.7.0(экспортировано в Ultralytics 8.4.188). Порядок 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-ресурсы размещены в релизе yolo-flutter-appv0.7.0, а подробная запись результатов бенчмарка приведена в документе о производительности Flutter. - Столбец NPU показывает результаты собственного пути NPU в LiteRT: экспорт FP32 (
yolo export format=litert, безquantize), скомпилированный на устройстве средами выполненияlitert-npu-runtime-qualcommи-mediatekверсии 2.3.0; измерения проведены с прототипной сборкой плагина Flutter для NPU (пока не выпущена). При первой загрузке выполняется компиляция (около 0.3 с дляn, до 6 с дляx). Ресурсыw8a32не компилируются полностью на этих NPU. LiteRT сообщает о компиляции для NPU, даже если незаметно выполняет граф на GPU, поэтому каждую строку NPU сверяли со временем GPU; строки с переходом на другой процессор обозначены символом —. - Соответствующие результаты для NPU Hexagon Snapdragon с официальными ресурсами QNN приведены в разделе интеграция Qualcomm QNN.
- Сравни результаты для CPU и ускорителя Apple в разделе интеграции CoreML.
В следующих сериях тестов на устройствах используются те же официальные ресурсы v0.7.0.
Google Pixel 10#
Оборудование: Google Pixel 10 с 12 ГБ памяти и Android 17 / API 37. В его 3-нм Google Tensor G5 установлены 8-ядерный CPU (1 Prime-ядро с частотой до 3.78 ГГц, 5 производительных ядер с частотой до 3.05 ГГц и 2 энергоэффективных ядра с частотой до 2.25 ГГц), GPU PowerVR D-Series и TPU Google. Тактовые частоты ядер и название драйвера GPU считаны с устройства для тестирования, поскольку Google не публикует их в спецификациях по ссылкам.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) |
|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 36.6 1.5 / 33.5 / 1.6 | 36.5 3.5 / 28.4 / 4.6 |
| YOLO26n-seg | Сегментация | 640 | 53.1 1.5 / 45.8 / 5.7 | 51.5 1.6 / 40.1 / 9.9 |
| YOLO26n-sem | Семантическая | 640 | 57.2 1.5 / 47.7 / 8.0 | 75.9 1.8 / 63.4 / 10.8 |
| YOLO26n-depth | Глубина | 640 | 75.0 1.6 / 65.1 / 8.3 | 50.1 1.7 / 33.5 / 14.9 |
| YOLO26n-cls | Классификация | 224 | 6.1 0.3 / 5.5 / 0.3 | 12.1 0.9 / 11.0 / 0.1 |
| YOLO26n-pose | Поза | 640 | 35.2 1.5 / 31.9 / 1.8 | 38.2 3.5 / 29.3 / 5.4 |
| YOLO26n-obb | OBB | 640 | 32.7 1.5 / 29.3 / 1.9 | 38.8 3.8 / 29.6 / 5.4 |
Тестирование: среднее значение по 15 вызовам predict() после 3 прогревочных запусков на bus.jpg с использованием ultralytics_yolo 0.7.1 и официальных ресурсов v0.7.0. Порядок CPU/GPU чередуется для разных задач в одном последовательном прогоне. В нативных логах подтверждено, что для каждой строки CPU использовались LiteRT CPU/XNNPACK, а для каждой строки GPU весь граф выполнялся через LiteRT OpenCL (LITERT_CL). Для Tensor NPU нет строки LiteRT: сервис EdgeTPU от Google отклоняет приложения, которых нет в списке разрешённых, после чего LiteRT запускает модель на GPU.
Samsung Galaxy S26#
Оборудование: Samsung Galaxy S26 (SM-S942B) с 12 ГБ памяти и Android 17 / API 37. В его 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 (мс) | NPU LiteRT w8a32 AOT (мс) |
|---|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 30.2 1.3 / 27.3 / 1.6 | 15.9 1.4 / 11.5 / 2.9 | 12.2 1.3 / 8.6 / 2.2 |
| YOLO26n-seg | Сегментация | 640 | 45.6 1.3 / 39.1 / 5.2 | 30.5 1.3 / 23.6 / 5.6 | 17.0 1.4 / 9.7 / 5.8 |
| YOLO26n-sem | Семантическая | 640 | 38.1 1.3 / 28.6 / 8.2 | 26.1 1.3 / 16.8 / 7.9 | 28.3 1.7 / 15.1 / 11.5 |
| YOLO26n-depth | Глубина | 640 | 63.5 1.4 / 53.6 / 8.4 | 37.3 1.4 / 24.6 / 11.3 | 28.4 2.1 / 12.9 / 13.4 |
| YOLO26n-cls | Классификация | 224 | 3.8 0.2 / 3.4 / 0.2 | 2.8 0.2 / 2.6 / 0.0 | 6.1 0.5 / 5.2 / 0.4 |
| YOLO26n-pose | Поза | 640 | 31.1 1.3 / 28.4 / 1.4 | 18.4 1.6 / 13.0 / 3.8 | 13.5 1.8 / 9.5 / 2.2 |
| YOLO26n-obb | OBB | 640 | 27.9 1.3 / 25.7 / 0.9 | 15.3 1.9 / 11.4 / 2.1 | 11.4 1.7 / 8.3 / 1.4 |
Тестирование: среднее значение по 15 вызовам predict() после 3 прогревочных запусков на bus.jpg с использованием ultralytics_yolo 0.7.1 и официальных ресурсов v0.7.0. Порядок CPU/GPU чередуется для разных задач в одном последовательном прогоне. В нативных логах подтверждено, что для каждой строки CPU использовались LiteRT CPU/XNNPACK, а для каждой строки GPU весь граф выполнялся через LiteRT OpenCL (LITERT_CL). В столбце NPU указаны результаты для ресурсов w8a32, заранее скомпилированных для Exynos 2600 (E9965) с помощью плагина компилятора Samsung для LiteRT. В LiteRT 2.3 нет встроенного компилятора Samsung для устройств, а Google пока не выпускает среду выполнения для NPU Samsung, поэтому в этих строках использовалась библиотека диспетчеризации, собранная из исходного кода LiteRT 2.3.
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 990.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | GPU w8a32 LiteRT (мс) | NPU LiteRT FP32 (мс) |
|---|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 31.4 1.5 / 28.0 / 1.9 | 25.6 1.4 / 22.2 / 2.0 | 11.0 1.3 / 7.8 / 1.8 |
| YOLO26n-seg | Сегментация | 640 | 77.8 2.6 / 65.3 / 9.9 | 47.4 2.6 / 33.6 / 11.3 | 36.5 2.6 / 23.4 / 10.4 |
| YOLO26n-sem | Семантическая | 640 | 81.3 2.6 / 62.2 / 16.5 | 79.3 2.6 / 59.5 / 17.1 | 87.6 2.6 / 68.3 / 16.7 |
| YOLO26n-depth | Глубина | 640 | 111.3 3.4 / 91.1 / 16.8 | 55.3 2.8 / 36.3 / 16.1 | — |
| YOLO26n-cls | Классификация | 224 | 6.3 0.5 / 5.4 / 0.4 | 8.1 0.5 / 7.5 / 0.1 | 3.2 0.5 / 2.2 / 0.5 |
| YOLO26n-pose | Поза | 640 | 53.9 2.6 / 49.5 / 1.8 | 32.8 2.7 / 26.7 / 3.4 | 16.2 2.9 / 11.1 / 2.3 |
| YOLO26n-obb | OBB | 640 | 49.5 2.7 / 44.4 / 2.4 | 29.4 2.8 / 22.7 / 3.9 | — |
Бенчмарк: среднее значение по 15 вызовам predict() после 3 прогревочных запусков на bus.jpg с использованием ultralytics_yolo 0.7.1 и официальных ресурсов v0.7.0. Порядок CPU/GPU чередуется между задачами в одном последовательном цикле. В нативных логах подтверждено, что для всех строк CPU использовались LiteRT CPU/XNNPACK, а для всех строк GPU полный вычислительный граф обрабатывался LiteRT OpenCL (LITERT_CL). Для Depth и OBB результаты NPU отсутствуют: компилятор MediaTek NPU не поддерживает экспоненциальные и тригонометрические операции в этих моделях, поэтому LiteRT запускает эти графы на GPU.
Поддерживаемые задачи#
Экспорт 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 поддерживает режимы Экспорт, Предсказание и Валидация, поэтому ты можешь экспортировать модель, а затем загрузить её для запуска инференса или локальной проверки точности.
from ultralytics import YOLO
# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")
# Экспортировать модель в формат LiteRT
model.export(format="litert", imgsz=640) # создаёт 'yolo26n.tflite'; для классификации используй imgsz=224from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Динамический INT8: веса int8, активации FP32 — калибровочные данные не нужны
model.export(format="litert", quantize="w8a32", imgsz=640) # создаёт 'yolo26n_w8a32.tflite'
# Статический INT8: веса int8 + активации int8 — нужны калибровочные данные
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640) # создаёт 'yolo26n_int8.tflite'
# Статический w8a16: веса int8 + активации int16 (более высокая точность) — нужны калибровочные данные
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640) # создаёт 'yolo26n_w8a16.tflite'from ultralytics import YOLO
# Загрузить экспортированную модель LiteRT
model = YOLO("yolo26n.tflite")
# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Загрузить экспортированную модель LiteRT
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 не экспортируется отдельно (см. примечание ниже). Заменяет устаревшие флаги half/int8. |
batch | int | 1 | Задаёт размер пакета изображений для инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict. |
data | str | None | YAML-файл датасета, используемый для калибровки INT8; для классификации вместо него укажи каталог датасета или название встроенного датасета. Если параметр не задан вместе с quantize=8 или 'w8a16', Ultralytics выбирает датасет калибровки по умолчанию для этой задачи модели. |
fraction | float, int или list | 1.0 | Подмножество для калибровки, заданное как доля, количество изображений или [train, val, test] отношения/количества. Если список содержит два элемента, test остаётся без изменений, а 0 пропускает его. |
device | str | None | Задаёт устройство для экспорта. Экспорт LiteRT выполняется на CPU (device=cpu). |
В отличие от прежнего экспорта tflite, LiteRT не требует отдельного экспорта FP16. Модель .tflite с FP32 работает в режиме половинной точности во время выполнения, если используется делегат GPU (WebGPU, OpenCL, Metal) — это официальный подход LiteRT к инференсу FP16.
Подробнее о процессе экспорта смотри на странице документации Ultralytics об экспорте.
Инференс на CPU и NPU Intel#
Экспортированные модели .tflite работают на оборудовании Intel через плагин LiteRT Intel OpenVINO. Укажи device=intel:cpu или device=intel:npu, и при первом использовании Ultralytics установит ai-edge-litert>=2.3.0 и ai-edge-litert-sdk-intel. Для работы NPU требуется процессор Intel Core Ultra с установленным драйвером Intel NPU.
from ultralytics import YOLO
model = YOLO("yolo26n.tflite")
results = model("https://ultralytics.com/images/bus.jpg", device="intel:npu") # или "intel:cpu"Оборудование: Intel Core Ultra X7 358H (Panther Lake) и Intel AI Boost NPU 5010, Fedora Linux, драйвер NPU 1.38.0, ai-edge-litert 2.3.0.
| Модель | Задача | размер (пиксели) | CPU w8a32 LiteRT (мс) | CPU w8a32 Intel (мс) | NPU w8a32 Intel (мс) |
|---|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 17.5 0.8 / 16.1 / 0.6 | 22.6 1.2 / 20.6 / 0.8 | 4.8 1.0 / 3.3 / 0.4 |
| YOLO26n-seg | Сегментация | 640 | 24.2 0.9 / 22.1 / 1.3 | 32.6 1.0 / 30.1 / 1.5 | 6.2 0.8 / 4.2 / 1.2 |
| YOLO26n-sem | Семантическая | 640 | 25.2 1.0 / 14.2 / 10.0 | 33.1 1.1 / 21.9 / 10.2 | 16.5 1.0 / 5.5 / 10.0 |
| YOLO26n-depth | Глубина | 640 | 31.7 0.9 / 30.2 / 0.5 | 76.6 0.9 / 75.2 / 0.5 | 9.1 1.0 / 7.5 / 0.5 |
| YOLO26n-cls | Классификация | 224 | 4.6 2.8 / 1.7 / 0.0 | 7.3 3.3 / 3.9 / 0.0 | 4.1 3.2 / 0.9 / 0.0 |
| YOLO26n-pose | Поза | 640 | 20.3 0.8 / 19.0 / 0.5 | 28.6 1.1 / 26.8 / 0.8 | 6.3 0.8 / 4.9 / 0.5 |
| YOLO26n-obb | OBB | 640 | 17.2 0.8 / 16.1 / 0.3 | 22.1 1.2 / 20.5 / 0.4 | 4.6 0.9 / 3.4 / 0.3 |
Бенчмарк: среднее значение для 15 вызовов predict() после 3 прогревочных вызовов на bus.jpg с использованием ultralytics 8.4.174 и ai-edge-litert 2.3.0 для экспорта w8a32. В каждой ячейке указано общее время, а ниже — разбивка на предобработку / инференс / постобработку.
Развёртывание экспортированных моделей 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 # Загрузи модель 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 по экспорту.
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 delegate (WebGPU, OpenCL или Metal) — это официальный подход LiteRT. Поэтому отдельный экспорт FP16 не нужен; для дополнительного сжатия используй квантование INT8 с
quantize=8.Если при экспорте моделей YOLO в LiteRT возникают ошибки, попробуй следующие распространённые решения:
- Проверь платформу: экспорт в LiteRT поддерживается в Linux x86_64 и macOS. Убедись, что твоя среда соответствует этим требованиям.
- Проверь совместимость пакетов: убедись, что используешь совместимую версию Ultralytics. Инструкции смотри в нашем руководстве по установке.
- Проблемы с квантованием: при квантовании INT8 убедись, что путь к набору данных правильно указан в параметре
data.
Дополнительные советы по устранению неполадок смотри в нашем руководстве по распространённым проблемам.