Exportation de modèle avec Ultralytics YOLO#
Introduction#
L'objectif ultime de l'entraînement d'un modèle est de le déployer pour des applications réelles. Le mode Export dans Ultralytics YOLO26 offre une gamme variée d'options pour exporter ton modèle entraîné vers différents formats, le rendant ainsi déployable sur diverses plateformes et divers appareils. Ce guide complet a pour but de t'accompagner à travers les nuances de l'exportation de modèles, en te montrant comment obtenir une compatibilité et des performances maximales.
Watch: How to Export Ultralytics YOLO26 in different formats for Deployment | ONNX, TensorRT, CoreML 🚀
Pourquoi choisir le mode Export de YOLO26 ?#
- Polyvalence : Exportation vers de multiples formats, notamment ONNX, TensorRT, CoreML, etc.
- Performance : Obtiens jusqu'à 5 fois plus de vitesse sur GPU avec TensorRT et jusqu'à 3 fois plus sur CPU avec ONNX ou OpenVINO.
- Compatibilité : Rends ton modèle déployable universellement à travers de nombreux environnements matériels et logiciels.
- Facilité d'utilisation : API Python et CLI simples pour une exportation de modèle rapide et directe.
Fonctionnalités clés du mode Export#
Voici quelques-unes des fonctionnalités marquantes :
- Export en un clic : Commandes simples pour exporter vers différents formats.
- Export par lot : Exporte des modèles capables d'inférence par lots.
- Inférence optimisée : Les modèles exportés sont optimisés pour des temps d'inférence plus rapides.
- Vidéos tutoriels : Guides et tutoriels détaillés pour une expérience d'exportation fluide.
Exemples d'utilisation#
Exporte un modèle YOLO26n vers un format différent comme ONNX ou TensorRT. Consulte la section Arguments ci-dessous pour une liste complète des arguments d'exportation.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Arguments#
Ce tableau détaille les configurations et les options disponibles pour l'exportation de modèles YOLO vers différents formats. Ces paramètres sont cruciaux pour optimiser les performances, la taille et la compatibilité du modèle exporté sur diverses plateformes et environnements. Une configuration appropriée garantit que le modèle est prêt pour le déploiement dans l'application prévue avec une efficacité optimale.
| Argument | Type | Défaut | Description |
|---|---|---|---|
format | str | 'torchscript' | Format cible pour le modèle exporté, tel que 'onnx', 'torchscript', 'engine' (TensorRT) ou autres. Chaque format assure la compatibilité avec différents environnements de déploiement. |
name | str | None | Nom de la cible matérielle pour les formats qui en nécessitent une : architecture Hailo ('hailo8', 'hailo8l', 'hailo10h', 'hailo15h', 'hailo15l' ; par défaut 'hailo8l'), puce Rockchip RKNN (par défaut 'rk3588'), SoC Huawei Ascend (un CANN --soc_version ; par défaut 'Ascend310B4'), ou cible Qualcomm QNN HTP (par défaut '73'). Distinct de la paire de nommage de run project/name utilisée par les autres modes. |
imgsz | int ou tuple | 640 | Taille d'image souhaitée pour l'entrée du modèle. Peut être un entier pour des images carrées (par ex. 640 pour 640×640) ou un tuple (height, width) pour des dimensions spécifiques. Lorsqu'il n'est pas fourni, un export réutilise la taille d'entraînement enregistrée dans le point de contrôle chargé : les points de contrôle officiels de YOLO26 enregistrent 768 pour depth, 224 pour classify, 1024 pour OBB et 640 pour les autres tâches, tandis qu'un fine-tune enregistre le imgsz avec lequel il a été entraîné. Un modèle construit à partir d'un YAML n'a pas de taille d'entraînement enregistrée et utilise 640. |
keras | bool | False | Active l'exportation au format Keras pour le SavedModel de TensorFlow, offrant une compatibilité avec le service et les API TensorFlow. |
optimize | bool | False | Active une optimisation de compilation supérieure pour DEEPX, réduisant la latence d'inférence tout en augmentant le temps de compilation. |
quantize | int ou str | None | Précision de quantification : 16 (FP16, réduit la taille du modèle et peut accélérer l'inférence sur le matériel pris en charge) ou 8 (INT8/PTQ, compresse davantage le modèle avec une perte de précision minimale, principalement pour les appareils en périphérie (edge devices) ; nécessite un étalonnage data/fraction) ; 32/non défini correspond à FP32. Les formats d'exportation qui prennent en charge la précision mixte des poids et des activations acceptent également la notation 'w8a8'/'w16a16'/'w8a16'/'w8a32'. Remplace les anciens fanions dépréciés half/int8 (half=True → 16, int8=True → 8, toujours acceptés avec un avertissement de dépréciation). Seules les précisions prises en charge par le format cible sont autorisées (voir ci-dessous). |
dynamic | bool | False | Autorise des tailles d'entrée dynamiques pour les exportations TorchScript, ONNX, OpenVINO, TensorRT et CoreML, améliorant la flexibilité dans la gestion des dimensions d'image variables. |
simplify | bool | True | Simplifie le graphe ONNX intermédiaire avec onnxslim pour les exportations qui en construisent un (voir Formats d'exportation), améliorant potentiellement les performances et la compatibilité avec les moteurs d'inférence. |
opset | int | None | Spécifie la version de l'opset ONNX pour les exportations qui construisent un graphe ONNX (voir Formats d'exportation), pour la compatibilité avec différents analyseurs et environnements d'exécution ONNX. S'il n'est pas défini, utilise la dernière version prise en charge. |
workspace | float ou None | None | Définit la taille maximale de l'espace de travail en Gio pour les optimisations TensorRT, équilibrant l'utilisation de la mémoire et les performances. Utilise None pour une allocation automatique par TensorRT jusqu'au maximum du périphérique. |
nms | bool | False | Ajoute la suppression non maximale (NMS) au modèle exporté lorsqu'elle est prise en charge (voir Formats d'exportation), améliorant l'efficacité du post-traitement des détections. Non disponible pour les modèles de bout en bout (end2end). Pour CoreML, pris en charge uniquement pour les modèles de détection. |
conf | float | None | Seuil de confiance utilisé partout où la NMS au moment de l'export est générée : exportations nms=True ; exportations de détection non end-to-end de Hailo ; et exportations de détection, pose et segmentation d'IMX, qui forcent nms=True en interne. Vaut par défaut 0.25 si non défini. |
iou | float | 0.7 | Seuil IoU utilisé partout où la NMS au moment de l'export est générée : exports nms=True ; exports de détection non end-to-end de Hailo ; et exports de détection, de pose et de segmentation d'IMX, qui forcent nms=True en interne. |
max_det | int | 300 | Nombre maximal de détections conservées dans la sortie du modèle exporté. S'applique aux exports nms=True sur tous les formats à l'exception de CoreML, dont le pipeline NMS ne comporte aucune limite de détection, ainsi qu'aux exports de détection end-to-end sans NMS (YOLO26, YOLOv10, limités au nombre d'anchors disponibles) et aux exports de détection, de pose et de segmentation d'IMX. |
agnostic_nms | bool | False | Active la NMS agnostique aux classes partout où la NMS au moment de l'export est générée via le pipeline standard nms=True, y compris l'étape NMS propre à CoreML, en supprimant les boîtes superposées aux scores les plus bas entre différentes classes plutôt qu'uniquement au sein de la même classe. Non pris en compte par les configurations NMS générées par Hailo ou IMX, qui n'ont aucune option agnostique aux classes et restent sensibles aux classes quel que soit ce drapeau. Également intégré dans les exports de bout en bout sans NMS (YOLO26, YOLOv10), où il empêche uniquement la même détection d'apparaître sous plusieurs étiquettes de classe (doublons IoU=1.0), et non la suppression par seuil d'IoU entre des boîtes distinctes. |
batch | int | 1 | Spécifie la taille d'inférence par lot du modèle exporté ou le nombre maximal d'images que le modèle exporté traitera simultanément en mode predict. Pour les exportations Edge TPU, cette valeur est automatiquement définie sur 1. |
device | str | None | Spécifie le périphérique pour l'exportation : GPU (device=0), CPU (device=cpu), MPS pour les puces Apple Silicon (device=mps), NPU Huawei Ascend (device=npu ou device=npu:0), ou DLA pour NVIDIA Jetson (device=dla:0 ou device=dla:1). Les exportations TensorRT utilisent automatiquement le GPU, mais TensorRT 11.0 ne prend pas en charge DLA. |
verbose | bool | False | Élève les journaux du builder TensorRT à la sévérité VERBOSE lors de l'export format='engine'. Les autres formats d'export l'ignorent. |
data | str | None | Chemin vers le fichier YAML du dataset, essentiel pour la calibration de quantification INT8 ; la classification prend à la place un répertoire de dataset ou un nom de dataset intégré. S'il n'est pas spécifié alors que l'INT8 est activé, Ultralytics sélectionne un dataset de calibration spécifique à la tâche si nécessaire, ou revient par défaut au dataset standard pour la tâche du modèle. |
split | str | 'val' | Division du dataset ('train', 'val' ou 'test') utilisée pour construire le dataloader de calibration de quantification INT8 à partir de data. |
fraction | float, int ou list | 1.0 | Sous-ensemble du dataset utilisé pour la calibration INT8 : un ratio, un nombre d'images ou des ratios/nombres [train, val, test]. Les listes à deux éléments laissent test complet, tandis qu'une troisième valeur le limite et 0 l'ignore. Un entier 1 sélectionne une image, tandis qu'un nombre à virgule flottante 1.0 sélectionne toutes les images. |
end2end | bool | None | Remplace le mode de bout en bout dans les modèles YOLO qui prennent en charge l'inférence sans NMS (YOLO26, YOLOv10). Le définir sur False te permet d'exporter ces modèles afin qu'ils soient compatibles avec le pipeline de post-traitement traditionnel basé sur la NMS. Consulte le guide de détection de bout en bout pour plus de détails. |
L'ajustement de ces paramètres permet de personnaliser le processus d'exportation pour répondre à des exigences spécifiques, telles que l'environnement de déploiement, les contraintes matérielles et les objectifs de performance. Sélectionner le format et les réglages appropriés est essentiel pour atteindre le meilleur équilibre entre la taille du modèle, la vitesse et la précision.
Formats d'exportation#
Les formats d'exportation YOLO26 disponibles se trouvent dans le tableau ci-dessous. Tu peux exporter vers n'importe quel format en utilisant l'argument format, c'est-à-dire format='onnx' ou format='engine'. Tu peux prédire ou valider directement sur les modèles exportés, c'est-à-dire yolo predict model=yolo26n.onnx. Des exemples d'utilisation sont affichés pour ton modèle une fois l'exportation terminée. Les modèles peuvent également être exportés directement depuis le navigateur sur Ultralytics Platform sans aucune configuration locale.
| Format | Argument format | Modèle | Métadonnées | Arguments |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
Options de quantification#
Utilise l'argument quantize pour demander la précision de l'exportation. Les valeurs textuelles ne sont pas sensibles à la casse, et Ultralytics normalise les alias acceptés avant l'exportation :
| Valeurs de demande | Valeur canonique | Signification |
|---|---|---|
8, "8", "int8", "w8a8" | 8 | Poids et activations INT8 |
16, "16", "fp16", "w16a16" | 16 | Poids et activations FP16 |
32, "32", "fp32", "w32a32" | 32 | Exportation FP32 ; identique à non défini, sauf pour les programmes CoreML NMS ML, qui utilisent FP16 par défaut |
"w8a16" | "w8a16" | Poids INT8 avec activations 16 bits (FP16 ; INT16 sur LiteRT) |
"w8a32" | "w8a32" | Poids INT8 avec activations FP32 (INT8 dynamique LiteRT, aucune calibration requise) |
Les anciens indicateurs half=True et int8=True sont toujours acceptés avec des avertissements de dépréciation et sont redirigés vers quantize=16 et quantize=8.
Tous les formats d'exportation ne prennent pas en charge toutes les précisions. Les demandes explicites avec quantize génèrent soit cette précision, soit un échec avant l'exportation :
| Format | FP32 (32/non défini) | FP16 (16) | INT8 (8) | W8A16 ("w8a16") | Notes |
|---|---|---|---|---|---|
| PyTorch | ✅ | N/A | N/A | N/A | Format d'entraînement/point de contrôle natif. |
| TorchScript | ✅ | ✅ GPU seulement | ❌ | ❌ | L'exportation TorchScript en FP16 nécessite device=0 ; l'exportation sur CPU est en FP32. |
| ONNX | ✅ | ✅ | ✅ | ❌ | INT8 utilise la quantification statique d'ONNX Runtime et des données de calibration. |
| OpenVINO | ✅ | ✅ | ✅ | ❌ | INT8 utilise la quantification post-entraînement NNCF. |
| TensorRT | ✅ | ✅ | ✅ | ❌ | INT8 nécessite des données de calibration représentatives. |
| CoreML | ✅¹ | ✅ | ✅ | ✅ | CoreML INT8 correspond à la quantification des poids ; W8A16 utilise des poids INT8 avec des activations FP16. ¹Les programmes NMS ML non définis utilisent FP16 par défaut. |
| TF SavedModel | ✅ | ❌ | ✅ | ❌ | L'exportation INT8 utilise la calibration TensorFlow. |
| TF GraphDef | ✅ | ❌ | ❌ | ❌ | Aucune conversion de précision lors de l'exportation. |
| Edge TPU | ❌ | ❌ | ✅ auto | ❌ | Edge TPU nécessite INT8 ; il est automatiquement activé s'il n'est pas défini. |
| PaddlePaddle | ✅ | ❌ | ❌ | ❌ | Aucune conversion de précision lors de l'exportation. |
| MNN | ✅ | ✅ | ✅ | ❌ | INT8 est une quantification des poids via la conversion MNN. |
| NCNN | ✅ | ✅ | ❌ | ❌ | Format d'exécution mobile/embarqué. |
| IMX500 | ❌ | ❌ | ✅ auto | ✅ | IMX500 nécessite une quantification ; INT8 est automatiquement activé s'il n'est pas défini. |
| RKNN | ❌ | ✅ dépend de la puce | ✅ | ❌ | RK3588/RK3576/RK3566/RK3568/RK3562/RK2118/RV1126B prennent en charge FP16 ou INT8 ; les variantes RV1103/RV1106 sont uniquement INT8. |
| ExecuTorch | ✅ | ❌ | ❌ | ❌ | Aucune conversion de précision lors de l'exportation. |
| Axelera | ❌ | ❌ | ✅ auto | ❌ | L'exportation Axelera nécessite INT8 ; il est automatiquement activé s'il n'est pas défini. |
| DEEPX | ❌ | ❌ | ✅ auto | ❌ | L'exportation DEEPX nécessite INT8 ; il est automatiquement activé s'il n'est pas défini. |
| Qualcomm QNN | ❌ | ❌ | ❌ | ✅ auto | L'exportation QNN HTP est fixée à des poids INT8 avec des activations 16 bits. |
| LiteRT | ✅ | ❌ | ✅ | ✅ | L'INT8 statique (8) et "w8a16" (poids int8 + activations int16) utilisent des données de calibration ; il prend également en charge l'INT8 dynamique "w8a32" (sans calibration). quantize=16 n'est pas une exportation séparée ; un modèle FP32 s'exécute en FP16 à l'exécution via le délégué GPU. |
| Huawei Ascend | ❌ | ✅ auto | ❌ | ❌ | Les convolutions d'Ascend AI Core n'acceptent que des entrées FP16/INT8, donc ATC compile en FP16 ; c'est activé automatiquement si non défini. |
Pour les exportations INT8 et W8A16, fournis des données de calibration représentatives avec data, telles que data="coco8.yaml", sauf si l'intégration cible documente un comportement par défaut ou activé automatiquement. Le schéma LiteRT "w8a32" (INT8 dynamique) ne nécessite aucune donnée de calibration.
Et après ?#
Trouve le guide d'intégration de ta cible de déploiement — ONNX, TensorRT, CoreML, et bien d'autres se trouvent sur la liste complète des intégrations — pour savoir comment exécuter le modèle exporté.
FAQ#
L'utilisation de TensorRT pour l'exportation de modèles offre des améliorations de performance significatives. Les modèles YOLO26 exportés vers TensorRT peuvent atteindre jusqu'à 5x de vitesse GPU en plus, ce qui le rend idéal pour les applications d'inférence en temps réel.
- Polyvalence : Optimise les modèles pour une configuration matérielle spécifique.
- Vitesse : Atteins une inférence plus rapide grâce à des optimisations avancées.
- Compatibilité : Intègre-toi en douceur avec le matériel NVIDIA.
Pour en savoir plus sur l'intégration de TensorRT, consulte le guide d'intégration TensorRT.
La quantification INT8 est un excellent moyen de compresser le modèle et d'accélérer l'inférence, en particulier sur les appareils en périphérie. Voici comment tu peux activer la quantification INT8 :
Exemplefrom ultralytics import YOLO model = YOLO("yolo26n.pt") # Load a model model.export(format="onnx", quantize=8, data="coco8.yaml")La quantification INT8 peut être appliquée à des formats tels que ONNX, TensorRT, OpenVINO, CoreML et Rockchip RKNN. Pour des résultats de quantification optimaux, fournis un jeu de données représentatif en utilisant le paramètre
data. Consulte les Options de quantification pour connaître les valeurs dequantizeacceptées et les formats pris en charge.La taille d'entrée dynamique permet au modèle exporté de gérer des dimensions d'image variables, offrant de la flexibilité et optimisant l'efficacité du traitement pour différents cas d'utilisation. Lors de l'exportation vers des formats tels que ONNX ou TensorRT, l'activation de la taille d'entrée dynamique garantit que le modèle peut s'adapter de manière fluide à différentes formes d'entrée.
Pour activer cette fonctionnalité, utilise l'indicateur
dynamic=Truelors de l'exportation :Exemplefrom ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="onnx", dynamic=True)Le dimensionnement d'entrée dynamique est particulièrement utile pour les applications où les dimensions d'entrée peuvent varier, telles que le traitement vidéo ou lors du traitement d'images provenant de différentes sources.
Comprendre et configurer les arguments d'exportation est crucial pour optimiser les performances du modèle :
format:Le format cible pour le modèle exporté (par exemple,onnx,torchscript,tensorflow).imgsz:La taille d'image souhaitée pour l'entrée du modèle (par exemple,640ou(height, width)).quantize:La précision de la quantification, telle que8/"int8",16/"fp16",32/"fp32", ou les schémas mixtes poids/activation"w8a16"et"w8a32"(LiteRT INT8 dynamique) sur les formats pris en charge. Consulte les Options de quantification.optimize:Active une optimisation supérieure du compilateur pour les exportations DEEPX.
Pour un déploiement sur des plates-formes matérielles spécifiques, envisage d'utiliser des formats d'exportation spécialisés tels que TensorRT pour les GPU NVIDIA, CoreML pour les appareils Apple, ou Edge TPU pour les appareils Google Coral.
Lorsque tu exportes un modèle YOLO vers des formats comme ONNX ou TensorRT, la structure du tenseur de sortie dépend de la tâche du modèle. Comprendre ces sorties est important pour les implémentations d'inférence personnalisées.
Pour les modèles de détection YOLO26 (par exemple,
yolo26n.pt), l'exportation de bout en bout est activée par défaut dans les formats qui la prennent en charge, de sorte que la sortie a la forme(batch_size, max_detections, 6)avec des valeurs[x1, y1, x2, y2, confidence, class_id]. Avec la valeur par défautmax_det=300, il s'agit généralement de(batch_size, 300, 6). Certains formats contraints reviennent automatiquement à la disposition de sortie traditionnelle lorsque les opérateurs de bout en bout ne sont pas pris en charge.Pour les modèles de détection non end-to-end, ou les modèles YOLO26 exportés avec
end2end=False, la sortie est généralement un tenseur unique de forme(batch_size, 4 + num_classes, num_predictions)où les canaux représentent les coordonnées des boîtes ainsi que les scores par classe, etnum_predictionsdépend de la résolution d'entrée de l'export (et peut être dynamique). Le guide de détection End-to-End indique quels formats conservent la sortie end-to-end.Pour les modèles de segmentation (par exemple,
yolo26n-seg.pt), tu obtiendras généralement deux sorties : le premier tenseur de forme(batch_size, 4 + num_classes + mask_dim, num_predictions)(boîtes, scores de classe et coefficients de masque), et le second tenseur de forme(batch_size, mask_dim, proto_h, proto_w)contenant les prototypes de masques utilisés avec les coefficients pour générer les masques d'instance. Les tailles dépendent de la résolution d'entrée de l'exportation (et peuvent être dynamiques).Pour les modèles de pose (par exemple,
yolo26n-pose.pt), le tenseur de sortie a généralement la forme(batch_size, 4 + num_classes + keypoint_dims, num_predictions), oùkeypoint_dimsdépend de la spécification de la pose (par exemple, le nombre de points clés et si la confiance est incluse), etnum_predictionsdépend de la résolution d'entrée de l'exportation (et peut être dynamique).Les exemples du guide d'inférence ONNX démontrent comment traiter ces sorties pour chaque type de modèle.
Ultralytics ne fournit pas actuellement d'API d'inférence C++ dédiée pour les modèles YOLO. Pour les déploiements en C++, exporte le modèle vers un format d'exécution tel que ONNX, TensorRT, TorchScript ou MNN, puis charge l'artefact exporté avec l'API C++ native de ce runtime.
Par exemple, exporte un modèle de détection avec
yolo export model=yolo26n.pt format=onnxet exécute le fichier.onnxavec ONNX Runtime C++, ou exporte avecformat=engineet exécute le moteur TensorRT à partir d'une application C++ TensorRT. Lorsque tu utilises un post-traitement C++ personnalisé, fais correspondre la disposition du tenseur de sortie à ta tâche et à tes paramètres d'exportation ; les exportations de détection de bout en bout YOLO26 renvoient généralement(batch, max_det, 6), tandis que les exportations qui ne sont pas de bout en bout renvoient des tenseurs de prédiction bruts qui nécessitent un post-traitement externe.Lors de l'exportation avec
quantize=16(FP16) ouquantize=8(INT8), la plupart des tenseurs sont convertis en une précision inférieure pour réduire la taille du modèle et améliorer les performances. Cependant, lorsqueend2end=Trueest activé, le post-traitement (y compris les indices de classe) est intégré directement dans le graphe exporté.Le tenseur
output0contient des indices de classe, qui sont représentés en interne sous forme de valeurs à virgule flottante. Le format FP16 ne peut pas représenter de manière fiable des valeurs entières supérieures à 2048 en raison de sa précision de mantisse limitée. Pour éviter toute perte de précision potentielle ou des identifiants de classe incorrects,output0est intentionnellement conservé en FP32.Ce comportement est attendu et s'applique également aux exportations de précision inférieure ou quantifiées où la fidélité de l'indice de classe doit être préservée.
Si des sorties complètes en FP16 sont requises, exporte avec
end2end=Falseet effectue le post-traitement en externe.
L'exportation d'un modèle YOLO26 au format ONNX est simple avec Ultralytics. Il fournit des méthodes Python et CLI pour exporter les modèles.
Pour plus de détails sur le processus, y compris les options avancées comme la gestion de différentes tailles d'entrée, consulte le guide d'intégration ONNX.