Ultralytics YOLO11 kullanarak Örnek Segmentasyonu ve Takibi 🚀
Örnek Segmentasyonu Nedir?
Ultralytics YOLO11 ö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 segmentasyonun aksine, nesne algılama ve tıbbi görüntüleme gibi görevler için çok önemli olan her nesneyi benzersiz bir şekilde etiketler ve kesin olarak tanımlar.
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: Ultralytics YOLO11 kullanarak Nesne Takibi ile Örnek Segmentasyonu
Ö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("yolo11n-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):
color = colors(int(cls), True)
txt_color = annotator.get_txt_color(color)
annotator.seg_bbox(mask=mask, mask_color=color, label=names[int(cls)], txt_color=txt_color)
out.write(im0)
cv2.imshow("instance-segmentation", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
out.release()
cap.release()
cv2.destroyAllWindows()
from collections import defaultdict
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
track_history = defaultdict(lambda: [])
model = YOLO("yolo11n-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):
color = colors(int(track_id), True)
txt_color = annotator.get_txt_color(color)
annotator.seg_bbox(mask=mask, mask_color=color, label=str(track_id), txt_color=txt_color)
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 | RGB | (255, 0, 255) | Her bölümlenmiş kutu için maske rengi |
label | str | None | Bölümlere ayrılmış nesne için etiket |
txt_color | RGB | None | Segmente edilen ve izlenen nesne için etiket rengi |
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.
SSS
Ultralytics YOLO11 kullanarak örnek segmentasyonunu nasıl gerçekleştirebilirim?
Ultralytics YOLO11 kullanarak örnek segmentasyonu gerçekleştirmek için YOLO modelini YOLO11'in segmentasyon versiyonuyla başlatın ve video karelerini bu model üzerinden işleyin. İşte basitleştirilmiş bir kod örneği:
Örnek
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolo11n-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.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))
while True:
ret, im0 = cap.read()
if not ret:
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=model.model.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()
Ultralytics YOLO11 kılavuzunda örnek segmentasyonu hakkında daha fazla bilgi edinin.
Ultralytics YOLO11'de örnek segmentasyonu ve nesne izleme arasındaki fark nedir?
Örnek segmentasyonu, her nesneye benzersiz bir etiket ve maske vererek bir görüntüdeki tek tek nesneleri tanımlar ve ana hatlarını belirler. Nesne izleme, video kareleri boyunca nesnelere tutarlı etiketler atayarak bunu genişletir ve aynı nesnelerin zaman içinde sürekli izlenmesini kolaylaştırır. Ultralytics YOLO11 belgelerinde ayrımlar hakkında daha fazla bilgi edinin.
Neden Maske R-CNN veya Daha Hızlı R-CNN gibi diğer modeller yerine örneğin segmentasyon ve izleme için Ultralytics YOLO11 kullanmalıyım?
Ultralytics YOLO11, Mask R-CNN veya Faster R-CNN gibi diğer modellere kıyasla gerçek zamanlı performans, üstün doğruluk ve kullanım kolaylığı sunar. YOLO11, Ultralytics HUB ile sorunsuz bir entegrasyon sağlayarak kullanıcıların modelleri, veri kümelerini ve eğitim işlem hatlarını verimli bir şekilde yönetmesine olanak tanır. YOLO11'in faydaları hakkında daha fazla bilgiyi Ultralytics blogunda bulabilirsiniz.
Ultralytics YOLO11 kullanarak nesne izlemeyi nasıl uygulayabilirim?
Nesne izlemeyi uygulamak için model.track
yöntemini kullanın ve her nesnenin kimliğinin çerçeveler arasında tutarlı bir şekilde atandığından emin olun. Aşağıda basit bir örnek verilmiştir:
Örnek
from collections import defaultdict
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
track_history = defaultdict(lambda: [])
model = YOLO("yolo11n-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:
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()
Örnek Segmentasyonu ve İzleme bölümünde daha fazlasını bulabilirsiniz.
Segmentasyon ve izleme gibi YOLO11 modellerini eğitmek için Ultralytics tarafından sağlanan uygun veri kümeleri var mı?
Evet, Ultralytics , segmentasyon ve izleme veri kümeleri de dahil olmak üzere YOLO11 modellerini eğitmek için uygun çeşitli veri kümeleri sunar. Veri kümesi örnekleri, yapıları ve kullanım talimatları Ultralytics Veri Kümeleri belgesinde bulunabilir.