7-7 インスタンスセグメンテーション
学習目標
インスタンスセグメンテーションは、コンピュータビジョンにおける物体検出よりもさらに詳細なタスクです。物体が何であるか、どこにあるかを識別するだけでなく、各物体の正確な形状も決定します。
1枚の画像に対して、モデルは以下を出力します。
1. 物体カテゴリ( 何 )
例:人、車、犬
2. インスタンスマスク
各物体にはピクセルレベルのバイナリマスクがあります。
→物体の形状を正確に輪郭付けます
Pythonと事前学習済みモデルを使用してインスタンスセグメンテーションを実行します。
画像に対してインスタンスセグメンテーションを実行し、結果を出力してください。
from ultralytics import YOLO
model = YOLO("yolo11n-seg.pt")
results = model.predict("https://ultralytics.com/images/bus.jpg")
for result in results:
print(f'mask: {result.masks.data}') # Mask data (Number of objects x Height x Width)
結果は以下のとおりです。オブジェクト数×高さ×幅の次元を持つマスク配列が得られます。ここで、0はピクセルがオブジェクトに属していないことを示し、1はピクセルがオブジェクトに属していることを示します。

ウェブカメラを使用してインスタンスセグメンテーションを実行し、結果を視覚化する。
import cv2
from ultralytics import YOLO
model = YOLO("yolo11n-seg.pt")
video_path = 0
cap = cv2.VideoCapture(video_path)
while cap.isOpened():
success, frame = cap.read()
if success:
results = model.predict(frame)
annotated_frame = results[0].plot()
cv2.imshow("YOLO Inference", annotated_frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
break
cap.release()
cv2.destroyAllWindows()
結果は以下のとおりです。
