YOLO Vision 2026 :

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 mappage names du jeu de données.
  • La valeur de pixel 255 est 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 .png par 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 .png ou .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 > 1 dans names) : une classe supplémentaire background est ajoutée après tes classes déclarées pour les pixels non couverts par un polygone. Le modèle est construit avec N + 1 canaux de sortie et le dernier canal est le fond.
  • Monoclasse (N == 1 dans names) : entraîné tout de même comme 1 classe. Le masque est binaire, avec ta classe déclarée affichée comme 1 et les pixels non couverts par un polygone comme 0. 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 255 comme é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
pathRépertoire racine du jeu de données.
trainChemin de l'image d'entraînement relatif à path, ou chemin absolu.
valChemin de l'image de validation relatif à path, ou chemin absolu.
testChemin optionnel de l'image de test.
masks_dirNom 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.
namesMappage de l'ID de classe vers le nom de la classe.
label_mappingMappage optionnel des ID du jeu de données source vers les ID d'entraînement ou ignore_label.
ultralytics/cfg/datasets/cityscapes8.yaml
# 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.zip

Utilise 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 :

Exemple
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#

  1. Enregistre tes images dans des dossiers de séparation tels que images/train et images/val.
  2. Enregistre un masque à canal unique par image dans les dossiers de masques en miroir, tels que masks/train et masks/val.
  3. Assure-toi que les valeurs des pixels des masques sont des ID de classe. Utilise 255 pour les pixels qui doivent être ignorés.
  4. Crée un fichier YAML de jeu de données avec path, train, val, masks_dir et names.
  5. Ajoute label_mapping uniquement 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: building

Option B — Étiquettes de polygone#

  1. Organise les images et les fichiers de polygones .txt exactement comme pour la segmentation d'instance.
  2. Crée un fichier YAML de jeu de données avec path, train, val et namesomets masks_dir.
  3. 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 sans masks_dir dans le fichier YAML.
  4. 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 devient 1 dans le masque et les pixels non couverts deviennent 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Ultralytics 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 255 est 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 images par masks_dir et recherche les fichiers de masques correspondants, en se repliant sur d'autres extensions d'image prises en charge (.jpg, .tiff, etc.) si un masque .png n'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 section label_mapping pour 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 .txt par 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 simplement masks_dir du fichier YAML du jeu de données, et assure-toi qu'aucun dossier masks/ 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 sans masks_dir dé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émentaire background est ajoutée, et le modèle est construit avec N + 1 canaux 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 comme 1 et les pixels non couverts comme 0.

  • 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é.

Commentaires