Ultralytics YOLO27 :

Exporter des modèles YOLO vers LiteRT pour un déploiement sur les appareils edge et le Web#

LiteRT edge deployment framework

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.

Exécute YOLO sur Android avec LiteRT dès aujourd'hui via le plugin Flutter officiel

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.

Tailles d’entrée mobiles officielles

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.

Exécute YOLO sur le Web avec LiteRT.js dès aujourd'hui via le package npm officiel @ultralytics/yolo

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/core

Pourquoi 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 .tflite sur 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èleTâchetaille
(pixels)
CPU
LiteRT w8a32
(ms)
GPU
LiteRT w8a32
(ms)
YOLO26nDétection64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
YOLO26n-segSegmentation64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
YOLO26n-semSémantique64061.2
1.8 / 51.1 / 8.3
34.2
1.8 / 24.0 / 8.3
YOLO26n-depthProfondeur640124.4
1.9 / 115.1 / 7.4
23.0
1.8 / 13.5 / 7.7
YOLO26n-clsClassification2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
YOLO26n-posePose64057.4
1.8 / 53.8 / 1.8
16.6
2.7 / 10.1 / 3.9
YOLO26n-obbOBB64050.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 Ultralytics 0.6.10 et les ressources standardisées v0.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 .tflite NCHW 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), et w8a32 ne 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 sortie Identity ; 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 release v0.6.6 de 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èleTâchetaille
(pixels)
CPU
LiteRT w8a32
(ms)
GPU
LiteRT w8a32
(ms)
YOLO26nDétection64053.3
1.5 / 50.2 / 1.6
45.5
3.8 / 37.7 / 4.0
YOLO26n-segSegmentation64087.7
1.8 / 78.5 / 7.5
50.9
3.0 / 36.9 / 10.9
YOLO26n-semSémantique64068.6
1.5 / 59.0 / 8.0
71.6
1.5 / 59.5 / 10.6
YOLO26n-depthProfondeur640120.3
1.5 / 112.5 / 6.3
52.5
2.0 / 37.5 / 13.0
YOLO26n-clsClassification2244.0
0.3 / 3.4 / 0.2
17.6
0.9 / 16.7 / 0.1
YOLO26n-posePose64059.7
1.5 / 57.0 / 1.2
46.6
3.8 / 39.2 / 3.5
YOLO26n-obbOBB64052.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èleTâchetaille
(pixels)
CPU
LiteRT w8a32
(ms)
GPU
LiteRT w8a32
(ms)
YOLO26nDétection64036.7
1.3 / 33.8 / 1.7
16.4
1.4 / 12.3 / 2.6
YOLO26n-segSegmentation64054.6
1.2 / 48.0 / 5.3
32.8
1.3 / 24.5 / 7.0
YOLO26n-semSémantique64047.8
1.2 / 38.4 / 8.1
34.2
1.3 / 24.9 / 8.0
YOLO26n-depthProfondeur64092.9
1.2 / 84.8 / 6.9
33.5
1.3 / 22.4 / 9.8
YOLO26n-clsClassification2242.7
0.2 / 2.3 / 0.2
2.6
0.2 / 2.4 / 0.0
YOLO26n-posePose64042.8
1.3 / 40.5 / 1.0
18.4
1.4 / 14.1 / 2.9
YOLO26n-obbOBB64037.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èleTâchetaille
(pixels)
CPU
LiteRT w8a32
(ms)
GPU
LiteRT w8a32
(ms)
YOLO26nDétection64045.4
1.3 / 42.1 / 2.0
26.6
1.9 / 22.0 / 2.7
YOLO26n-segSegmentation640126.2
2.6 / 113.9 / 9.7
46.7
2.6 / 33.3 / 10.8
YOLO26n-semSémantique640117.9
2.6 / 98.8 / 16.5
74.3
2.6 / 54.7 / 17.0
YOLO26n-depthProfondeur640182.4
2.5 / 167.6 / 12.3
47.8
2.5 / 32.3 / 12.9
YOLO26n-clsClassification2246.2
0.4 / 5.3 / 0.4
7.4
0.4 / 6.9 / 0.1
YOLO26n-posePose64097.6
2.5 / 93.3 / 1.8
28.6
2.5 / 23.3 / 2.8
YOLO26n-obbOBB64091.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âcheYOLOv8YOLO11YOLO26
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 :

Installation
# Install the required package for YOLO
pip install ultralytics

Pour 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.

Prise en charge des plateformes

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.

Exportation
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
Export quantifié
from 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 classification
Prédiction
from ultralytics import YOLO

# Load the exported LiteRT model
model = YOLO("yolo26n.tflite")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Valider
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#

ArgumentTypeValeur par défautDescription
formatstr'litert'Format cible du modèle exporté, définissant sa compatibilité avec différents environnements de déploiement.
imgszint ou tuple640Taille 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.
quantizeint ou strNonePré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.
batchint1Indique 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.
datastrNoneFichier 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.
devicestrNoneSpécifie l'appareil utilisé pour l'exportation. L'exportation LiteRT s'exécute sur le CPU (device=cpu).
Précision FP16

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.
  • Présentation de LiteRT.js : exécute le même modèle .tflite directement 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#

  • Utilise la bibliothèque Ultralytics pour exporter un modèle YOLO vers LiteRT (.tflite). Commence par installer le paquet :

    pip install ultralytics

    Exporte ensuite ton modèle :

    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

    Pour les utilisateurs de la CLI :

    yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classification

    Pour plus de détails, consulte le guide d'exportation d'Ultralytics.

  • 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 unique litert couvre 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 .tflite existant, tu peux le charger directement avec YOLO("model.tflite"), et il s'exécutera via le backend LiteRT.

  • 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. LiteRT.js exécute le même modèle exporté .tflite directement dans un navigateur Web ou une application Node.js, avec l'accélération WebGPU/WASM. Cela remplace l'ancien workflow TensorFlow.js — il n'y a pas d'exportation distincte pour le navigateur : déploie simplement ton modèle LiteRT avec le runtime LiteRT.js.

  • 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.

Commentaires