インスタンスセグメンテーション

Instance segmentation examples

インスタンスセグメンテーションは、物体検出よりも一歩進んだ手法です。画像内の個々の物体を識別し、背景からそれらを分離(セグメント化)します。

インスタンスセグメンテーションモデルの出力は、画像内の各物体を囲むマスクや輪郭のセットであり、それに加えて各物体のクラスラベルと信頼度スコアが含まれます。インスタンスセグメンテーションは、画像内の物体の位置だけでなく、その正確な形状を知る必要がある場合に役立ちます。



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-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.1
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.2
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.5
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0139.8
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8313.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-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, batch, device
TF Litetfliteyolo26n-seg.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-seg_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-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ページを参照してください。

コメント