Ultralytics YOLO11 🚀 を使用したインスタンスセグメンテーションとトラッキング
インスタンスセグメンテーションとは何ですか?
インスタンスセグメンテーションは、画像内の個々のオブジェクトをピクセルレベルで識別およびアウトライン化するコンピュータビジョンタスクです。カテゴリ別にピクセルを分類するだけのセマンティックセグメンテーションとは異なり、インスタンスセグメンテーションは各オブジェクトインスタンスに一意にラベルを付け、正確に区別します。これにより、医療画像処理、自動運転、産業オートメーションなどの詳細な空間認識を必要とするアプリケーションに不可欠です。
Ultralytics YOLO11は、YOLOモデルの速度と効率を維持しながら、正確なオブジェクト境界検出を可能にする強力なインスタンスセグメンテーション機能を提供します。
Ultralytics パッケージで利用可能なインスタンスセグメンテーション追跡には、2 つのタイプがあります。
-
クラスオブジェクトによるインスタンスセグメンテーション: 明確な視覚的分離のために、各クラスオブジェクトに一意の色が割り当てられます。
-
オブジェクト追跡によるインスタンスセグメンテーション: すべてのトラックは異なる色で表示され、ビデオフレーム全体での簡単な識別と追跡を容易にします。
見る: Ultralytics YOLO11 を使用したオブジェクトトラッキングによるインスタンスセグメンテーション
サンプル
インスタンスセグメンテーション | インスタンスセグメンテーション + オブジェクトトラッキング |
---|---|
![]() |
![]() |
Ultralytics インスタンスセグメンテーション 😍 | Ultralytics オブジェクト追跡によるインスタンスセグメンテーション 🔥 |
Ultralytics YOLOを使用したインスタンスセグメンテーション
# Instance segmentation using Ultralytics YOLO11
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]"
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("isegment_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize instance segmentation object
isegment = solutions.InstanceSegmentation(
show=True, # display the output
model="yolo11n-seg.pt", # model="yolo11n-seg.pt" for object segmentation using YOLO11.
# classes=[0, 2], # segment specific classes i.e, person and car with pretrained model.
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = isegment(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
InstanceSegmentation
引数
の表を以下に示します。 InstanceSegmentation
引数:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLOモデルファイルへのパス。 |
region |
list |
'[(20, 400), (1260, 400)]' |
カウント領域を定義する点のリスト。 |
活用することもできます。 track
内の引数 InstanceSegmentation
ソリューション:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
使用する追跡アルゴリズムを指定します。例: bytetrack.yaml または botsort.yaml . |
conf |
float |
0.3 |
検出の信頼度閾値を設定します。低い値を設定すると、より多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。 |
iou |
float |
0.5 |
Intersection over Union (IoU) の閾値を設定して、重複する検出結果をフィルタリングします。 |
classes |
list |
None |
クラスインデックスで結果をフィルタリングします。例: classes=[0, 2, 3] 指定されたクラスのみを追跡します。 |
verbose |
bool |
True |
追跡結果の表示を制御し、追跡されたオブジェクトの視覚的な出力を提供します。 |
device |
str |
None |
推論に使用するデバイスを指定します(例: cpu , cuda:0 または 0 )。モデル実行のために、CPU、特定のGPU、またはその他の計算デバイスを選択できます。 |
さらに、以下の可視化引数を使用できます:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
show |
bool |
False |
もし True )は、アノテーションが付けられた画像またはビデオをウィンドウに表示します。開発またはテスト中に、視覚的なフィードバックを即座に得るのに役立ちます。 |
line_width |
None or int |
None |
バウンディングボックスの線の太さを指定します。もし None 場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。 |
show_conf |
bool |
True |
ラベルとともに、検出ごとの信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察が得られます。 |
show_labels |
bool |
True |
検出された各オブジェクトのラベルを視覚的な出力に表示します。検出されたオブジェクトをすぐに理解できます。 |
インスタンスセグメンテーションの応用
YOLO11を使用したインスタンスセグメンテーションには、さまざまな業界にわたる多数の現実世界のアプリケーションがあります。
廃棄物管理とリサイクル
YOLO11は、さまざまな種類の材料を識別および選別するために、廃棄物管理施設で使用できます。このモデルは、プラスチック廃棄物、段ボール、金属、その他のリサイクル可能なものを高精度でセグメント化し、自動選別システムがより効率的に廃棄物を処理できるようにします。これは、世界中で発生する70億トンのプラスチック廃棄物のうち、リサイクルされるのが約10%にすぎないことを考えると、特に価値があります。
自動運転車
自動運転車では、インスタンスセグメンテーションは、歩行者、車両、交通標識、およびその他の道路要素をピクセルレベルで識別および追跡するのに役立ちます。環境のこの正確な理解は、ナビゲーションと安全性の決定に不可欠です。YOLO11 のリアルタイムパフォーマンスは、これらの時間に敏感なアプリケーションに最適です。
医用画像処理
インスタンスセグメンテーションは、医療スキャンにおける腫瘍、臓器、または細胞構造を識別し、概説することができます。YOLO11のオブジェクト境界を正確に描写する能力は、医療診断および治療計画に役立ちます。
建設現場モニタリング
建設現場では、インスタンスセグメンテーションによって重機、作業員、資材を追跡できます。これにより、機器の位置を監視し、作業員が危険区域に立ち入ったことを検出することで安全性を確保するとともに、ワークフローとリソースの割り当てを最適化できます。
注
ご不明な点がございましたら、Ultralytics Issue Sectionまたは下記のディスカッションセクションに質問を投稿してください。
よくある質問
Ultralytics YOLO11 を使用してインスタンスセグメンテーションを実行するにはどうすればよいですか?
Ultralytics YOLO11を使用してインスタンスセグメンテーションを実行するには、YOLOモデルをYOLO11のセグメンテーションバージョンで初期化し、ビデオフレームを処理します。次に、簡単なコード例を示します。
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="yolo11n-seg.pt", # model="yolo11n-seg.pt" for object segmentation using YOLO11.
)
# 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 YOLO11ガイドをご覧ください。
Ultralytics YOLO11におけるインスタンスセグメンテーションとオブジェクトトラッキングの違いは何ですか?
インスタンスセグメンテーションは、画像内の個々のオブジェクトを識別して輪郭を描き、各オブジェクトに固有のラベルとマスクを与えます。オブジェクトトラッキングはこれを拡張し、ビデオフレーム全体でオブジェクトに一貫したIDを割り当てることで、同じオブジェクトの経時的な継続的な追跡を容易にします。YOLO11の実装のように、これらを組み合わせることで、正確な境界情報を維持しながら、ビデオ内のオブジェクトの動きと挙動を分析するための強力な機能が得られます。
Mask R-CNNやFaster R-CNNなどの他のモデルと比較して、インスタンスセグメンテーションと追跡にUltralytics YOLO11を使用する理由は何ですか?
Ultralytics YOLO11は、Mask R-CNNやFaster R-CNNなどの他のモデルと比較して、リアルタイムパフォーマンス、優れた精度、使いやすさを提供します。YOLO11は、画像をシングルパス(ワンステージ検出)で処理するため、高い精度を維持しながら大幅に高速化されます。また、Ultralytics HUBとのシームレスな統合も提供し、ユーザーはモデル、データセット、トレーニングパイプラインを効率的に管理できます。速度と精度の両方が必要なアプリケーションの場合、YOLO11は最適なバランスを提供します。
インスタンスセグメンテーションとトラッキングのために YOLO11 モデルをトレーニングするのに適した、Ultralytics が提供するデータセットはありますか?
はい、Ultralyticsでは、インスタンスセグメンテーション用のYOLO11モデルのトレーニングに適したデータセットをいくつか提供しています。これには、COCO-Seg、COCO8-Seg(迅速なテスト用の小さなサブセット)、Package-Seg、Crack-Segなどがあります。これらのデータセットには、インスタンスセグメンテーションタスクに必要なピクセルレベルのアノテーションが付属しています。より特殊なアプリケーション向けには、Ultralytics形式に従ってカスタムデータセットを作成することもできます。完全なデータセット情報と使用方法については、Ultralytics Datasetsのドキュメントを参照してください。