Présentation des jeux de données de segmentation sémantique#
La segmentation sémantique attribue une étiquette de classe à chaque pixel d'une image. Contrairement à la segmentation d'instances, la segmentation sémantique ne sépare pas les objets individuels d'une même classe. La cible d'entraînement est une carte de classes dense où chaque pixel contient un ID de classe.
Ce guide explique le format de jeu de données utilisé par les modèles Ultralytics YOLO de segmentation sémantique et répertorie les configurations de jeux de données intégrées disponibles pour l'entraînement et la validation.
Formats de jeux de données pris en charge#
Deux formats d'annotations sont pris en charge. Le chargeur du jeu de données sélectionne les masques PNG lorsque le fichier YAML du jeu de données définit une clé masks_dir, ou lorsqu'un dossier masks/ existe déjà à côté de tes images à la racine du jeu de données ; sinon, il utilise les annotations polygonales YOLO.
Format de masque PNG#
Les jeux de données de segmentation sémantique utilisent un fichier image et un fichier de masque par échantillon. Le masque est une image à canal unique, généralement au format PNG, où chaque valeur de pixel correspond à l'indice de classe du pixel correspondant de l'image.
- Les valeurs de pixel
0,1,2, ... représentent les ID de classe issus de la correspondancenamesdu jeu de données. - La valeur de pixel
255est traitée comme l'étiquette à ignorer et est exclue du calcul de la perte et des métriques. - Les fichiers de masque doivent utiliser le même nom de base que leur fichier image correspondant, par exemple
frankfurt_000000_000294.png. - Par défaut, les masques sont recherchés sous la forme
.png; s'ils sont absents, d'autres extensions d'image prises en charge sont également acceptées. Utilise des formats sans perte tels que.pngou.tiff, car la compression avec perte (par exemple.jpg) altère les valeurs de pixel des ID de classe.
La structure par défaut conserve les images et les masques dans des dossiers parallèles. La valeur masks_dir du fichier YAML du jeu de données remplace le composant de chemin images pour trouver les masques.
dataset/
├── images/
│ ├── train/
│ └── val/
└── masks/
├── train/
└── val/Par exemple, une image située à images/train/aachen_000000_000019.png est associée à un masque situé à masks/train/aachen_000000_000019.png lorsque masks_dir: masks.
Format d'annotations polygonales YOLO#
Si ton jeu de données contient déjà des annotations polygonales Ultralytics YOLO (un .txt par image avec des lignes <class-index> <x1> <y1> <x2> <y2> ...), tu peux entraîner directement un modèle de segmentation sémantique à partir de ces annotations — aucune conversion en masques PNG n'est nécessaire. Consulte le format de jeu de données de segmentation d'instances pour connaître la structure des lignes.
Ce mode est sélectionné automatiquement lorsque le fichier YAML du jeu de données omet masks_dir et qu'aucun dossier masks/ n'existe à côté de tes images à la racine du jeu de données — supprime ou renomme tout dossier masks/ restant, sinon le chargeur repasse en mode masques PNG et recherche les masques à cet emplacement. Fonctionnement :
- Les polygones sont convertis au chargement en masque sémantique par image, puis triés par superficie afin que les objets plus petits recouvrent les plus grands dans les zones de chevauchement.
- Multi-classe (
N > 1dansnames) : une classebackgroundsupplémentaire est ajoutée après les classes déclarées pour les pixels qui ne sont couverts par aucun polygone. Le modèle est construit avecN + 1canaux de sortie, le dernier canal correspondant à l'arrière-plan. - Mono-classe (
N == 1dansnames) : l'entraînement utilise toujours 1 classe. Le masque est binaire, avec ta classe déclarée représentée par1et les pixels non couverts par aucun polygone par0. Aucune classe d'arrière-plan supplémentaire n'est ajoutée ànames. - Les pixels ajoutés par le remplissage lors de l'augmentation (par exemple avec un recadrage aléatoire) utilisent toujours
255comme étiquette à ignorer.
Utilise ce mode lorsque tes données sont déjà annotées avec des polygones d'instances et que tu veux créer un modèle de segmentation sémantique à partir des mêmes fichiers.
Format YAML du jeu de données#
Les jeux de données de segmentation sémantique sont configurés avec des fichiers YAML. Les principaux champs sont les suivants :
| Clé | Description |
|---|---|
path | Répertoire racine du jeu de données. |
train | Chemin des images d'entraînement relatif à path, ou chemin absolu. |
val | Chemin des images de validation relatif à path, ou chemin absolu. |
test | Chemin facultatif des images de test. |
masks_dir | Nom du répertoire utilisé pour les masques sémantiques. Omet cette clé (sans dossier masks/ à la racine du jeu de données) pour passer au format d'annotations polygonales YOLO. |
names | Correspondance entre les ID de classe et les noms de classe. |
label_mapping | Correspondance facultative entre les ID du jeu de données source et les ID d'entraînement ou ignore_label. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes8
# Example usage: yolo semantic train data=cityscapes8.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
# └── cityscapes8 ← downloads here (small subset)
# └── images
# └── masks
# Dataset root directory
path: cityscapes8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
masks_dir: masks # semantic mask directory
# Cityscapes 19-class labels
names:
0: road
1: sidewalk
2: building
3: wall
4: fence
5: pole
6: traffic light
7: traffic sign
8: vegetation
9: terrain
10: sky
11: person
12: rider
13: car
14: truck
15: bus
16: train
17: motorcycle
18: bicycle
# Map source label IDs to train IDs; ignore_label is converted to 255.
label_mapping:
-1: ignore_label
0: ignore_label
1: ignore_label
2: ignore_label
3: ignore_label
4: ignore_label
5: ignore_label
6: ignore_label
7: 0
8: 1
9: ignore_label
10: ignore_label
11: 2
12: 3
13: 4
14: ignore_label
15: ignore_label
16: ignore_label
17: 5
18: ignore_label
19: 6
20: 7
21: 8
22: 9
23: 10
24: 11
25: 12
26: 13
27: 14
28: 15
29: ignore_label
30: ignore_label
31: 16
32: 17
33: 18
# Download URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/cityscapes8.zipUtilise label_mapping lorsque les ID des masques source ne correspondent pas déjà à des ID de classes d'entraînement contigus. Cityscapes et ADE20K incluent des correspondances qui convertissent les ID d'étiquettes d'origine en ID d'entraînement de segmentation sémantique YOLO et ignorent les étiquettes inutilisées.
Utilisation#
Entraîne un modèle YOLO26 de segmentation sémantique avec Python ou la CLI :
from ultralytics import YOLO
# Load a pretrained semantic segmentation model
model = YOLO("yolo26n-sem.pt")
# Train on the Cityscapes8 semantic segmentation dataset
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)Jeux de données pris en charge#
Ultralytics fournit des fichiers YAML de jeux de données de segmentation sémantique pour ces jeux de données. Consulte la page de la tâche de segmentation sémantique pour voir le tableau complet des benchmarks des modèles préentraînés.
- Cityscapes : un jeu de données de segmentation sémantique de scènes urbaines comportant 19 classes d’entraînement.
- Cityscapes8 : un sous-ensemble de Cityscapes de 8 images pour des tests rapides et des vérifications CI.
- ADE20K : un jeu de données d’interprétation de scènes avec 150 classes sémantiques.
Ajouter ton propre jeu de données#
Option A — masques PNG#
- Enregistre tes images dans des dossiers de sous-ensemble tels que
images/trainetimages/val. - Enregistre un masque à canal unique par image dans les dossiers de masques correspondants, tels que
masks/trainetmasks/val. - Vérifie que les valeurs de pixel des masques sont des ID de classe. Utilise
255pour les pixels qui doivent être ignorés. - Crée un fichier YAML de jeu de données avec
path,train,val,masks_diretnames. - Ajoute
label_mappinguniquement lorsque les ID de tes masques doivent être convertis en ID d'entraînement contigus.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks
names:
0: background
1: road
2: buildingOption B — annotations polygonales#
- Organise les images et les fichiers polygonaux
.txtexactement comme pour la segmentation d'instances. - Crée un fichier YAML de jeu de données avec
path,train,valetnames— ometmasks_dir. - Vérifie qu'aucun dossier
masks/n'existe à côté de tes images à la racine du jeu de données — sa seule présence fait passer le chargeur en mode masques PNG, même sansmasks_dirdans le fichier YAML. - N'ajoute pas d'entrée « background » à
names. Pour les jeux de données multi-classes, le chargeur en ajoute une automatiquement ; pour les jeux de données mono-classe, l'entraînement reste à 1 classe — ta classe déclarée devient1dans le masque et les pixels non couverts deviennent0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carUltralytics Platform fournit un outil d'annotation polygonale pour la tâche sémantique, ainsi qu'une annotation intelligente assistée par SAM — annote directement dans le navigateur, puis exporte ou entraîne un modèle sur le jeu de données annoté avec des polygones obtenu, sans avoir à configurer cette structure manuellement.
FAQ#
Les masques de segmentation sémantique sont des cartes de pixels denses. Chaque pixel contient un ID de classe et il y a une image de masque par image d'entraînement. Les annotations de segmentation d'instances dans Ultralytics YOLO utilisent des fichiers texte contenant les coordonnées des polygones, avec une ligne par instance d'objet.
La valeur de pixel
255est utilisée comme étiquette à ignorer. Ces pixels sont exclus du calcul de la perte et des métriques, ce qui est utile pour les régions vides, les pixels non annotés ou les classes absentes de l'ensemble d'étiquettes d'entraînement.Oui. Chaque masque sémantique doit avoir le même nom de base que l'image correspondante. Le chargeur du jeu de données remplace le composant de répertoire
imagesparmasks_diret recherche les fichiers de masque correspondants, en utilisant d'autres extensions d'image prises en charge (.jpg,.tiff, etc.) si aucun masque.pngn'est trouvé — seuls les formats sans perte sont toutefois recommandés, car cette recherche de remplacement ne l'impose pas.Oui, s'ils correspondent déjà aux ID de classes
names. Si le jeu de données source utilise des ID non contigus ou contient des étiquettes qui doivent être ignorées, ajoute une sectionlabel_mappingpour convertir les valeurs de pixel source en ID d'entraînement.Oui. Les jeux de données de segmentation d'instances utilisent des annotations polygonales Ultralytics YOLO (un
.txtpar image avec des lignes<class-index> <x1> <y1> <x2> <y2> ...) et les mêmes fichiers peuvent être réutilisés pour la segmentation sémantique — omet simplementmasks_dirdu fichier YAML du jeu de données et vérifie qu'aucun dossiermasks/n'existe à côté de tes images à la racine du jeu de données (sa seule présence déclenche le mode masques PNG, même simasks_dirn'est pas défini). Le chargeur convertit ensuite les polygones en masques par image à la volée. Pour les jeux de données multi-classes (N > 1), une classebackgroundsupplémentaire est ajoutée et le modèle est construit avecN + 1canaux de sortie. Pour les jeux de données mono-classe (N == 1), l'entraînement reste à 1 classe — le masque représente ta classe déclarée par1et les pixels non couverts par0.Ultralytics inclut des fichiers YAML de jeux de données prêts à l'emploi pour Cityscapes (19 classes de scènes urbaines), le sous-ensemble léger Cityscapes8 pour tester les pipelines et ADE20K (150 classes d'analyse de scènes). Chaque page documente la liste exacte des classes, les étapes de téléchargement et un exemple d'entraînement vérifié.