Validation de modèle avec Ultralytics YOLO
Introduction
La validation est une étape essentielle du pipeline d'apprentissage automatique, vous permettant d'évaluer la qualité de vos modèles entraînés. Le mode Val dans Ultralytics YOLO11 fournit une suite robuste d'outils et de métriques pour évaluer la performance de vos 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 vos modèles sont à la fois précis et fiables.
Regarder : Tutoriel sur les modes Ultralytics : Validation
Pourquoi valider avec Ultralytics YOLO ?
Voici pourquoi l'utilisation du mode Val de YOLO11 est avantageuse :
- Précision : Obtenez des métriques précises telles que mAP50, mAP75 et mAP50-95 pour évaluer de manière exhaustive votre modèle.
- Commodité : Utilisez des fonctionnalités intégrées qui mémorisent les paramètres d'entraînement, simplifiant ainsi le processus de validation.
- Flexibilité : Validez votre modèle avec les mêmes ensembles de données et tailles d'image, ou avec des ensembles différents.
- Réglage des hyperparamètres : Utilisez les métriques de validation pour affiner votre modèle et améliorer ses performances.
Principales fonctionnalités du mode Val
Voici les fonctionnalités notables offertes par le mode Val de YOLO11 :
- Paramètres automatisés : Les modèles mémorisent leurs configurations d'entraînement pour une validation simple.
- Prise en charge de plusieurs métriques : Évaluez votre modèle en fonction d'un éventail de métriques de précision.
- CLI et API python : Choisissez l'interface de ligne de commande ou l'API python selon votre préférence pour la validation.
- Compatibilité des données : Fonctionne de manière transparente avec les ensembles de données utilisés pendant la phase d'entraînement ainsi qu'avec les ensembles de données personnalisés.
Astuce
- Les modèles YOLO11 mémorisent automatiquement leurs paramètres d'entraînement, vous pouvez donc valider facilement un modèle à la même taille d'image et sur l'ensemble de données d'origine avec juste
yolo val model=yolo11n.pt
oumodel('yolo11n.pt').val()
Exemples d'utilisation
Valider le modèle YOLO11n entraîné précision sur l'ensemble de données COCO8. Aucun argument n'est nécessaire car le model
conserve son entraînement data
et les arguments en tant qu'attributs du modèle. Consultez la section Arguments ci-dessous pour obtenir une liste complète des arguments de validation.
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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 contains map50-95 of each category
yolo detect val model=yolo11n.pt # val official model
yolo detect val model=path/to/best.pt # val custom model
Arguments pour la validation du modèle YOLO
Lors de la validation des modèles YOLO, plusieurs arguments peuvent être affiné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. Vous trouverez ci-dessous une description détaillée de chaque argument pour vous aider à personnaliser efficacement vos paramètres de validation.
Argument | Type | Par défaut | Description |
---|---|---|---|
data |
str |
None |
Spécifie le chemin d'accès au fichier de configuration de l'ensemble de données (par exemple, coco8.yaml ). Ce fichier comprend les chemins d'accès à validation, les noms de classe et le nombre de classes. |
imgsz |
int |
640 |
Dé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. |
batch |
int |
16 |
Définit le nombre d'images par lot. Des valeurs plus élevées utilisent plus efficacement la mémoire du GPU, mais nécessitent plus de VRAM. Ajustez en fonction des ressources matérielles disponibles. |
save_json |
bool |
False |
Si True , enregistre les résultats dans un fichier JSON pour une analyse plus approfondie, une intégration avec d'autres outils ou une soumission à des serveurs d'évaluation comme COCO. |
conf |
float |
0.001 |
Définit le seuil de confiance minimal pour les détections. Des valeurs plus basses augmentent le rappel, mais peuvent introduire plus de faux positifs. Utilisé pendant la validation pour calculer les courbes de précision-rappel. |
iou |
float |
0.7 |
Définit le seuil Intersection Over Union pour la Suppression Non Maximale. Contrôle l'élimination des détections en double. |
max_det |
int |
300 |
Limite le nombre maximal de détections par image. Utile dans les scènes denses pour éviter les détections excessives et gérer les ressources de calcul. |
half |
bool |
True |
Active le calcul en demi-précision (FP16), réduisant l'utilisation de la mémoire et augmentant potentiellement la vitesse avec un impact minimal sur la précision. |
device |
str |
None |
Spécifie le dispositif de validation (cpu , cuda:0 , etc.). Quand None , sélectionne automatiquement le meilleur périphérique disponible. Plusieurs périphériques CUDA peuvent être spécifiés en les séparant par des virgules. |
dnn |
bool |
False |
Si True , utilise le module DNN d'OpenCV pour l'inférence du modèle ONNX, offrant une alternative aux PyTorch méthodes d'inférence. |
plots |
bool |
False |
Lorsque défini sur True , génère et enregistre des graphiques de prédictions par rapport à la vérité terrain, des matrices de confusion et des courbes PR pour l'évaluation visuelle des performances du modèle. |
classes |
list[int] |
None |
Spécifie une liste d'ID de classe sur lesquelles s'entraîner. Utile pour filtrer et se concentrer uniquement sur certaines classes pendant l'évaluation. |
rect |
bool |
True |
Si 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. |
split |
str |
'val' |
Détermine la division de l'ensemble 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. |
project |
str |
None |
Nom du répertoire de projet où les sorties de validation sont enregistrées. Aide à organiser les résultats de différentes expériences ou modèles. |
name |
str |
None |
Nom de l'exécution de la 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. |
verbose |
bool |
False |
Si 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_txt |
bool |
False |
Si True , enregistre les résultats de détection dans des fichiers texte, avec un fichier par image, ce qui est utile pour une analyse plus approfondie, un post-traitement personnalisé ou une intégration avec d'autres systèmes. |
save_conf |
bool |
False |
Si 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. |
workers |
int |
8 |
Nombre 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. |
augment |
bool |
False |
Active l'augmentation au moment du test (TTA) pendant la validation, ce qui peut améliorer la précision de la détection au prix d'une vitesse d'inférence plus lente en exécutant l'inférence sur des versions transformées de l'entrée. |
agnostic_nms |
bool |
False |
Active la suppression non maximale agnostique à la classe, qui fusionne les boîtes qui se chevauchent quelle que soit leur classe prédite. Utile pour les applications axées sur l'instance. |
single_cls |
bool |
False |
Traite toutes les classes comme une seule classe pendant la validation. Utile pour évaluer la performance du modèle sur des tâches de détection binaire ou lorsque les distinctions de classe ne sont pas importantes. |
visualize |
bool |
False |
Visualise les vérités de 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. |
Chacun de ces paramètres joue un rôle essentiel dans le processus de validation, permettant une évaluation personnalisable et efficace des modèles YOLO. L'ajustement de ces paramètres en fonction de vos besoins et ressources spécifiques peut vous aider à atteindre le meilleur équilibre entre précision et performance.
Exemple de validation avec des arguments
Regarder : Comment exporter les résultats de la validation du modèle en CSV, JSON, SQL, Polars DataFrame, etc.
Les exemples ci-dessous présentent la validation du modèle YOLO avec des arguments personnalisés en python et en CLI.
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0
Exporter ConfusionMatrix
Vous pouvez également enregistrer les résultats de ConfusionMatrix dans différents formats en utilisant le code fourni.
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Méthode | Type de retour | Description |
---|---|---|
summary() |
List[Dict[str, Any]] |
Convertit les résultats de validation en un dictionnaire résumé. |
to_df() |
DataFrame |
Renvoie les résultats de la validation sous la forme d'un DataFrame Polars structuré. |
to_csv() |
str |
Exporte les résultats de la validation au format CSV et renvoie la chaîne CSV. |
to_json() |
str |
Exporte les résultats de la validation au format JSON et renvoie la chaîne JSON. |
Pour plus de détails, consultez la DataExportMixin
documentation de la classe.
FAQ
Comment valider mon modèle YOLO11 avec Ultralytics ?
Pour valider votre modèle YOLO11, vous pouvez utiliser le mode Val fourni par Ultralytics. Par exemple, en utilisant l'API python, vous pouvez charger un modèle et exécuter la validation avec :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95
Vous pouvez également utiliser l'interface de ligne de commande (CLI) :
yolo val model=yolo11n.pt
Pour une personnalisation plus poussée, vous pouvez ajuster divers arguments comme imgsz
, batch
, et conf
dans les modes python et CLI. Consultez la Arguments pour la validation du modèle YOLO section pour la liste complète des paramètres.
Quelles mesures puis-je obtenir de la validation du modèle YOLO11 ?
La validation du modèle YOLO11 fournit plusieurs métriques clés pour évaluer les performances du modèle. Ceux-ci inclus:
- mAP50 (précision moyenne moyenne au seuil IoU 0,5)
- mAP75 (précision moyenne moyenne au seuil IoU de 0,75)
- mAP50-95 (précision moyenne moyenne sur plusieurs seuils IoU de 0,5 à 0,95)
En utilisant l'API python, vous pouvez 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
Pour une évaluation complète des performances, il est essentiel d'examiner toutes ces métriques. Pour plus de détails, consultez les Principales caractéristiques du mode Val.
Quels sont les avantages de l'utilisation d'Ultralytics YOLO pour la validation ?
L'utilisation d'Ultralytics YOLO pour la validation offre plusieurs avantages :
- Précision : YOLO11 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, ce qui simplifie la validation.
- Flexibilité : Vous pouvez effectuer la validation par rapport aux mêmes ensembles de données ou à des ensembles différents, ainsi qu'avec différentes tailles d'image.
- Optimisation des hyperparamètres : Les métriques de validation aident à affiner les modèles pour de meilleures performances.
Ces avantages garantissent que vos modèles sont évalués de manière approfondie et peuvent être optimisés pour des résultats supérieurs. Pour en savoir plus sur ces avantages, consultez la section Pourquoi valider avec Ultralytics YOLO.
Puis-je valider mon modèle YOLO11 en utilisant un ensemble de données personnalisé ?
Oui, vous pouvez valider votre modèle YOLO11 en utilisant un ensemble de données personnalisé. Spécifiez l'argument data
avec le chemin d'accès à votre fichier de configuration d'ensemble de données. Ce fichier doit inclure les chemins d'accès aux validation, les noms de classe et d'autres détails pertinents.
Exemple en python :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95
Exemple d'utilisation de la CLI :
yolo val model=yolo11n.pt data=path/to/your/custom_dataset.yaml
Pour des options plus personnalisables lors de la validation, consultez la section Exemple de validation avec des arguments.
Comment enregistrer les résultats de la validation dans un fichier JSON dans YOLO11 ?
Pour enregistrer les résultats de la validation dans un fichier JSON, vous pouvez définir le save_json
sur True
lors de l'exécution de la validation. Cela peut être fait à la fois dans l'API python et dans la CLI.
Exemple en python :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
Exemple d'utilisation de la CLI :
yolo val model=yolo11n.pt save_json=True
Cette fonctionnalité est particulièrement utile pour une analyse plus approfondie ou une intégration avec d'autres outils. Consultez les Arguments pour la validation du modèle YOLO pour plus de détails.