Ultralytics YOLOv8 kullanarak Örnek Segmentasyonu ve Takibi 🚀
Örnek Segmentasyonu Nedir?
Ultralytics YOLOv8 Örnek segmentasyonu, bir görüntüdeki tek tek nesnelerin tanımlanmasını ve ana hatlarının belirlenmesini içerir ve uzamsal dağılımın ayrıntılı bir şekilde anlaşılmasını sağlar. Anlamsal segmentasyondan farklı olarak, her nesneyi benzersiz bir şekilde etiketler ve kesin olarak tanımlar, bu da nesne algılama ve tıbbi görüntüleme gibi görevler için çok önemlidir.
Ultralytics paketinde iki tür örnek segmentasyon takibi mevcuttur:
-
Sınıf Nesneleri ile Örnek Segmentasyonu: Net bir görsel ayrım için her sınıf nesnesine benzersiz bir renk atanır.
-
Nesne İzleri ile Örnek Segmentasyonu: Her iz farklı bir renkle temsil edilir, bu da kolay tanımlama ve izlemeyi kolaylaştırır.
İzle: Nesne Takibi ile Örnek Segmentasyonu Ultralytics YOLOv8
Örnekler
Örnek Segmentasyonu | Örnek Segmentasyonu + Nesne Takibi |
---|---|
Ultralytics Örnek Segmentasyonu 😍 | Ultralytics Nesne Takibi ile Örnek Segmentasyonu 🔥 |
Örnek Segmentasyonu ve İzleme
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolov8n-seg.pt") # segmentation model
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter('instance-segmentation.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
while True:
ret, im0 = cap.read()
if not ret:
print("Video frame is empty or video processing has been successfully completed.")
break
results = model.predict(im0)
annotator = Annotator(im0, line_width=2)
if results[0].masks is not None:
clss = results[0].boxes.cls.cpu().tolist()
masks = results[0].masks.xy
for mask, cls in zip(masks, clss):
annotator.seg_bbox(mask=mask,
mask_color=colors(int(cls), True),
det_label=names[int(cls)])
out.write(im0)
cv2.imshow("instance-segmentation", im0)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
out.release()
cap.release()
cv2.destroyAllWindows()
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
from collections import defaultdict
track_history = defaultdict(lambda: [])
model = YOLO("yolov8n-seg.pt") # segmentation model
cap = cv2.VideoCapture("path/to/video/file.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter('instance-segmentation-object-tracking.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
while True:
ret, im0 = cap.read()
if not ret:
print("Video frame is empty or video processing has been successfully completed.")
break
annotator = Annotator(im0, line_width=2)
results = model.track(im0, persist=True)
if results[0].boxes.id is not None and results[0].masks is not None:
masks = results[0].masks.xy
track_ids = results[0].boxes.id.int().cpu().tolist()
for mask, track_id in zip(masks, track_ids):
annotator.seg_bbox(mask=mask,
mask_color=colors(track_id, True),
track_label=str(track_id))
out.write(im0)
cv2.imshow("instance-segmentation-object-tracking", im0)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
out.release()
cap.release()
cv2.destroyAllWindows()
seg_bbox
Argümanlar
İsim | Tip | Varsayılan | Açıklama |
---|---|---|---|
mask |
array |
None |
Segmentasyon maskesi koordinatları |
mask_color |
tuple |
(255, 0, 255) |
Her bölümlenmiş kutu için maske rengi |
det_label |
str |
None |
Bölümlere ayrılmış nesne için etiket |
track_label |
str |
None |
Segmente edilen ve izlenen nesne için etiket |
Not
Sorularınız için Ultralytics Sorun Bölümüne veya aşağıda belirtilen tartışma bölümüne sorularınızı göndermekten çekinmeyin.