Link to this sectionセマンティックセグメンテーション#
セマンティックセグメンテーションは、画像のすべてのピクセルにクラスラベルを割り当て、シーン全体をカバーする高密度なクラスマップを作成します。個々のオブジェクトを分離するインスタンスセグメンテーションとは異なり、セマンティックセグメンテーションは、いくつの異なるオブジェクトが存在するかに関係なく、同じクラスのすべてのピクセルをグループ化します。
セマンティックセグメンテーションモデルの出力は、各ピクセル値が予測されたクラス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を使用してください。 - パラメータおよび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 モードの詳細については、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枚につき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 フィールドについては、タスク別の予測結果セクションを参照してください。
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, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, 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, int8, data, fraction, 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 |
| Qualcomm QNN | qnn | yolo26n-sem_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
exportの詳細については、Exportページを参照してください。
Link to this sectionFAQ#
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インスタンスセグメンテーションのデータを使用してセマンティックセグメンテーションをトレーニングできますか?#
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.
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ページを参照してください。