インスタンスセグメンテーション
インスタンスセグメンテーションは、物体検出よりも一歩進んだ手法です。画像内の個々の物体を識別し、背景からそれらを分離(セグメント化)します。
インスタンスセグメンテーションモデルの出力は、画像内の各物体を囲むマスクや輪郭のセットであり、それに加えて各物体のクラスラベルと信頼度スコアが含まれます。インスタンスセグメンテーションは、画像内の物体の位置だけでなく、その正確な形状を知る必要がある場合に役立ちます。
Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
YOLO26 Segmentモデルは-segサフィックス(例: yolo26n-seg.pt)を使用し、COCOで事前学習されています。
モデル
YOLO26の事前学習済みSegmentモデルを以下に示します。Detect、Segment、PoseモデルはCOCOデータセットで事前学習され、SemanticモデルはCityscapesで事前学習され、ClassifyモデルはImageNetデータセットで事前学習されています。
モデルは、初回使用時に最新のUltralytics リリースから自動的にダウンロードされます。
| モデル | サイズ (ピクセル) | mAPbox 50-95(e2e) | mAPmask 50-95(e2e) | 速度 CPU ONNX (ms) | 速度 T4 TensorRT10 (ms) | パラメータ (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-seg | 640 | 39.6 | 33.9 | 53.3 ± 0.5 | 2.1 ± 0.0 | 2.7 | 9.1 |
| YOLO26s-seg | 640 | 47.3 | 40.0 | 118.4 ± 0.9 | 3.3 ± 0.0 | 10.4 | 34.2 |
| YOLO26m-seg | 640 | 52.5 | 44.1 | 328.2 ± 2.4 | 6.7 ± 0.1 | 23.6 | 121.5 |
| YOLO26l-seg | 640 | 54.4 | 45.5 | 387.0 ± 3.7 | 8.0 ± 0.1 | 28.0 | 139.8 |
| YOLO26x-seg | 640 | 56.5 | 47.0 | 787.0 ± 6.8 | 16.4 ± 0.1 | 62.8 | 313.5 |
- **mAPval**の値は、COCO val2017データセットにおけるシングルモデル・シングルスケールのものです。
yolo val segment data=coco.yaml device=0で再現可能です。 - 速度は、Amazon EC2 P4dインスタンスを使用してCOCO val画像で平均化されたものです。
yolo val segment data=coco.yaml batch=1 device=0|cpuで再現可能です。 - パラメータ数およびFLOPs値は、Conv層とBatchNorm層を結合し、エンドツーエンドモデルの場合は補助的なone-to-many検出ヘッドを削除した後の、
model.fuse()適用済みモデルに対するものです。事前学習済みチェックポイントは完全な学習用アーキテクチャを保持しているため、より大きい数値が表示される場合があります。
トレーニング (Train)
COCO8-segデータセットでYOLO26n-segを画像サイズ640で100エポック学習させます。利用可能な引数の完全なリストについては、Configurationページを参照してください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.yaml") # build a new model from YAML
model = YOLO("yolo26n-seg.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)trainモードの詳細については、Trainページを参照してください。セグメンテーションモデルは、Ultralytics Platformを通じてクラウドGPU上で学習させることもできます。
データセット形式
YOLOセグメンテーションデータセットの形式については、Dataset Guideで詳細を確認できます。既存のデータセットを他の形式(COCOなど)からYOLO形式に変換するには、UltralyticsのJSON2YOLOツールを使用してください。また、Ultralytics PlatformでポリゴンツールやSAMを用いたスマートアノテーションを使用してセグメンテーションマスクを作成することも可能です。
検証 (Val)
Validate trained YOLO26n-seg model accuracy on the COCO8-seg dataset. No arguments are needed as the model retains its training data and arguments as model attributes.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # a list containing mAP50-95(B) for each category
metrics.box.image_metrics # per-image metrics dictionary for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FN予測 (Predict)
学習済みYOLO26n-segモデルを使用して、画像に対する予測を実行します。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.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:
xy = result.masks.xy # mask in polygon format
xyn = result.masks.xyn # normalized
masks = result.masks.data # mask in matrix format (num_objects x H x W)predictモードの詳細については、Predictページを参照してください。
エクスポート (Export)
YOLO26n-segモデルをONNX、CoreMLなどの別の形式にエクスポートします。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")利用可能なYOLO26-segエクスポート形式は以下の表の通りです。format引数を使用して任意の形式にエクスポートできます(例: format='onnx'やformat='engine')。エクスポートされたモデルで直接予測や検証を行うことができます(例: yolo predict model=yolo26n-seg.onnx)。エクスポート完了後、モデルの使用例が表示されます。
| 形式 | format引数 | モデル | メタデータ | 引数 |
|---|---|---|---|---|
| PyTorch | - | yolo26n-seg.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-seg.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-seg.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-seg_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-seg.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-seg.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-seg_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-seg.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-seg.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-seg_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-seg_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-seg_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-seg.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-seg_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-seg_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-seg_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-seg_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-seg_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n-seg_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
exportの詳細については、Exportページを参照してください。
FAQ
カスタムデータセットでYOLO26セグメンテーションモデルを学習させるにはどうすればよいですか?
カスタムデータセットでYOLO26セグメンテーションモデルを学習させるには、まずデータセットをYOLOセグメンテーション形式で準備する必要があります。JSON2YOLOのようなツールを使用して、他の形式からデータセットを変換できます。データセットの準備ができたら、PythonまたはCLIコマンドを使用してモデルを学習できます。
from ultralytics import YOLO
# Load a pretrained YOLO26 segment model
model = YOLO("yolo26n-seg.pt")
# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)利用可能なその他の引数については、Configurationページを確認してください。
YOLO26におけるobject detectionとインスタンスセグメンテーションの違いは何ですか?
物体検出は、画像内の物体を識別して位置を特定し、その周囲にバウンディングボックスを描画するのに対し、インスタンスセグメンテーションは、バウンディングボックスを識別するだけでなく、各物体の正確な形状を輪郭として抽出します。YOLO26のインスタンスセグメンテーションモデルは、検出された各物体を縁取るマスクや輪郭を提供するため、医療画像診断や自動運転など、物体の正確な形状を知ることが重要なタスクに特に有用です。
インスタンスセグメンテーションにYOLO26を使用する理由は何ですか?
Ultralytics YOLO26は、高い精度とリアルタイム性能で知られる最先端のモデルであり、インスタンスセグメンテーションタスクに最適です。YOLO26 SegmentモデルはCOCO datasetで事前学習済みであり、さまざまな物体に対して堅牢なパフォーマンスを保証します。さらに、YOLOは学習、検証、予測、エクスポート機能をシームレスに統合しており、研究から産業利用まで非常に汎用性が高いです。
事前学習済みのYOLOセグメンテーションモデルをロードして検証するにはどうすればよいですか?
事前学習済みのYOLOセグメンテーションモデルのロードと検証は簡単です。PythonとCLIの両方を使用して実行する方法は以下の通りです:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-seg.pt")
# Validate the model
metrics = model.val()
print("Mean Average Precision for boxes:", metrics.box.map)
print("Mean Average Precision for masks:", metrics.seg.map)これらの手順により、モデルのパフォーマンス評価に不可欠なMean Average Precision (mAP)などの検証メトリクスが得られます。
YOLOセグメンテーションモデルをONNX形式にエクスポートするにはどうすればよいですか?
YOLOセグメンテーションモデルをONNX形式にエクスポートするのは簡単で、PythonまたはCLIコマンドを使用して実行できます:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-seg.pt")
# Export the model to ONNX format
model.export(format="onnx")さまざまな形式へのエクスポートに関する詳細については、Exportページを参照してください。