セマンティックセグメンテーション
セマンティックセグメンテーションは、画像内のすべてのピクセルにクラスラベルを割り当て、シーン全体を網羅する高密度なクラスマップを作成します。個々のオブジェクトを分離するインスタンスセグメンテーションとは異なり、セマンティックセグメンテーションは、いくつの個別のオブジェクトが存在するかに関係なく、同じクラスのすべてのピクセルをグループ化します。
セマンティックセグメンテーションモデルの出力は、各ピクセル値が予測されたクラス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.
モデル
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を使用してください。 - 速度(Speed) メトリクスは、Amazon EC2 P4dインスタンスを使用してCityscapes検証画像で平均化されています。
再生成するにはyolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048を使用してください。 - パラメータ数(Params) および FLOPs の値は、Conv層とBatchNorm層をマージする
model.fuse()後のフューズされたモデルのものです。事前学習済みチェックポイントは完全な学習アーキテクチャを保持しており、より高い数値を示す場合があります。
Train(学習)
Cityscapes8データセットで、画像サイズ1024にてYOLO26n-semを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 モードの詳細については、学習ページを参照してください。
データセット形式
セマンティックセグメンテーションデータセットは、各ピクセル値がクラスIDを表す単一チャネルのマスク画像(通常はPNG)を使用します。値が255のピクセルは「無視」として扱われ、損失計算から除外されます。データセットのYAMLには、画像および対応するマスクディレクトリへのパスを指定する必要があります。形式の詳細については、セマンティックセグメンテーションデータセットガイドを参照してください。サポートされているデータセットには Cityscapes および ADE20K があります。
Val(検証)
学習済み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 accuracy予測
学習済み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 # height x width class map (torch.Tensor)predict モードの詳細については、予測ページを参照してください。
Export(エクスポート)
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, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
export の詳細については、エクスポートページを参照してください。
FAQ
カスタムデータセットで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)利用可能な引数の詳細については、構成ページを確認してください。
インスタンスセグメンテーションとセマンティックセグメンテーションの違いは何ですか?
インスタンスセグメンテーションとセマンティックセグメンテーションは、どちらもピクセルレベルのタスクですが、重要な点で異なります:
- **セマンティックセグメンテーション**は、すべてのピクセルにクラスラベルを割り当てますが、同じクラス内の個々のオブジェクトを区別しません。例えば、シーン内のすべての車は同じクラスラベルを共有します。
- **インスタンスセグメンテーション**は、個々のオブジェクトを別々に識別し、同じクラスに属していても、オブジェクトごとに個別のマスクを生成します。
セマンティックセグメンテーションは、自動運転や土地被覆マッピングなどのシーン理解タスクに適しており、インスタンスセグメンテーションは、個々のオブジェクトをカウントまたは追跡することが重要な場合に推奨されます。
インスタンスセグメンテーションのデータを使用してセマンティックセグメンテーションを学習できますか?
Yes. If your dataset uses Ultralytics YOLO polygon labels (one .txt per image), omit masks_dir from the dataset YAML and the loader will convert polygons to per-image semantic masks on the fly. For multi-class datasets (N > 1) an extra background class is appended to names automatically. For single-class datasets (N == 1) training stays at 1 class — your declared class becomes 1 in the mask and uncovered pixels become 0. See the Semantic Segmentation Dataset Guide for details.
セマンティックセグメンテーションではどのようなデータセットがサポートされていますか?
Ultralytics YOLO26には、いくつかのセマンティックセグメンテーションデータセット用の組み込み構成が用意されています:
- Cityscapes: 自動運転研究に広く使用されている、19のクラスを持つ都市の街路シーン。
- ADE20K: 150のクラスを持つ大規模なシーン解析データセット。
また、ピクセル値がクラスIDに対応するPNGマスクアノテーションを提供する任意のカスタムデータセットを使用することもできます。
学習済みの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)やピクセル精度など、セマンティックセグメンテーションのパフォーマンスを評価するための標準的なメトリクスが得られます。
YOLO26セマンティックセグメンテーションモデルを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")さまざまな形式へのエクスポートの詳細については、エクスポートページを参照してください。