Meet YOLO26: next-gen vision AI.

Link to this sectionValidation de modèle avec Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntroduction#

La validation est une étape critique dans le pipeline de machine learning, te permettant d'évaluer la qualité de tes modèles entraînés. Le mode Val dans Ultralytics YOLO26 fournit une suite robuste d'outils et de métriques pour évaluer les performances de tes modèles de détection d'objets. Ce guide sert de ressource complète pour comprendre comment utiliser efficacement le mode Val afin de garantir que tes modèles sont à la fois précis et fiables.



Watch: Ultralytics Modes Tutorial: Validation

Link to this sectionPourquoi valider avec Ultralytics YOLO ?#

Voici pourquoi l'utilisation du mode Val de YOLO26 est avantageuse :

  • Précision : Obtiens des métriques précises comme mAP50, mAP75 et mAP50-95 pour évaluer ton modèle de manière exhaustive.
  • Commodité : Utilise des fonctionnalités intégrées qui mémorisent les paramètres d'entraînement, simplifiant ainsi le processus de validation.
  • Flexibilité : Valide ton modèle avec les mêmes jeux de données ou des jeux différents, ainsi qu'avec des tailles d'image variables.
  • Optimisation des hyperparamètres : Utilise les métriques de validation pour affiner ton modèle et améliorer ses performances.

Link to this sectionFonctionnalités clés du mode Val#

Voici les fonctionnalités notables offertes par le mode Val de YOLO26 :

  • Paramètres automatisés : Les modèles mémorisent leurs configurations d'entraînement pour une validation simple.
  • Support multi-métriques : Évalue ton modèle en fonction d'une gamme de métriques de précision.
  • API Python et CLI : Choisis entre l'interface en ligne de commande ou l'API Python selon ta préférence pour la validation.
  • Compatibilité des données : Fonctionne de manière transparente avec les jeux de données utilisés pendant la phase d'entraînement ainsi qu'avec des jeux de données personnalisés.
Astuce
  • Les modèles YOLO26 mémorisent automatiquement leurs paramètres d'entraînement, tu peux donc valider facilement un modèle avec la même taille d'image et sur le jeu de données d'origine avec simplement yolo val model=yolo26n.pt ou YOLO("yolo26n.pt").val()

Link to this sectionExemples d'utilisation#

Valide la précision d'un modèle YOLO26n entraîné sur le jeu de données COCO8. Aucun argument n'est nécessaire car le model conserve ses data d'entraînement et ses arguments en tant qu'attributs de modèle. Consulte la section Arguments ci-dessous pour une liste complète des arguments de validation.

Erreur de multi-traitement sous Windows

Sous Windows, tu peux recevoir une RuntimeError lors du lancement de la validation en tant que script. Ajoute un bloc if __name__ == "__main__": avant ton code de validation pour résoudre ce problème.

Exemple
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Link to this sectionArguments pour la validation de modèles YOLO#

Lors de la validation des modèles YOLO, plusieurs arguments peuvent être ajustés pour optimiser le processus d'évaluation. Ces arguments contrôlent des aspects tels que la taille de l'image d'entrée, le traitement par lots et les seuils de performance. Tu trouveras ci-dessous une analyse détaillée de chaque argument pour t'aider à personnaliser efficacement tes paramètres de validation.

ArgumentTypeDéfautDescription
datastrNoneSpécifie le chemin vers le fichier de configuration du jeu de données (par ex. coco8.yaml). Ce fichier doit inclure le chemin vers les données de validation.
imgszint640Définit la taille des images d'entrée. Toutes les images sont redimensionnées à cette dimension avant le traitement. Des tailles plus grandes peuvent améliorer la précision pour les petits objets mais augmentent le temps de calcul.
batchint16Définit le nombre d'images par lot. Des valeurs plus élevées utilisent la mémoire GPU plus efficacement mais nécessitent plus de VRAM. Ajuste selon les ressources matérielles disponibles.
save_jsonboolFalseSi True, enregistre les résultats dans un fichier JSON pour une analyse approfondie, une intégration avec d'autres outils ou une soumission à des serveurs d'évaluation comme COCO.
conffloat0.001Définit le seuil de confiance minimum pour les détections. Des valeurs plus faibles augmentent le rappel mais peuvent introduire plus de faux positifs. Utilisé pendant la validation pour calculer les courbes précision-rappel. Par défaut à 0.01 pour la validation OBB afin de réduire l'utilisation de la mémoire.
ioufloat0.7Définit le seuil d'Intersection Over Union pour la Non-Maximum Suppression. Contrôle l'élimination des détections en double.
max_detint300Limite le nombre maximum de détections par image. Utile dans les scènes denses pour éviter des détections excessives et gérer les ressources informatiques.
quantizeint ou strNonePrécision de validation : 16/"fp16" active la validation FP16 sur les GPU compatibles ; 32/"fp32"/non défini correspond à FP32. La quantification INT8/PTQ est configurée lors de l'export, puis utilisée en validant le modèle exporté. Remplace l'indicateur obsolète half.
devicestrNoneSpécifie le périphérique pour la validation (cpu, cuda:0, npu, npu:0, etc.). Lorsque None, sélectionne automatiquement le meilleur périphérique disponible. Plusieurs périphériques CUDA peuvent être spécifiés avec une séparation par virgule.
dnnboolFalseSi True, utilise le module DNN d'OpenCV pour l'inférence de modèle ONNX, offrant une alternative aux méthodes d'inférence PyTorch.
plotsboolTrueLorsqu'il est défini sur True, génère et enregistre des tracés des prédictions par rapport à la vérité terrain, des matrices de confusion et des courbes PR pour une évaluation visuelle des performances du modèle.
classeslist[int]NoneSpécifie une liste d'IDs de classes à évaluer. Utile pour filtrer et se concentrer uniquement sur certaines classes lors de l'évaluation.
rectboolTrueSi True, utilise l'inférence rectangulaire pour le traitement par lots, réduisant le remplissage et augmentant potentiellement la vitesse et l'efficacité en traitant les images dans leur rapport hauteur/largeur d'origine.
splitstr'val'Détermine la division du jeu de données à utiliser pour la validation (val, test ou train). Permet une flexibilité dans le choix du segment de données pour l'évaluation des performances.
projectstrNoneNom du répertoire du projet où les sorties de validation sont enregistrées. Aide à organiser les résultats de différentes expériences ou modèles.
namestrNoneNom de l'exécution de validation. Utilisé pour créer un sous-répertoire dans le dossier du projet, où les journaux et les sorties de validation sont stockés.
verboseboolTrueSi True, affiche des informations détaillées pendant le processus de validation, y compris les métriques par classe, la progression des lots et des informations de débogage supplémentaires.
save_txtboolFalseSi True, enregistre les résultats de détection dans des fichiers texte, avec un fichier par image, utile pour une analyse plus approfondie, un post-traitement personnalisé ou l'intégration avec d'autres systèmes.
save_confboolFalseSi True, inclut les valeurs de confiance dans les fichiers texte enregistrés lorsque save_txt est activé, fournissant une sortie plus détaillée pour l'analyse et le filtrage.
workersint8Nombre de threads de travail pour le chargement des données. Des valeurs plus élevées peuvent accélérer le prétraitement des données mais peuvent augmenter l'utilisation du CPU. Définir sur 0 utilise le thread principal, ce qui peut être plus stable dans certains environnements.
augmentboolFalseActive l'augmentation en temps de test (TTA) pendant la validation, améliorant potentiellement la précision de la détection au prix de la vitesse d'inférence en effectuant l'inférence sur des versions transformées de l'entrée.
agnostic_nmsboolFalseActive la Non-Maximum Suppression agnostique aux classes, qui fusionne les boîtes qui se chevauchent indépendamment de leur classe prédite. Utile pour les applications axées sur les instances. Pour les modèles de bout en bout (YOLO26, YOLOv10), cela empêche uniquement la même détection d'apparaître avec plusieurs étiquettes de classe (doublons IoU=1.0) et n'effectue pas de suppression basée sur un seuil d'IoU entre des boîtes distinctes.
single_clsboolFalseTraite toutes les classes comme une seule classe pendant la validation. Utile pour évaluer les performances du modèle sur des tâches de détection binaire ou lorsque les distinctions de classe ne sont pas importantes.
visualizeboolFalseVisualise les vérités terrain, les vrais positifs, les faux positifs et les faux négatifs pour chaque image. Utile pour le débogage et l'interprétation du modèle.
show_labelsboolTrueAffiche les étiquettes de classe dans les visualisations de validation lorsque visualize=True. Définis sur False pour une vue plus claire des correspondances et des erreurs.
show_confboolTrueAffiche les scores de confiance dans les visualisations de validation lorsque visualize=True. Définis sur False pour une vue plus claire des correspondances et des erreurs.
compilebool ou strFalseActive la compilation de graphe torch.compile de PyTorch 2.x avec backend='inductor'. Accepte True"default", False → désactive, ou un mode chaîne tel que "default", "reduce-overhead", "max-autotune-no-cudagraphs". Revient au mode eager avec un avertissement si non pris en charge.
end2endboolNoneOutrepasse 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'exécuter la validation en utilisant le pipeline NMS traditionnel, te permettant en outre d'utiliser l'argument iou.

Chacun de ces paramètres joue un rôle vital dans le processus de validation, permettant une évaluation personnalisable et efficace des modèles YOLO. Ajuster ces paramètres en fonction de tes besoins spécifiques et de tes ressources peut t'aider à atteindre le meilleur équilibre entre précision et performance.

Link to this sectionExemple de validation avec des arguments#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Explore model validation and different export methods in Google Colab

Les exemples ci-dessous présentent la validation de modèles YOLO avec des arguments personnalisés en Python et en CLI.

Exemple
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
Exporter ConfusionMatrix

Tu peux également enregistrer les résultats de la ConfusionMatrix dans différents formats en utilisant le code fourni.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Précision, rappel et F1 par image

La validation stocke les métriques de précision, rappel, F1, TP, FP et FN par image (au seuil IoU de 0,5) pour toutes les tâches à l'exception de la classification. Accède-y via results.box.image_metrics pour la détection et l'OBB, results.seg.image_metrics pour la segmentation, et results.pose.image_metrics pour la pose une fois la validation terminée.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

Chaque entrée dans image_metrics contient les clés suivantes :

CléDescription
precisionScore de précision pour l'image (tp / (tp + fp)).
recallScore de rappel pour l'image (tp / (tp + fn)).
f1Moyenne harmonique de la précision et du rappel.
tpNombre de vrais positifs pour l'image.
fpNombre de faux positifs pour l'image.
fnNombre de faux négatifs pour l'image.

Cette fonctionnalité est disponible pour les tâches de détection, segmentation, pose et OBB.

MéthodeType de retourDescription
summary()List[Dict[str, Any]]Convertit les résultats de validation en un dictionnaire résumé.
to_df()DataFrameRenvoie les résultats de validation sous forme de Polars DataFrame structuré.
to_csv()strExporte les résultats de validation au format CSV et renvoie la chaîne CSV.
to_json()strExporte les résultats de validation au format JSON et renvoie la chaîne JSON.

Pour plus de détails, consulte la documentation de la classe DataExportMixin.

Link to this sectionFAQ#

Link to this sectionComment valider mon modèle YOLO26 avec Ultralytics ?#

Pour valider ton modèle YOLO26, tu peux utiliser le mode Val fourni par Ultralytics. Par exemple, en utilisant l'API Python, tu peux charger un modèle et exécuter la validation avec :

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

Alternativement, tu peux utiliser l'interface en ligne de commande (CLI) :

yolo val model=yolo26n.pt

Pour une personnalisation poussée, tu peux ajuster divers arguments comme imgsz, batch et conf à la fois en Python et dans les modes CLI. Consulte la section Arguments pour la validation de modèles YOLO pour la liste complète des paramètres.

Link to this sectionQuelles métriques puis-je obtenir de la validation d'un modèle YOLO26 ?#

La validation du modèle YOLO26 fournit plusieurs métriques clés pour évaluer les performances du modèle. Celles-ci incluent :

  • mAP50 (précision moyenne à un seuil IoU de 0,5)
  • mAP75 (précision moyenne à un seuil IoU de 0,75)
  • mAP50-95 (précision moyenne sur plusieurs seuils IoU de 0,5 à 0,95)

En utilisant l'API Python, tu peux accéder à ces métriques comme suit :

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Pour une évaluation complète des performances, il est crucial de passer en revue toutes ces métriques. Pour plus de détails, réfère-toi aux Fonctionnalités clés du mode Val.

Link to this sectionQuels sont les avantages d'utiliser Ultralytics YOLO pour la validation ?#

Utiliser Ultralytics YOLO pour la validation offre plusieurs avantages :

  • Précision : YOLO26 offre des métriques de performance précises, notamment mAP50, mAP75 et mAP50-95.
  • Commodité : Les modèles mémorisent leurs paramètres d'entraînement, rendant la validation simple.
  • Flexibilité : Tu peux valider avec les mêmes jeux de données ou des jeux différents, ainsi que des tailles d'image variables.
  • Optimisation des hyperparamètres : Les métriques de validation aident à affiner les modèles pour de meilleures performances.

Ces avantages garantissent que tes modèles sont évalués minutieusement et peuvent être optimisés pour des résultats supérieurs. Apprends-en plus sur ces avantages dans la section Pourquoi valider avec Ultralytics YOLO.

Link to this sectionPuis-je valider mon modèle YOLO26 en utilisant un jeu de données personnalisé ?#

Oui, tu peux valider ton modèle YOLO26 en utilisant un jeu de données personnalisé. Spécifie l'argument data avec le chemin vers ton fichier de configuration de jeu de données. Ce fichier doit inclure le chemin vers les données de validation.

Remarque

La validation est effectuée en utilisant les noms de classes propres au modèle, que tu peux voir en utilisant model.names, et qui peuvent être différents de ceux spécifiés dans le fichier de configuration du jeu de données.

Exemple en Python :

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

Exemple en utilisant CLI :

yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml

Pour plus d'options personnalisables pendant la validation, vois la section Exemple de validation avec des arguments.

Link to this sectionComment puis-je enregistrer les résultats de validation dans un fichier JSON dans YOLO26 ?#

Pour enregistrer les résultats de validation dans un fichier JSON, tu peux définir l'argument save_json sur True lors de l'exécution de la validation. Cela peut être fait à la fois dans l'API Python et en CLI.

Exemple en Python :

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

Exemple en utilisant CLI :

yolo val model=yolo26n.pt save_json=True

Cette fonctionnalité est particulièrement utile pour une analyse plus approfondie ou une intégration avec d'autres outils. Vérifie les Arguments pour la validation de modèles YOLO pour plus de détails.

Commentaires