Évaluation des performances des modèles avec Ultralytics YOLO#
Visualisation des benchmarks#
Introduction#
Une fois ton modèle entraîné et validé, l'étape logique suivante consiste à évaluer ses performances dans divers scénarios réels. Le mode Benchmark d'Ultralytics YOLO26 répond à cet objectif en fournissant un cadre robuste pour évaluer la vitesse et la précision de ton modèle sur une gamme de formats d'exportation.
Consulte l' aperçu non publié de YOLO27 pour des benchmarks de vitesse préliminaires.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
Pourquoi le benchmarking est-il crucial ?#
- Décisions éclairées : Obtiens des informations sur les compromis entre vitesse et précision.
- Allocation des ressources : Comprends comment différents formats d'exportation se comportent sur différents matériels.
- Optimisation : Apprends quel format d'exportation offre les meilleures performances pour ton cas d'utilisation spécifique.
- Efficacité des coûts : Utilise plus efficacement les ressources matérielles en fonction des résultats des benchmarks.
Métriques clés en mode Benchmark#
- mAP50-95 : Pour la détection d'objets, la segmentation et l'estimation de pose.
- accuracy_top1 : Pour la classification d'images.
- Temps d'inférence : Temps pris pour chaque image en millisecondes.
Formats d’export pris en charge#
- ONNX : Pour des performances CPU optimales
- TensorRT : Pour une efficacité GPU maximale
- OpenVINO : Pour l'optimisation du matériel Intel
- CoreML, TensorFlow SavedModel et plus encore : Pour divers besoins de déploiement.
- Exporte vers ONNX ou OpenVINO pour obtenir jusqu'à 3x plus de vitesse sur CPU.
- Exporte vers TensorRT pour obtenir jusqu'à 5x plus de vitesse sur GPU.
Exemples d’utilisation#
Installe Ultralytics avec les dépendances d'exportation avant d'effectuer les benchmarks pour éviter les paquets manquants.
pip install ultralytics[export]Exécute des benchmarks YOLO26n sur tous les formats d'exportation pris en charge (ONNX, TensorRT, etc.). Consulte la section Arguments ci-dessous pour obtenir une liste complète des options d'exportation.
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")Arguments#
Des arguments tels que model, data, imgsz, quantize, device, verbose et format offrent aux utilisateurs la flexibilité d'affiner les benchmarks selon leurs besoins spécifiques et de comparer facilement les performances de différents formats d'exportation.
| Clé | Valeur par défaut | Description |
|---|---|---|
model | None | Spécifie le chemin d'accès au fichier du modèle. Accepte les formats .pt et .yaml, par exemple "yolo26n.pt" pour les modèles pré-entraînés ou les fichiers de configuration. |
data | None | Chemin d'accès au fichier YAML du jeu de données pour le benchmarking, comprenant généralement les chemins et les paramètres pour les données de validation. Exemple : "coco8.yaml". La classification prend plutôt un répertoire de jeu de données ou un nom de jeu de données intégré (par exemple, imagenet10). |
imgsz | 640 | La taille de l'image d'entrée pour le modèle. Doit être un entier unique pour les images carrées (par exemple, 640) ; benchmark() prend uniquement en charge les tailles d'image carrées. |
quantize | None | Précision demandée : 16 (FP16) ou 8 (INT8 ; les schémas PTQ nécessitent un étalonnage data/fraction, ce n'est pas le cas de ceux basés uniquement sur les poids) ; 32/non défini correspond à FP32 lorsque le format le prend en charge — un format qui ne peut pas exporter en FP32 rejette un 32 explicite ou revient à la précision requise. La ligne PyTorch native n'est pas exportée : seul 16 l'affecte en sélectionnant l'inférence FP16, tandis que 8, 32 et l'absence de définition exécutent FP32. Chaque format exécute ensuite l'inférence à sa propre précision d'exécution. Remplace les indicateurs obsolètes half/int8. |
device | 'cpu' | Définit le ou les périphériques de calcul pour le benchmarking, tels que "cpu" ou "cuda:0". |
verbose | False | Contrôle le niveau de détail de la sortie des journaux. Définis verbose=True pour des journaux détaillés. |
eps | 0.001 | Petit epsilon (en millisecondes) ajouté au temps d'inférence par image avant de le convertir en FPS, ce qui évite la division par zéro. Rarement modifié. |
format | '' | Exécute un benchmark uniquement sur le format d'exportation spécifié (par exemple, format=onnx). Laisse ce champ vide pour tester automatiquement tous les formats pris en charge. |
La fonction autonome benchmark() (from ultralytics.utils.benchmarks import benchmark) utilise ses propres valeurs par défaut de signature au lieu des valeurs du tableau ci-dessus, notamment model="yolo26n.pt" et imgsz=160 ; passe imgsz explicitement pour correspondre à l'interface en ligne de commande (CLI) yolo benchmark.
Formats d'exportation#
Les benchmarks tenteront de s'exécuter automatiquement sur tous les formats d'exportation possibles répertoriés ci-dessous. Tu peux également exécuter des benchmarks pour un format spécifique en utilisant l'argument format, qui accepte l'un des formats mentionnés ci-dessous.
| 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 |
nms=None utilise par défaut des sorties brutes pour NMS externe. Définis nms=False pour sélectionner une tête sans NMS disponible ; les formats non pris en charge reviennent à leur chemin de sortie natif. Les entrées nms ci-dessus identifient les formats capables d'intégrer NMS avec nms=True.
Consulte les détails complets du mode export dans la page Exportation.
FAQ#
L'exportation des modèles YOLO26 vers différents formats tels que ONNX, TensorRT et OpenVINO te permet d'optimiser les performances en fonction de ton environnement de déploiement. Par exemple :
- ONNX : Fournit jusqu'à 3x plus de vitesse sur CPU.
- TensorRT : Offre jusqu'à 5x plus de vitesse sur GPU.
- OpenVINO : Spécifiquement optimisé pour le matériel Intel.
Ces formats améliorent à la fois la vitesse et la précision de tes modèles, les rendant plus efficaces pour diverses applications concrètes. Consulte la page Export pour tous les détails.
L'évaluation de tes modèles YOLO26 est essentielle pour plusieurs raisons :
- Décisions éclairées : Comprends les compromis entre vitesse et précision.
- Allocation des ressources : Évalue les performances sur différentes options matérielles.
- Optimisation : Détermine quel format d'exportation offre les meilleures performances pour des cas d'utilisation spécifiques.
- Efficacité des coûts : Optimise l'utilisation du matériel en fonction des résultats des benchmarks.
Des métriques clés telles que le mAP50-95, la précision Top-1 et le temps d'inférence aident à réaliser ces évaluations. Consulte la section Key Metrics pour plus d'informations.
YOLO26 prend en charge une variété de formats d'exportation, chacun étant conçu pour un matériel et des cas d'utilisation spécifiques :
- ONNX : Idéal pour les performances du processeur.
- TensorRT : Idéal pour l'efficacité du GPU.
- OpenVINO : Optimisé pour le matériel Intel.
- CoreML & TensorFlow : Utiles pour les applications iOS et d'apprentissage automatique général.
Pour obtenir une liste complète des formats pris en charge et de leurs avantages respectifs, consulte la section Supported Export Formats.
Lors de l'exécution de benchmarks, plusieurs arguments peuvent être personnalisés pour répondre à des besoins spécifiques :
- model : Chemin d'accès au fichier du modèle (par exemple, "yolo26n.pt").
- data : Chemin d'accès au fichier YAML du jeu de données (par exemple,
"coco8.yaml") ; la classification prend à la place un répertoire de jeu de données ou un nom de jeu de données intégré (par exemple,imagenet10). - imgsz : La taille de l'image d'entrée carrée sous forme d'un entier unique, tel que
640. Le mode Benchmark utilise la même taille d'image carrée entre PyTorch et les formats exportés pour une comparaison équitable. - quantize : Précision demandée :
16pour FP16,8pour INT8 (utile pour les appareils de périphérie) ;32/non défini correspond à FP32 lorsque le format le prend en charge — un format qui ne peut pas exporter en FP32 rejette un32explicite ou revient à la précision requise. La ligne PyTorch native n'est pas exportée : seul16l'affecte en sélectionnant l'inférence FP16, tandis que8,32et l'absence de définition exécutent FP32. Chaque format exécute ensuite l'inférence à sa propre précision d'exécution. - device : Spécifie le périphérique de calcul (par exemple, "cpu", "cuda:0").
- verbose : Contrôle le niveau de détail des journaux.
Pour obtenir une liste complète des arguments, reporte-toi à la section Arguments.
Ultralytics YOLO26 propose un mode Benchmark pour évaluer les performances de ton modèle sur différents formats d'exportation. Ce mode fournit des informations sur des mesures clés telles que la précision moyenne moyenne (mAP50-95), la précision et le temps d'inférence en millisecondes. Pour exécuter des benchmarks, tu peux utiliser Python ou des commandes CLI. Par exemple, pour effectuer un benchmark sur un GPU :
Pour plus de détails sur les arguments des benchmarks, visite la section Arguments.