Validation du modèle avec Ultralytics YOLO
Introduction
La validation est une étape critique du pipeline d'apprentissage automatique, qui te permet d'évaluer la qualité de tes modèles entraînés. Le mode Val du site Ultralytics YOLOv8 fournit une suite robuste d'outils et de mesures pour évaluer les performances de tes modèles de détection d'objets. Ce guide constitue une ressource complète pour comprendre comment utiliser efficacement le mode Val afin de s'assurer que tes modèles sont à la fois précis et fiables.
Regarde : Ultralytics Tutoriel sur les modes : Validation
Pourquoi valider avec Ultralytics YOLO ?
Voici pourquoi il est avantageux d'utiliser le mode Val de YOLOv8:
- Précision : Obtiens des mesures précises comme mAP50, mAP75 et mAP50-95 pour évaluer ton modèle de façon complète.
- Pratique : Utilise les fonctions intégrées qui se souviennent des paramètres de formation, ce qui simplifie le processus de validation.
- Flexibilité : Valide ton modèle avec des jeux de données et des tailles d'images identiques ou différents.
- Réglage des hyperparamètres : Utilise les mesures de validation pour affiner ton modèle afin d'obtenir de meilleures performances.
Caractéristiques principales de Val Mode
Ce sont les fonctionnalités notables offertes par le mode Val de YOLOv8:
- Réglages automatisés : Les modèles se souviennent de leurs configurations d'entraînement pour une validation simple.
- Soutien multi-métrique : Évalue ton modèle en fonction d'une série de mesures de précision.
- CLI et Python API : Choisis l'interface en ligne de commande ou l'API Python en fonction de tes préférences en matière de validation.
- Compatibilité des données : Fonctionne de façon transparente avec les ensembles de données utilisés pendant la phase de formation ainsi qu'avec les ensembles de données personnalisés.
Astuce
- YOLOv8 Les modèles se souviennent automatiquement de leurs paramètres d'apprentissage, ce qui te permet de valider un modèle à la même taille d'image et sur l'ensemble de données d'origine en toute simplicité.
yolo val model=yolov8n.pt
oumodel('yolov8n.pt').val()
Exemples d'utilisation
Valide la précision du modèle YOLOv8n entraîné sur le jeu de données COCO8. Aucun argument n'a besoin d'être passé en tant que model
conserve sa formation data
et les arguments en tant qu'attributs du modèle. Voir la section Arguments ci-dessous pour une liste complète des arguments d'exportation.
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.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
Arguments en faveur de la validation du modèle 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 description détaillée de chaque argument pour t'aider à personnaliser efficacement tes paramètres de validation.
Argument | Type | DĂ©faut | Description |
---|---|---|---|
data |
str |
None |
Spécifie le chemin d'accès au fichier de configuration du jeu de données (par ex, coco8.yaml ). Ce fichier comprend les chemins d'accès aux données de validation, les noms des classes 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 d'être traitées. |
batch |
int |
16 |
Règle le nombre d'images par lot. Utilise -1 pour AutoBatch, qui s'ajuste automatiquement en fonction de la disponibilité de la mémoire sur GPU . |
save_json |
bool |
False |
Si True enregistre les résultats dans un fichier JSON en vue d'une analyse plus approfondie ou d'une intégration à d'autres outils. |
save_hybrid |
bool |
False |
Si True enregistre une version hybride des étiquettes qui combine les annotations originales avec des prédictions de modèle supplémentaires. |
conf |
float |
0.001 |
Définit le seuil de confiance minimum pour les détections. Les détections dont le niveau de confiance est inférieur à ce seuil sont rejetées. |
iou |
float |
0.6 |
Définit le seuil d'intersection au-dessus de l'union (IoU) pour la suppression non maximale (NMS). Aide à réduire les détections de doublons. |
max_det |
int |
300 |
Limite le nombre maximum de détections par image. Utile dans les scènes denses pour éviter les détections excessives. |
half |
bool |
True |
Permet le calcul en demi-précision (FP16), ce qui réduit l'utilisation de la mémoire et augmente potentiellement la vitesse avec un impact minimal sur la précision. |
device |
str |
None |
Spécifie le dispositif de validation (cpu , cuda:0 etc.) Permet une certaine flexibilité dans l'utilisation des ressources CPU ou GPU . |
dnn |
bool |
False |
Si True utilise le module DNN d'OpenCV pour l'inférence du modèle ONNX , offrant ainsi une alternative aux méthodes d'inférence de PyTorch . |
plots |
bool |
False |
Lorsqu'il est réglé sur True Il génère et enregistre les tracés des prédictions par rapport à la vérité de terrain pour une évaluation visuelle de la performance du modèle. |
rect |
bool |
False |
Si True Il utilise l'inférence rectangulaire pour la mise en lots, ce qui permet de réduire le rembourrage et d'augmenter potentiellement la vitesse et l'efficacité. |
split |
str |
val |
Détermine la division du jeu de données à utiliser pour la validation (val , test ou train ). Permet une certaine souplesse dans le choix du segment de données pour l'évaluation des performances. |
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 tes besoins et de tes ressources spécifiques peut permettre d'atteindre le meilleur équilibre entre précision et performance.
Exemple de validation avec des arguments
Les exemples ci-dessous présentent la validation du modèle YOLO avec des arguments personnalisés dans Python et CLI.
Exemple
FAQ
Comment valider mon modèle YOLOv8 avec Ultralytics?
Pour valider ton modèle YOLOv8 , tu peux utiliser le mode Val fourni par Ultralytics. Par exemple, en utilisant l'API Python , tu peux charger un modèle et lancer la validation avec :
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95
Tu peux aussi utiliser l'interface de ligne de commande (CLI) :
Pour une personnalisation plus poussée, tu peux ajuster divers arguments tels que imgsz
, batch
et conf
dans les modes Python et CLI . Vérifie le Arguments en faveur de la validation du modèle YOLO pour obtenir la liste complète des paramètres.
Quelles mesures puis-je obtenir de la validation du modèle YOLOv8 ?
YOLOv8 La validation du modèle fournit plusieurs mesures clés pour évaluer la performance du modèle. Il s'agit notamment de :
- mAP50 (précision moyenne au seuil de 0,5 de l'IoU)
- mAP75 (précision moyenne au seuil de l'IoU 0,75)
- mAP50-95 (précision moyenne sur plusieurs seuils de l'IoU de 0,5 à 0,95)
En utilisant l'API Python , tu peux accéder à ces mesures 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 crucial d'examiner toutes ces mesures. Pour plus de détails, reporte-toi aux caractéristiques principales du mode Val.
Quels sont les avantages de l'utilisation de Ultralytics YOLO pour la validation ?
L'utilisation de Ultralytics YOLO pour la validation présente plusieurs avantages :
- Précision : YOLOv8 offre des mesures de performance précises, y compris mAP50, mAP75 et mAP50-95.
- Pratique : Les modèles se souviennent de leurs paramètres d'apprentissage, ce qui facilite la validation.
- Flexibilité : Tu peux valider par rapport à des ensembles de données et des tailles d'images identiques ou différents.
- Réglage des hyperparamètres : Les mesures de validation permettent d'affiner les modèles pour obtenir de meilleures performances.
Ces avantages garantissent que tes modèles sont évalués de façon approfondie et peuvent être optimisés pour obtenir des résultats supérieurs. Pour en savoir plus sur ces avantages, consulte la section Pourquoi valider avec Ultralytics YOLO .
Puis-je valider mon modèle YOLOv8 en utilisant un ensemble de données personnalisé ?
Oui, tu peux valider ton modèle YOLOv8 en utilisant un ensemble de données personnalisé. Spécifie le data
avec le chemin d'accès au fichier de configuration de ton jeu de données. Ce fichier doit inclure les chemins d'accès aux données de validation, les noms des classes et d'autres détails pertinents.
Exemple sur Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95
Exemple avec CLI:
Pour plus d'options personnalisables lors de la validation, voir la section Exemple de validation avec des arguments.
Comment enregistrer les résultats de la validation dans un fichier JSON sur YOLOv8?
Pour enregistrer les résultats de la validation dans un fichier JSON, tu peux définir le paramètre save_json
argument pour True
lors de la validation. Cela peut ĂŞtre fait Ă la fois dans l'API Python et dans CLI.
Exemple sur Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
Exemple avec CLI:
Cette fonctionnalité est particulièrement utile pour des analyses plus poussées ou pour l'intégration avec d'autres outils. Consulte les arguments en faveur de la validation du modèle YOLO pour plus de détails.
Créé le 2023-11-12, Mis à jour le 2024-07-04
Auteurs : glenn-jocher (14), Burhan-Q (1), RizwanMunawar (1)