Exporter des modèles YOLO vers LiteRT pour un déploiement sur les appareils edge et le Web#
LiteRT (abréviation de Lite Runtime) est le runtime haute performance de Google pour l'IA sur appareil. Il s'agit de la prochaine génération et du nouveau nom de TensorFlow Lite (TFLite), et il exécute le même format de modèle .tflite. Avec LiteRT, un seul modèle Ultralytics YOLO exporté se déploie sur les appareils mobiles, embarqués, edge et les navigateurs — couvrant tout ce que les anciens formats d'export tflite et tfjs géraient séparément, désormais réunis sous une même bannière.
Watch: How to Export Ultralytics YOLO26 to Google LiteRT | Deploy Vision AI on Android & iOS | Mobile AI 📱🚀
Le format d'export LiteRT optimise tes modèles pour des tâches telles que la détection d'objets, la segmentation, l'estimation de pose et la classification, afin qu'ils s'exécutent rapidement et hors ligne sur un large éventail d'appareils.
Le plugin Flutter officiel Ultralytics YOLO exécute immédiatement les exports LiteRT .tflite sur Android — inférence en temps réel depuis la caméra, prédiction sur une seule image, accélération GPU et téléchargement automatique du modèle pour les sept tâches YOLO26, y compris Depth. Pour les appareils Apple, utilise l'export CoreML ; pour les NPU Qualcomm Snapdragon, consulte l'intégration Qualcomm QNN.
Exporte les modèles de classification avec imgsz=224. Exporte les modèles de détection, segmentation, segmentation sémantique, profondeur, pose et OBB avec
imgsz=640. Ce standard 224/640 est commun aux ressources mobiles officielles LiteRT, CoreML et QNN.
Le package NPM officiel Ultralytics YOLO exécute directement dans le navigateur les exports LiteRT .tflite via LiteRT.js, sans serveur ni Python — avec inférence en temps réel depuis la webcam, prédiction sur une seule image et accélération WebGPU (repli automatique sur CPU/WASM) pour les six tâches YOLO26 (détection, segmentation, pose, OBB, classification, segmentation sémantique). Avec WebGPU, il est souvent ~2× plus rapide qu'ONNX Runtime Web.
npm i @ultralytics/yolo @litertjs/corePourquoi exporter vers LiteRT ?#
LiteRT est un framework open source conçu pour l'inférence sur appareil, également appelé informatique edge. Il fournit aux développeurs les outils nécessaires pour exécuter des modèles entraînés sur des appareils mobiles, embarqués et IoT, des ordinateurs traditionnels et — grâce à LiteRT.js — directement dans les navigateurs Web et Node.js.
Un format de modèle, toutes les cibles :
- Mobile et embarqué : Android, iOS, Linux embarqué et microcontrôleurs (MCU).
- Accélérateurs edge : compatible avec le Coral Edge TPU pour une accélération supplémentaire.
- Navigateur et Node.js : LiteRT.js exécute le même modèle
.tflitesur le Web avec l'accélération WebGPU/WASM — ce qui évite d'avoir besoin d'un export TensorFlow.js distinct.
Fonctionnalités clés des modèles LiteRT#
- Optimisation sur appareil : réduit la latence en traitant les données localement, renforce la confidentialité en évitant de transmettre les données personnelles et réduit la taille du modèle pour économiser de l'espace.
- Prise en charge de plusieurs plateformes : fonctionne sur Android, iOS, Linux embarqué, les microcontrôleurs et les navigateurs Web modernes.
- Accélération matérielle : exploite XNNPACK sur CPU et l'accélération GPU via OpenCL, Metal et WebGPU. Le délégué GPU utilise FP16 par défaut pour offrir une vitesse supplémentaire.
- Quantification : prend en charge FP32, INT8 statique (
quantize=8, poids int8 + activations int8), INT16-activation statique (quantize="w8a16", poids int8 + activations int16 pour une meilleure précision) et INT8 dynamique (quantize="w8a32", poids int8 + activations FP32, sans données d'étalonnage nécessaires) afin de compresser les modèles et d'accélérer l'inférence avec une perte minimale de précision. - Prise en charge de divers langages : compatible avec Java/Kotlin, Swift, Objective-C, C++, Python et JavaScript.
Performances mesurées#
Matériel : Xiaomi 17 avec 12 Go de mémoire LPDDR5X et Android 16 / API 36. Son Snapdragon 8 Elite Gen 5 gravé en 3 nm (SM8850) possède un CPU Qualcomm Oryon à 8 cœurs (2 cœurs Prime jusqu'à 4,6 GHz et 6 cœurs Performance jusqu'à 3,62 GHz), un GPU Adreno et un NPU Hexagon.
| Modèle | Tâche | taille (pixels) | CPU LiteRT w8a32 (ms) | GPU LiteRT w8a32 (ms) |
|---|---|---|---|---|
| YOLO26n | Détection | 640 | 52.2 1.8 / 48.1 / 2.4 | 15.8 2.3 / 8.9 / 4.6 |
| YOLO26n-seg | Segmentation | 640 | 73.4 1.8 / 65.6 / 6.0 | 33.2 1.8 / 23.8 / 7.6 |
| YOLO26n-sem | Sémantique | 640 | 61.2 1.8 / 51.1 / 8.3 | 34.2 1.8 / 24.0 / 8.3 |
| YOLO26n-depth | Profondeur | 640 | 124.4 1.9 / 115.1 / 7.4 | 23.0 1.8 / 13.5 / 7.7 |
| YOLO26n-cls | Classification | 224 | 4.4 0.4 / 4.0 / 0.0 | 3.1 0.8 / 2.1 / 0.2 |
| YOLO26n-pose | 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 |
- Les valeurs de vitesse sont des latences en rafale sur une seule image — la moyenne de 15 exécutions après 3 exécutions d'échauffement sur
bus.jpg, mesurées avec le plugin Flutter Ultralytics0.6.10et les ressources standardiséesv0.6.6. L'ordre CPU/GPU alternait entre les tâches au cours d'un balayage séquentiel unique. Les journaux natifs ont confirmé que chaque ligne CPU utilisait LiteRT CPU/XNNPACK et que chaque ligne GPU déléguait le graphe complet à LiteRT OpenCL (LITERT_CL). - L'export LiteRT retrace directement le modèle PyTorch et produit un
.tfliteNCHW avec une entrée flottante — le délégué GPU compile le graphe complet (les sept tâches s'exécutent ici sur le GPU Adreno), etw8a32ne nécessite aucune donnée d'étalonnage. Les utilisateurs doivent lire les formes des tenseurs et les noms des signatures plutôt que de supposer l'ancienne disposition NHWC d'onnx2tf ou les noms de sortieIdentity; emballe les données RGB directement au format planaire CHW ou transpose-les avant l'inférence. Les exports sémantiques renvoient des logits NCHW et nécessitent un argmax des classes côté hôte. Les ressources Android officielles sont hébergées dans la releasev0.6.6de yolo-flutter-app, avec le relevé détaillé des benchmarks dans le document sur les performances Flutter. - Les résultats du NPU Hexagon Snapdragon correspondant et les valeurs LiteRT CPU/GPU se trouvent dans l'intégration Qualcomm QNN.
- Compare les résultats CPU/accélérateur Apple dans l'intégration CoreML.
Les balayages des appareils ci-dessous utilisent les mêmes ressources standardisées v0.6.6.
Google Pixel 10#
Matériel : Google Pixel 10 avec 12 Go de mémoire et Android 16 / API 36. Son Google Tensor G5 gravé en 3 nm possède un CPU à 8 cœurs (1 cœur Prime jusqu'à 3,78 GHz, 5 cœurs Performance jusqu'à 3,05 GHz et 2 cœurs Efficiency jusqu'à 2,25 GHz), un GPU PowerVR D-Series et un TPU Google. Les fréquences des cœurs et le nom du pilote GPU ont été lus sur l'appareil de benchmark, car Google ne les publie pas dans les spécifications liées.
| Modèle | Tâche | taille (pixels) | CPU LiteRT w8a32 (ms) | GPU LiteRT w8a32 (ms) |
|---|---|---|---|---|
| YOLO26n | Détection | 640 | 53.3 1.5 / 50.2 / 1.6 | 45.5 3.8 / 37.7 / 4.0 |
| YOLO26n-seg | Segmentation | 640 | 87.7 1.8 / 78.5 / 7.5 | 50.9 3.0 / 36.9 / 10.9 |
| YOLO26n-sem | Sémantique | 640 | 68.6 1.5 / 59.0 / 8.0 | 71.6 1.5 / 59.5 / 10.6 |
| YOLO26n-depth | Profondeur | 640 | 120.3 1.5 / 112.5 / 6.3 | 52.5 2.0 / 37.5 / 13.0 |
| YOLO26n-cls | Classification | 224 | 4.0 0.3 / 3.4 / 0.2 | 17.6 0.9 / 16.7 / 0.1 |
| YOLO26n-pose | 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 |
Benchmark : moyenne de 15 appels predict() après 3 échauffements sur bus.jpg, avec ultralytics_yolo 0.6.10 et les ressources officielles v0.6.6. L'ordre CPU/GPU alterne entre les tâches au cours d'un balayage séquentiel unique. Les journaux natifs ont confirmé que chaque ligne CPU utilisait LiteRT CPU/XNNPACK et que chaque ligne GPU déléguait le graphe complet à LiteRT OpenCL (LITERT_CL).
Samsung Galaxy S26#
Matériel : Samsung Galaxy S26 (SM-S942B) avec 12 Go de mémoire et Android 16 / API 36. Son Exynos 2600 gravé en 2 nm possède un CPU Armv9.3 à 10 cœurs (1 cœur C1-Ultra jusqu'à 3,8 GHz, 3 cœurs C1-Pro Performance jusqu'à 3,26 GHz et 6 cœurs C1-Pro Efficiency jusqu'à 2,76 GHz), un GPU Xclipse 960 et un NPU Samsung.
| Modèle | Tâche | taille (pixels) | CPU LiteRT w8a32 (ms) | GPU LiteRT w8a32 (ms) |
|---|---|---|---|---|
| YOLO26n | Détection | 640 | 36.7 1.3 / 33.8 / 1.7 | 16.4 1.4 / 12.3 / 2.6 |
| YOLO26n-seg | Segmentation | 640 | 54.6 1.2 / 48.0 / 5.3 | 32.8 1.3 / 24.5 / 7.0 |
| YOLO26n-sem | Sémantique | 640 | 47.8 1.2 / 38.4 / 8.1 | 34.2 1.3 / 24.9 / 8.0 |
| YOLO26n-depth | Profondeur | 640 | 92.9 1.2 / 84.8 / 6.9 | 33.5 1.3 / 22.4 / 9.8 |
| YOLO26n-cls | Classification | 224 | 2.7 0.2 / 2.3 / 0.2 | 2.6 0.2 / 2.4 / 0.0 |
| YOLO26n-pose | 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 |
Benchmark : moyenne de 15 appels predict() après 3 échauffements sur bus.jpg, avec ultralytics_yolo 0.6.10 et les ressources officielles v0.6.6. L'ordre CPU/GPU alterne entre les tâches au cours d'un balayage séquentiel unique. Les journaux natifs ont confirmé que chaque ligne CPU utilisait LiteRT CPU/XNNPACK et que chaque ligne GPU déléguait le graphe complet à LiteRT OpenCL (LITERT_CL).
Xiaomi 17T Pro#
Matériel : Xiaomi 17T Pro (2602EPTC0G) avec 12 Go de mémoire LPDDR5X et Android 16 / API 36. Son MediaTek Dimensity 9500 (MT6993) possède un CPU Armv9.3 à 8 cœurs (1 cœur C1-Ultra jusqu'à 4,21 GHz, 3 cœurs C1-Premium jusqu'à 3,5 GHz et 4 cœurs C1-Pro jusqu'à 2,7 GHz), un GPU Mali-G1 Ultra MC12 et un NPU MediaTek 990.
| Modèle | Tâche | taille (pixels) | CPU LiteRT w8a32 (ms) | GPU LiteRT w8a32 (ms) |
|---|---|---|---|---|
| YOLO26n | Détection | 640 | 45.4 1.3 / 42.1 / 2.0 | 26.6 1.9 / 22.0 / 2.7 |
| YOLO26n-seg | Segmentation | 640 | 126.2 2.6 / 113.9 / 9.7 | 46.7 2.6 / 33.3 / 10.8 |
| YOLO26n-sem | Sémantique | 640 | 117.9 2.6 / 98.8 / 16.5 | 74.3 2.6 / 54.7 / 17.0 |
| YOLO26n-depth | Profondeur | 640 | 182.4 2.5 / 167.6 / 12.3 | 47.8 2.5 / 32.3 / 12.9 |
| YOLO26n-cls | Classification | 224 | 6.2 0.4 / 5.3 / 0.4 | 7.4 0.4 / 6.9 / 0.1 |
| YOLO26n-pose | 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 |
Benchmark : moyenne de 15 appels predict() après 3 échauffements sur bus.jpg, avec ultralytics_yolo 0.6.10 et les ressources officielles v0.6.6. L'ordre CPU/GPU alterne entre les tâches au cours d'un balayage séquentiel unique. Les journaux natifs ont confirmé que chaque ligne CPU utilisait LiteRT CPU/XNNPACK et que chaque ligne GPU déléguait le graphe complet à LiteRT OpenCL (LITERT_CL).
Tâches prises en charge#
L'export LiteRT prend en charge les sept tâches Ultralytics. La segmentation sémantique et l'estimation de profondeur sont disponibles uniquement avec YOLO26, la seule famille à proposer ces têtes.
| Tâche | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Détection | ✅ | ✅ | ✅ |
| Segmentation | ✅ | ✅ | ✅ |
| Sémantique | ❌ | ❌ | ✅ |
| Profondeur | ❌ | ❌ | ✅ |
| Classification | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exporter vers LiteRT : convertir ton modèle YOLO#
Tu peux améliorer l'efficacité de l'exécution sur appareil et élargir les options de déploiement en convertissant tes modèles au format LiteRT.
Installation#
Pour installer le package requis, exécute :
# Install the required package for YOLO
pip install ultralyticsPour obtenir des instructions détaillées et les meilleures pratiques, consulte notre guide d'installation Ultralytics. Si tu rencontres des difficultés, consulte notre guide des problèmes courants.
L'export LiteRT est actuellement pris en charge sur Linux x86_64 et macOS. Le modèle .tflite exporté s'exécute lui-même sur toutes les plateformes prises en charge par LiteRT (mobile, embarqué, edge et navigateur).
Utilisation#
Tous les modèles Ultralytics YOLO prennent en charge l'export immédiatement. Le format LiteRT prend en charge les modes Export, Predict et Validate, ce qui te permet d'exporter un modèle, puis de le charger pour exécuter une inférence ou valider sa précision localement.
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")Arguments d'exportation#
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
format | str | 'litert' | Format cible du modèle exporté, définissant sa compatibilité avec différents environnements de déploiement. |
imgsz | int ou tuple | 640 | Taille d’image souhaitée pour l’entrée du modèle. Peut être un entier pour les images carrées ou un tuple (height, width) pour des dimensions spécifiques. |
quantize | int ou str | None | Précision de quantification : 8 (INT8 statique, poids int8 + activations int8 ; nécessite l'étalonnage data/fraction), 'w8a16' (statique, poids int8 + activations int16 ; nécessite l'étalonnage data/fraction), 'w8a32' (INT8 dynamique, poids int8 + activations FP32 ; aucun étalonnage nécessaire) ou 32/non défini (FP32). FP16 n'est pas exporté séparément (voir la note ci-dessous). Remplace les indicateurs obsolètes half/int8. |
batch | int | 1 | Indique la taille du lot d'inférence du modèle exporté ou le nombre maximal d'images que le modèle exporté traitera simultanément en mode predict. |
data | str | None | Fichier YAML du jeu de données utilisé pour l'étalonnage INT8 ; la classification utilise à la place un répertoire de données ou le nom d'un jeu de données intégré. S'il est omis avec quantize=8 ou 'w8a16', Ultralytics sélectionne le jeu de données d'étalonnage par défaut pour la tâche du modèle. |
device | str | None | Spécifie l'appareil utilisé pour l'exportation. L'exportation LiteRT s'exécute sur le CPU (device=cpu). |
Contrairement à l'ancienne exportation tflite, LiteRT ne nécessite pas d'exportation FP16 distincte. Un modèle FP32 .tflite s'exécute en demi-précision à l'exécution avec un délégué GPU (WebGPU, OpenCL, Metal) — il s'agit de l'approche officielle de LiteRT pour l'inférence FP16.
Pour plus de détails sur le processus d’exportation, consulte la page de la documentation Ultralytics consacrée à l’exportation.
Déployer des modèles YOLO LiteRT exportés#
Après avoir exporté ton modèle Ultralytics YOLO vers LiteRT, tu peux le déployer sur différentes plateformes. La méthode la plus rapide pour le vérifier localement est la méthode YOLO("yolo26n.tflite") présentée ci-dessus. Pour le déploiement dans d'autres environnements, consulte les ressources suivantes :
Mobile et systèmes embarqués#
- Android : guide de démarrage rapide pour intégrer LiteRT aux applications Android.
- iOS : guide pour intégrer et déployer des modèles LiteRT dans les applications iOS.
- Linux embarqué et Raspberry Pi : exécute des modèles LiteRT sur des ordinateurs monocartes, avec une accélération facultative par un Coral Edge TPU.
- Microcontrôleurs : déploie sur des MCU disposant de seulement quelques kilo-octets de mémoire — le runtime principal tient dans environ 16 Ko sur un Arm Cortex-M3.
Navigateur et Node.js (LiteRT.js)#
- Présentation de LiteRT.js : exécute le même modèle
.tflitedirectement dans le navigateur avec l'accélération WebGPU/WASM, ce qui élimine les calculs côté serveur et conserve les données sur l'appareil de l'utilisateur. - Exemples de bout en bout : exemples pratiques et tutoriels pour implémenter LiteRT sur mobile, en périphérie et sur le Web.
Résumé#
Dans ce guide, nous avons expliqué comment exporter des modèles Ultralytics YOLO au format LiteRT. En regroupant le déploiement mobile/en périphérie (anciennement TFLite) et dans le navigateur (anciennement TF.js) au sein d'un seul modèle .tflite, LiteRT rend tes modèles YOLO plus rapides, plus compacts et portables sur pratiquement toutes les cibles exécutant l'inférence sur l'appareil.
Pour plus de détails, consulte la documentation officielle de LiteRT.
Si tu veux également découvrir d'autres intégrations Ultralytics YOLO, consulte notre page du guide des intégrations, qui propose de nombreuses ressources utiles.
FAQ#
LiteRT est le nouveau nom de TensorFlow Lite — le même format de modèle
.tflite, la même lignée de runtime, rebaptisée par Google. Dans Ultralytics, le format d'exportation uniquelitertcouvre désormais les deux cas d'utilisation qui nécessitaient auparavant deux formats distincts :- L'ancien format
tflite→ déploiement mobile, embarqué et en périphérie. - L'ancien format
tfjs→ déploiement dans le navigateur et avec Node.js, désormais pris en charge par LiteRT.js, qui exécute le même fichier.tflite.
Si tu possèdes un fichier
.tfliteexistant, tu peux le charger directement avecYOLO("model.tflite"), et il s'exécutera via le backend LiteRT.- L'ancien format
Oui. Exporte ton modèle au format LiteRT, puis exécute-le sur un Raspberry Pi pour accélérer l'inférence. Pour une optimisation supplémentaire, envisage un Coral Edge TPU. Pour connaître les étapes détaillées, consulte notre guide de déploiement sur Raspberry Pi.
Oui — à l'exécution. Un modèle LiteRT FP32 s'exécute automatiquement en FP16 lorsqu'il est exécuté sur un délégué GPU (WebGPU, OpenCL ou Metal), ce qui constitue l'approche officielle de LiteRT. Tu n'as donc pas besoin d'une exportation FP16 dédiée ; pour une compression supplémentaire, utilise la quantification INT8 avec
quantize=8.Si tu rencontres des erreurs lors de l'exportation de modèles YOLO vers LiteRT, les solutions courantes comprennent :
- Vérifie la plateforme : l'exportation LiteRT est prise en charge sur Linux x86_64 et macOS. Vérifie que ton environnement correspond.
- Vérifie la compatibilité du paquet : assure-toi d'utiliser une version compatible d'Ultralytics. Consulte notre guide d'installation.
- Problèmes de quantification : lors de l'utilisation de la quantification INT8, assure-toi que le chemin de ton jeu de données est correctement indiqué dans le paramètre
data.
Pour obtenir d'autres conseils de dépannage, consulte notre guide des problèmes courants.
Utilise la bibliothèque Ultralytics pour exporter un modèle YOLO vers LiteRT (
.tflite). Commence par installer le paquet :Exporte ensuite ton modèle :
Pour les utilisateurs de la CLI :
Pour plus de détails, consulte le guide d'exportation d'Ultralytics.