É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.
Pratique
Écrire le fichier#

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é | Obligatoire | Signification |
|---|---|---|
path | Non | Racine 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, val | Oui | Un dossier d’images, un fichier .txt répertoriant les chemins des images, ou une liste de l’un ou l’autre. |
test | Non | Images de test mises de côté, évaluées uniquement avec split=test. |
names | Oui | Indice de classe → nom ; sa longueur définit le nombre de classes. |
download | Non | URL 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.yamlval: 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.0002Lis le résultat dans l’ordre :
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.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.399instances : les fichiers d’annotation contiennent 399 comprimés.- 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
pathconvient. - 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#
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.
É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.
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.
Afficher la solution
path: /home/you/projects/pills/my_dataset # absolute path to the dataset root
train: images/train
val: images/val
names:
0: pillval: 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.0002Depuis 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.