Ultralytics YOLO27:

セマンティックセグメンテーションデータセットの概要#

セマンティックセグメンテーションは、画像内のすべてのピクセルに1つのクラスラベルを割り当てます。インスタンスセグメンテーションとは異なり、セマンティックセグメンテーションでは、同じクラスに属する個々のオブジェクトを分離しません。学習対象は密なクラスマップであり、各ピクセルにクラスIDが格納されます。

このガイドでは、Ultralytics YOLOセマンティックセグメンテーションモデルで使用されるデータセット形式を説明し、学習と検証に利用できる組み込みデータセット設定を一覧で示します。

サポートされているデータセット形式#

2種類のラベル形式がサポートされています。データセットYAMLで masks_dir キーが定義されている場合、またはデータセットルートの画像と同じ階層に masks/ フォルダーがすでに存在する場合、データセットローダーはPNGマスクを選択します。それ以外の場合はYOLOポリゴンラベルにフォールバックします。

PNGマスク形式#

セマンティックセグメンテーションデータセットでは、サンプルごとに1つの画像ファイルと1つのマスクファイルを使用します。マスクは通常PNG形式の単一チャネル画像で、各ピクセル値が対応する画像ピクセルのクラスインデックスを表します。

  • ピクセル値 012、... は、データセットの names マッピングにおけるクラスIDを表します。
  • ピクセル値 255 は無視ラベルとして扱われ、損失およびメトリクスの計算から除外されます。
  • マスクファイルには、対応する画像ファイルと同じステムを使用してください。たとえば frankfurt_000000_000294.png です。
  • マスクファイルはデフォルトで .png として解決されます。見つからない場合は、サポートされている他の画像拡張子も受け入れられます。非可逆圧縮(例: .jpg)ではクラスIDのピクセル値が破損するため、.png.tiff などの可逆形式を使用してください。

デフォルトのレイアウトでは、画像とマスクを並列のフォルダーに配置します。データセットYAMLの masks_dir の値によって images のパスコンポーネントが置き換えられ、マスクが検索されます。

dataset/
├── images/
│   ├── train/
│   └── val/
└── masks/
    ├── train/
    └── val/

たとえば、images/train/aachen_000000_000019.png にある画像は、masks_dir: masks の場合、masks/train/aachen_000000_000019.png にあるマスクとペアになります。

YOLOポリゴンラベル形式#

データセットにすでにUltralytics YOLOポリゴンラベル(画像ごとに1つの .txt と、<class-index> <x1> <y1> <x2> <y2> ... 行)がある場合は、PNGマスクへの変換なしで、それらを使用してセマンティックセグメンテーションを直接学習できます。インスタンスセグメンテーションデータセット形式で行レベルのレイアウトを確認してください。

データセットYAMLで masks_dir省略され、かつデータセットルートの画像と同じ階層に masks/ フォルダーが存在しない場合、この方式が自動的に選択されます。残っている masks/ フォルダーがあれば削除または名前変更してください。そうしないと、ローダーはPNGマスクモードにフォールバックし、代わりにそこからマスクを検索します。動作は次のとおりです。

  • ポリゴンは読み込み時に画像ごとのセマンティックマスクへ変換され、重なり領域では小さいオブジェクトが大きいオブジェクトを上書きするよう、面積順に並べ替えられます。
  • マルチクラスnames 内の N > 1): どのポリゴンにも覆われていないピクセルに対して、宣言したクラスの後に追加の background クラスが追加されます。モデルは N + 1 個の出力チャネルで構築され、最後のチャネルが背景になります。
  • シングルクラスnames 内の N == 1): それでも1クラスとして学習されます。マスクはバイナリで、宣言したクラスは 1、どのポリゴンにも覆われていないピクセルは 0 として示されます。names に追加の背景クラスは追加されません。
  • データ拡張によるパディングで追加されたピクセル(例: ランダムクロップ)にも、無視ラベルとして 255 が使用されます。

データがすでにインスタンスポリゴンとしてラベル付けされており、同じファイルからセマンティックセグメンテーションモデルを作成したい場合は、この方式を使用してください。

データセット YAML 形式#

セマンティックセグメンテーションデータセットはYAMLファイルで設定します。主なフィールドは次のとおりです。

キー説明
pathデータセットのルートディレクトリです。
trainpath を基準とした学習画像の相対パス、または絶対パスです。
valpath を基準とした検証画像の相対パス、または絶対パスです。
testオプションのテスト画像パスです。
masks_dirセマンティックマスクに使用するディレクトリ名です。このキーを省略すると(データセットルートに masks/ フォルダーがない場合)、YOLOポリゴンラベル形式に切り替わります。
namesクラスIDとクラス名のマッピングです。
label_mappingソースデータセットのIDから学習用IDまたは 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

ソースマスクIDが連続した学習クラスIDと一致しない場合は、label_mapping を使用してください。CityscapesとADE20Kには、元のラベルIDをYOLOセマンティックセグメンテーションの学習用IDに変換し、使用しないラベルを無視するマッピングが含まれています。

使用方法#

PythonまたはCLIでYOLO26セマンティックセグメンテーションモデルを学習します。

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)

サポートされているデータセット#

Ultralyticsは、これらのデータセット用のセマンティックセグメンテーションデータセットYAMLファイルを提供しています。事前学習済みモデルのベンチマーク表全体については、セマンティックセグメンテーションタスクのページを参照してください。

  • Cityscapes:19の学習クラスを持つ、都市の道路シーン向けセマンティックセグメンテーションデータセットです。
  • Cityscapes8: クイックテストとCIチェック向けの、8枚の画像からなるCityscapesサブセットです。
  • ADE20K:150のセマンティッククラスを持つシーン解析用データセットです。

独自データセットの追加#

オプションA — PNGマスク#

  1. 画像を images/trainimages/val などの分割フォルダーに保存します。
  2. 画像と対応するミラー構成のマスクフォルダーに、画像ごとに1つの単一チャネルマスクを保存します。例: masks/trainmasks/val
  3. マスクのピクセル値がクラスIDであることを確認します。無視するピクセルには 255 を使用してください。
  4. pathtrainvalmasks_dirnames を含むデータセットYAMLを作成します。
  5. マスクIDを連続した学習用IDに変換する必要がある場合にのみ、label_mapping を追加します。
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks

names:
    0: background
    1: road
    2: building

オプションB — ポリゴンラベル#

  1. インスタンスセグメンテーションの場合とまったく同じように、画像と .txt ポリゴンファイルを配置します。
  2. pathtrainvalnames を含むデータセットYAMLを作成します。masks_dir省略 してください。
  3. データセットルートの画像と同じ階層に masks/ フォルダーが存在しないことを確認してください。YAMLに masks_dir がなくても、このフォルダーが存在するだけでローダーはPNGマスクモードに切り替わります。
  4. names に「background」エントリを追加しないでください。マルチクラスデータセットではローダーが自動的に1つ追加します。シングルクラスデータセットでは学習は1クラスのままで、宣言したクラスがマスク内で 1 になり、未カバーのピクセルが 0 になります。
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Ultralytics Platformは、セマンティックタスク向けのポリゴンアノテーションツールに加え、SAM支援によるSmartアノテーションを提供します。ブラウザー上で直接アノテーションを行い、作成されたポリゴンラベル付きデータセットを、このレイアウトを手動で構成せずにエクスポートまたは学習に使用できます。

FAQ#

  • セマンティックセグメンテーションマスクは、密なピクセルマップです。各ピクセルにクラスIDが格納され、学習画像ごとに1つのマスク画像があります。Ultralytics YOLOのインスタンスセグメンテーションラベルでは、ポリゴン座標を含むテキストファイルを使用し、オブジェクトインスタンスごとに1行を割り当てます。

  • ピクセル値 255 が無視ラベルとして使用されます。これらのピクセルは損失およびメトリクスの計算時にスキップされるため、void領域、ラベルのないピクセル、または学習ラベルセット外のクラスに役立ちます。

  • はい。各セマンティックマスクには、対応する画像と同じファイルステムを設定してください。データセットローダーは images のディレクトリコンポーネントを masks_dir に置き換えて一致するマスクファイルを検索します。.png のマスクが見つからない場合は、他のサポートされている画像拡張子(.jpg.tiff など)にフォールバックします。ただし、このフォールバックでは可逆形式の使用を強制しないため、可逆形式のみを推奨します。

  • すでに names のクラスIDと一致している場合は使用できます。ソースデータセットが不連続なIDを使用している場合や、無視すべきラベルを含んでいる場合は、ソースのピクセル値を学習用IDに変換するため、label_mapping セクションを追加してください。

  • はい。インスタンスセグメンテーションデータセットではUltralytics YOLOポリゴンラベル(画像ごとに1つの .txt と、<class-index> <x1> <y1> <x2> <y2> ... 行)を使用し、同じファイルをセマンティックセグメンテーションに再利用できます。データセットYAMLから masks_dir省略 し、データセットルートの画像と同じ階層に masks/ フォルダーが存在しないことを確認してください(masks_dir が設定されていなくても、このフォルダーが存在するだけでPNGマスクモードが有効になります)。その後、ローダーがポリゴンを画像ごとのマスクにオンザフライで変換します。マルチクラスデータセット(N > 1)では追加の background クラスが追加され、モデルは N + 1 個の出力チャネルで構築されます。シングルクラスデータセット(N == 1)では学習は1クラスのままで、マスクには宣言したクラスが 1、未カバーのピクセルが 0 として示されます。

  • Ultralyticsには、Cityscapes(都市シーンの19クラス)、パイプラインテスト向けの軽量なCityscapes8サブセット、ADE20K(シーン解析の150クラス)用のすぐに使えるデータセットYAMLファイルが含まれています。各ページには、正確なクラス一覧、ダウンロード手順、検証済みの学習例が記載されています。

コメント