Ultralytics YOLO27 : Inscris-toi sur la liste d’attente.
Get Started
Entraîne ton premier modèle YOLO·Données·Leçon 5/10
Leçondébutant

Écrire un fichier YAML de jeu de données

Rédige le fichier data.yaml qui indique à Ultralytics où trouver tes dossiers et qui nomme tes classes, fais en sorte que ses chemins soient résolus depuis n’importe quel emplacement, puis vérifie rapidement le tout avec yolo val.

Le fichier YAML du jeu de données est le contrat entre tes dossiers et toutes les commandes Ultralytics. Une erreur de chemin empêche toute exécution ; une erreur dans l’ordre des classes laisse tout s’exécuter, mais chaque prédiction reçoit le mauvais nom sans le moindre avertissement.

Dans cette leçon, tu vas rédiger data.yaml pour le jeu de données de comprimés, apprendre exactement comment Ultralytics résout ses chemins afin qu’il fonctionne aussi sur la machine d’un coéquipier, puis le vérifier avec une commande de validation sur une ligne, qui te donnera également la référence que ton entraînement devra dépasser.

Résultat

Tu peux rédiger un fichier data.yaml dont les chemins sont résolus depuis n’importe quel répertoire de travail, garder les indices de classe cohérents et lire la ligne de bilan yolo val pour confirmer que le jeu de données est bien connecté.

Parcours accéléré
Si tu connais déjà les bases, voici la version courte.
  1. Définis path sur la racine du jeu de données, et train/val sur les dossiers d’images relatifs à cette racine.

  2. Répertorie names sous la forme indice → nom, en respectant exactement les fichiers d’annotation.

  3. Exécute yolo val model=yolo26n.pt data=my_dataset/data.yaml et lis la ligne de bilan.

  4. Rends path absolu avant de le partager ; ajoute uniquement de nouvelles classes.

Pratique

Écrire le fichier#

Page de profil d’Ultralytics Platform répertoriant les jeux de données d’un utilisateur, avec un bouton « Nouveau jeu de données »

Les jeux de données sur Ultralytics Platform ont leurs propres classes et partitions, et l’entraînement les référence avec un URI comme data=ul://username/datasets/name. Sur ta propre machine, le fichier YAML joue ce rôle de contrat. Enregistre-le sous le nom my_dataset/data.yaml :

path: my_dataset # dataset root: absolute, or relative to where you run yolo
train: images/train # relative to path
val: images/val # relative to path
# test: images/test  # optional held-out split

names:
  0: pill
CléObligatoireSignification
pathNonRacine du jeu de données ; train, val et test sont relatifs à cette racine. Si elle est omise, le dossier du fichier YAML est utilisé.
train, valOuiUn dossier d’images, un fichier .txt répertoriant les chemins des images, ou une liste de l’un ou l’autre.
testNonImages de test mises de côté, évaluées uniquement avec split=test.
namesOuiIndice de classe → nom ; sa longueur définit le nombre de classes.
downloadNonURL ou script qui récupère le jeu de données lorsque ses images sont manquantes.

train et val pointent vers des dossiers d’images ; les annotations sont trouvées en remplaçant images par labels. Le fichier YAML coco8 est un exemple minimal fonctionnel, et le fichier YAML VOC en présente un plus complet.

Exemple pratique : vérifier rapidement le fichier#

La validation avec le modèle préentraîné est la vérification complète la plus rapide. Elle lit chaque image et annotation, signale les problèmes et calcule les métriques :

yolo val model=yolo26n.pt data=my_dataset/data.yaml
val: Scanning my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt: 100%
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         23        399     0.0256    0.00251      0.001     0.0002

Lis le résultat dans l’ordre :

  1. Scanning my_dataset/labels/val : le dossier qu’Ultralytics a réellement trouvé. Vérifie qu’il s’agit bien de celui que tu voulais.
  2. 23 images, 0 backgrounds, 0 corrupt : chaque image de validation possède un fichier d’annotation valide. Les images d’arrière-plan non prévues ou tout nombre d’éléments corrompus te ramènent à la leçon précédente.
  3. 399 instances : les fichiers d’annotation contiennent 399 comprimés.
  4. mAP50-95 de 0.0002 : le résultat est correct, il n’est pas erroné. COCO ne comporte pas de classe « comprimé », donc le modèle préentraîné ne peut pas les détecter. Ce score presque nul constitue ta référence. Lorsque tes classes existent dans COCO, comme les personnes ou les voitures, la même commande fournit plutôt une référence pertinente.

Faire fonctionner les chemins partout#

La plupart des erreurs du type « images introuvables » sont liées aux chemins. Ultralytics résout path comme suit :

datasets_dir est un paramètre Ultralytics ; yolo settings l’affiche, et le guide des paramètres explique comment le modifier. Les jeux de données intégrés s’appuient sur cette valeur de repli : coco8.yaml définit path: coco8 ainsi qu’une URL download:, ce qui permet à data=coco8.yaml de fonctionner depuis n’importe quel dossier.

Règles de décision :

  • Tu es seul et tu travailles toujours depuis le dossier du projet ? Un chemin relatif path convient.
  • Des coéquipiers, des serveurs, la CI ou des notebooks dans d’autres dossiers ? Utilise un chemin absolu path.
  • Les données se trouvent ailleurs et doivent se télécharger elles-mêmes ? Ajoute download: avec une URL zip.

Fais des indices de classe un contrat#

L’entier au début de chaque ligne d’annotation est un indice dans names. Ultralytics vérifie la plage — Label class 1 exceeds dataset class count 1 — mais ne peut pas vérifier la signification. Si ton outil d’annotation a exporté 0: forklift, 1: person et que ton YAML indique 0: person, 1: forklift, l’entraînement réussit, le mAP de validation semble correct et chaque prédiction porte le mauvais nom. Garde une source unique de vérité pour la liste des classes, partagée par l’outil d’annotation, le script de conversion, le YAML et ton code de déploiement.

Éviter ces erreurs#

Chemin relatif depuis le mauvais dossier

Symptôme : FileNotFoundError: Dataset 'data.yaml' images not found, missing path '.../datasets/my_dataset/images/val', accompagné d'une note sur le répertoire de téléchargement du jeu de données. Cause : tu as lancé la commande depuis un autre dossier, donc le chemin relatif path n'existait pas et Ultralytics a cherché dans datasets_dir à la place. Solution : lance la commande depuis le dossier du projet ou rends path absolu.

Réordonner les noms a des conséquences destructrices

Échanger ou supprimer des entrées dans names sans réétiqueter modifie silencieusement le sens de chaque étiquette. Le modèle s'entraîne et prédit les mauvaises classes, sans aucune erreur. Ajoute les nouvelles classes à la fin, avec l'indice libre suivant, et ne renumérote jamais les classes existantes.

Les listes sont fusionnées en un seul score

val: [images/val_day, images/val_night] fusionne les deux dossiers en un seul jeu de validation et renvoie un seul nombre. Pour distinguer le jour de la nuit — ou un jeu de régression sélectionné d'un nouvel échantillon de production — conserve un fichier YAML par jeu et valide chacun séparément. Un jeu de test que tu n'évalues qu'une fois, avec split=test, est abordé dans Bien diviser le jeu de données.

Les paramètres d’entraînement, comme l’augmentation et la mise en cache, sont des arguments de train, pas des clés YAML ; ils figurent tous dans la référence de configuration.

Essayer

Écris my_dataset/data.yaml et exécute yolo val model=yolo26n.pt data=my_dataset/data.yaml. Note le nombre d’images, d’arrière-plans, d’images corrompues et d’instances, ainsi que le mAP50-95 de référence. Ensuite, cd dans un autre dossier, relance avec le chemin du YAML, lis l’erreur et corrige le YAML pour que la commande fonctionne depuis n’importe où. Fournis le YAML corrigé et les deux lignes d’analyse.

Terminé lorsque
Tu as terminé la leçon lorsque tous les éléments suivants sont réunis.
  • yolo val indique 23 images, 0 arrière-plan et 0 image corrompue pour ton YAML.

  • Tu as noté le mAP50-95 de référence du modèle préentraîné pour le jeu de données.

  • Ton YAML fonctionne depuis n’importe quel répertoire de travail, car path est absolu.

Afficher la solution
path: /home/you/projects/pills/my_dataset # absolute path to the dataset root
train: images/train
val: images/val

names:
  0: pill
val: Scanning /home/you/projects/pills/my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt
                   all         23        399     0.0256    0.00251      0.001     0.0002

Depuis un autre dossier, la version relative a échoué avec Dataset ... images not found, car my_dataset n’y existait pas et la solution de repli datasets_dir n’avait pas non plus de copie. Le chemin absolu path supprime cette recherche. Le mAP50-95 de référence est d’environ 0 : le modèle préentraîné ne connaît pas la classe des pilules.

Et ensuite ?

Les données sont connectées et la référence est consignée. Ensuite, entraîne YOLO26 sur ces données.