Ultralytics YOLO26 を使用したインスタンスセグメンテーションとトラッキング#
インスタンスセグメンテーションとは何ですか?#
インスタンスセグメンテーションは、画像内の個々のオブジェクトをピクセルレベルで識別し、輪郭を描画するコンピュータビジョンタスクです。ピクセルをカテゴリごとに分類するだけのセマンティックセグメンテーションとは異なり、インスタンスセグメンテーションでは各オブジェクトインスタンスに一意のラベルを付け、その輪郭を正確に特定します。そのため、医療画像、自動運転、産業オートメーションなど、詳細な空間理解が求められるアプリケーションに不可欠です。
Ultralytics YOLO26は、YOLOモデルで知られている速度と効率を維持しながら、オブジェクト境界を正確に検出できる強力なインスタンスセグメンテーション機能を提供します。
Ultralyticsパッケージでは、次の2種類のインスタンスセグメンテーション・トラッキングを利用できます。
-
クラスオブジェクトによるインスタンスセグメンテーション: 明確に視覚的に区別できるよう、各クラスオブジェクトに一意の色が割り当てられます。
-
オブジェクトトラックによるインスタンスセグメンテーション: 各トラックは異なる色で表現されるため、動画フレーム間での識別とトラッキングが容易になります。
Watch: Instance Segmentation with Object Tracking using Ultralytics YOLO26
サンプル#
| インスタンスセグメンテーション | インスタンスセグメンテーション + オブジェクトトラッキング |
|---|---|
![]() | ![]() |
| Ultralyticsインスタンスセグメンテーション 😍 | オブジェクトトラッキングを用いたUltralyticsインスタンスセグメンテーション 🔥 |
YOLO26でセグメンテーションとトラッキングを実行する#
InstanceSegmentationソリューションは、各フレームでYOLO26セグメンテーションモデルを実行し、オブジェクトごとのマスクを描画して、各インスタンスを個別に色分けすることで、動画全体で個々のオブジェクトを追跡できるようにします。-segモデルを読み込み、Python APIまたはCLIで入力ソースに対して実行します。
# Instance segmentation using Ultralytics YOLO26
yolo solutions isegment show=True
# Pass a source video
yolo solutions isegment source="path/to/video.mp4"
# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"InstanceSegmentationの引数#
以下にInstanceSegmentationの引数を示します。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパスです。 |
line_width | int | 2 | ソリューションが描画するボックス、キーポイント、カウントの線の太さです。 |
verbose | bool | True | 入力形状、クラス数、処理速度をフレームごとにログに記録する機能を有効にします。トラッキング処理自体は常にサイレントです。 |
InstanceSegmentationソリューション内でtrackの引数を利用することもできます。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 使用するトラッキングアルゴリズムを指定します。組み込みオプション:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.25 | 検出の信頼度しきい値を設定します。値を下げるとより多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。 |
iou | float | 0.7 | 重複する検出結果をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。 |
classes | list | None | クラスインデックスで結果をフィルタリングします。たとえば、classes=[0, 2, 3]は指定されたクラスのみを追跡します。 |
device | str | None | 推論に使用するデバイスを指定します(例:cpu、cuda:0、0)。CPU、特定のGPU、その他の計算デバイスから、モデルの実行に使用するものを選択できます。 |
imgsz | int or tuple | 640 | 推論対象の画像サイズ:正方形の場合は整数、または (height, width) のペアです。形状はモデルのストライドに合わせて調整されます。 |
max_det | int | 300 | トラッキング前にフレームごとに保持される検出の最大数。高密度なシーンにおいてソリューションが処理するオブジェクトの数を制限します。 |
quantize | int or str | None | 推論精度:PyTorchおよびTorchScriptモデルの場合は 16 (FP16)または 32 /未設定(FP32);その他のフォーマットは、その成果物とランタイムが選択する精度で計算を行います。非推奨となった half フラグに置き換わるものです。 |
さらに、次の可視化引数を利用できます。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
show | bool | False | Trueの場合、注釈付きの画像または動画をウィンドウに表示します。開発やテスト中の即時の視覚的フィードバックに役立ちます。 |
show_conf | bool | True | 各検出のラベルの横に信頼度スコアを表示します。各検出に対するモデルの確信度を確認できます。 |
show_labels | bool | True | 可視化出力に各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。 |
show_boxes | bool | True | 検出されたオブジェクトの周囲にバウンディングボックスを描画します。画像や動画フレーム内のオブジェクトを視覚的に識別し、位置を把握するために不可欠です。 |
インスタンスセグメンテーションの用途#
YOLO26によるインスタンスセグメンテーションは、さまざまな業界で多数の実用的な用途があります。
廃棄物管理とリサイクル#
YOLO26は、廃棄物管理施設でさまざまな種類の資材を識別・分別するために使用できます。モデルは、プラスチック廃棄物、段ボール、金属、その他のリサイクル可能な資材を高精度でセグメント化できるため、自動分別システムによる廃棄物処理の効率化が可能になります。世界で年間発生する70億トンのプラスチック廃棄物のうち、リサイクルされるのは約10%にすぎないことを考えると、これは特に有用です。
自動運転車#
自動運転車では、インスタンスセグメンテーションによって、歩行者、車両、交通標識、その他の道路要素をピクセルレベルで識別・追跡できます。この環境に対する正確な理解は、ナビゲーションや安全に関する判断に不可欠です。YOLO26のリアルタイム性能は、こうした時間的制約のあるアプリケーションに最適です。
医療画像#
インスタンスセグメンテーションは、医療スキャン画像内の腫瘍、臓器、細胞構造を識別し、その輪郭を描画できます。YOLO26はオブジェクト境界を正確に特定できるため、医療診断や治療計画に役立ちます。
建設現場の監視#
建設現場では、インスタンスセグメンテーションによって重機、作業員、資材を追跡できます。機器の位置を監視し、作業員が危険区域に入ったことを検知することで安全性の確保に役立つほか、ワークフローとリソース配分の最適化にもつながります。
FAQ#
Ultralytics YOLO26でインスタンスセグメンテーションを実行するには、YOLO26のセグメンテーションバージョンでYOLOモデルを初期化し、動画フレームを処理します。簡略化したコード例を以下に示します。
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") assert cap.isOpened(), "Error reading video file" # Video writer w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) # Init InstanceSegmentation isegment = solutions.InstanceSegmentation( show=True, # display the output model="yolo26n-seg.pt", # model="yolo26n-seg.pt" for object segmentation using YOLO26. ) # Process video while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = isegment(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows()インスタンスセグメンテーションの詳細については、Ultralytics YOLO26ガイドをご覧ください。
インスタンスセグメンテーションは、画像内の個々のオブジェクトを識別して輪郭を描画し、各オブジェクトに一意のラベルとマスクを付与します。オブジェクトトラッキングでは、動画フレーム間でオブジェクトに一貫したIDを割り当てることでこの機能を拡張し、同じオブジェクトを時間の経過に沿って継続的に追跡できるようにします。YOLO26の実装のように両者を組み合わせると、正確な境界情報を維持しながら、動画内のオブジェクトの動きや挙動を分析する強力な機能を利用できます。
Ultralytics YOLO26は、Mask R-CNNやFaster R-CNNなどの他のモデルと比較して、リアルタイム性能、優れた精度、使いやすさを提供します。YOLO26は画像を1回のパスで処理する(一段階検出)ため、高い精度を維持しながら大幅に高速化できます。また、Ultralytics Platformとシームレスに統合でき、モデル、データセット、トレーニングパイプラインを効率的に管理できます。速度と精度の両方が求められるアプリケーションにおいて、YOLO26は最適なバランスを提供します。
はい。Ultralyticsは、インスタンスセグメンテーション向けのYOLO26モデルのトレーニングに適した複数のデータセットを提供しています。これには、COCO-Seg、COCO8-Seg(迅速なテスト用の小規模なサブセット)、Package-Seg、Crack-Segが含まれます。これらのデータセットには、インスタンスセグメンテーションタスクに必要なピクセルレベルのアノテーションが付属しています。より専門的な用途では、Ultralytics形式に従ってカスタムデータセットを作成することもできます。データセットの詳細情報と使用方法については、Ultralyticsデータセットドキュメントをご覧ください。

