Présentation des jeux de données de segmentation sémantique#
Semantic segmentation attribue une étiquette de classe à chaque pixel d'une image. Contrairement à la segmentation d'instance, 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 stocke un ID de classe.
Ce guide explique le format de jeu de données utilisé par les modèles de segmentation sémantique YOLO d'Ultralytics et liste 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'étiquettes sont pris en charge. Le chargeur de jeu de données choisit 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 se replie sur les étiquettes de polygones YOLO.
Format de masque PNG#
Les jeux de données de segmentation sémantique utilisent un fichier image et un fichier masque par échantillon. Le masque est une image à canal unique, généralement au format PNG, où chaque valeur de pixel correspond à l'index de la classe du pixel de l'image associé.
- Les valeurs des pixels
0,1,2, ... représentent les ID de classe provenant du mappagenamesdu jeu de données. - La valeur de pixel
255est traitée comme l'étiquette d'ignorance et est exclue du calcul de la perte et des métriques. - Les fichiers de masques doivent utiliser le même nom de base que leur fichier image correspondant, par exemple
frankfurt_000000_000294.png. - Les masques sont résolus sous le nom
.pngpar défaut ; s'ils sont manquants, 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 des pixels des ID de classe.
La disposition 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'étiquette de polygone YOLO#
Si ton jeu de données possède déjà des étiquettes de polygones Ultralytics YOLO (un .txt par image avec des lignes <class-index> <x1> <y1> <x2> <y2> ...), tu peux entraîner la segmentation sémantique directement à partir de celles-ci — aucune conversion de masque PNG n'est nécessaire. Consulte le format de jeu de données de segmentation d'instance pour la disposition au niveau des lignes.
Ce chemin 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 bascule en mode masque PNG et recherche les masques à cet endroit. Comportement :
- Les polygones sont convertis en un masque sémantique par image au moment du chargement, triés par zone afin que les petits objets remplacent les plus grands dans les zones de chevauchement.
- Multiclasse (
N > 1dansnames) : une classe supplémentairebackgroundest ajoutée après tes classes déclarées pour les pixels non couverts par un polygone. Le modèle est construit avecN + 1canaux de sortie et le dernier canal est le fond. - Monoclasse (
N == 1dansnames) : entraîné tout de même comme 1 classe. Le masque est binaire, avec ta classe déclarée affichée comme1et les pixels non couverts par un polygone comme0. Aucune classe de fond supplémentaire n'est ajoutée ànames. - Les pixels ajoutés par le remplissage d'augmentation (par exemple, le recadrage aléatoire) utilisent toujours
255comme étiquette d'ignorance.
Utilise ce chemin lorsque tes données sont déjà étiquetées en polygones d'instance et que tu souhaites obtenir 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 champs principaux sont :
| Clé | Description |
|---|---|
path | Répertoire racine du jeu de données. |
train | Chemin de l'image d'entraînement relatif à path, ou chemin absolu. |
val | Chemin de l'image de validation relatif à path, ou chemin absolu. |
test | Chemin optionnel de l'image de test. |
masks_dir | Nom du répertoire utilisé pour les masques sémantiques. Omets cette clé (sans dossier masks/ à la racine du jeu de données) pour basculer vers le format d'étiquettes de polygones YOLO. |
names | Mappage de l'ID de classe vers le nom de la classe. |
label_mapping | Mappage optionnel des ID du jeu de données source vers 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 classe d'entraînement contigus. Cityscapes et ADE20K incluent des mappages qui convertissent les ID d'étiquettes d'origine en ID d'entraînement de segmentation sémantique YOLO et ignorent les étiquettes non utilisées.
Utilisation#
Entraîne un modèle de segmentation sémantique YOLO26 avec Python ou l'interface 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 le tableau complet des benchmarks de modèles pré-entraînés.
- Cityscapes : ensemble de données de segmentation sémantique de scènes de rue urbaines avec 19 classes d'entraînement.
- Cityscapes8 : Un sous-ensemble Cityscapes de 8 images pour des tests rapides et des vérifications CI.
- ADE20K : ensemble de données d'analyse 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 séparation tels que
images/trainetimages/val. - Enregistre un masque à canal unique par image dans les dossiers de masques en miroir, tels que
masks/trainetmasks/val. - Assure-toi que les valeurs des pixels 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 tes ID de masque nécessitent une conversion vers des 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 — Étiquettes de polygone#
- Organise les images et les fichiers de polygones
.txtexactement comme pour la segmentation d'instance. - Crée un fichier YAML de jeu de données avec
path,train,valetnames— ometsmasks_dir. - Assure-toi qu'aucun dossier
masks/n'existe à côté de tes images à la racine du jeu de données — sa seule présence fait basculer le chargeur en mode masque PNG même sansmasks_dirdans le fichier YAML. - N'ajoute pas d'entrée "background" à
names. Pour les jeux de données multiclasses, le chargeur en ajoute un automatiquement ; pour les jeux de données monoclasses, 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 par polygones pour la tâche sémantique, ainsi qu'une annotation intelligente assistée par SAM — annote directement dans le navigateur et exporte ou entraîne sur le jeu de données étiqueté par polygones résultant sans configurer cette disposition manuellement.
FAQ#
Les masques de segmentation sémantique sont des cartes de pixels denses. Chaque pixel stocke un ID de classe, et il y a une image de masque par image d'entraînement. Les étiquettes de segmentation d'instance dans Ultralytics YOLO utilisent des fichiers texte avec des coordonnées de polygone, une ligne par instance d'objet.
La valeur de pixel
255est utilisée comme étiquette d'ignorance. Ces pixels sont ignorés lors du calcul de la perte et des métriques, ce qui est utile pour les régions vides, les pixels non étiquetés ou les classes situées en dehors de l'ensemble des étiquettes d'entraînement.Oui. Chaque masque sémantique doit avoir le même nom de base que l'image correspondante. Le chargeur de jeu de données remplace le composant de répertoire
imagesparmasks_diret recherche les fichiers de masques correspondants, en se repliant sur d'autres extensions d'image prises en charge (.jpg,.tiff, etc.) si un masque.pngn'est pas trouvé — bien que seuls les formats sans perte soient recommandés, car le mécanisme de repli ne l'impose pas.Oui, s'ils correspondent déjà à tes ID de classe
names. Si le jeu de données source utilise des ID non contigus ou inclut des étiquettes qui doivent être ignorées, ajoute une sectionlabel_mappingpour convertir les valeurs des pixels source en ID d'entraînement.Oui. Les jeux de données de segmentation d'instance utilisent des étiquettes de polygones 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 — omets simplementmasks_dirdu fichier YAML du jeu de données, et assure-toi 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 masque PNG même sansmasks_dirdéfini). Le chargeur convertit ensuite les polygones en masques par image à la volée. Pour les jeux de données multiclasses (N > 1), une classe supplémentairebackgroundest ajoutée, et le modèle est construit avecN + 1canaux de sortie. Pour les jeux de données monoclasses (N == 1), l'entraînement reste à 1 classe — le masque affiche ta classe déclarée comme1et les pixels non couverts comme0.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 les tests de 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é.