Meet YOLO26: next-gen vision AI.

Link to this sectionCityscapes データセット#

Cityscapes データセットは、ヨーロッパの50都市で撮影された都市のストリートシーンに焦点を当てた、大規模な セマンティックセグメンテーション ベンチマークです。高品質なピクセルレベルのアノテーションを提供しており、自動運転研究や都市シーン理解において Ultralytics YOLO モデルと共に最も広く使用されているデータセットの1つです。

Link to this section主な特徴#

  • Cityscapes の詳細なアノテーションには、2,975枚の学習画像、500枚の検証画像、1,525枚のテスト画像が含まれています。
  • このデータセットは、道路、車両、人間、建設物、物体、自然、空の各カテゴリにわたる19の評価クラスをカバーしています。
  • Cityscapes は、セマンティックセグメンテーション向けのmean Intersection over Union (mIoU) のような標準化された評価指標を提供しており、モデルパフォーマンスの効率的な比較を可能にします。

Link to this sectionデータセットの構造#

Ultralytics の設定では、準備後に以下のレイアウトが想定されています:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/

セマンティックマスクはシングルチャンネルの PNG ファイルです。オリジナルの Cityscapes ラベル ID は label_mapping セクションを通じて標準の19の学習用 ID にマッピングされ、無視または無効なラベルは 255 にマッピングされるため、学習や評価から除外されます。Cityscapes のウェブサイトから公式の leftImg8bit および gtFine アーカイブをダウンロードしてデータセットルートに解凍してください。その後、cityscapes.yaml の準備ブロックが、画像とマスクをこのレイアウトに整理します。

Link to this sectionアプリケーション#

Cityscapes は、セマンティックセグメンテーションにおけるディープラーニングモデルの学習および評価、特に自動運転、先進運転支援システム (ADAS)、および都市ロボティクスにおいて広く利用されています。

その高解像度画像と詳細なアノテーションは、リアルタイムシーン解析、車線および障害物の理解、そして複雑な都市環境の高密度なピクセルレベルの理解を必要とするあらゆるタスクの研究においても有用です。

Link to this sectionデータセット YAML#

データセットの YAML ファイルは、Cityscapes のパス、クラス、マスクディレクトリ、およびラベルマッピングを定義します。cityscapes.yaml ファイルは 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)

Link to this section使用方法#

YOLO26n-sem モデルを Cityscapes データセットで100 エポック、画像サイズ 1024 で学習するには、以下のコードスニペットを使用できます。利用可能な引数の包括的なリストについては、モデルのトレーニングページを参照してください。

学習例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)

Link to this section引用と謝辞#

研究や開発作業で Cityscapes データセットを使用する場合は、以下の論文を引用してください:

引用
@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}
}

自動運転およびコンピュータビジョンコミュニティのためのこの貴重なリソースを作成・維持してくださっている Cityscapes チームに感謝いたします。Cityscapes データセットとその作成者の詳細については、Cityscapes データセットウェブサイトをご覧ください。

Link to this sectionよくある質問 (FAQ)#

Link to this sectionCityscapes データセットとは何か、なぜコンピュータビジョンにおいて重要なのか?#

Cityscapes データセットは、ヨーロッパの50都市で撮影された都市のストリートシーンに焦点を当てた、大規模なセマンティックセグメンテーションベンチマークです。19の評価クラスにわたる5,000枚の詳細なアノテーション付き画像が含まれており、自動運転や都市シーン理解の研究における基礎的なリソースとなっています。高解像度画像、高密度なアノテーション、および標準化された mean Intersection over Union (mIoU) 指標により、高密度予測モデルのベンチマークに最適です。

Link to this sectionCityscapes データセットを使用して YOLO モデルを学習するにはどうすればよいか?#

YOLO26n-sem モデルを Cityscapes データセットで 100 エポック、画像サイズ 1024 で学習するには、以下のコードスニペットを使用できます。利用可能な引数の詳細なリストについては、モデルのトレーニングページを参照してください。

学習例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)

Link to this sectionCityscapes データセットはどのように構成されているか?#

準備後、データセットは images/{train,val,test}/ および masks/{train,val,test}/ ディレクトリに整理され、各画像はシングルチャンネルの PNG マスクとペアになります。Ultralytics の YAML ファイルは、masks_dir: masks フィールドを介して各画像とマスクをペアにし、label_mapping を使用してオリジナルの Cityscapes ラベル ID を標準の 19 の連続した学習 ID に変換し、無視または無効なラベルを 255 にマッピングします。

Link to this sectionCityscapes は手動でダウンロードする必要があるか?#

Yes. Cityscapes requires accepting the dataset terms on the official website. Download and extract leftImg8bit and gtFine into the cityscapes dataset root before using the preparation block in cityscapes.yaml to create the expected images/ and masks/ layout.

Link to this sectionなぜ Cityscapes は label_mapping を使用するのか?#

Cityscapes のソースマスクには、評価に使用される 19 の学習 ID とは異なるオリジナルのラベル ID が格納されています。label_mapping セクションは有効なラベルを連続したクラス ID 018 に変換し、無視または無効なラベルを 255 に割り当てることで、学習および検証中の損失計算と指標算出からそれらが除外されるようにします。

コメント