セマンティックセグメンテーションデータセットの概要#
セマンティックセグメンテーションは、画像内のすべてのピクセルに1つのクラスラベルを割り当てます。インスタンスセグメンテーションとは異なり、セマンティックセグメンテーションでは、同じクラスに属する個々のオブジェクトを分離しません。学習対象は密なクラスマップであり、各ピクセルにクラスIDが格納されます。
このガイドでは、Ultralytics YOLOセマンティックセグメンテーションモデルで使用されるデータセット形式を説明し、学習と検証に利用できる組み込みデータセット設定を一覧で示します。
サポートされているデータセット形式#
2種類のラベル形式がサポートされています。データセットYAMLで masks_dir キーが定義されている場合、またはデータセットルートの画像と同じ階層に masks/ フォルダーがすでに存在する場合、データセットローダーはPNGマスクを選択します。それ以外の場合はYOLOポリゴンラベルにフォールバックします。
PNGマスク形式#
セマンティックセグメンテーションデータセットでは、サンプルごとに1つの画像ファイルと1つのマスクファイルを使用します。マスクは通常PNG形式の単一チャネル画像で、各ピクセル値が対応する画像ピクセルのクラスインデックスを表します。
- ピクセル値
0、1、2、... は、データセットの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 | データセットのルートディレクトリです。 |
train | path を基準とした学習画像の相対パス、または絶対パスです。 |
val | path を基準とした検証画像の相対パス、または絶対パスです。 |
test | オプションのテスト画像パスです。 |
masks_dir | セマンティックマスクに使用するディレクトリ名です。このキーを省略すると(データセットルートに masks/ フォルダーがない場合)、YOLOポリゴンラベル形式に切り替わります。 |
names | クラスIDとクラス名のマッピングです。 |
label_mapping | ソースデータセットのIDから学習用IDまたは ignore_label へのオプションのマッピングです。 |
# 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マスク#
- 画像を
images/trainやimages/valなどの分割フォルダーに保存します。 - 画像と対応するミラー構成のマスクフォルダーに、画像ごとに1つの単一チャネルマスクを保存します。例:
masks/trainとmasks/val。 - マスクのピクセル値がクラスIDであることを確認します。無視するピクセルには
255を使用してください。 path、train、val、masks_dir、namesを含むデータセットYAMLを作成します。- マスク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 — ポリゴンラベル#
- インスタンスセグメンテーションの場合とまったく同じように、画像と
.txtポリゴンファイルを配置します。 path、train、val、namesを含むデータセットYAMLを作成します。masks_dirは 省略 してください。- データセットルートの画像と同じ階層に
masks/フォルダーが存在しないことを確認してください。YAMLにmasks_dirがなくても、このフォルダーが存在するだけでローダーはPNGマスクモードに切り替わります。 namesに「background」エントリを追加しないでください。マルチクラスデータセットではローダーが自動的に1つ追加します。シングルクラスデータセットでは学習は1クラスのままで、宣言したクラスがマスク内で1になり、未カバーのピクセルが0になります。
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carUltralytics 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ファイルが含まれています。各ページには、正確なクラス一覧、ダウンロード手順、検証済みの学習例が記載されています。