Ultralytics YOLO27 :
Get Started

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 distingue pas les objets individuels d'une même classe. La cible d'entraînement est une carte dense des classes où chaque pixel contient un identifiant 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 de jeux de données sélectionne les masques PNG si le fichier YAML du jeu de données définit une clé masks_dir, ou si un dossier masks/ existe déjà à côté de tes images à la racine du jeu de données ; sinon, il utilise les étiquettes polygonales 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 à un seul canal, généralement au format PNG, où la valeur de chaque pixel correspond à l'indice de classe du pixel correspondant dans l'image.

  • Les valeurs de pixel 0, 1, 2, ... représentent les identifiants de classe de la correspondance names du jeu de données.
  • La valeur de pixel 255 est traitée comme une étiquette à ignorer et n'est pas prise en compte dans le calcul de la perte ni des métriques.
  • Les fichiers de masque doivent porter le même nom de base que le fichier image correspondant, par exemple frankfurt_000000_000294.png.
  • Par défaut, les fichiers de masque sont recherchés sous la forme .png ; s'ils sont introuvables, les autres extensions d'image prises en charge sont également acceptées. Utilise des formats sans perte comme .png ou .tiff, car la compression avec perte (par exemple .jpg) altère les valeurs de pixel des identifiants de classe.

Par défaut, les images et les masques sont organisés dans des dossiers parallèles. La valeur masks_dir du fichier YAML du jeu de données remplace le composant de chemin images pour localiser 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'étiquettes polygonales YOLO#

Si ton jeu de données contient déjà des étiquettes 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 données, sans conversion en masques PNG. Consulte le format de jeu de données de segmentation d'instances pour connaître la structure des lignes.

Ce format est sélectionné automatiquement lorsque le fichier YAML du jeu de données ne contient pas 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 revient au mode des masques PNG et recherche les masques dans ce dossier. Comportement :

  • Au chargement, les polygones sont convertis en masque sémantique par image et triés par aire, de sorte que les objets plus petits recouvrent les plus grands dans les zones de chevauchement.
  • Plusieurs classes (N > 1 dans names) : une classe background supplé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 avec N + 1 canaux de sortie, et le dernier canal correspond à l'arrière-plan.
  • Une seule classe (N == 1 dans names) : l'entraînement s'effectue toujours avec une classe. Le masque est binaire : la classe déclarée est représentée par 1 et les pixels qui ne sont couverts par aucun polygone par 0. 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, un recadrage aléatoire) utilisent toujours 255 comme étiquette à ignorer.

Utilise ce format lorsque tes données sont déjà annotées avec des polygones d'instances et que tu souhaites 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 à l'aide de fichiers YAML. Voici les principaux champs :

CléDescription
pathRépertoire racine du jeu de données.
trainChemin d'accès aux images d'entraînement, relatif à path, ou chemin d'accès absolu.
valChemin d'accès aux images de validation, relatif à path, ou chemin d'accès absolu.
testChemin d'accès facultatif aux images de test.
masks_dirNom du répertoire utilisé pour les masques sémantiques. Omet cette clé (et vérifie qu'aucun dossier masks/ n'existe à la racine du jeu de données) pour passer au format d'étiquettes polygonales YOLO.
namesCorrespondance entre les identifiants de classe et les noms de classe.
label_mappingCorrespondance facultative entre les identifiants du jeu de données source et les identifiants 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à aux ID de classe d'entraînement contigus. Cityscapes et ADE20K incluent des correspondances qui convertissent les ID de label d'origine en ID d'entraînement YOLO pour la segmentation sémantique et ignorent les labels inutilisés.

Utilisation#

Entraîne un modèle YOLO26 de segmentation sémantique avec Python ou le CLI :

Exemple
from ultralytics import YOLO

# Charger un modèle préentraîné de segmentation sémantique
model = YOLO("yolo26n-sem.pt")

# Entraîner sur le jeu de données Cityscapes8 de segmentation sémantique
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 comprenant 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’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 partitions tels que images/train et images/val.
  2. Enregistre un masque à un seul canal par image dans les dossiers de masques correspondants, tels que masks/train et masks/val.
  3. Vérifie que les valeurs des pixels des masques sont des ID de classe. Utilise 255 pour les pixels à ignorer.
  4. Crée un fichier YAML de jeu de données avec path, train, val, masks_dir et names.
  5. Ajoute label_mapping uniquement si 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: building

Option B — Labels polygonaux#

  1. Organise les images et les fichiers polygonaux .txt exactement comme pour la segmentation d'instances.
  2. Crée un fichier YAML de jeu de données avec path, train, val et names — n'inclus pas masks_dir.
  3. Assure-toi qu'aucun dossier masks/ ne se trouve à côté de tes images à la racine du jeu de données — sa seule présence active le mode masques PNG du chargeur, même sans masks_dir dans le YAML.
  4. N'ajoute pas d'entrée « background » dans names. Pour les jeux de données multiclasse, le chargeur en ajoute une automatiquement ; pour les jeux de données à une seule classe, 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 propose un outil d'annotation polygonale pour la tâche de segmentation sémantique, ainsi que l'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 obtenu avec des labels polygonaux, 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 chaque image d'entraînement est associée à une image de masque. Les labels de segmentation d'instances dans Ultralytics YOLO utilisent des fichiers texte avec des coordonnées polygonales, une ligne par instance d'objet.

  • La valeur de pixel 255 sert de label à ignorer. Ces pixels sont exclus du calcul de la fonction de perte et des métriques, ce qui est utile pour les zones vides, les pixels non annotés ou les classes qui ne font pas partie de l'ensemble de labels 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 masque correspondants ; si aucun masque .png n'est trouvé, il se rabat sur d'autres extensions d'image prises en charge (.jpg, .tiff, etc.) — même si seuls les formats sans perte sont recommandés, car ce mécanisme de repli ne les impose pas.

  • Oui, s'ils correspondent déjà aux ID de classe names. Si le jeu de données source utilise des ID non contigus ou inclut des labels à ignorer, 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'instances utilisent des labels polygonaux 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 — il suffit de ne pas inclure masks_dir dans le YAML du jeu de données et de vérifier qu'aucun dossier masks/ ne se trouve à côté de tes images à la racine du jeu de données (sa seule présence active le mode masques PNG, même si masks_dir n'est pas défini). Le chargeur convertit alors les polygones en masques par image à la volée. Pour les jeux de données multiclasse (N > 1), une classe background supplémentaire est ajoutée et le modèle est construit avec N + 1 canaux de sortie. Pour les jeux de données à une seule classe (N == 1), l'entraînement reste à 1 classe — le masque représente ta classe déclarée par 1 et les pixels non couverts par 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 tester les pipelines et ADE20K (150 classes d'analyse de scènes). Chaque page décrit la liste exacte des classes, les étapes de téléchargement et un exemple d'entraînement vérifié.

Commentaires