Link to this sectionセマンティックセグメンテーション#
セマンティックセグメンテーションは、画像内のすべてのピクセルにクラスラベルを割り当て、シーン全体を網羅する詳細なクラスマップを作成します。個々のオブジェクトを分離するインスタンスセグメンテーションとは異なり、セマンティックセグメンテーションは、いくつの個別のオブジェクトが存在するかに関係なく、同じクラスのすべてのピクセルをグループ化します。
Watch: How to Train Ultralytics YOLO26 Semantic Segmentation Model on Custom Dataset | Ultralytics Platform
セマンティックセグメンテーションモデルの出力は、各ピクセルの値が予測されたクラスIDに対応する、単一の高さ×幅のクラスマップです。このため、セマンティックセグメンテーションは、自動運転、医療画像解析、土地被覆マッピングなどのシーン解析タスクに最適です。
Use task=semantic or the yolo semantic CLI task for semantic segmentation. YOLO26 semantic segmentation model files use the -sem suffix, such as yolo26n-sem.pt.
Link to this sectionモデル#
Cityscapesデータセットで事前学習されたYOLO26セマンティックセグメンテーションモデルを以下に示します。
モデル は、初回使用時に最新の Ultralytics リリース から自動的にダウンロードされます。
| モデル | サイズ (ピクセル) | mIoUval | 速度 RTX3090 PyTorch (ms) | パラメータ (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- **mIoUval**値は、Cityscapes検証セットにおけるシングルモデル・シングルスケールの値です。
再現するにはyolo semantic val data=cityscapes.yaml device=0 imgsz=2048を使用してください。 - 速度メトリクスは、RTX3090インスタンスを使用してCityscapes検証画像で平均化されています。
再現するにはyolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048を使用してください。 - Params(パラメータ)およびFLOPsの値は、Conv層とBatchNorm層を結合する
model.fuse()実行後のフューズ済みモデルに対するものです。事前学習済みチェックポイントは、学習時の全アーキテクチャを保持しており、より高い数値を示す場合があります。
ADE20Kデータセットで事前学習されたYOLO26セマンティックセグメンテーションモデルを以下に示します。
モデル は、初回使用時に最新の Ultralytics リリース から自動的にダウンロードされます。
| モデル | サイズ (ピクセル) | mIoUval | 速度 RTX3090 PyTorch (ms) | パラメータ (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem-ade20k | 640 | 38.8 | 3.9 ± 0.2 | 1.6 | 4.4 |
| YOLO26s-sem-ade20k | 640 | 45.6 | 4.2 ± 0.3 | 6.5 | 17.4 |
| YOLO26m-sem-ade20k | 640 | 47.4 | 4.7 ± 0.3 | 14.3 | 59.5 |
| YOLO26l-sem-ade20k | 640 | 49.7 | 8.3 ± 0.2 | 17.9 | 75.0 |
| YOLO26x-sem-ade20k | 640 | 51.5 | 9.9 ± 0.3 | 40.2 | 168.1 |
- **mIoUval**値は、ADE20K検証セットにおけるシングルモデル・シングルスケールの値です。
再現するにはyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640を使用し、yolo26n-sem-ade20k.ptを目的のyolo26*-sem-ade20k.ptチェックポイントに置き換えてください。 - 速度メトリクスは、RTX3090インスタンスを使用してADE20K検証画像で平均化されています。
再現するにはyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640を使用し、yolo26n-sem-ade20k.ptを目的のyolo26*-sem-ade20k.ptチェックポイントに置き換えてください。 - Params(パラメータ)およびFLOPsの値は、Conv層とBatchNorm層を結合する
model.fuse()実行後のフューズ済みモデルに対するものです。事前学習済みチェックポイントは、学習時の全アーキテクチャを保持しており、より高い数値を示す場合があります。
Link to this sectionトレーニング#
YOLO26n-semをCityscapes8データセットで、画像サイズ1024、100エポックでトレーニングします。利用可能な引数の完全なリストについては、設定ページを参照してください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.yaml") # build a new model from YAML
model = YOLO("yolo26n-sem.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)trainモードの詳細については、トレーニングページを参照してください。
Link to this sectionデータセット形式#
セマンティックセグメンテーションデータセットは、通常PNG形式のシングルチャンネルマスク画像を使用し、各ピクセルの値がクラスIDを表します。値が255のピクセルは「無視」として扱われ、損失計算から除外されます。データセットのYAMLには、画像および対応するマスクディレクトリへのパスを指定する必要があります。フォーマットの詳細については、セマンティックセグメンテーションデータセットガイドを参照してください。サポートされているデータセットには、CityscapesおよびADE20Kがあります。
Link to this section検証#
トレーニング済みのYOLO26n-semモデルの精度をセマンティックセグメンテーションデータセットで検証します。検証で目的のデータセットYAMLが使用されるよう、dataを明示的に渡してください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou # mean Intersection over Union
metrics.pixel_accuracy # overall pixel accuracyLink to this section予測#
トレーニング済みのYOLO26n-semモデルを使用して画像に対する予測を実行します。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
semantic_mask = result.semantic_mask.data # class map, shape (H,W), integer dtype selected by class countpredictモードの詳細については、予測(Predict)ページを参照してください。
Link to this section結果の出力#
YOLOセマンティックセグメンテーションは、画像ごとに1つのResultsオブジェクトを返します。各結果には、オブジェクトマスクのリストの代わりに、画像全体に対する1つの詳細なクラスマップが格納されます。同じクラスに属するピクセルは、たとえ個別のオブジェクトに属している場合でも、同じクラスIDを共有します。
| 属性 | タイプ | 形状 | 説明 |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | 密なクラスマップ。 |
result.semantic_mask.data | torch.uint8torch.int16torch.int32 | (H,W) | クラスID。クラス数に応じてdtypeが選択されます。 |
result.masks | - | - | インスタンスマスクなし。 |
result.boxes | - | - | インスタンスボックス/信頼度なし。 |
result.masks.xy | - | - | デフォルトのポリゴンはありません。 |
すべてのタスクにわたるタスク固有のResultsフィールドについては、タスク別予測結果(Predict Results by Task)セクションを参照してください。
Link to this sectionインスタンスセグメンテーションとセマンティックセグメンテーションの比較#
| 側面 | インスタンスセグメンテーション (task="segment") | セマンティックセグメンテーション (task="semantic") |
|---|---|---|
| 予測の目的 | 検出された各オブジェクトを個別にセグメント化する | すべてのピクセルに1つのクラスIDを割り当てる |
| 出力フィールド | result.masks | result.semantic_mask |
| メインデータ | result.masks.data | result.semantic_mask.data |
| 形状 | (N,H,W) | (H,W) |
| ピクセル値 | バイナリマスク値: 0 または 1 | クラスID: 0, 1, 2, ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| 同クラスのオブジェクト | 個別のインスタンスとして保持 | 同じクラス領域に統合 |
| ポリゴン | あり (result.masks.xy および result.masks.xyn を通じて) | デフォルトではポリゴン出力なし |
| ボックスと信頼度 | あり (result.boxes を通じて) | インスタンスごとのボックスや信頼度スコアなし |
| 一般的な用途 | カウント、トラッキング、クロッピング、オブジェクトレベルの測定 | 詳細なシーンラベリング、走行可能領域、土地被覆、医療領域 |
Link to this sectionエクスポート#
YOLO26n-semモデルをONNXやCoreMLなどの異なる形式にエクスポートします。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Export the model
model.export(format="onnx")利用可能なYOLO26セマンティックセグメンテーションのエクスポート形式を下表に示します。format引数(例:format='onnx'やformat='engine')を使用して任意の形式にエクスポートできます。エクスポートされたモデルで直接予測や検証を行うことも可能です(例:yolo predict model=yolo26n-sem.onnx)。エクスポート完了後、モデルの使用例が表示されます。
| 形式 | format引数 | モデル | メタデータ | 引数 |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, quantize, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, quantize, dynamic, simplify, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, quantize, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, quantize, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, quantize, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, quantize, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn.onnx | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| LiteRT | litert | yolo26n-sem.tflite | ✅ | imgsz、quantize、batch、data、fraction、device |
exportの詳細については、Exportページを参照してください。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionカスタムデータセットでYOLO26セマンティックセグメンテーションモデルをトレーニングするにはどうすればよいですか?#
カスタムデータセットでYOLO26セマンティックセグメンテーションモデルをトレーニングするには、各ピクセル値がクラスID(0, 1, 2, ...)を表し、値が255のピクセルがトレーニング中に無視されるPNGマスク画像を用意する必要があります。画像とマスクのディレクトリを指定したデータセットYAMLファイルを作成し、モデルをトレーニングします:
from ultralytics import YOLO
# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")
# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)利用可能なその他の引数については、Configurationページを確認してください。
Link to this sectionインスタンスセグメンテーションとセマンティックセグメンテーションの違いは何ですか?#
インスタンスセグメンテーションとセマンティックセグメンテーションは、どちらもピクセルレベルのタスクですが、重要な違いがあります:
- **セマンティックセグメンテーション**は、すべてのピクセルにクラスラベルを割り当てますが、同じクラスの個々のオブジェクトを区別しません。例えば、シーン内のすべての車は同じクラスラベルを共有します。
- **インスタンスセグメンテーション**は、各オブジェクトを個別に識別し、同じクラスに属していても各オブジェクトに対して異なるマスクを作成します。
セマンティックセグメンテーションは、自動運転や土地被覆マッピングのようなシーン理解タスクに最適ですが、個々のオブジェクトのカウントやトラッキングが重要な場合にはインスタンスセグメンテーションが推奨されます。
Link to this sectionインスタンスセグメンテーションデータを使用してセマンティックセグメンテーションをトレーニングできますか?#
はい。データセットがUltralytics YOLOポリゴンラベル(画像ごとに1つの.txt)を使用している場合は、データセットYAMLからmasks_dirを省略すると、ローダーがオンザフライでポリゴンを画像ごとのセマンティックマスクに変換します。マルチクラスデータセット(N > 1)では、追加のbackgroundクラスが自動的にnamesに追加されます。シングルクラスデータセット(N == 1)の場合、トレーニングは1クラスのままとなり、宣言したクラスがマスク内で1になり、未カバーのピクセルが0になります。詳細はセマンティックセグメンテーションデータセットガイドを参照してください。
Link to this sectionセマンティックセグメンテーションでは、どのデータセットがサポートされていますか?#
Ultralytics YOLO26は、いくつかのセマンティックセグメンテーションデータセットに対して組み込みの設定を提供しています:
- Cityscapes: 19のクラスを持つ都市の道路シーンで、自動運転の研究で広く使用されています。
- ADE20K: 150のクラスを持つ大規模なシーン解析データセットです。
また、ピクセル値がクラスIDに対応するPNGマスクアノテーションを提供する任意のカスタムデータセットを使用することもできます。
Link to this section事前学習済みのYOLO26セマンティックセグメンテーションモデルを検証するにはどうすればよいですか?#
評価に使用したデータセットYAMLを使用して、事前学習済みのYOLO26セマンティックセグメンテーションモデルを検証します:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)これらの手順により、セマンティックセグメンテーションの性能を評価するための標準的な尺度である平均Intersection over Union (mIoU)やピクセル精度などの検証メトリクスを得ることができます。
Link to this sectionYOLO26セマンティックセグメンテーションモデルをONNX形式にエクスポートするにはどうすればよいですか?#
PythonまたはCLIコマンドを使用して、YOLO26セマンティックセグメンテーションモデルをONNX形式にエクスポートします:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Export the model to ONNX format
model.export(format="onnx")さまざまなフォーマットへのエクスポートに関する詳細については、Exportページを参照してください。