Ultralytics YOLO11 🚀を用いたインスタンスのセグメンテーションとトラッキング
インスタンス・セグメンテーションとは?
インスタンスセグメンテーションは、画像内の個々のオブジェクトをピクセルレベルで識別し、輪郭を描くコンピュータビジョンタスクである。ピクセルをカテゴリ別に分類するだけのセマンティックセグメンテーションとは異なり、インスタンスセグメンテーションでは、各オブジェクトインスタンスに一意のラベルを付け、正確に区切るため、医療用画像処理、自律走行、産業オートメーションなど、詳細な空間把握が必要なアプリケーションに不可欠である。
Ultralytics YOLO11は、YOLO モデルで知られるスピードと効率を維持しながら、正確なオブジェクト境界検出を可能にする強力なインスタンス・セグメンテーション機能を提供します。
Ultralytics パッケージでは、2種類のインスタンス・セグメンテーション・トラッキングが利用できる:
-
クラス・オブジェクトによるインスタンスのセグメンテーション:各クラスオブジェクトには、視覚的に明確に分離するために固有の色が割り当てられています。
-
オブジェクトトラックによるインスタンスセグメンテーション:すべてのトラックは明確な色で表現され、ビデオフレーム間での識別と追跡を容易にします。
見るんだ: オブジェクト・トラッキングを用いたインスタンス・セグメンテーションUltralytics YOLO11
サンプル
インスタンスのセグメンテーション | インスタンス・セグメンテーション+オブジェクト・トラッキング |
---|---|
![]() |
![]() |
Ultralytics インスタンスのセグメンテーション | Ultralytics オブジェクト・トラッキングによるインスタンス・セグメンテーション 🔥 . |
Ultralytics 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("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 |
重複検出をフィルタリングするためのIoU(Intersection over Union)しきい値を設定します。 |
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 線幅は画像サイズに応じて自動的に調整されます。視覚的にわかりやすくカスタマイズできます。 |
インスタンス分割の応用
YOLO11 インスタンス・セグメンテーションは、様々な業界において、数多くの実世界での応用例がある:
廃棄物管理とリサイクル
YOLO11 、廃棄物処理施設において、さまざまな種類の材料を識別・選別するために使用できる。このモデルは、プラスチック廃棄物、段ボール、金属、その他のリサイクル品を高精度で分別することができ、自動分別システムで廃棄物をより効率的に処理することができる。世界的に発生する70億トンのプラスチック廃棄物のうち、リサイクルされるのはわずか10%程度であることを考えると、これは特に価値のあることである。
自律走行車
自動運転車では、インスタンス・セグメンテーションによって、歩行者、車両、交通標識、その他の道路要素をピクセル・レベルで識別し、追跡することができる。このような環境の正確な把握は、ナビゲーションと安全性の判断に不可欠です。YOLO11リアルタイム性能は、このような時間に敏感なアプリケーションに最適です。
メディカル・イメージング
インスタンス・セグメンテーションは、医療用スキャンの腫瘍、臓器、または細胞構造を識別し、輪郭を描くことができる。YOLO11物体の境界を正確に描出する能力は、医療診断や治療計画のために有用である。
建設現場モニタリング
建設現場では、インスタンス・セグメンテーションによって重機、作業員、資材を追跡することができる。これにより、機器の位置を監視し、作業員が危険区域に入ったことを検知することで安全性を確保するとともに、ワークフローとリソースの割り当てを最適化することができます。
注
お問い合わせは、Ultralytics Issue Sectionまたは下記のディスカッション・セクションまでお気軽にお寄せください。
よくあるご質問
Ultralytics YOLO11 を使ってインスタンスのセグメンテーションを行うには?
Ultralytics YOLO11 を使ってインスタンスのセグメンテーションを行うには、YOLO11 のセグメンテーションバージョンで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="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実装のように組み合わせることで、正確な境界情報を維持しながら、動画内のオブジェクトの動きや振る舞いを分析する強力な機能が得られます。
例えばセグメンテーションやトラッキングに、マスクR-CNNやファスターR-CNNのような他のモデルではなく、Ultralytics YOLO11 。
Ultralytics YOLO11 、Mask R-CNNやFaster R-CNNのような他のモデルと比較して、リアルタイム性能、優れた精度、使いやすさを提供します。YOLO11 画像をシングルパス(1段階検出)で処理するため、高精度を維持しながら大幅に高速化します。また、Ultralytics HUBとのシームレスな統合により、ユーザーはモデル、データセット、トレーニングパイプラインを効率的に管理することができます。スピードと精度の両方を必要とするアプリケーションに対して、YOLO11 11は最適なバランスを提供します。
Ultralytics 、例えばセグメンテーションやトラッキングなどのYOLO11 モデルのトレーニングに適したデータセットはありますか?
はい、Ultralytics 、インスタンス・セグメンテーションのためのYOLO11 モデルのトレーニングに適したデータセットをいくつか提供しています。これらのデータセットには、インスタンスセグメンテーションタスクに必要なピクセルレベルのアノテーションが付属しています。より専門的な用途には、Ultralytics フォーマットに従ってカスタムデータセットを作成することもできます。データセットの完全な情報と使用方法は、Ultralytics Datasetsドキュメントに記載されています。