Ultralytics YOLO27 :

Jeu de données Cityscapes#

Le jeu de données Cityscapes est un benchmark à grande échelle de segmentation sémantique de scènes de rue urbaines capturées dans 50 villes européennes. Il comprend 2 975 images d'entraînement annotées avec précision et 500 images de validation réparties en 19 classes. C'est l'un des jeux de données les plus utilisés pour la recherche sur la conduite autonome et la compréhension des scènes urbaines avec les modèles Ultralytics YOLO.

Fonctionnalités clés#

  • Les annotations fines de Cityscapes comprennent 2 975 images d'entraînement et 500 images de validation réparties en 19 classes ; l'archive fournit également 1 525 images de test, mais les masques publiés ne labellisent que le véhicule du sujet et la bordure de l'image — les annotations des classes réelles ne sont pas disponibles, et l'obtention des scores officiels sur le jeu de test nécessite d'envoyer les prédictions au serveur d'évaluation Cityscapes.
  • Le jeu de données couvre 19 classes d'évaluation réparties dans les catégories surfaces planes, personnes, véhicules, construction, objets, nature et ciel.
  • Cityscapes fournit des métriques d'évaluation standardisées, comme l'intersection sur l'union moyenne (mIoU) pour la segmentation sémantique, afin de comparer efficacement les performances des modèles.
  • Avant de te lancer dans le téléchargement manuel de ~11 Go, vérifie le bon fonctionnement de ton pipeline d'entraînement avec le sous-ensemble Cityscapes8 de 8 images.

Structure du jeu de données#

La configuration Ultralytics s'attend à trouver la structure suivante une fois la préparation terminée :

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/
Téléchargement manuel requis

Cityscapes ne propose pas de téléchargement automatique des archives. Crée un compte sur le site web Cityscapes, puis télécharge les archives leftImg8bit_trainvaltest.zip et gtFine_trainvaltest.zip (~11 Go au total) et extrais-les dans la racine du jeu de données cityscapes. Lors du premier entraînement, Ultralytics les réorganise automatiquement selon la structure images/ et masks/ présentée ci-dessus.

Les masques sémantiques sont des fichiers PNG à un seul canal. La section label_mapping associe les ID de labels d'origine de Cityscapes aux 19 ID d'entraînement standard et affecte les labels ignorés ou vides à 255 afin qu'ils soient exclus de l'entraînement et de l'évaluation.

Remarque

Les masques gtFine/test mis à disposition du public ne labellisent que le véhicule du sujet et les bordures de l'image — toutes les autres classes sont vides. Calcule le mIoU sur la partition val pour l'évaluation locale ; pour obtenir les scores officiels sur le jeu de test, tu dois envoyer les prédictions au serveur d'évaluation Cityscapes.

Applications#

Cityscapes est largement utilisé pour entraîner et évaluer des modèles d'apprentissage profond en segmentation sémantique, en particulier pour la conduite autonome, les systèmes avancés d'aide à la conduite (ADAS) et la robotique urbaine.

Ses images haute résolution et ses annotations détaillées en font également une ressource précieuse pour la recherche sur l'analyse de scènes en temps réel, la compréhension des voies et des obstacles, ainsi que toute tâche nécessitant une compréhension dense, au niveau du pixel, d'environnements urbains complexes. Les modèles YOLO26 préentraînés de segmentation sémantique atteignent jusqu'à 83,6 mIoU sur le jeu de validation Cityscapes — consulte la page des modèles de segmentation sémantique pour voir le tableau complet des benchmarks. Tu peux organiser, visualiser et gérer les données Cityscapes tout au long du flux de développement des modèles avec Ultralytics Platform.

Fichier YAML du jeu de données#

Un fichier YAML de jeu de données définit les chemins Cityscapes, les classes, le répertoire des masques et la correspondance des labels. Le fichier cityscapes.yaml est maintenu à l'adresse https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/cityscapes.yaml.

ultralytics/cfg/datasets/cityscapes.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes
# Example usage: yolo semantic train data=cityscapes.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes ← downloads here (11 GB)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes # dataset root dir
train: images/train # train images (relative to 'path') 2975 images
val: images/val # val images (relative to 'path') 500 images
test: images/test # test images (relative to 'path') 1525 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

# Preparation script (requires manual Cityscapes download)
download: |
  from pathlib import Path
  from shutil import copy2

  cityscapes_dir = Path(yaml["path"])  # dataset root dir
  # Download and extract the official Cityscapes leftImg8bit and gtFine archives into cityscapes_dir first.
  leftimg8bit_dir = cityscapes_dir / "leftImg8bit"
  gtfine_dir = cityscapes_dir / "gtFine"

  for split in ("train", "val", "test"):
      print(f"Processing {split} set")
      src_image_dir = leftimg8bit_dir / split
      dst_image_dir = cityscapes_dir / "images" / split
      dst_mask_dir = cityscapes_dir / "masks" / split
      dst_image_dir.mkdir(parents=True, exist_ok=True)
      dst_mask_dir.mkdir(parents=True, exist_ok=True)

      image_paths = sorted(src_image_dir.rglob("*_leftImg8bit.png"))
      for image_path in image_paths:
          relative_path = image_path.relative_to(src_image_dir)
          mask_path = gtfine_dir / split / relative_path.parent / image_path.name.replace(
              "_leftImg8bit.png", "_gtFine_labelIds.png"
          )
          if not mask_path.exists():
              raise FileNotFoundError(f"Mask not found for {image_path}: {mask_path}")

          image_name = image_path.name.replace("_leftImg8bit", "")
          mask_name = mask_path.name.replace("_gtFine_labelIds", "")
          copy2(image_path, dst_image_dir / image_name)
          copy2(mask_path, dst_mask_dir / mask_name)

Utilisation#

Pour entraîner un modèle YOLO26n-sem sur le jeu de données Cityscapes pendant 100 époques avec une taille d'image de 1024, tu peux utiliser les extraits de code suivants. Pour consulter la liste complète des arguments disponibles, reporte-toi à la page Entraînement du modèle.

Exemple d’entraînement
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n-sem.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)

# Entraîner le modèle
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)

Citations, licence et remerciements#

Cityscapes est distribué sous une licence personnalisée à usage non commercial — son utilisation est gratuite pour la recherche universitaire et l'évaluation, mais toute utilisation commerciale, licence ou redistribution des données nécessite une autorisation distincte de l'équipe Cityscapes.

Si tu utilises le jeu de données Cityscapes dans le cadre de tes recherches ou de tes travaux de développement, cite l'article suivant :

Citation
@inproceedings{Cordts2016Cityscapes,
  title={The Cityscapes Dataset for Semantic Urban Scene Understanding},
  author={Cordts, Marius and Omran, Mohamed and Ramos, Sebastian and Rehfeld, Timo and Enzweiler, Markus and Benenson, Rodrigo and Franke, Uwe and Roth, Stefan and Schiele, Bernt},
  booktitle={Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
  year={2016}
}

Nous tenons à remercier l'équipe Cityscapes pour la création et la maintenance de cette ressource précieuse pour les communautés de la conduite autonome et de la vision par ordinateur. Pour en savoir plus sur le jeu de données Cityscapes et ses créateurs, consulte le site web du jeu de données Cityscapes.

FAQ#

  • Le jeu de données Cityscapes est un benchmark à grande échelle de segmentation sémantique de scènes de rue urbaines réparties dans 50 villes européennes. Il est largement utilisé comme référence pour la recherche sur la conduite autonome et les ADAS. Ses 19 classes d'évaluation finement annotées, ses images haute résolution et sa métrique standardisée d'intersection sur l'union moyenne (mIoU) en font l'un des benchmarks les plus cités pour les modèles de compréhension dense des scènes.

  • Pour entraîner un modèle YOLO26n-sem sur le jeu de données Cityscapes pendant 100 époques avec une taille d'image de 1024, tu peux utiliser les extraits de code suivants. Pour consulter la liste détaillée des arguments disponibles, reporte-toi à la page Entraînement du modèle.

    Exemple d’entraînement
    from ultralytics import YOLO
    
    # Charger un modèle
    model = YOLO("yolo26n-sem.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)
    
    # Entraîner le modèle
    results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)
  • Une fois la préparation terminée, le jeu de données est organisé dans les répertoires images/{train,val,test}/ et masks/{train,val,test}/, chaque image étant associée à un masque PNG à un seul canal. Le fichier YAML Ultralytics associe chaque image à son masque via le champ masks_dir: masks et utilise label_mapping pour convertir les ID de labels Cityscapes d'origine en 19 ID d'entraînement contigus standard, les labels ignorés et vides étant associés à 255. Les masques de la partition test ne labellisent que le véhicule du sujet et les bordures ; utilise donc val pour vérifier le mIoU en local.

  • Oui. Crée un compte sur le site web Cityscapes et télécharge les archives leftImg8bit_trainvaltest.zip et gtFine_trainvaltest.zip (~11 Go au total). Extrais-les toutes les deux dans la racine du jeu de données cityscapes — lors du premier entraînement, Ultralytics les réorganise automatiquement selon la structure attendue images/ et masks/.

  • Les masques source Cityscapes stockent les ID de labels d'origine, qui diffèrent des 19 ID d'entraînement utilisés pour l'évaluation. La section label_mapping convertit les labels valides en ID de classe contigus 0–18 et affecte 255 aux labels ignorés et vides afin qu'ils soient exclus de la fonction de perte et des métriques pendant l'entraînement et la validation.

  • Non. Cityscapes est distribué sous une licence non commerciale qui autorise la recherche universitaire, l'enseignement et l'évaluation, mais interdit l'utilisation commerciale, l'octroi de licences ou la vente du jeu de données ou de ses œuvres dérivées. Contacte directement l'équipe Cityscapes pour connaître les options de licence commerciale.

Commentaires