セマンティックセグメンテーションデータセットの概要#
セマンティックセグメンテーションは、画像内のすべてのピクセルに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/たとえば、 masks_dir: masks の場合、 images/train/aachen_000000_000019.png の画像は 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 | セマンティックマスクに使用されるディレクトリ名。YOLOポリゴンラベルフォーマットに切り替えるには、このキーを(データセットルートに masks/ フォルダなしで)省略します。 |
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セマンティックセグメンテーションのtrain 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のtrainクラスを持つ都市ストリートシーンのセマンティックセグメンテーションデータセット。
- Cityscapes8:クイックテストとCIチェックのための8画像のCityscapesサブセット。
- ADE20K:150のセマンティッククラスを持つシーンパースデータセット。
独自のデータセットを追加する#
オプションA — PNGマスク#
images/trainやimages/valなどの分割フォルダの下に画像を保存します。masks/trainやmasks/valなどのミラーリングされたマスクフォルダの下に、画像ごとに1つのシングルチャンネルマスクを保存します。- マスクのピクセル値がクラスIDであることを確認してください。無視すべきピクセルには
255を使用します。 path、train、val、masks_dir、およびnamesを指定してデータセットYAMLを作成します。- マスクIDを連続するtrain 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 — ポリゴンラベル#
- instance segmentation と全く同じように、画像と
.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アシストのスマートアノテーションを提供します。ブラウザ内で直接アノテーションを行い、このレイアウトを手動で設定することなく、結果として得られるポリゴンラベル付きデータセットをエクスポートまたはトレーニングできます。
よくある質問 (FAQ)#
セマンティックセグメンテーションマスクとインスタンスセグメンテーションラベルの違いは何ですか?#
セマンティックセグメンテーションマスクは、密なピクセルマップです。各ピクセルがクラスIDを保持し、学習画像1枚につき1つのマスク画像が存在します。Ultralytics YOLOのインスタンスセグメンテーションラベルは、ポリゴン座標を持つテキストファイルを使用し、オブジェクトインスタンスごとに1行が割り当てられます。
学習中に無視されるピクセル値は何ですか?#
ピクセル値 255 は無視ラベルとして使用されます。これらのピクセルは損失およびメトリックの計算中にスキップされます。これは、ボイド領域、ラベルなしピクセル、またはトレーニングラベルセット外のクラスに役立ちます。
マスクファイル名は画像ファイル名と一致する必要がありますか?#
はい。各セマンティックマスクは、対応する画像と同じファイルステムを持つ必要があります。データセットローダーは images ディレクトリコンポーネントを masks_dir に置き換えて一致するマスクファイルを検索し、 .png マスクが見つからない場合は他のサポートされている画像拡張子( .jpg 、 .tiff など)にフォールバックします(ただし、フォールバックでは強制されないため、ロスレス形式のみが推奨されます)。
元のデータセットラベルIDを直接使用できますか?#
はい、それらが 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に付属しているデータセットは何ですか?#
Ultralyticsには、Cityscapes(19の都市シーンクラス)、パイプラインテスト用の軽量な Cityscapes8 サブセット、および ADE20K(150のシーンパースクラス)用のすぐに使えるデータセットYAMLファイルが含まれています。各ページには、正確なクラスリスト、ダウンロード手順、および検証済みのトレーニング例が記載されています。