सामग्री पर जाएं

आवृत्ति विभाजन और ट्रैकिंग का उपयोग करना Ultralytics YOLOv8 🚀

इंस्टेंस सेगमेंटेशन क्या है?

Ultralytics YOLOv8 उदाहरण विभाजन में एक छवि में व्यक्तिगत वस्तुओं की पहचान करना और रेखांकित करना शामिल है, जो स्थानिक वितरण की विस्तृत समझ प्रदान करता है। सिमेंटिक सेगमेंटेशन के विपरीत, यह विशिष्ट रूप से लेबल करता है और प्रत्येक ऑब्जेक्ट को सटीक रूप से चित्रित करता है, ऑब्जेक्ट डिटेक्शन और मेडिकल इमेजिंग जैसे कार्यों के लिए महत्वपूर्ण है।

में दो प्रकार की इंस्टेंस सेगमेंटेशन ट्रैकिंग उपलब्ध हैं Ultralytics पैकेज:

  • क्लास ऑब्जेक्ट्स के साथ इंस्टेंस सेगमेंटेशन: प्रत्येक वर्ग वस्तु को स्पष्ट दृश्य पृथक्करण के लिए एक अद्वितीय रंग सौंपा गया है।

  • ऑब्जेक्ट ट्रैक्स के साथ इंस्टेंस सेगमेंटेशन: प्रत्येक ट्रैक को एक अलग रंग द्वारा दर्शाया जाता है, जिससे आसान पहचान और ट्रैकिंग की सुविधा मिलती है।

नमूने

इंस्टेंस सेगमेंटेशन इंस्टेंस सेगमेंटेशन + ऑब्जेक्ट ट्रैकिंग
Ultralytics इंस्टेंस सेगमेंटेशन Ultralytics ऑब्जेक्ट ट्रैकिंग के साथ इंस्टेंस सेगमेंटेशन
Ultralytics इंस्टेंस सेगमेंटेशन 😍 Ultralytics ऑब्जेक्ट ट्रैकिंग 🔥 के साथ इंस्टेंस सेगमेंटेशन

इंस्टेंस सेगमेंटेशन और ट्रैकिंग

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 तर्क

नाम प्रकार चूक विवरण: __________
mask array None विभाजन मुखौटा निर्देशांक
mask_color tuple (255, 0, 255) हर खंडित बॉक्स के लिए मास्क रंग
det_label str None खंडित वस्तु के लिए लेबल
track_label str None खंडित और ट्रैक किए गए ऑब्जेक्ट के लिए लेबल

नोट

किसी भी पूछताछ के लिए, में अपने प्रश्नों को पोस्ट करने के लिए स्वतंत्र महसूस करें Ultralytics मुद्दा अनुभाग या नीचे उल्लिखित चर्चा अनुभाग।



2023-12-18 बनाया गया, अपडेट किया गया 2024-01-15
लेखक: ग्लेन-जोचर (5), chr043416@gmail.com (1)

टिप्पणियाँ